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
MFC after: 2 weeks
Sponsored by: Intel Corporation
Differential Revision: https://reviews.freebsd.org/D52549

Details

Provenance
Yogesh.Bhosale_intel.comAuthored on Thu, Oct 16, 8:02 PM
kgalazkaCommitted on Thu, Oct 16, 8:04 PM
Differential Revision
D52549: ixl(4): fix multicast promiscuous mode state tracking and filter management
Parents
rG9f85cf09d48b: UPDATING: Belatedly note OpenZFS sysctls moving
Branches
Unknown
Tags
Unknown