浏览代码

net: congestion notifications are not dropped packets

vlan/macvlan start_xmit() can inform caller of congestion with
NET_XMIT_CN return value. This doesnt mean packet was dropped.
Increment normal stat counters instead of tx_dropped.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Acked-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Eric Dumazet 15 年之前
父节点
当前提交
2d6c9ffcca
共有 2 个文件被更改,包括 3 次插入3 次删除
  1. 1 1
      drivers/net/macvlan.c
  2. 2 2
      net/8021q/vlan_dev.c

+ 1 - 1
drivers/net/macvlan.c

@@ -239,7 +239,7 @@ netdev_tx_t macvlan_start_xmit(struct sk_buff *skb,
 	int ret;
 	int ret;
 
 
 	ret = macvlan_queue_xmit(skb, dev);
 	ret = macvlan_queue_xmit(skb, dev);
-	if (likely(ret == NET_XMIT_SUCCESS)) {
+	if (likely(ret == NET_XMIT_SUCCESS || ret == NET_XMIT_CN)) {
 		txq->tx_packets++;
 		txq->tx_packets++;
 		txq->tx_bytes += len;
 		txq->tx_bytes += len;
 	} else
 	} else

+ 2 - 2
net/8021q/vlan_dev.c

@@ -327,7 +327,7 @@ static netdev_tx_t vlan_dev_hard_start_xmit(struct sk_buff *skb,
 	len = skb->len;
 	len = skb->len;
 	ret = dev_queue_xmit(skb);
 	ret = dev_queue_xmit(skb);
 
 
-	if (likely(ret == NET_XMIT_SUCCESS)) {
+	if (likely(ret == NET_XMIT_SUCCESS || ret == NET_XMIT_CN)) {
 		txq->tx_packets++;
 		txq->tx_packets++;
 		txq->tx_bytes += len;
 		txq->tx_bytes += len;
 	} else
 	} else
@@ -353,7 +353,7 @@ static netdev_tx_t vlan_dev_hwaccel_hard_start_xmit(struct sk_buff *skb,
 	len = skb->len;
 	len = skb->len;
 	ret = dev_queue_xmit(skb);
 	ret = dev_queue_xmit(skb);
 
 
-	if (likely(ret == NET_XMIT_SUCCESS)) {
+	if (likely(ret == NET_XMIT_SUCCESS || ret == NET_XMIT_CN)) {
 		txq->tx_packets++;
 		txq->tx_packets++;
 		txq->tx_bytes += len;
 		txq->tx_bytes += len;
 	} else
 	} else