NAK: [PATCH 1/1][SRU][J] ice: alter feature support check for SRIOV and LAG

Tim Gardner tim.gardner at canonical.com
Mon Jan 8 14:59:41 UTC 2024


On 1/4/24 5:19 AM, Robert Malz wrote:
> From: Dave Ertman <david.m.ertman at intel.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/2036239
> 
> Previously, the ice driver had support for using a handler for bonding
> netdev events to ensure that conflicting features were not allowed to be
> activated at the same time.  While this was still in place, additional
> support was added to specifically support SRIOV and LAG together.  These
> both utilized the netdev event handler, but the SRIOV and LAG feature was
> behind a capabilities feature check to make sure the current NVM has
> support.
> 
> The exclusion part of the event handler should be removed since there are
> users who have custom made solutions that depend on the non-exclusion of
> features.
> 
> Wrap the creation/registration and cleanup of the event handler and
> associated structs in the probe flow with a feature check so that the
> only systems that support the full implementation of LAG features will
> initialize support.  This will leave other systems unhindered with
> functionality as it existed before any LAG code was added.
> 
> Fixes: bb52f42acef6 ("ice: Add driver support for firmware changes for LAG")
> Reviewed-by: Jesse Brandeburg <jesse.brandeburg at intel.com>
> Signed-off-by: Dave Ertman <david.m.ertman at intel.com>
> Reviewed-by: Simon Horman <horms at kernel.org>
> Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha at intel.com> (A Contingent worker at Intel)
> Signed-off-by: Tony Nguyen <anthony.l.nguyen at intel.com>
> 
> (backported from commit 4d50fcdc2476eef94c14c6761073af5667bb43b6)
> [rmalz: additionally backported necessary changes from bb52f42]
> Signed-off-by: Robert Malz <robert.malz at canonical.com>
> ---
>   drivers/net/ethernet/intel/ice/ice_adminq_cmd.h | 3 +++
>   drivers/net/ethernet/intel/ice/ice_common.c     | 8 ++++++++
>   drivers/net/ethernet/intel/ice/ice_lag.c        | 3 +++
>   drivers/net/ethernet/intel/ice/ice_type.h       | 2 ++
>   4 files changed, 16 insertions(+)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h b/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
> index 21b4c7cd6f05..9a721f9d38ee 100644
> --- a/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
> +++ b/drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
> @@ -118,6 +118,9 @@ struct ice_aqc_list_caps_elem {
>   #define ICE_AQC_CAPS_PENDING_NET_VER			0x004D
>   #define ICE_AQC_CAPS_RDMA				0x0051
>   #define ICE_AQC_CAPS_NVM_MGMT				0x0080
> +#define ICE_AQC_CAPS_FW_LAG_SUPPORT			0x0092
> +#define ICE_AQC_BIT_ROCEV2_LAG				0x01
> +#define ICE_AQC_BIT_SRIOV_LAG				0x02
>   
>   	u8 major_ver;
>   	u8 minor_ver;
> diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c
> index 3de6f16f985a..f8d9b2be26c8 100644
> --- a/drivers/net/ethernet/intel/ice/ice_common.c
> +++ b/drivers/net/ethernet/intel/ice/ice_common.c
> @@ -2022,6 +2022,14 @@ ice_parse_common_caps(struct ice_hw *hw, struct ice_hw_common_caps *caps,
>   		ice_debug(hw, ICE_DBG_INIT, "%s: max_mtu = %d\n",
>   			  prefix, caps->max_mtu);
>   		break;
> +	case ICE_AQC_CAPS_FW_LAG_SUPPORT:
> +		caps->roce_lag = !!(number & ICE_AQC_BIT_ROCEV2_LAG);
> +		ice_debug(hw, ICE_DBG_INIT, "%s: roce_lag = %u\n",
> +			  prefix, caps->roce_lag);
> +		caps->sriov_lag = !!(number & ICE_AQC_BIT_SRIOV_LAG);
> +		ice_debug(hw, ICE_DBG_INIT, "%s: sriov_lag = %u\n",
> +			  prefix, caps->sriov_lag);
> +		break;
>   	default:
>   		/* Not one of the recognized common capabilities */
>   		found = false;
> diff --git a/drivers/net/ethernet/intel/ice/ice_lag.c b/drivers/net/ethernet/intel/ice/ice_lag.c
> index 4f954db01b92..01030346398d 100644
> --- a/drivers/net/ethernet/intel/ice/ice_lag.c
> +++ b/drivers/net/ethernet/intel/ice/ice_lag.c
> @@ -391,6 +391,9 @@ int ice_init_lag(struct ice_pf *pf)
>   	struct ice_vsi *vsi;
>   	int err;
>   
> +	if (!pf->hw.dev_caps.common_cap.sriov_lag)
> +		return 0;
> +
>   	pf->lag = kzalloc(sizeof(*lag), GFP_KERNEL);
>   	if (!pf->lag)
>   		return -ENOMEM;
> diff --git a/drivers/net/ethernet/intel/ice/ice_type.h b/drivers/net/ethernet/intel/ice/ice_type.h
> index d33d1906103c..fcee84c6fa6e 100644
> --- a/drivers/net/ethernet/intel/ice/ice_type.h
> +++ b/drivers/net/ethernet/intel/ice/ice_type.h
> @@ -268,6 +268,8 @@ struct ice_hw_common_caps {
>   	u8 dcb;
>   	u8 ieee_1588;
>   	u8 rdma;
> +	u8 roce_lag;
> +	u8 sriov_lag;
>   
>   	bool nvm_update_pending_nvm;
>   	bool nvm_update_pending_orom;

I'm having some trouble with your explanation of the backports. I can 
find no vestige of commit 4d50fcdc2476eef94c14c6761073af5667bb43b6 
('ice: alter feature support check for SRIOV and LAG') in your patch. In 
fact, it appears that only pieces of commit 
bb52f42acef6ac317ee298d39909ce17bbaddb82 ('ice: Add driver support for 
firmware changes for LAG') have been backported.

This would be much clearer if you made this into 2 patches and clearly 
explained what was going on with each backport.
-- 
-----------
Tim Gardner
Canonical, Inc




More information about the kernel-team mailing list