]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ixgbe: turn off MDD while modifying SRRCTL
authorRadoslaw Tyl <radoslawx.tyl@intel.com>
Mon, 17 Feb 2025 09:06:36 +0000 (10:06 +0100)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Thu, 3 Jul 2025 16:39:04 +0000 (09:39 -0700)
Modifying SRRCTL register can generate MDD event.

Turn MDD off during SRRCTL register write to prevent generating MDD.

Fix RCT in ixgbe_set_rx_drop_en().

Reviewed-by: Marcin Szycik <marcin.szycik@linux.intel.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Radoslaw Tyl <radoslawx.tyl@intel.com>
Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

index f1c51ddbaf9ed3fc96a20bc77bc53d401beb29b4..4f2d7f6e3faa99d848ee4ffb2f9705ab01f20e54 100644 (file)
@@ -4104,8 +4104,12 @@ void ixgbe_set_rx_drop_en(struct ixgbe_adapter *adapter)
 static void ixgbe_set_rx_drop_en(struct ixgbe_adapter *adapter)
 #endif
 {
-       int i;
        bool pfc_en = adapter->dcb_cfg.pfc_mode_enable;
+       struct ixgbe_hw *hw = &adapter->hw;
+       int i;
+
+       if (hw->mac.ops.disable_mdd)
+               hw->mac.ops.disable_mdd(hw);
 
        if (adapter->ixgbe_ieee_pfc)
                pfc_en |= !!(adapter->ixgbe_ieee_pfc->pfc_en);
@@ -4127,6 +4131,9 @@ static void ixgbe_set_rx_drop_en(struct ixgbe_adapter *adapter)
                for (i = 0; i < adapter->num_rx_queues; i++)
                        ixgbe_disable_rx_drop(adapter, adapter->rx_ring[i]);
        }
+
+       if (hw->mac.ops.enable_mdd)
+               hw->mac.ops.enable_mdd(hw);
 }
 
 #define IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT 2