RE: [PATCH net-next] net: increase LL_MAX_HEADER if HYPERV_NET is enabled
From: Haiyang Zhang <haiyangz@microsoft.com>
Date: 2015-11-03 21:15:18
-----Original Message----- From: David Miller [mailto:davem@davemloft.net] Sent: Tuesday, November 3, 2015 2:50 PM To: Haiyang Zhang <haiyangz@microsoft.com> Cc: eric.dumazet@gmail.com; KY Srinivasan <kys@microsoft.com>; edumazet@google.com; netdev@vger.kernel.org Subject: Re: [PATCH net-next] net: increase LL_MAX_HEADER if HYPERV_NET is enabled From: Haiyang Zhang <haiyangz@microsoft.com> Date: Tue, 3 Nov 2015 18:49:05 +0000quoted
quoted
-----Original Message----- From: David Miller [mailto:davem@davemloft.net] Sent: Tuesday, November 3, 2015 1:20 PM To: Haiyang Zhang <haiyangz@microsoft.com> Cc: eric.dumazet@gmail.com; KY Srinivasan <kys@microsoft.com>; edumazet@google.com; netdev@vger.kernel.org Subject: Re: [PATCH net-next] net: increase LL_MAX_HEADER if HYPERV_NET is enabled From: Haiyang Zhang <haiyangz@microsoft.com> Date: Tue, 3 Nov 2015 17:34:47 +0000quoted
But we still keep this busy return in our code, just for "weird cornercases".quoted
quoted
The queue_stopped condition must be precise.The only case we return NETDEV_TX_BUSY is when the outgoing ring buffer is full, which almost never happens because we stop the xmit queueif ring is <10% available. I don't think you understand. You must perform the queue stop operation such that it is impossible for your ->ndo_start_xmit() method to be invoked in a way such that you cannot ->transmit the SKB given to you immediately.
We already did the queue stop operation in the netvsc_send_pkt() in file netvsc.c:
if (ring_avail < RING_AVAIL_PERCENT_LOWATER) {
netif_tx_stop_queue(netdev_get_tx_queue(ndev, q_idx));
This flow control mechanism stops the tx queue when the outgoing buffer on vmbus
is <10% available. So we can always transmit immediately when start_xmit is called.
The case of returning NETDEV_TX_BUSY is not expected to happen normally.
Thanks,
- Haiyang
It's quite tiring to keep trying to explain this over and over repeatedly.