]> git.baikalelectronics.ru Git - kernel.git/commit
sfc: allow PIO more often
authorEdward Cree <ecree@solarflare.com>
Fri, 13 Jan 2017 21:20:14 +0000 (21:20 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 Jan 2017 19:00:46 +0000 (14:00 -0500)
commit832f2dc836934d660e994d0b5e8f9bb686baca50
treee2977c4ce0b4ef87eaa226226b0c52c4ca9de2de
parent128d089ea30e58b03286cb0735965aaa6cfa2260
sfc: allow PIO more often

If an option descriptor has been sent on a queue but not followed by a
 packet, there will have been no completion event, so the read and write
 counts won't match and we'll think we can't do PIO.  This combines with
 the fact that we have two TX queues (for en/disable checksum offload),
 and that both must be empty for PIO to happen.
This patch adds a separate "packet_write_count" that tracks the most
 recent write_count we expect to see a completion event for; this excludes
 option descriptors but _includes_ PIO descriptors (even though they look
 like option descriptors).  This is then used, rather than write_count,
 in efx_nic_tx_is_empty().
We only bother to maintain packet_write_count on EF10, since on Siena
 (a) there are no option descriptors and it always equals write_count, and
 (b) there's no PIO, so we don't need it anyway.

Signed-off-by: Edward Cree <ecree@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/sfc/ef10.c
drivers/net/ethernet/sfc/net_driver.h
drivers/net/ethernet/sfc/nic.h
drivers/net/ethernet/sfc/siena.c
drivers/net/ethernet/sfc/tx.c