]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
net: macb: Use net_device_stats from struct net_device
authorTobias Klauser <tklauser@distanz.ch>
Thu, 8 Mar 2018 12:45:53 +0000 (18:15 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Fri, 9 Mar 2018 08:09:57 +0000 (09:09 +0100)
Instead of using a private copy of struct net_device_stats in struct
macb, use stats from struct net_device.

Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/net/ethernet/cadence/macb.h
drivers/net/ethernet/cadence/macb_main.c

index 1494d02a78cab74dc97ec2594664bf7637b3b532..41e204601b9b60364739dced893914bb545732e3 100644 (file)
@@ -1034,7 +1034,6 @@ struct macb {
        struct clk              *tsu_clk;
        struct net_device       *dev;
        struct napi_struct      napi;
-       struct net_device_stats stats;
        union {
                struct macb_stats       macb;
                struct gem_stats        gem;
index 9aa079c68776ebadb80340f6e98b1662171734b8..3882aef92ab1d0bfa3c346400ee9c8aaa9fde716 100644 (file)
@@ -821,8 +821,8 @@ static void macb_tx_error_task(struct work_struct *work)
                                netdev_vdbg(bp->dev, "txerr skb %u (data %p) TX complete\n",
                                            macb_tx_ring_wrap(bp, tail),
                                            skb->data);
-                               bp->stats.tx_packets++;
-                               bp->stats.tx_bytes += skb->len;
+                               bp->dev->stats.tx_packets++;
+                               bp->dev->stats.tx_bytes += skb->len;
                        }
                } else {
                        /* "Buffers exhausted mid-frame" errors may only happen
@@ -921,8 +921,8 @@ static void macb_tx_interrupt(struct macb_queue *queue)
                                netdev_vdbg(bp->dev, "skb %u (data %p) TX complete\n",
                                            macb_tx_ring_wrap(bp, tail),
                                            skb->data);
-                               bp->stats.tx_packets++;
-                               bp->stats.tx_bytes += skb->len;
+                               bp->dev->stats.tx_packets++;
+                               bp->dev->stats.tx_bytes += skb->len;
                        }
 
                        /* Now we can safely release resources */
@@ -1065,14 +1065,14 @@ static int gem_rx(struct macb *bp, int budget)
                if (!(ctrl & MACB_BIT(RX_SOF) && ctrl & MACB_BIT(RX_EOF))) {
                        netdev_err(bp->dev,
                                   "not whole frame pointed by descriptor\n");
-                       bp->stats.rx_dropped++;
+                       bp->dev->stats.rx_dropped++;
                        break;
                }
                skb = bp->rx_skbuff[entry];
                if (unlikely(!skb)) {
                        netdev_err(bp->dev,
                                   "inconsistent Rx descriptor chain\n");
-                       bp->stats.rx_dropped++;
+                       bp->dev->stats.rx_dropped++;
                        break;
                }
                /* now everything is ready for receiving packet */
@@ -1091,7 +1091,7 @@ static int gem_rx(struct macb *bp, int budget)
                if (!(bp->dev->features & NETIF_F_RXCSUM)) {
                        if (macb_validate_hw_csum(skb)) {
                                netdev_err(bp->dev, "incorrect FCS\n");
-                               bp->stats.rx_dropped++;
+                               bp->dev->stats.rx_dropped++;
                                break;
                        }
                }
@@ -1102,8 +1102,8 @@ static int gem_rx(struct macb *bp, int budget)
                    GEM_BFEXT(RX_CSUM, ctrl) & GEM_RX_CSUM_CHECKED_MASK)
                        skb->ip_summed = CHECKSUM_UNNECESSARY;
 
-               bp->stats.rx_packets++;
-               bp->stats.rx_bytes += skb->len;
+               bp->dev->stats.rx_packets++;
+               bp->dev->stats.rx_bytes += skb->len;
 
                gem_ptp_do_rxstamp(bp, skb, desc);
 
@@ -1150,7 +1150,7 @@ static int macb_rx_frame(struct macb *bp, unsigned int first_frag,
         */
        skb = netdev_alloc_skb(bp->dev, len + NET_IP_ALIGN);
        if (!skb) {
-               bp->stats.rx_dropped++;
+               bp->dev->stats.rx_dropped++;
                for (frag = first_frag; ; frag++) {
                        desc = macb_rx_desc(bp, frag);
                        desc->addr &= ~MACB_BIT(RX_USED);
@@ -1194,7 +1194,7 @@ static int macb_rx_frame(struct macb *bp, unsigned int first_frag,
        if (!(bp->dev->features & NETIF_F_RXCSUM)) {
                if (macb_validate_hw_csum(skb)) {
                        netdev_err(bp->dev, "incorrect FCS\n");
-                       bp->stats.rx_dropped++;
+                       bp->dev->stats.rx_dropped++;
 
                        /* Make descriptor updates visible to hardware */
                        wmb();
@@ -1209,8 +1209,8 @@ static int macb_rx_frame(struct macb *bp, unsigned int first_frag,
        __skb_pull(skb, NET_IP_ALIGN);
        skb->protocol = eth_type_trans(skb, bp->dev);
 
-       bp->stats.rx_packets++;
-       bp->stats.rx_bytes += skb->len;
+       bp->dev->stats.rx_packets++;
+       bp->dev->stats.rx_bytes += skb->len;
        netdev_vdbg(bp->dev, "received skb of length %u, csum: %08x\n",
                    skb->len, skb->csum);
        netif_receive_skb(skb);
@@ -2525,7 +2525,7 @@ static void gem_update_stats(struct macb *bp)
 static struct net_device_stats *gem_get_stats(struct macb *bp)
 {
        struct gem_stats *hwstat = &bp->hw_stats.gem;
-       struct net_device_stats *nstat = &bp->stats;
+       struct net_device_stats *nstat = &bp->dev->stats;
 
        gem_update_stats(bp);
 
@@ -2596,7 +2596,7 @@ static void gem_get_ethtool_strings(struct net_device *dev, u32 sset, u8 *p)
 static struct net_device_stats *macb_get_stats(struct net_device *dev)
 {
        struct macb *bp = netdev_priv(dev);
-       struct net_device_stats *nstat = &bp->stats;
+       struct net_device_stats *nstat = &bp->dev->stats;
        struct macb_stats *hwstat = &bp->hw_stats.macb;
 
        if (macb_is_gem(bp))
@@ -3414,15 +3414,15 @@ static void at91ether_rx(struct net_device *dev)
                        memcpy(skb_put(skb, pktlen), p_recv, pktlen);
 
                        skb->protocol = eth_type_trans(skb, dev);
-                       lp->stats.rx_packets++;
-                       lp->stats.rx_bytes += pktlen;
+                       dev->stats.rx_packets++;
+                       dev->stats.rx_bytes += pktlen;
                        netif_rx(skb);
                } else {
-                       lp->stats.rx_dropped++;
+                       dev->stats.rx_dropped++;
                }
 
                if (desc->ctrl & MACB_BIT(RX_MHASH_MATCH))
-                       lp->stats.multicast++;
+                       dev->stats.multicast++;
 
                /* reset ownership bit */
                desc->addr &= ~MACB_BIT(RX_USED);
@@ -3457,15 +3457,15 @@ static irqreturn_t at91ether_interrupt(int irq, void *dev_id)
        if (intstatus & MACB_BIT(TCOMP)) {
                /* The TCOM bit is set even if the transmission failed */
                if (intstatus & (MACB_BIT(ISR_TUND) | MACB_BIT(ISR_RLE)))
-                       lp->stats.tx_errors++;
+                       dev->stats.tx_errors++;
 
                if (lp->skb) {
                        dev_kfree_skb_irq(lp->skb);
                        lp->skb = NULL;
                        dma_unmap_single(NULL, lp->skb_physaddr,
                                         lp->skb_length, DMA_TO_DEVICE);
-                       lp->stats.tx_packets++;
-                       lp->stats.tx_bytes += lp->skb_length;
+                       dev->stats.tx_packets++;
+                       dev->stats.tx_bytes += lp->skb_length;
                }
                netif_wake_queue(dev);
        }