ixgbe: don’t do any AF_XDP zero-copy transmit if netif is not OK [Linux 5.0]

ixgbe: don’t do any AF_XDP zero-copy transmit if netif is not OK [Linux 5.0]

This Linux kernel change "ixgbe: don’t do any AF_XDP zero-copy transmit if netif is not OK" is included in the Linux 5.0 release. This change is authored by Jan Sokolowski <jan.sokolowski [at] intel.com> on Wed Feb 20 15:20:14 2019 +0000. The commit for this change in Linux stable tree is c685c69 (patch).

ixgbe: don't do any AF_XDP zero-copy transmit if netif is not OK

An issue has been found while testing zero-copy XDP that
causes a reset to be triggered. As it takes some time to
turn the carrier on after setting zc, and we already
start trying to transmit some packets, watchdog considers
this as an erroneous state and triggers a reset.

Don't do any work if netif carrier is not OK.

Fixes: 8221c5eba8c13 (ixgbe: add AF_XDP zero-copy Tx support)
Signed-off-by: Jan Sokolowski <[email protected]>
Signed-off-by: Jeff Kirsher <[email protected]>

There are 3 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
index 654ae92..36a8879 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
@@ -642,7 +642,8 @@ static bool ixgbe_xmit_zc(struct ixgbe_ring *xdp_ring, unsigned int budget)
    dma_addr_t dma;

    while (budget-- > 0) {
-       if (unlikely(!ixgbe_desc_unused(xdp_ring))) {
+       if (unlikely(!ixgbe_desc_unused(xdp_ring)) ||
+           !netif_carrier_ok(xdp_ring->netdev)) {
            work_done = false;
            break;
        }

Leave a Reply

Your email address will not be published. Required fields are marked *