]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
staging: octeon: Use net_device_stats from struct net_device
authorTobias Klauser <tklauser@distanz.ch>
Wed, 15 Feb 2017 12:51:10 +0000 (13:51 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Feb 2017 18:44:58 +0000 (10:44 -0800)
Instead of using a private copy of struct net_device_stats in
struct octeon_ethernet, use stats from struct net_device. Also remove
the now unnecessary .ndo_get_stats function.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/octeon/ethernet-rx.c
drivers/staging/octeon/ethernet-tx.c
drivers/staging/octeon/ethernet.c
drivers/staging/octeon/octeon-ethernet.h

index f0900d1c4d7b5fe63a04a917b60b37d0dba923b5..a3b6eb7548f28820b5e33a39560498b6e5b2552e 100644 (file)
@@ -356,8 +356,8 @@ static int cvm_oct_poll(struct oct_rx_group *rx_group, int budget)
 
                                /* Increment RX stats for virtual ports */
                                if (port >= CVMX_PIP_NUM_INPUT_PORTS) {
-                                       priv->stats.rx_packets++;
-                                       priv->stats.rx_bytes += skb->len;
+                                       dev->stats.rx_packets++;
+                                       dev->stats.rx_bytes += skb->len;
                                }
                                netif_receive_skb(skb);
                        } else {
@@ -365,7 +365,7 @@ static int cvm_oct_poll(struct oct_rx_group *rx_group, int budget)
                                 * Drop any packet received for a device that
                                 * isn't up.
                                 */
-                               priv->stats.rx_dropped++;
+                               dev->stats.rx_dropped++;
                                dev_kfree_skb_irq(skb);
                        }
                } else {
index 6b4c20872323136ea5a69f6cc8eb98b9361edb8d..31a583e1385df61d9c852fb436c3fd1fc5ce0ef4 100644 (file)
@@ -460,7 +460,7 @@ skip_xmit:
        case QUEUE_DROP:
                skb->next = to_free_list;
                to_free_list = skb;
-               priv->stats.tx_dropped++;
+               dev->stats.tx_dropped++;
                break;
        case QUEUE_HW:
                cvmx_fau_atomic_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, -1);
@@ -535,7 +535,7 @@ int cvm_oct_xmit_pow(struct sk_buff *skb, struct net_device *dev)
        if (unlikely(!work)) {
                printk_ratelimited("%s: Failed to allocate a work queue entry\n",
                                   dev->name);
-               priv->stats.tx_dropped++;
+               dev->stats.tx_dropped++;
                dev_kfree_skb_any(skb);
                return 0;
        }
@@ -546,7 +546,7 @@ int cvm_oct_xmit_pow(struct sk_buff *skb, struct net_device *dev)
                printk_ratelimited("%s: Failed to allocate a packet buffer\n",
                                   dev->name);
                cvmx_fpa_free(work, CVMX_FPA_WQE_POOL, 1);
-               priv->stats.tx_dropped++;
+               dev->stats.tx_dropped++;
                dev_kfree_skb_any(skb);
                return 0;
        }
@@ -663,8 +663,8 @@ int cvm_oct_xmit_pow(struct sk_buff *skb, struct net_device *dev)
        /* Submit the packet to the POW */
        cvmx_pow_work_submit(work, work->word1.tag, work->word1.tag_type,
                             cvmx_wqe_get_qos(work), cvmx_wqe_get_grp(work));
-       priv->stats.tx_packets++;
-       priv->stats.tx_bytes += skb->len;
+       dev->stats.tx_packets++;
+       dev->stats.tx_bytes += skb->len;
        dev_consume_skb_any(skb);
        return 0;
 }
index a379734a54b1366eb2da32926a0e1a641bfc7324..429e24adfcf5a8f7f71e2fe09bcc2c688d131962 100644 (file)
@@ -228,17 +228,17 @@ static struct net_device_stats *cvm_oct_common_get_stats(struct net_device *dev)
                        cvmx_pko_get_port_status(priv->port, 1, &tx_status);
                }
 
-               priv->stats.rx_packets += rx_status.inb_packets;
-               priv->stats.tx_packets += tx_status.packets;
-               priv->stats.rx_bytes += rx_status.inb_octets;
-               priv->stats.tx_bytes += tx_status.octets;
-               priv->stats.multicast += rx_status.multicast_packets;
-               priv->stats.rx_crc_errors += rx_status.inb_errors;
-               priv->stats.rx_frame_errors += rx_status.fcs_align_err_packets;
-               priv->stats.rx_dropped += rx_status.dropped_packets;
+               dev->stats.rx_packets += rx_status.inb_packets;
+               dev->stats.tx_packets += tx_status.packets;
+               dev->stats.rx_bytes += rx_status.inb_octets;
+               dev->stats.tx_bytes += tx_status.octets;
+               dev->stats.multicast += rx_status.multicast_packets;
+               dev->stats.rx_crc_errors += rx_status.inb_errors;
+               dev->stats.rx_frame_errors += rx_status.fcs_align_err_packets;
+               dev->stats.rx_dropped += rx_status.dropped_packets;
        }
 
-       return &priv->stats;
+       return &dev->stats;
 }
 
 /**
index 9c6852d61c0d3339490241a71e4553357fb3f70b..9c3f453adaa09a027fb56199b0cbaf14657a895e 100644 (file)
@@ -38,8 +38,6 @@ struct octeon_ethernet {
        int imode;
        /* List of outstanding tx buffers per queue */
        struct sk_buff_head tx_free_list[16];
-       /* Device statistics */
-       struct net_device_stats stats;
        unsigned int last_speed;
        unsigned int last_link;
        /* Last negotiated link state */