qlcnic: Delete existing multicast MAC list before adding new
authorShahed Shaikh <shahed.shaikh@qlogic.com>
Wed, 11 Feb 2015 14:45:24 +0000 (09:45 -0500)
committerDavid S. Miller <davem@davemloft.net>
Thu, 12 Feb 2015 03:43:22 +0000 (19:43 -0800)
commitfe79fabbed056d081d6130cbd83e5b2fc42c3c52
tree113aec2bf9639a90e6f0aff83d703fc003e1615a
parentde61390cb3e03186f85997fe08a11dcb9f7a01a3
qlcnic: Delete existing multicast MAC list before adding new

Driver keeps adding multicast addresses without deleting removed MACs and
worrying about adapters filter limit. This results into actual count of programmed
multicast addresses get accumulated over the time and overruns the adapter's
filter limit without putting device in ACCEPT_ALL_MULTI mode. This causes
newly added multicast traffic to fail after the sequence of addition - deletion
in certain pattern.

This issue is seen only when netdev's mcast list count is less than adapters
mcast filter limit.

e.g. If adapters multicast filter limit is 38 per function
     then following sequence would result in multicast traffic failure for
     newly added MACs.
     - add less than 38 multicast MACs
     - remove previously added multicast MACs
     - add new multicast MACs (less than 38)

Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c