aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Mork <bjorn@mork.no>2013-01-31 03:36:05 -0500
committerDavid S. Miller <davem@davemloft.net>2013-02-04 13:07:31 -0500
commitbf414b369f158bb527f9f29174ada815f961b44c (patch)
tree96349391731e44d9ba6fb2b6d4bea70d03277230
parent5f1e942cb45d06968b0ce94472d97014e0e1fdc9 (diff)
net: usbnet: fix tx_dropped statistics
It is normal for minidrivers accumulating frames to return NULL from their tx_fixup function. We do not want to count this as a drop, or log any debug messages. A different exit path is therefore chosen for such drivers, skipping the debug message and the tx_dropped increment. The test for accumulating drivers was however completely bogus, making the exit path selection depend on whether the user had enabled tx_err logging or not. This would arbitrarily mess up accounting for both accumulating and non-accumulating minidrivers, and would result in unwanted debug messages for the accumulating drivers. Fix by testing for FLAG_MULTI_PACKET instead, which probably was the intention from the beginning. This usage match the documented behaviour of this flag: Indicates to usbnet, that USB driver accumulates multiple IP packets. Affects statistic (counters) and short packet handling. Signed-off-by: Bjørn Mork <bjorn@mork.no> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/usb/usbnet.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index 977837725726..5e33606c1366 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -1125,13 +1125,11 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
1125 if (info->tx_fixup) { 1125 if (info->tx_fixup) {
1126 skb = info->tx_fixup (dev, skb, GFP_ATOMIC); 1126 skb = info->tx_fixup (dev, skb, GFP_ATOMIC);
1127 if (!skb) { 1127 if (!skb) {
1128 if (netif_msg_tx_err(dev)) { 1128 /* packet collected; minidriver waiting for more */
1129 netif_dbg(dev, tx_err, dev->net, "can't tx_fixup skb\n"); 1129 if (info->flags & FLAG_MULTI_PACKET)
1130 goto drop;
1131 } else {
1132 /* cdc_ncm collected packet; waits for more */
1133 goto not_drop; 1130 goto not_drop;
1134 } 1131 netif_dbg(dev, tx_err, dev->net, "can't tx_fixup skb\n");
1132 goto drop;
1135 } 1133 }
1136 } 1134 }
1137 length = skb->len; 1135 length = skb->len;