]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
nfp: add basic multicast filtering
authorJakub Kicinski <jakub.kicinski@netronome.com>
Thu, 4 Jan 2018 15:10:19 +0000 (16:10 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 5 Jan 2018 18:46:47 +0000 (13:46 -0500)
We currently always pass all multicast traffic through.
Only set L2MC when actually needed.  Since the driver
was not making use of the capability to filter out mcast
frames, some FW projects don't implement it any more.
Don't warn users if capability is not present (like we
do for promisc flag).  The lack of L2MC capability is
assumed to mean all multicast traffic goes through.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/netronome/nfp/nfp_net_common.c

index 0add4870ce2efe4afd7b3c48a49824b70de84e7d..29c0947f6d70943301404fed69a73aea625e23de 100644 (file)
@@ -2850,6 +2850,11 @@ static void nfp_net_set_rx_mode(struct net_device *netdev)
 
        new_ctrl = nn->dp.ctrl;
 
+       if (!netdev_mc_empty(netdev) || netdev->flags & IFF_ALLMULTI)
+               new_ctrl |= nn->cap & NFP_NET_CFG_CTRL_L2MC;
+       else
+               new_ctrl &= ~NFP_NET_CFG_CTRL_L2MC;
+
        if (netdev->flags & IFF_PROMISC) {
                if (nn->cap & NFP_NET_CFG_CTRL_PROMISC)
                        new_ctrl |= NFP_NET_CFG_CTRL_PROMISC;
@@ -3787,8 +3792,6 @@ int nfp_net_init(struct nfp_net *nn)
        /* Allow L2 Broadcast and Multicast through by default, if supported */
        if (nn->cap & NFP_NET_CFG_CTRL_L2BC)
                nn->dp.ctrl |= NFP_NET_CFG_CTRL_L2BC;
-       if (nn->cap & NFP_NET_CFG_CTRL_L2MC)
-               nn->dp.ctrl |= NFP_NET_CFG_CTRL_L2MC;
 
        /* Allow IRQ moderation, if supported */
        if (nn->cap & NFP_NET_CFG_CTRL_IRQMOD) {