net: bcmgenet: correct return value of __bcmgenet_tx_reclaim
authorDoug Berger <opendmb@gmail.com>
Tue, 14 Mar 2017 00:41:38 +0000 (17:41 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 Mar 2017 04:51:50 +0000 (21:51 -0700)
The reclaim function should return the number of buffer descriptors
reclaimed, not just the number corresponding to skb packets.

Also, remove the unnecessary computation when updating the consumer
index.

While this is not a functional problem it could degrade performance
of napi in a fragmented transmit stream.

Signed-off-by: Doug Berger <opendmb@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/genet/bcmgenet.c

index 1f94ba1773dd67523b61713606ff55ca07ae617e..d90d366b286f31f4c66bbdfe6b2ffba14af88965 100644 (file)
@@ -1218,7 +1218,7 @@ static unsigned int __bcmgenet_tx_reclaim(struct net_device *dev,
        }
 
        ring->free_bds += txbds_processed;
-       ring->c_index = (ring->c_index + txbds_processed) & DMA_C_INDEX_MASK;
+       ring->c_index = c_index;
 
        dev->stats.tx_packets += pkts_compl;
        dev->stats.tx_bytes += bytes_compl;
@@ -1231,7 +1231,7 @@ static unsigned int __bcmgenet_tx_reclaim(struct net_device *dev,
                        netif_tx_wake_queue(txq);
        }
 
-       return pkts_compl;
+       return txbds_processed;
 }
 
 static unsigned int bcmgenet_tx_reclaim(struct net_device *dev,