ixgbe: fix older devices that do not support IXGBE_MRQC_L3L4TXSWEN [Linux 5.0]

ixgbe: fix older devices that do not support IXGBE_MRQC_L3L4TXSWEN [Linux 5.0]

This Linux kernel change "ixgbe: fix older devices that do not support IXGBE_MRQC_L3L4TXSWEN" is included in the Linux 5.0 release. This change is authored by Jeff Kirsher <jeffrey.t.kirsher [at] intel.com> on Mon Jan 28 09:45:01 2019 -0800. The commit for this change in Linux stable tree is 156a67a (patch).

ixgbe: fix older devices that do not support IXGBE_MRQC_L3L4TXSWEN

The enabling L3/L4 filtering for transmit switched packets for all
devices caused unforeseen issue on older devices when trying to send UDP
traffic in an ordered sequence.  This bit was originally intended for X550
devices, which supported this feature, so limit the scope of this bit to
only X550 devices.

Signed-off-by: Jeff Kirsher <[email protected]>
Tested-by: Andrew Bowers <[email protected]>

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

 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index daff818..3cbb7e0 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -3953,8 +3953,11 @@ static void ixgbe_setup_mrqc(struct ixgbe_adapter *adapter)
            else
                mrqc = IXGBE_MRQC_VMDQRSS64EN;

-           /* Enable L3/L4 for Tx Switched packets */
-           mrqc |= IXGBE_MRQC_L3L4TXSWEN;
+           /* Enable L3/L4 for Tx Switched packets only for X550,
+            * older devices do not support this feature
+            */
+           if (hw->mac.type >= ixgbe_mac_X550)
+               mrqc |= IXGBE_MRQC_L3L4TXSWEN;
        } else {
            if (tcs > 4)
                mrqc = IXGBE_MRQC_RTRSS8TCEN;

Leave a Reply

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