Bug 283820 - ixl multicast filter problems
Summary: ixl multicast filter problems
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 15.0-CURRENT
Hardware: Any Any
: --- Affects Only Me
Assignee: Krzysztof Galazka
URL:
Keywords: IntelNetworking
Depends on:
Blocks:
 
Reported: 2025-01-03 14:28 UTC by Mark Johnston
Modified: 2025-11-13 00:13 UTC (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mark Johnston freebsd_committer freebsd_triage 2025-01-03 14:28:05 UTC
This commit had to be reverted for PR 281125: https://cgit.freebsd.org/src/commit/?id=89e73359424

The problems ostensibly fixed by that commit are still here, so this PR serves to track them.
Comment 1 commit-hook freebsd_committer freebsd_triage 2025-10-16 20:09:37 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/src/commit/?id=46a8a1f08f88c278e60ebb6daa7a551eb641c67b

commit 46a8a1f08f88c278e60ebb6daa7a551eb641c67b
Author:     Bhosale, Yogesh <yogesh.bhosale@intel.com>
AuthorDate: 2025-10-16 20:02:45 +0000
Commit:     Krzysztof Galazka <kgalazka@FreeBSD.org>
CommitDate: 2025-10-16 20:04:01 +0000

    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

 sys/dev/ixl/if_ixl.c      |  27 +++++++++++-
 sys/dev/ixl/ixl.h         |   1 +
 sys/dev/ixl/ixl_pf_main.c | 110 +++++++++++++++++++++++++++++++++++++++-------
 3 files changed, 120 insertions(+), 18 deletions(-)
Comment 2 commit-hook freebsd_committer freebsd_triage 2025-10-31 20:53:02 UTC
A commit in branch stable/15 references this bug:

URL: https://cgit.FreeBSD.org/src/commit/?id=f3c442950de3b34dda24ecb258171c32d161b1fd

commit f3c442950de3b34dda24ecb258171c32d161b1fd
Author:     Bhosale, Yogesh <yogesh.bhosale@intel.com>
AuthorDate: 2025-10-16 20:02:45 +0000
Commit:     Krzysztof Galazka <kgalazka@FreeBSD.org>
CommitDate: 2025-10-31 20:47:20 +0000

    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)

 sys/dev/ixl/if_ixl.c      |  27 +++++++++++-
 sys/dev/ixl/ixl.h         |   1 +
 sys/dev/ixl/ixl_pf_main.c | 110 +++++++++++++++++++++++++++++++++++++++-------
 3 files changed, 120 insertions(+), 18 deletions(-)
Comment 3 commit-hook freebsd_committer freebsd_triage 2025-10-31 21:02:05 UTC
A commit in branch stable/14 references this bug:

URL: https://cgit.FreeBSD.org/src/commit/?id=b2b2a4788f7925f41d902df6b7f3d19bccd6f42f

commit b2b2a4788f7925f41d902df6b7f3d19bccd6f42f
Author:     Bhosale, Yogesh <yogesh.bhosale@intel.com>
AuthorDate: 2025-10-16 20:02:45 +0000
Commit:     Krzysztof Galazka <kgalazka@FreeBSD.org>
CommitDate: 2025-10-31 20:57:48 +0000

    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)

 sys/dev/ixl/if_ixl.c      |  27 +++++++++++-
 sys/dev/ixl/ixl.h         |   1 +
 sys/dev/ixl/ixl_pf_main.c | 110 +++++++++++++++++++++++++++++++++++++++-------
 3 files changed, 120 insertions(+), 18 deletions(-)
Comment 4 commit-hook freebsd_committer freebsd_triage 2025-11-03 20:30:17 UTC
A commit in branch releng/15.0 references this bug:

URL: https://cgit.FreeBSD.org/src/commit/?id=97fa2bfeab3de726f096ff2fb991da79ea8285fb

commit 97fa2bfeab3de726f096ff2fb991da79ea8285fb
Author:     Bhosale, Yogesh <yogesh.bhosale@intel.com>
AuthorDate: 2025-10-16 20:02:45 +0000
Commit:     Colin Percival <cperciva@FreeBSD.org>
CommitDate: 2025-11-03 20:29:19 +0000

    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

    Approved by:    re (cperciva)
    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)
    (cherry picked from commit f3c442950de3b34dda24ecb258171c32d161b1fd)

 sys/dev/ixl/if_ixl.c      |  27 +++++++++++-
 sys/dev/ixl/ixl.h         |   1 +
 sys/dev/ixl/ixl_pf_main.c | 110 +++++++++++++++++++++++++++++++++++++++-------
 3 files changed, 120 insertions(+), 18 deletions(-)
Comment 5 Mark Linimon freebsd_committer freebsd_triage 2025-11-13 00:13:37 UTC
^Triage: assign to committer who resolved.