* [Intel-wired-lan] [PATCH iwl-net v2] ice: Fix incorrect LLDP filter assumptions
@ 2026-08-11 18:11 ` Dave Ertman
0 siblings, 0 replies; 5+ messages in thread
From: Dave Ertman @ 2026-08-11 18:11 UTC (permalink / raw)
To: intel-wired-lan; +Cc: netdev, Przemek Kitszel
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 <david.m.ertman@intel.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
---
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
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH iwl-net v2] ice: Fix incorrect LLDP filter assumptions
@ 2026-08-11 18:11 ` Dave Ertman
0 siblings, 0 replies; 5+ messages in thread
From: Dave Ertman @ 2026-08-11 18:11 UTC (permalink / raw)
To: intel-wired-lan; +Cc: netdev, Przemek Kitszel
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 <david.m.ertman@intel.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
---
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
^ permalink raw reply related [flat|nested] 5+ messages in thread
* RE: [Intel-wired-lan] [PATCH iwl-net v2] ice: Fix incorrect LLDP filter assumptions
2026-08-11 18:11 ` Dave Ertman
@ 2026-08-12 9:43 ` Loktionov, Aleksandr
-1 siblings, 0 replies; 5+ messages in thread
From: Loktionov, Aleksandr @ 2026-08-12 9:43 UTC (permalink / raw)
To: Ertman, David M, intel-wired-lan@lists.osuosl.org
Cc: netdev@vger.kernel.org, Kitszel, Przemyslaw
> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf
> Of Dave Ertman
> Sent: Tuesday, August 11, 2026 8:11 PM
> To: intel-wired-lan@lists.osuosl.org
> Cc: netdev@vger.kernel.org; Kitszel, Przemyslaw
> <przemyslaw.kitszel@intel.com>
> 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 <david.m.ertman@intel.com>
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> ---
> 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 <aleksandr.loktionov@intel.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net v2] ice: Fix incorrect LLDP filter assumptions
@ 2026-08-12 9:43 ` Loktionov, Aleksandr
0 siblings, 0 replies; 5+ messages in thread
From: Loktionov, Aleksandr @ 2026-08-12 9:43 UTC (permalink / raw)
To: Ertman, David M, intel-wired-lan@lists.osuosl.org
Cc: netdev@vger.kernel.org, Kitszel, Przemyslaw
> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf
> Of Dave Ertman
> Sent: Tuesday, August 11, 2026 8:11 PM
> To: intel-wired-lan@lists.osuosl.org
> Cc: netdev@vger.kernel.org; Kitszel, Przemyslaw
> <przemyslaw.kitszel@intel.com>
> 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 <david.m.ertman@intel.com>
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> ---
> 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 <aleksandr.loktionov@intel.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net v2] ice: Fix incorrect LLDP filter assumptions
2026-08-11 18:11 ` Dave Ertman
(?)
(?)
@ 2026-08-13 13:59 ` Simon Horman
-1 siblings, 0 replies; 5+ messages in thread
From: Simon Horman @ 2026-08-13 13:59 UTC (permalink / raw)
To: Dave Ertman; +Cc: intel-wired-lan, netdev, Przemek Kitszel
On Tue, Aug 11, 2026 at 02:11:27PM -0400, Dave Ertman wrote:
> 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 <david.m.ertman@intel.com>
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-08-13 13:59 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-11 18:11 [Intel-wired-lan] [PATCH iwl-net v2] ice: Fix incorrect LLDP filter assumptions Dave Ertman
2026-08-11 18:11 ` Dave Ertman
2026-08-12 9:43 ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-08-12 9:43 ` Loktionov, Aleksandr
2026-08-13 13:59 ` Simon Horman
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.