Subject: Re: VLAN I/F's and TX queue.

From: Patrick McHardy <[email-masked]>
Date: Mon, 10 May 2010 16:41:40 +0200

Eric Dumazet wrote:
> Le lundi 10 mai 2010 à 16:26 +0200, Patrick McHardy a écrit :
> 
>> Is the intention just to avoid accounting the packet as dropped?
>> That seems fine to me since in case of NET_XMIT_CN its actually
>> not the currently transmitted packet that was dropped.
>>
>> But part of the intention of the above mentioned patch was actually
>> to inform higher layers of congestion so they can take action if
>> desired, which would be defeated by this patch.
>>
> 
> I see, so maybe we want following patch instead ?
> 
> (letting NET_XMIT_CN be given to caller, but accounting current packet
> as transmitted ?)

Perfect, thanks. I'd suggest to change macvlan in a similar fashion
for consistency though.

In any case please feel free to add my

Acked-by: Patrick McHardy <[email-masked]>

> diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
> index b5249c5..55be908 100644
> --- a/net/8021q/vlan_dev.c
> +++ b/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;
>  	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_bytes += len;
>  	} else
> @@ -353,7 +353,7 @@ static netdev_tx_t vlan_dev_hwaccel_hard_start_xmit(struct sk_buff *skb,
>  	len = skb->len;
>  	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_bytes += len;
>  	} else
> 
>