]> git.baikalelectronics.ru Git - kernel.git/commit
net/mlx4_en: Wake TX queues only when there's enough room
authorIdo Shamay <idos@mellanox.com>
Thu, 25 Jun 2015 08:29:42 +0000 (11:29 +0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 25 Jun 2015 09:06:27 +0000 (02:06 -0700)
commit141186f280035c8879586acab86075286d147169
treee79ffb95deedbad3a6154309d40a9a9082e94030
parentf5212397e961c6982d97743f5e69dfc6973017d4
net/mlx4_en: Wake TX queues only when there's enough room

Indication of a single completed packet, marked by txbbs_skipped
being bigger then zero, in not enough in order to wake up a
stopped TX queue. The completed packet may contain a single TXBB,
while next packet to be sent (after the wake up) may have multiple
TXBBs (LSO/TSO packets for example), causing overflow in queue followed
by WQE corruption and TX queue timeout.
Instead, wake the stopped queue only when there's enough room for the
worst case (maximum sized WQE) packet that we should need to handle after
the queue is opened again.

Also created an helper routine - mlx4_en_is_tx_ring_full, which checks
if the current TX ring is full or not. It provides better code readability
and removes code duplication.

Signed-off-by: Ido Shamay <idos@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/en_tx.c
drivers/net/ethernet/mellanox/mlx4/mlx4_en.h