net/bnxt: fix Tx batching
authorSriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
Wed, 15 May 2019 18:08:15 +0000 (11:08 -0700)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 27 May 2019 16:09:07 +0000 (18:09 +0200)
commitadcee0fc845f653ca288807467f29c7c7c3e532a
tree13597b32d5a78eb344d4b57e69415a4c19a03efd
parent77942f509b09c934320e1226d82797b3c80eb968
net/bnxt: fix Tx batching

This patch addresses the following issues with Tx batching:

1. Tx stall observed in some conditions:

The batching code doesn't request for a completion when only a partial
chain of packets is transmitted due to mbuf allocation errors. Because
of this, Tx consumer index is not updated correctly and it eventually
leads to qfull condition. Fix this by requesting a completion for the
last packet in the partial chain that is transmitted successfully.

2. Tx stall seen with Jumbo frames:

With jumbo frames, number of TxBDs is > 1. While setting up these
additional BDs in bnxt_start_xmit(), the flags field is being set using
the OR-assignment operator. We end up using a stale value of the flags
field (from a previous use of that descriptor). This results in an
invalid completion and eventually leads to tx stall. Fix this to just
assign the flags field with the right value.

Fixes: 5735eb241947 ("net/bnxt: support Tx batching")
Cc: stable@dpdk.org
Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
drivers/net/bnxt/bnxt_txq.h
drivers/net/bnxt/bnxt_txr.c