> -----Original Message----- > From: Intel-wired-lan <[email protected]> On Behalf Of > Jacob Keller > Sent: Wednesday, January 31, 2024 10:52 PM > To: Intel Wired LAN <[email protected]>; Nguyen, Anthony L > <[email protected]> > Cc: Keller, Jacob E <[email protected]>; Brady, Alan > <[email protected]> > Subject: [Intel-wired-lan] [PATCH iwl-net] ice: virtchnl: stop pretending to > support RSS over AQ or registers > > The E800 series hardware uses the same iAVF driver as older devices, including > the virtchnl negotiation scheme. > > This negotiation scheme includes a mechanism to determine what type of RSS > should be supported, including RSS over PF virtchnl messages, RSS over > firmware AdminQ messages, and RSS via direct register access. > > The PF driver will always prefer VIRTCHNL_VF_OFFLOAD_RSS_PF if its > supported by the VF driver. However, if an older VF driver is loaded, it may > request only VIRTCHNL_VF_OFFLOAD_RSS_REG or > VIRTCHNL_VF_OFFLOAD_RSS_AQ. > > The ice driver happily agrees to support these methods. Unfortunately, the > underlying hardware does not support these mechanisms. The E800 series > VFs don't have the appropriate registers for RSS_REG. The mailbox queue used > by VFs for VF to PF communication blocks messages which do not have the > VF-to-PF opcode. > > Stop lying to the VF that it could support RSS over AdminQ or registers, as > these interfaces do not work when the hardware is operating on an E800 > series device. > > In practice this is unlikely to be hit by any normal user. The iAVF driver has > supported RSS over PF virtchnl commands since 2016, and always defaults to > using RSS_PF if possible. > > In principle, nothing actually stops the existing VF from attempting to access > the registers or send an AQ command. However a properly coded VF will check > the capability flags and will report a more useful error if it detects a case > where > the driver does not support the RSS offloads that it does. > > Fixes: 1071a8358a28 ("ice: Implement virtchnl commands for AVF support") > Signed-off-by: Jacob Keller <[email protected]> > Reviewed-by: Alan Brady <[email protected]> > --- > drivers/net/ethernet/intel/ice/ice_virtchnl.c | 9 +-------- > drivers/net/ethernet/intel/ice/ice_virtchnl_allowlist.c | 2 -- > 2 files changed, 1 insertion(+), 10 deletions(-) > > diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl.c > b/drivers/net/ethernet/intel/ice/ice_virtchnl.c > index c925813ec9ca..6f2328a049bf 100644 > --- a/drivers/net/ethernet/intel/ice/ice_virtchnl.c > +++ b/drivers/net/ethernet/intel/ice/ice_virtchnl.c > @@ -440,7 +440,6 @@ static int ice_vc_get_vf_res_msg(struct ice_vf *vf, u8 > *msg) > vf->driver_caps = *(u32 *)msg; > else > vf->driver_caps = VIRTCHNL_VF_OFFLOAD_L2 | > - VIRTCHNL_VF_OFFLOAD_RSS_REG | > VIRTCHNL_VF_OFFLOAD_VLAN; > > vfres->vf_cap_flags = VIRTCHNL_VF_OFFLOAD_L2; @@ -453,14 > +452,8 @@ static int ice_vc_get_vf_res_msg(struct ice_vf *vf, u8 *msg) > vfres->vf_cap_flags |= ice_vc_get_vlan_caps(hw, vf, vsi, > vf->driver_caps); > > - if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_RSS_PF) { > + if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_RSS_PF) > vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_RSS_PF; > - } else { > - if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_RSS_AQ) > - vfres->vf_cap_flags |= > VIRTCHNL_VF_OFFLOAD_RSS_AQ; > - else > - vfres->vf_cap_flags |= > VIRTCHNL_VF_OFFLOAD_RSS_REG; > - } > > if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_RX_FLEX_DESC) > vfres->vf_cap_flags |= > VIRTCHNL_VF_OFFLOAD_RX_FLEX_DESC; diff --git > a/drivers/net/ethernet/intel/ice/ice_virtchnl_allowlist.c > b/drivers/net/ethernet/intel/ice/ice_virtchnl_allowlist.c > index 5e19d48a05b4..d796dbd2a440 100644 > --- a/drivers/net/ethernet/intel/ice/ice_virtchnl_allowlist.c > +++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_allowlist.c > @@ -13,8 +13,6 @@ > * - opcodes needed by VF when caps are activated > * > * Caps that don't use new opcodes (no opcodes should be allowed): > - * - VIRTCHNL_VF_OFFLOAD_RSS_AQ > - * - VIRTCHNL_VF_OFFLOAD_RSS_REG > * - VIRTCHNL_VF_OFFLOAD_WB_ON_ITR > * - VIRTCHNL_VF_OFFLOAD_CRC > * - VIRTCHNL_VF_OFFLOAD_RX_POLLING > > base-commit: d0005e76b73b095138cee9d662831761ffde84a8 > -- > 2.41.0
Tested-by: Rafal Romanowski <[email protected]>
