]> www.infradead.org Git - users/jedix/linux-maple.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)
committerChuck Anderson <chuck.anderson@oracle.com>
Mon, 27 Feb 2017 02:03:24 +0000 (18:03 -0800)
commitfa140fc14eaebc0d9184ece31992bb0d4ba9bd34
treef95d74bbd82694697e501a02828c61ea46d0f2e1
parent70f4a981bb13f06cdbb1875f694430744538e22c
bnx2x: Don't flush multicast MACs

Orabug: 25477835

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>
(cherry picked from commit c7b7b483ccc9d64ae577a04d490aa9a975afe891)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
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