Patch "ice: virtchnl: stop pretending to support RSS over AQ or registers" has been added to the 6.7-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ice: virtchnl: stop pretending to support RSS over AQ or registers

to the 6.7-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ice-virtchnl-stop-pretending-to-support-rss-over-aq-.patch
and it can be found in the queue-6.7 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 2958563b0ea05bdf0c107c3e6da92f87792ee7e5
Author: Jacob Keller <jacob.e.keller@xxxxxxxxx>
Date:   Wed Jan 31 13:51:58 2024 -0800

    ice: virtchnl: stop pretending to support RSS over AQ or registers
    
    [ Upstream commit 2652b99e43403dc464f3648483ffb38e48872fe4 ]
    
    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 <jacob.e.keller@xxxxxxxxx>
    Reviewed-by: Alan Brady <alan.brady@xxxxxxxxx>
    Tested-by: Rafal Romanowski <rafal.romanowski@xxxxxxxxx>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl.c b/drivers/net/ethernet/intel/ice/ice_virtchnl.c
index 8872f7a4f4320..d6348f20822e8 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 7d547fa616fa6..588b77f1a4bf6 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




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux