drivers/net/ethernet/rocker/rocker_ofdpa.c
1044
return ofdpa_flow_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1075
static int ofdpa_group_tbl_add(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1078
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1100
return rocker_cmd_exec(ofdpa_port->rocker_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1106
static int ofdpa_group_tbl_del(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1109
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1128
err = rocker_cmd_exec(ofdpa_port->rocker_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1138
static int ofdpa_group_tbl_do(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1142
return ofdpa_group_tbl_del(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1144
return ofdpa_group_tbl_add(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1147
static int ofdpa_group_l2_interface(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1160
return ofdpa_group_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1163
static int ofdpa_group_l2_fan_out(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1183
return ofdpa_group_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1186
static int ofdpa_group_l2_flood(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1191
return ofdpa_group_l2_fan_out(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1196
static int ofdpa_group_l3_unicast(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1215
return ofdpa_group_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1259
static int ofdpa_port_ipv4_neigh(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1262
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1290
entry->dev = ofdpa_port->dev;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1315
err = ofdpa_group_l3_unicast(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1317
ofdpa_port->dev->dev_addr,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1319
ofdpa_port->internal_vlan_id,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1321
ofdpa_port->pport);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1323
netdev_err(ofdpa_port->dev, "Error (%d) L3 unicast group index %d\n",
drivers/net/ethernet/rocker/rocker_ofdpa.c
1330
err = ofdpa_flow_tbl_ucast4_routing(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1337
netdev_err(ofdpa_port->dev, "Error (%d) /32 unicast route %pI4 group 0x%08x\n",
drivers/net/ethernet/rocker/rocker_ofdpa.c
134
struct ofdpa_port *ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1348
static int ofdpa_port_ipv4_resolve(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1351
struct net_device *dev = ofdpa_port->dev;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1367
err = ofdpa_port_ipv4_neigh(ofdpa_port, 0,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1376
static int ofdpa_port_ipv4_nh(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1379
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1403
entry->dev = ofdpa_port->dev;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1429
err = ofdpa_port_ipv4_resolve(ofdpa_port, ip_addr);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1434
static struct ofdpa_port *ofdpa_port_get(const struct ofdpa *ofdpa,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1443
static int ofdpa_port_vlan_flood_group(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1446
struct ofdpa_port *p;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1447
const struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1480
err = ofdpa_group_l2_flood(ofdpa_port, flags, vlan_id,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1483
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN l2 flood group\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1490
static int ofdpa_port_vlan_l2_groups(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1493
const struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1495
struct ofdpa_port *p;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1506
if (ofdpa_port->stp_state == BR_STATE_LEARNING ||
drivers/net/ethernet/rocker/rocker_ofdpa.c
1507
ofdpa_port->stp_state == BR_STATE_FORWARDING) {
drivers/net/ethernet/rocker/rocker_ofdpa.c
1508
out_pport = ofdpa_port->pport;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1509
err = ofdpa_group_l2_interface(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1512
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN l2 group for pport %d\n",
drivers/net/ethernet/rocker/rocker_ofdpa.c
1533
err = ofdpa_group_l2_interface(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1536
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN l2 group for CPU port\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1594
static int ofdpa_port_ctrl_vlan_acl(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1597
u32 in_pport = ofdpa_port->pport;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1610
err = ofdpa_flow_tbl_acl(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1621
netdev_err(ofdpa_port->dev, "Error (%d) ctrl ACL\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1626
static int ofdpa_port_ctrl_vlan_bridge(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1636
if (!ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
1639
err = ofdpa_flow_tbl_bridge(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1645
netdev_err(ofdpa_port->dev, "Error (%d) ctrl FLOOD\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1650
static int ofdpa_port_ctrl_vlan_term(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1658
vlan_id = ofdpa_port->internal_vlan_id;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1660
err = ofdpa_flow_tbl_term_mac(ofdpa_port, ofdpa_port->pport, in_pport_mask,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1667
netdev_err(ofdpa_port->dev, "Error (%d) ctrl term\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1672
static int ofdpa_port_ctrl_vlan(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1676
return ofdpa_port_ctrl_vlan_acl(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1679
return ofdpa_port_ctrl_vlan_bridge(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1683
return ofdpa_port_ctrl_vlan_term(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1689
static int ofdpa_port_ctrl_vlan_add(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1696
if (ofdpa_port->ctrls[i]) {
drivers/net/ethernet/rocker/rocker_ofdpa.c
1697
err = ofdpa_port_ctrl_vlan(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1707
static int ofdpa_port_ctrl(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1714
if (!test_bit(vid, ofdpa_port->vlan_bitmap))
drivers/net/ethernet/rocker/rocker_ofdpa.c
1716
err = ofdpa_port_ctrl_vlan(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1725
static int ofdpa_port_vlan(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1730
u32 in_pport = ofdpa_port->pport;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1738
internal_vlan_id = ofdpa_port_vid_to_vlan(ofdpa_port, vid, &untagged);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1741
test_bit(ntohs(internal_vlan_id), ofdpa_port->vlan_bitmap))
drivers/net/ethernet/rocker/rocker_ofdpa.c
1744
!test_bit(ntohs(internal_vlan_id), ofdpa_port->vlan_bitmap))
drivers/net/ethernet/rocker/rocker_ofdpa.c
1747
change_bit(ntohs(internal_vlan_id), ofdpa_port->vlan_bitmap);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1750
err = ofdpa_port_ctrl_vlan_add(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1753
netdev_err(ofdpa_port->dev, "Error (%d) port ctrl vlan add\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1758
err = ofdpa_port_vlan_l2_groups(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1761
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN l2 groups\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1765
err = ofdpa_port_vlan_flood_group(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1768
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN l2 flood group\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1772
err = ofdpa_flow_tbl_vlan(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1776
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN table\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1783
change_bit(ntohs(internal_vlan_id), ofdpa_port->vlan_bitmap);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1787
static int ofdpa_port_ig_tbl(struct ofdpa_port *ofdpa_port, int flags)
drivers/net/ethernet/rocker/rocker_ofdpa.c
1802
err = ofdpa_flow_tbl_ig_port(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1806
netdev_err(ofdpa_port->dev, "Error (%d) ingress port table entry\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1813
struct ofdpa_port *ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1834
call_switchdev_notifiers(event, lw->ofdpa_port->dev, &info.info, NULL);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1840
static int ofdpa_port_fdb_learn(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1846
u32 out_pport = ofdpa_port->pport;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1852
if (ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
1856
err = ofdpa_flow_tbl_bridge(ofdpa_port, flags, addr,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1863
if (!ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
1875
lw->ofdpa_port = ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1878
lw->vid = ofdpa_port_vlan_to_vid(ofdpa_port, vlan_id);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1897
static int ofdpa_port_fdb(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1901
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1913
fdb->key.ofdpa_port = ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1944
return ofdpa_port_fdb_learn(ofdpa_port, flags, addr, vlan_id);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1947
static int ofdpa_port_fdb_flush(struct ofdpa_port *ofdpa_port, int flags)
drivers/net/ethernet/rocker/rocker_ofdpa.c
1949
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1956
if (ofdpa_port->stp_state == BR_STATE_LEARNING ||
drivers/net/ethernet/rocker/rocker_ofdpa.c
1957
ofdpa_port->stp_state == BR_STATE_FORWARDING)
drivers/net/ethernet/rocker/rocker_ofdpa.c
1965
if (found->key.ofdpa_port != ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
1969
err = ofdpa_port_fdb_learn(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1986
struct ofdpa_port *ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2001
ofdpa_port = entry->key.ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2002
expires = entry->touched + ofdpa_port->ageing_time;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2004
ofdpa_port_fdb_learn(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2018
static int ofdpa_port_router_mac(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2029
vlan_id = ofdpa_port->internal_vlan_id;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2032
err = ofdpa_flow_tbl_term_mac(ofdpa_port, ofdpa_port->pport,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2034
ofdpa_port->dev->dev_addr,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2041
err = ofdpa_flow_tbl_term_mac(ofdpa_port, ofdpa_port->pport,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2043
ofdpa_port->dev->dev_addr,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2050
static int ofdpa_port_fwding(struct ofdpa_port *ofdpa_port, int flags)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2065
if (ofdpa_port->stp_state != BR_STATE_LEARNING &&
drivers/net/ethernet/rocker/rocker_ofdpa.c
2066
ofdpa_port->stp_state != BR_STATE_FORWARDING)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2069
out_pport = ofdpa_port->pport;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2071
if (!test_bit(vid, ofdpa_port->vlan_bitmap))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2075
err = ofdpa_group_l2_interface(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2078
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN l2 group for pport %d\n",
drivers/net/ethernet/rocker/rocker_ofdpa.c
2087
static int ofdpa_port_stp_update(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2096
memcpy(prev_ctrls, ofdpa_port->ctrls, sizeof(prev_ctrls));
drivers/net/ethernet/rocker/rocker_ofdpa.c
2097
prev_state = ofdpa_port->stp_state;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2099
if (ofdpa_port->stp_state == state)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2102
ofdpa_port->stp_state = state;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2114
if (!ofdpa_port_is_ovsed(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2118
if (ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2120
else if (ofdpa_port_is_ovsed(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2128
if (want[i] != ofdpa_port->ctrls[i]) {
drivers/net/ethernet/rocker/rocker_ofdpa.c
2131
err = ofdpa_port_ctrl(ofdpa_port, ctrl_flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2135
ofdpa_port->ctrls[i] = want[i];
drivers/net/ethernet/rocker/rocker_ofdpa.c
2139
err = ofdpa_port_fdb_flush(ofdpa_port, flags);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2143
err = ofdpa_port_fwding(ofdpa_port, flags);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2152
memcpy(ofdpa_port->ctrls, prev_ctrls, sizeof(prev_ctrls));
drivers/net/ethernet/rocker/rocker_ofdpa.c
2153
ofdpa_port->stp_state = prev_state;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2157
static int ofdpa_port_fwd_enable(struct ofdpa_port *ofdpa_port, int flags)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2159
if (ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2164
return ofdpa_port_stp_update(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2168
static int ofdpa_port_fwd_disable(struct ofdpa_port *ofdpa_port, int flags)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2170
if (ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2175
return ofdpa_port_stp_update(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2179
static int ofdpa_port_vlan_add(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2186
err = ofdpa_port_vlan(ofdpa_port, 0, vid);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2190
err = ofdpa_port_router_mac(ofdpa_port, 0, htons(vid));
drivers/net/ethernet/rocker/rocker_ofdpa.c
2192
ofdpa_port_vlan(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2198
static int ofdpa_port_vlan_del(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2203
err = ofdpa_port_router_mac(ofdpa_port, OFDPA_OP_FLAG_REMOVE,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2208
return ofdpa_port_vlan(ofdpa_port, OFDPA_OP_FLAG_REMOVE,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2226
static __be16 ofdpa_port_internal_vlan_id_get(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2229
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2259
netdev_err(ofdpa_port->dev, "Out of internal VLAN IDs\n");
drivers/net/ethernet/rocker/rocker_ofdpa.c
2268
static int ofdpa_port_fib_ipv4(struct ofdpa_port *ofdpa_port, __be32 dst,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2275
__be16 internal_vlan_id = ofdpa_port->internal_vlan_id;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2288
nh_on_port = (nh->fib_nh_dev == ofdpa_port->dev);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2292
err = ofdpa_port_ipv4_nh(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2303
err = ofdpa_flow_tbl_ucast4_routing(ofdpa_port, eth_type, dst,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2307
netdev_err(ofdpa_port->dev, "Error (%d) IPv4 route %pI4\n",
drivers/net/ethernet/rocker/rocker_ofdpa.c
2314
ofdpa_port_internal_vlan_id_put(const struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2317
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2326
netdev_err(ofdpa_port->dev,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2421
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2423
ofdpa_port->ofdpa = rocker_port->rocker->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2424
ofdpa_port->rocker_port = rocker_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2425
ofdpa_port->dev = rocker_port->dev;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2426
ofdpa_port->pport = rocker_port->pport;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2427
ofdpa_port->brport_flags = BR_LEARNING;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2428
ofdpa_port->ageing_time = BR_DEFAULT_AGEING_TIME;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2434
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2438
!!(ofdpa_port->brport_flags & BR_LEARNING));
drivers/net/ethernet/rocker/rocker_ofdpa.c
2440
err = ofdpa_port_ig_tbl(ofdpa_port, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2442
netdev_err(ofdpa_port->dev, "install ig port table failed\n");
drivers/net/ethernet/rocker/rocker_ofdpa.c
2446
ofdpa_port->internal_vlan_id =
drivers/net/ethernet/rocker/rocker_ofdpa.c
2447
ofdpa_port_internal_vlan_id_get(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2448
ofdpa_port->dev->ifindex);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2450
err = ofdpa_port_vlan_add(ofdpa_port, OFDPA_UNTAGGED_VID, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2452
netdev_err(ofdpa_port->dev, "install untagged VLAN failed\n");
drivers/net/ethernet/rocker/rocker_ofdpa.c
2458
ofdpa_port_ig_tbl(ofdpa_port, OFDPA_OP_FLAG_REMOVE);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2464
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2466
ofdpa_port_ig_tbl(ofdpa_port, OFDPA_OP_FLAG_REMOVE);
drivers/net/ethernet/rocker/rocker_ofdpa.c
247
static __be16 ofdpa_port_vid_to_vlan(const struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2471
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2473
return ofdpa_port_fwd_enable(ofdpa_port, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2478
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2480
ofdpa_port_fwd_disable(ofdpa_port, OFDPA_OP_FLAG_NOWAIT);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2486
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2488
return ofdpa_port_stp_update(ofdpa_port, 0, state);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2494
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2498
orig_flags = ofdpa_port->brport_flags;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2499
ofdpa_port->brport_flags = brport_flags;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2501
if ((orig_flags ^ ofdpa_port->brport_flags) & BR_LEARNING)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2502
err = rocker_port_set_learning(ofdpa_port->rocker_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2503
!!(ofdpa_port->brport_flags & BR_LEARNING));
drivers/net/ethernet/rocker/rocker_ofdpa.c
2522
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2523
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2525
ofdpa_port->ageing_time = clock_t_to_jiffies(ageing_time);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2526
if (ofdpa_port->ageing_time < ofdpa->ageing_time)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2527
ofdpa->ageing_time = ofdpa_port->ageing_time;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2528
mod_timer(&ofdpa_port->ofdpa->fdb_cleanup_timer, jiffies);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2536
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2538
return ofdpa_port_vlan_add(ofdpa_port, vlan->vid, vlan->flags);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2544
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2546
return ofdpa_port_vlan_del(ofdpa_port, vlan->vid, vlan->flags);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2552
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2553
__be16 vlan_id = ofdpa_port_vid_to_vlan(ofdpa_port, vid, NULL);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2555
if (!ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2558
return ofdpa_port_fdb(ofdpa_port, addr, vlan_id, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
256
vlan_id = ofdpa_port->internal_vlan_id;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2564
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2565
__be16 vlan_id = ofdpa_port_vid_to_vlan(ofdpa_port, vid, NULL);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2568
if (!ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2571
return ofdpa_port_fdb(ofdpa_port, addr, vlan_id, flags);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2574
static int ofdpa_port_bridge_join(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2578
struct net_device *dev = ofdpa_port->dev;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2587
err = ofdpa_port_vlan_del(ofdpa_port, OFDPA_UNTAGGED_VID, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2591
ofdpa_port_internal_vlan_id_put(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2592
ofdpa_port->dev->ifindex);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2593
ofdpa_port->internal_vlan_id =
drivers/net/ethernet/rocker/rocker_ofdpa.c
2594
ofdpa_port_internal_vlan_id_get(ofdpa_port, bridge->ifindex);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2596
ofdpa_port->bridge_dev = bridge;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2598
err = ofdpa_port_vlan_add(ofdpa_port, OFDPA_UNTAGGED_VID, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2606
static int ofdpa_port_bridge_leave(struct ofdpa_port *ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2608
struct net_device *dev = ofdpa_port->dev;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2613
err = ofdpa_port_vlan_del(ofdpa_port, OFDPA_UNTAGGED_VID, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2617
ofdpa_port_internal_vlan_id_put(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2618
ofdpa_port->bridge_dev->ifindex);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2619
ofdpa_port->internal_vlan_id =
drivers/net/ethernet/rocker/rocker_ofdpa.c
2620
ofdpa_port_internal_vlan_id_get(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2621
ofdpa_port->dev->ifindex);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2623
ofdpa_port->bridge_dev = NULL;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2625
err = ofdpa_port_vlan_add(ofdpa_port, OFDPA_UNTAGGED_VID, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2629
if (ofdpa_port->dev->flags & IFF_UP)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2630
err = ofdpa_port_fwd_enable(ofdpa_port, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2635
static int ofdpa_port_ovs_changed(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
264
static u16 ofdpa_port_vlan_to_vid(const struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2640
ofdpa_port->bridge_dev = master;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2642
err = ofdpa_port_fwd_disable(ofdpa_port, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2645
err = ofdpa_port_fwd_enable(ofdpa_port, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2654
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2658
err = ofdpa_port_bridge_join(ofdpa_port, master, extack);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2660
err = ofdpa_port_ovs_changed(ofdpa_port, master);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2667
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2670
if (ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2671
err = ofdpa_port_bridge_leave(ofdpa_port);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2672
else if (ofdpa_port_is_ovsed(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2673
err = ofdpa_port_ovs_changed(ofdpa_port, NULL);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2680
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2685
return ofdpa_port_ipv4_neigh(ofdpa_port, flags, ip_addr, n->ha);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2691
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2695
return ofdpa_port_ipv4_neigh(ofdpa_port, flags, ip_addr, n->ha);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2702
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2705
if (ofdpa_port->stp_state != BR_STATE_LEARNING &&
drivers/net/ethernet/rocker/rocker_ofdpa.c
2706
ofdpa_port->stp_state != BR_STATE_FORWARDING)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2709
return ofdpa_port_fdb(ofdpa_port, addr, vlan_id, flags);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2712
static struct ofdpa_port *ofdpa_port_dev_lower_find(struct net_device *dev,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2725
struct ofdpa_port *ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
273
static bool ofdpa_port_is_slave(const struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2732
ofdpa_port = ofdpa_port_dev_lower_find(nh->fib_nh_dev, rocker);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2733
if (!ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2735
err = ofdpa_port_fib_ipv4(ofdpa_port, htonl(fen_info->dst),
drivers/net/ethernet/rocker/rocker_ofdpa.c
2748
struct ofdpa_port *ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2754
ofdpa_port = ofdpa_port_dev_lower_find(nh->fib_nh_dev, rocker);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2755
if (!ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2758
return ofdpa_port_fib_ipv4(ofdpa_port, htonl(fen_info->dst),
drivers/net/ethernet/rocker/rocker_ofdpa.c
276
return ofdpa_port->bridge_dev &&
drivers/net/ethernet/rocker/rocker_ofdpa.c
2766
struct ofdpa_port *ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
277
!strcmp(ofdpa_port->bridge_dev->rtnl_link_ops->kind, kind);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2783
ofdpa_port = ofdpa_port_dev_lower_find(nh->fib_nh_dev, rocker);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2784
if (!ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2787
ofdpa_flow_tbl_del(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2798
.port_priv_size = sizeof(struct ofdpa_port),
drivers/net/ethernet/rocker/rocker_ofdpa.c
280
static bool ofdpa_port_is_bridged(const struct ofdpa_port *ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
282
return ofdpa_port_is_slave(ofdpa_port, "bridge");
drivers/net/ethernet/rocker/rocker_ofdpa.c
285
static bool ofdpa_port_is_ovsed(const struct ofdpa_port *ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
287
return ofdpa_port_is_slave(ofdpa_port, "openvswitch");
drivers/net/ethernet/rocker/rocker_ofdpa.c
756
static int ofdpa_flow_tbl_add(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
759
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
785
return rocker_cmd_exec(ofdpa_port->rocker_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
791
static int ofdpa_flow_tbl_del(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
794
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
816
err = rocker_cmd_exec(ofdpa_port->rocker_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
826
static int ofdpa_flow_tbl_do(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
830
return ofdpa_flow_tbl_del(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
832
return ofdpa_flow_tbl_add(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
835
static int ofdpa_flow_tbl_ig_port(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
851
return ofdpa_flow_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
854
static int ofdpa_flow_tbl_vlan(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
877
return ofdpa_flow_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
880
static int ofdpa_flow_tbl_term_mac(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
913
return ofdpa_flow_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
916
static int ofdpa_flow_tbl_bridge(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
967
return ofdpa_flow_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
970
static int ofdpa_flow_tbl_ucast4_routing(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
994
return ofdpa_flow_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
997
static int ofdpa_flow_tbl_acl(struct ofdpa_port *ofdpa_port, int flags,