diff options
| author | Zhenlei Huang <zlei@FreeBSD.org> | 2026-02-06 17:52:55 +0000 |
|---|---|---|
| committer | Zhenlei Huang <zlei@FreeBSD.org> | 2026-02-24 10:15:38 +0000 |
| commit | 091a1e7d21c9b2cbd7dbe89335b08d4d50fab96e (patch) | |
| tree | b2cccdbb235f82ade0a14a08ca71c46c3f58e069 /sys/modules/opensolaris/Makefile | |
| parent | 281d578e9ff56412bedbf7884fa097e5e59438da (diff) | |
qlnxe: Overhaul setting the multicast MAC filtersstable/13
When operating the multicast MAC filters, the current usage of
ECORE_FILTER_ADD and ECORE_FILTER_REMOVE are rather misleading.
ECORE_FILTER_ADD reads "adding new filter", but it actually removes
any existing filters and then addes a new one. ECORE_FILTER_REMOVE
reads "removing a filter", but it actually removes all filters.
Let's use ECORE_FILTER_REPLACE and ECORE_FILTER_FLUSH instead to
avoid confusion.
In the current implementation, only one MAC address is passed to
ecore_sp_eth_filter_mcast() and any previously installed filters are
removed, hence it breaks the multicast function. That can be observed
via either assigning new IPv6 addresses to the interface or putting
the interface as a member of lagg(4) interface with LACP aggregation
protocol. Fix that by calculating the multicast filter bins directly
from multicast MAC addresses and replace the filters every time
the bins changes.
Due to the nature of the multicast filter, which is hash based, a
full 1's multicast filter bin means all multicast packets are to be
accepted. Thus there's no need to make the vport into allmulti mode
when the number of multicast MAC addresses exceeds the limit
(ECORE_MAX_MC_ADDRS, 64).
Tested with a FastLinQ QL41212HLCU 25GbE adapter, both MFW_Version
8.35.23.0 and 8.59.16.0 are tested.
Note: Currently the VF port is set to promiscuous mode unconditionally,
and the setting of the multicast MAC filters for VF ports is
short-circuited, so the VF port functions as it did.
PR: 265857
PR: 290973
Reviewed by: kbowling
MFC after: 5 days
Differential Revision: https://reviews.freebsd.org/D54892
(cherry picked from commit 70256d2b86d95a678a63c65b157b9c635f1f4c6a)
(cherry picked from commit 0cfc1145cdfc2a7beeeb7f39ad2722c7053681c0)
(cherry picked from commit 87942d7f8fc58e8b4af90ec1050b263005c3d64e)
Diffstat (limited to 'sys/modules/opensolaris/Makefile')
0 files changed, 0 insertions, 0 deletions
