Re: [Intel-wired-lan] [PATCH iwl-net v2] ice: Fix incorrect LLDP filter assumptions

"Loktionov, Aleksandr" <[email protected]>
Newsgroups org.osuosl.intel-wired-lan,org.kernel.vger.netdev
Message-ID <DS4PPF7551E6552D93A383AE955F62439C9E5DC2@DS4PPF7551E6552.namprd11.prod.outlook.com>

> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf
> Of Dave Ertman
> Sent: Tuesday, August 11, 2026 8:11 PM
> To: [email protected]
> Cc: [email protected]; Kitszel, Przemyslaw
> <[email protected]>
> Subject: [Intel-wired-lan] [PATCH iwl-net v2] ice: Fix incorrect LLDP
> filter assumptions
> 
> In commit 4d5a1c4e6d49 ("ice: do not add LLDP-specific filter if not
> necessary"), it was assumed that llpd_fltr_ctrl was a unique
> application of a filter instance and the other command in the flow was
> generic.
> This is an incorrect assumption, they are both meant to add a filter
> to handle LLDP packets and only varied in the actual AQ call made.
> The newer AQ call was created to handle a special case in some NVM
> images where a LLDP filter was already existent and the old AQ command
> would generate an error if a new filter was attempted to be added. The
> newer AQ command would detect this case and instead would add the
> current target to the existing filter rule.
> 
> Fix the flow so that the newer command is always used if available and
> only fall back to the older command when that is the only solution.
> 
> Also remove the obsolete state flag from the PF struct.
> 
> Fixes: 4d5a1c4e6d49 ("ice: do not add LLDP-specific filter if not
> necessary")
> Signed-off-by: Dave Ertman <[email protected]>
> Reviewed-by: Przemek Kitszel <[email protected]>
> ---
>  drivers/net/ethernet/intel/ice/ice.h     |  1 -
>  drivers/net/ethernet/intel/ice/ice_lib.c | 18 +++++-------------
>  2 files changed, 5 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice.h
> b/drivers/net/ethernet/intel/ice/ice.h
> index fc91b6665f90..7eaa3d1e78a5 100644
> --- a/drivers/net/ethernet/intel/ice/ice.h
> +++ b/drivers/net/ethernet/intel/ice/ice.h
> @@ -522,7 +522,6 @@ enum ice_pf_flags {
>  	ICE_FLAG_MTU_CHANGED,
>  	ICE_FLAG_GNSS,			/* GNSS successfully
> initialized */
>  	ICE_FLAG_DPLL,			/* SyncE/PTP dplls
> initialized */
> -	ICE_FLAG_LLDP_AQ_FLTR,
>  	ICE_PF_FLAGS_NBITS		/* must be last */
>  };
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c
> b/drivers/net/ethernet/intel/ice/ice_lib.c
> index 8cdc4fda89e9..2fe91ff8119f 100644
> --- a/drivers/net/ethernet/intel/ice/ice_lib.c
> +++ b/drivers/net/ethernet/intel/ice/ice_lib.c
> @@ -2090,24 +2090,16 @@ void ice_vsi_cfg_sw_lldp(struct ice_vsi *vsi,
> bool tx, bool create)
>  		status = eth_fltr(vsi, ETH_P_LLDP, ICE_FLTR_TX,
>  				  ICE_DROP_PACKET);
>  	} else {
> -		if (!test_bit(ICE_FLAG_LLDP_AQ_FLTR, pf->flags)) {
> +		status = ice_lldp_fltr_add_remove(&pf->hw, vsi, create);
> +		if (status == -EOPNOTSUPP) {
> +			/* If fltr_ctrl not supported, use legacy
> +			 * add/remove command
> +			 */
>  			status = eth_fltr(vsi, ETH_P_LLDP, ICE_FLTR_RX,
>  					  ICE_FWD_TO_VSI);
> -			if (!status || !create)
> -				goto report;
> -
> -			dev_info(dev,
> -				 "Failed to add generic LLDP Rx filter on
> VSI %i error: %d, falling back to specialized AQ control\n",
> -				 vsi->vsi_num, status);
>  		}
> -
> -		status = ice_lldp_fltr_add_remove(&pf->hw, vsi, create);
> -		if (!status)
> -			set_bit(ICE_FLAG_LLDP_AQ_FLTR, pf->flags);
> -
>  	}
> 
> -report:
>  	if (status)
>  		dev_warn(dev, "Failed to %s %s LLDP rule on VSI %i
> error: %d\n",
>  			 create ? "add" : "remove", tx ? "Tx" : "Rx",
> --
> 2.55.0

Reviewed-by: Aleksandr Loktionov <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.