mirror of https://gitee.com/openkylin/linux.git
ice: Always clear the QRXFLXP_CNTXT register for VF Rx queues
Currently when the PF reduces its number of channels via ethtool and then VFs are created there may be stale data for some of the Rx queues belonging to VFs. This happens when a VF reuses an Rx queue that was previously used by the PF. Specifically, the QRXFLXP_CNTXT register will have incorrect values. Fix this by always clearing the relevant values in the QRXFLXP_CNTXT register for VF queues. Signed-off-by: Brett Creeley <brett.creeley@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
a6892c96fc
commit
36be2baa09
|
@ -386,8 +386,8 @@ int ice_setup_rx_ctx(struct ice_ring *ring)
|
|||
/* Enable Flexible Descriptors in the queue context which
|
||||
* allows this driver to select a specific receive descriptor format
|
||||
*/
|
||||
regval = rd32(hw, QRXFLXP_CNTXT(pf_q));
|
||||
if (vsi->type != ICE_VSI_VF) {
|
||||
regval = rd32(hw, QRXFLXP_CNTXT(pf_q));
|
||||
regval |= (rxdid << QRXFLXP_CNTXT_RXDID_IDX_S) &
|
||||
QRXFLXP_CNTXT_RXDID_IDX_M;
|
||||
|
||||
|
@ -398,8 +398,12 @@ int ice_setup_rx_ctx(struct ice_ring *ring)
|
|||
regval |= (0x03 << QRXFLXP_CNTXT_RXDID_PRIO_S) &
|
||||
QRXFLXP_CNTXT_RXDID_PRIO_M;
|
||||
|
||||
wr32(hw, QRXFLXP_CNTXT(pf_q), regval);
|
||||
} else {
|
||||
regval &= ~(QRXFLXP_CNTXT_RXDID_IDX_M |
|
||||
QRXFLXP_CNTXT_RXDID_PRIO_M |
|
||||
QRXFLXP_CNTXT_TS_M);
|
||||
}
|
||||
wr32(hw, QRXFLXP_CNTXT(pf_q), regval);
|
||||
|
||||
/* Absolute queue number out of 2K needs to be passed */
|
||||
err = ice_write_rxq_ctx(hw, &rlan_ctx, pf_q);
|
||||
|
|
|
@ -85,6 +85,7 @@
|
|||
#define QRXFLXP_CNTXT_RXDID_IDX_M ICE_M(0x3F, 0)
|
||||
#define QRXFLXP_CNTXT_RXDID_PRIO_S 8
|
||||
#define QRXFLXP_CNTXT_RXDID_PRIO_M ICE_M(0x7, 8)
|
||||
#define QRXFLXP_CNTXT_TS_M BIT(11)
|
||||
#define GLGEN_RSTAT 0x000B8188
|
||||
#define GLGEN_RSTAT_DEVSTATE_M ICE_M(0x3, 0)
|
||||
#define GLGEN_RSTCTL 0x000B8180
|
||||
|
|
Loading…
Reference in New Issue