ixgbe: fully disable hardware RSC logic when disabling RSC
This patch modifies the configure_rx path in order to properly disable RSC hardware logic when the user disables it. Previously we only disabled RSC in the queue settings, but this does not fully disable hardware RSC logic which can lead to some unexpected performance issues. Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
38463e2c29
commit
6dcc28b93e
2 changed files with 9 additions and 1 deletions
|
@ -3571,7 +3571,7 @@ static void ixgbe_configure_rx(struct ixgbe_adapter *adapter)
|
|||
{
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
int i;
|
||||
u32 rxctrl;
|
||||
u32 rxctrl, rfctl;
|
||||
|
||||
/* disable receives while setting up the descriptors */
|
||||
rxctrl = IXGBE_READ_REG(hw, IXGBE_RXCTRL);
|
||||
|
@ -3580,6 +3580,13 @@ static void ixgbe_configure_rx(struct ixgbe_adapter *adapter)
|
|||
ixgbe_setup_psrtype(adapter);
|
||||
ixgbe_setup_rdrxctl(adapter);
|
||||
|
||||
/* RSC Setup */
|
||||
rfctl = IXGBE_READ_REG(hw, IXGBE_RFCTL);
|
||||
rfctl &= ~IXGBE_RFCTL_RSC_DIS;
|
||||
if (!(adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED))
|
||||
rfctl |= IXGBE_RFCTL_RSC_DIS;
|
||||
IXGBE_WRITE_REG(hw, IXGBE_RFCTL, rfctl);
|
||||
|
||||
/* Program registers for the distribution of queues */
|
||||
ixgbe_setup_mrqc(adapter);
|
||||
|
||||
|
|
|
@ -1861,6 +1861,7 @@ enum {
|
|||
#define IXGBE_RFCTL_ISCSI_DIS 0x00000001
|
||||
#define IXGBE_RFCTL_ISCSI_DWC_MASK 0x0000003E
|
||||
#define IXGBE_RFCTL_ISCSI_DWC_SHIFT 1
|
||||
#define IXGBE_RFCTL_RSC_DIS 0x00000020
|
||||
#define IXGBE_RFCTL_NFSW_DIS 0x00000040
|
||||
#define IXGBE_RFCTL_NFSR_DIS 0x00000080
|
||||
#define IXGBE_RFCTL_NFS_VER_MASK 0x00000300
|
||||
|
|
Loading…
Reference in a new issue