]> git.baikalelectronics.ru Git - kernel.git/commit
bnx2x: Don't flush multicast MACs
authorYuval Mintz <Yuval.Mintz@qlogic.com>
Wed, 24 Aug 2016 10:27:19 +0000 (13:27 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 24 Aug 2016 16:45:20 +0000 (09:45 -0700)
commit0952bc33d3b20ec5f64c07630124036da4ba6c50
treea0e669ab9cc7d9814bbdbdecc4847818895a9670
parentd34854ba34e45fd35693d10ed356b1ad912f009e
bnx2x: Don't flush multicast MACs

When ndo_set_rx_mode() is called for bnx2x, as part of process of
configuring the new MAC address filters [both unicast & multicast]
driver begins by flushing the existing configuration and then iterating
over the network device's list of addresses and configures those instead.

This has the side-effect of creating a short gap where traffic wouldn't
be properly classified, as no filters are configured in HW.
While for unicasts this is rather insignificant [as unicast MACs don't
frequently change while interface is actually running],
for multicast traffic it does pose an issue as there are multicast-based
networks where new multicast groups would constantly be removed and
added.

This patch tries to remedy this [at least for the newer adapters] -
Instead of flushing & reconfiguring all existing multicast filters,
the driver would instead create the approximate hash match that would
result from the required filters. It would then compare it against the
currently configured approximate hash match, and only add and remove the
delta between those.

Signed-off-by: Yuval Mintz <Yuval.Mintz@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h
drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c
drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.h