Message ID | 20180104151019.18398-1-simon.horman@netronome.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | nfp: add basic multicast filtering | expand |
On Thu, Jan 04, 2018 at 04:10:19PM +0100, Simon Horman wrote: > From: Jakub Kicinski <jakub.kicinski@netronome.com> > > 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> Apologies, I somehow forgot to mark this as being for net-next. > --- > drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c > index 0add4870ce2e..29c0947f6d70 100644 > --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c > +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c > @@ -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) { > -- > 2.11.0 >
From: Simon Horman <simon.horman@netronome.com> Date: Thu, 4 Jan 2018 16:10:19 +0100 > From: Jakub Kicinski <jakub.kicinski@netronome.com> > > 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> Applied, thanks Simon.
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c index 0add4870ce2e..29c0947f6d70 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -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) {