HomeFreeBSD

ixl(4): fix multicast promiscuous mode state tracking and filter management

Description

ixl(4): fix multicast promiscuous mode state tracking and filter management

This change reapplies the improvements from commit 89e7335 and adds
additional fixes and code optimizations on top of it.

The ixl driver supports up to 128 multicast filters in hardware. When this
limit is exceeded, the driver should enable multicast promiscuous mode.
When the count drops below 128, it should disable promiscuous mode and
restore individual filters.

The driver previously had problems that could corrupt multicast filters list.
The main issue was that ixl_dis_multi_promisc() would attempt to disable
promiscuous mode without checking if it was actually enabled, potentially
corrupting existing filters. There was also no state tracking across driver
functions, leading to redundant operations.

This change adds an IXL_FLAGS_MC_PROMISC flag to track the multicast
promiscuous mode state. The flag is set when enabling promiscuous mode and
cleared when disabling it. Early return checks prevent redundant operations
when the mode is already in the desired state, avoiding filter corruption
and unnecessary hardware calls.

Signed-off-by: Yogesh Bhosale yogesh.bhosale@intel.com

PR: 283820
Approved by: kbowling (mentor)
Tested by: gowtham.kumar.ks_intel.com
Sponsored by: Intel Corporation
Differential Revision: https://reviews.freebsd.org/D52549

(cherry picked from commit 46a8a1f08f88c278e60ebb6daa7a551eb641c67b)

Details

Provenance
Yogesh.Bhosale_intel.comAuthored on Thu, Oct 16, 8:02 PM
kgalazkaCommitted on Fri, Oct 31, 8:47 PM
Differential Revision
D52549: ixl(4): fix multicast promiscuous mode state tracking and filter management
Parents
rGb59a9230a6a8: ice(4): Add support for E835-XXV-4 adapter
Branches
Unknown
Tags
Unknown