diff options
author | Radu Bulie <radu-andrei.bulie@nxp.com> | 2018-02-26 11:24:04 -0600 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-02-27 11:40:03 -0500 |
commit | c893238e5d9b279be4c73d7fdf0dc8986a6c118f (patch) | |
tree | 98f54d7c26d724c725f95927c2459f5870537097 /drivers/net/ethernet/freescale/fman/fman_dtsec.c | |
parent | 056a01ba9453258a56993e8645b7b922e55be81c (diff) | |
download | linux-c893238e5d9b279be4c73d7fdf0dc8986a6c118f.tar.gz |
dpaa_eth: Add allmulti option
This patch adds allmulticast option for memac, dtsec
and 10GEC controllers.
Signed-off-by: Radu Bulie <radu-andrei.bulie@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/freescale/fman/fman_dtsec.c')
-rw-r--r-- | drivers/net/ethernet/freescale/fman/fman_dtsec.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/fman/fman_dtsec.c b/drivers/net/ethernet/freescale/fman/fman_dtsec.c index ea43b4974149..9a581faaa742 100644 --- a/drivers/net/ethernet/freescale/fman/fman_dtsec.c +++ b/drivers/net/ethernet/freescale/fman/fman_dtsec.c @@ -1117,6 +1117,25 @@ int dtsec_add_hash_mac_address(struct fman_mac *dtsec, enet_addr_t *eth_addr) return 0; } +int dtsec_set_allmulti(struct fman_mac *dtsec, bool enable) +{ + u32 tmp; + struct dtsec_regs __iomem *regs = dtsec->regs; + + if (!is_init_done(dtsec->dtsec_drv_param)) + return -EINVAL; + + tmp = ioread32be(®s->rctrl); + if (enable) + tmp |= RCTRL_MPROM; + else + tmp &= ~RCTRL_MPROM; + + iowrite32be(tmp, ®s->rctrl); + + return 0; +} + int dtsec_del_hash_mac_address(struct fman_mac *dtsec, enet_addr_t *eth_addr) { struct dtsec_regs __iomem *regs = dtsec->regs; |