Commit ce2a27c7 authored by Maxime Chevallier's avatar Maxime Chevallier Committed by David S. Miller

net: mvpp2: Simplify MAC filtering function parameters

The mvpp2_prs_mac_da_accept function takes into parameter both the
struct representing the controller and the port id. This is meaningful
when we want to create TCAM entries for non-initialized ports, but in
this case we expect the port to be initialized before starting adding or
removing MAC addresses to the per-port filter.

This commit changes the function so that it takes struct mvpp2_port as
a parameter instead.
Signed-off-by: default avatarMaxime Chevallier <maxime.chevallier@bootlin.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent dff58a09
...@@ -3817,16 +3817,17 @@ mvpp2_prs_mac_da_range_find(struct mvpp2 *priv, int pmap, const u8 *da, ...@@ -3817,16 +3817,17 @@ mvpp2_prs_mac_da_range_find(struct mvpp2 *priv, int pmap, const u8 *da,
} }
/* Update parser's mac da entry */ /* Update parser's mac da entry */
static int mvpp2_prs_mac_da_accept(struct mvpp2 *priv, int port, static int mvpp2_prs_mac_da_accept(struct mvpp2_port *port, const u8 *da,
const u8 *da, bool add) bool add)
{ {
struct mvpp2_prs_entry *pe;
unsigned int pmap, len, ri;
unsigned char mask[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; unsigned char mask[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
struct mvpp2 *priv = port->priv;
unsigned int pmap, len, ri;
struct mvpp2_prs_entry *pe;
int tid; int tid;
/* Scan TCAM and see if entry with this <MAC DA, port> already exist */ /* Scan TCAM and see if entry with this <MAC DA, port> already exist */
pe = mvpp2_prs_mac_da_range_find(priv, (1 << port), da, mask, pe = mvpp2_prs_mac_da_range_find(priv, BIT(port->id), da, mask,
MVPP2_PRS_UDF_MAC_DEF); MVPP2_PRS_UDF_MAC_DEF);
/* No such entry */ /* No such entry */
...@@ -3861,7 +3862,7 @@ static int mvpp2_prs_mac_da_accept(struct mvpp2 *priv, int port, ...@@ -3861,7 +3862,7 @@ static int mvpp2_prs_mac_da_accept(struct mvpp2 *priv, int port,
} }
/* Update port mask */ /* Update port mask */
mvpp2_prs_tcam_port_set(pe, port, add); mvpp2_prs_tcam_port_set(pe, port->id, add);
/* Invalidate the entry if no ports are left enabled */ /* Invalidate the entry if no ports are left enabled */
pmap = mvpp2_prs_tcam_port_map_get(pe); pmap = mvpp2_prs_tcam_port_map_get(pe);
...@@ -3917,13 +3918,12 @@ static int mvpp2_prs_update_mac_da(struct net_device *dev, const u8 *da) ...@@ -3917,13 +3918,12 @@ static int mvpp2_prs_update_mac_da(struct net_device *dev, const u8 *da)
int err; int err;
/* Remove old parser entry */ /* Remove old parser entry */
err = mvpp2_prs_mac_da_accept(port->priv, port->id, dev->dev_addr, err = mvpp2_prs_mac_da_accept(port, dev->dev_addr, false);
false);
if (err) if (err)
return err; return err;
/* Add new parser entry */ /* Add new parser entry */
err = mvpp2_prs_mac_da_accept(port->priv, port->id, da, true); err = mvpp2_prs_mac_da_accept(port, da, true);
if (err) if (err)
return err; return err;
...@@ -3959,7 +3959,8 @@ static void mvpp2_prs_mcast_del_all(struct mvpp2 *priv, int port) ...@@ -3959,7 +3959,8 @@ static void mvpp2_prs_mcast_del_all(struct mvpp2 *priv, int port)
if (is_multicast_ether_addr(da) && !is_broadcast_ether_addr(da)) if (is_multicast_ether_addr(da) && !is_broadcast_ether_addr(da))
/* Delete this entry */ /* Delete this entry */
mvpp2_prs_mac_da_accept(priv, port, da, false); mvpp2_prs_mac_da_accept(priv->port_list[port], da,
false);
} }
} }
...@@ -7380,15 +7381,14 @@ static int mvpp2_open(struct net_device *dev) ...@@ -7380,15 +7381,14 @@ static int mvpp2_open(struct net_device *dev)
0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
int err; int err;
err = mvpp2_prs_mac_da_accept(port->priv, port->id, mac_bcast, true); err = mvpp2_prs_mac_da_accept(port, mac_bcast, true);
if (err) { if (err) {
netdev_err(dev, "mvpp2_prs_mac_da_accept BC failed\n"); netdev_err(dev, "mvpp2_prs_mac_da_accept BC failed\n");
return err; return err;
} }
err = mvpp2_prs_mac_da_accept(port->priv, port->id, err = mvpp2_prs_mac_da_accept(port, dev->dev_addr, true);
dev->dev_addr, true);
if (err) { if (err) {
netdev_err(dev, "mvpp2_prs_mac_da_accept MC failed\n"); netdev_err(dev, "mvpp2_prs_mac_da_accept own addr failed\n");
return err; return err;
} }
err = mvpp2_prs_tag_mode_set(port->priv, port->id, MVPP2_TAG_TYPE_MH); err = mvpp2_prs_tag_mode_set(port->priv, port->id, MVPP2_TAG_TYPE_MH);
...@@ -7520,7 +7520,7 @@ static void mvpp2_set_rx_mode(struct net_device *dev) ...@@ -7520,7 +7520,7 @@ static void mvpp2_set_rx_mode(struct net_device *dev)
if (!allmulti) { if (!allmulti) {
netdev_for_each_mc_addr(ha, dev) { netdev_for_each_mc_addr(ha, dev) {
if (mvpp2_prs_mac_da_accept(priv, id, ha->addr, true)) { if (mvpp2_prs_mac_da_accept(port, ha->addr, true)) {
allmulti = true; allmulti = true;
goto retry; goto retry;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment