drivers/net/ethernet/rocker/rocker_ofdpa.c
1045
return ofdpa_flow_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1063
static int ofdpa_group_tbl_add(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1066
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1088
return rocker_cmd_exec(ofdpa_port->rocker_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1094
static int ofdpa_group_tbl_del(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1097
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1116
err = rocker_cmd_exec(ofdpa_port->rocker_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1126
static int ofdpa_group_tbl_do(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1130
return ofdpa_group_tbl_del(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1132
return ofdpa_group_tbl_add(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1135
static int ofdpa_group_l2_interface(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1148
return ofdpa_group_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1151
static int ofdpa_group_l2_fan_out(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1166
return ofdpa_group_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1169
static int ofdpa_group_l2_flood(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1174
return ofdpa_group_l2_fan_out(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1179
static int ofdpa_group_l3_unicast(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1198
return ofdpa_group_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1242
static int ofdpa_port_ipv4_neigh(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1245
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1273
entry->dev = ofdpa_port->dev;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1298
err = ofdpa_group_l3_unicast(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1300
ofdpa_port->dev->dev_addr,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1302
ofdpa_port->internal_vlan_id,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1304
ofdpa_port->pport);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1306
netdev_err(ofdpa_port->dev, "Error (%d) L3 unicast group index %d\n",
drivers/net/ethernet/rocker/rocker_ofdpa.c
1313
err = ofdpa_flow_tbl_ucast4_routing(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1320
netdev_err(ofdpa_port->dev, "Error (%d) /32 unicast route %pI4 group 0x%08x\n",
drivers/net/ethernet/rocker/rocker_ofdpa.c
1331
static int ofdpa_port_ipv4_resolve(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1334
struct net_device *dev = ofdpa_port->dev;
drivers/net/ethernet/rocker/rocker_ofdpa.c
135
struct ofdpa_port *ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1350
err = ofdpa_port_ipv4_neigh(ofdpa_port, 0,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1359
static int ofdpa_port_ipv4_nh(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1362
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1386
entry->dev = ofdpa_port->dev;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1412
err = ofdpa_port_ipv4_resolve(ofdpa_port, ip_addr);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1417
static struct ofdpa_port *ofdpa_port_get(const struct ofdpa *ofdpa,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1426
static int ofdpa_port_vlan_flood_group(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1429
struct ofdpa_port *p;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1430
const struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1463
err = ofdpa_group_l2_flood(ofdpa_port, flags, vlan_id,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1466
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN l2 flood group\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1473
static int ofdpa_port_vlan_l2_groups(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1476
const struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1478
struct ofdpa_port *p;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1489
if (ofdpa_port->stp_state == BR_STATE_LEARNING ||
drivers/net/ethernet/rocker/rocker_ofdpa.c
1490
ofdpa_port->stp_state == BR_STATE_FORWARDING) {
drivers/net/ethernet/rocker/rocker_ofdpa.c
1491
out_pport = ofdpa_port->pport;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1492
err = ofdpa_group_l2_interface(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1495
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN l2 group for pport %d\n",
drivers/net/ethernet/rocker/rocker_ofdpa.c
1516
err = ofdpa_group_l2_interface(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1519
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN l2 group for CPU port\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1577
static int ofdpa_port_ctrl_vlan_acl(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1580
u32 in_pport = ofdpa_port->pport;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1593
err = ofdpa_flow_tbl_acl(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1604
netdev_err(ofdpa_port->dev, "Error (%d) ctrl ACL\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1609
static int ofdpa_port_ctrl_vlan_bridge(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1619
if (!ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
1622
err = ofdpa_flow_tbl_bridge(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1628
netdev_err(ofdpa_port->dev, "Error (%d) ctrl FLOOD\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1633
static int ofdpa_port_ctrl_vlan_term(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1641
vlan_id = ofdpa_port->internal_vlan_id;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1643
err = ofdpa_flow_tbl_term_mac(ofdpa_port, ofdpa_port->pport, in_pport_mask,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1650
netdev_err(ofdpa_port->dev, "Error (%d) ctrl term\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1655
static int ofdpa_port_ctrl_vlan(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1659
return ofdpa_port_ctrl_vlan_acl(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1662
return ofdpa_port_ctrl_vlan_bridge(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1666
return ofdpa_port_ctrl_vlan_term(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1672
static int ofdpa_port_ctrl_vlan_add(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1679
if (ofdpa_port->ctrls[i]) {
drivers/net/ethernet/rocker/rocker_ofdpa.c
1680
err = ofdpa_port_ctrl_vlan(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1690
static int ofdpa_port_ctrl(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1697
if (!test_bit(vid, ofdpa_port->vlan_bitmap))
drivers/net/ethernet/rocker/rocker_ofdpa.c
1699
err = ofdpa_port_ctrl_vlan(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1708
static int ofdpa_port_vlan(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1713
u32 in_pport = ofdpa_port->pport;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1721
internal_vlan_id = ofdpa_port_vid_to_vlan(ofdpa_port, vid, &untagged);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1724
test_bit(ntohs(internal_vlan_id), ofdpa_port->vlan_bitmap))
drivers/net/ethernet/rocker/rocker_ofdpa.c
1727
!test_bit(ntohs(internal_vlan_id), ofdpa_port->vlan_bitmap))
drivers/net/ethernet/rocker/rocker_ofdpa.c
1730
change_bit(ntohs(internal_vlan_id), ofdpa_port->vlan_bitmap);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1733
err = ofdpa_port_ctrl_vlan_add(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1736
netdev_err(ofdpa_port->dev, "Error (%d) port ctrl vlan add\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1741
err = ofdpa_port_vlan_l2_groups(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1744
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN l2 groups\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1748
err = ofdpa_port_vlan_flood_group(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1751
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN l2 flood group\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1755
err = ofdpa_flow_tbl_vlan(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1759
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN table\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1766
change_bit(ntohs(internal_vlan_id), ofdpa_port->vlan_bitmap);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1770
static int ofdpa_port_ig_tbl(struct ofdpa_port *ofdpa_port, int flags)
drivers/net/ethernet/rocker/rocker_ofdpa.c
1785
err = ofdpa_flow_tbl_ig_port(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1789
netdev_err(ofdpa_port->dev, "Error (%d) ingress port table entry\n", err);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1796
struct ofdpa_port *ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1817
call_switchdev_notifiers(event, lw->ofdpa_port->dev, &info.info, NULL);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1823
static int ofdpa_port_fdb_learn(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1829
u32 out_pport = ofdpa_port->pport;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1835
if (ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
1839
err = ofdpa_flow_tbl_bridge(ofdpa_port, flags, addr,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1846
if (!ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
1858
lw->ofdpa_port = ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1861
lw->vid = ofdpa_port_vlan_to_vid(ofdpa_port, vlan_id);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1880
static int ofdpa_port_fdb(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1884
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1896
fdb->key.ofdpa_port = ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1930
return ofdpa_port_fdb_learn(ofdpa_port, flags, addr, vlan_id);
drivers/net/ethernet/rocker/rocker_ofdpa.c
1933
static int ofdpa_port_fdb_flush(struct ofdpa_port *ofdpa_port, int flags)
drivers/net/ethernet/rocker/rocker_ofdpa.c
1935
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1942
if (ofdpa_port->stp_state == BR_STATE_LEARNING ||
drivers/net/ethernet/rocker/rocker_ofdpa.c
1943
ofdpa_port->stp_state == BR_STATE_FORWARDING)
drivers/net/ethernet/rocker/rocker_ofdpa.c
1951
if (found->key.ofdpa_port != ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
1955
err = ofdpa_port_fdb_learn(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
1972
struct ofdpa_port *ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1987
ofdpa_port = entry->key.ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1988
expires = entry->touched + ofdpa_port->ageing_time;
drivers/net/ethernet/rocker/rocker_ofdpa.c
1990
ofdpa_port_fdb_learn(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2004
static int ofdpa_port_router_mac(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2015
vlan_id = ofdpa_port->internal_vlan_id;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2018
err = ofdpa_flow_tbl_term_mac(ofdpa_port, ofdpa_port->pport,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2020
ofdpa_port->dev->dev_addr,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2027
err = ofdpa_flow_tbl_term_mac(ofdpa_port, ofdpa_port->pport,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2029
ofdpa_port->dev->dev_addr,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2036
static int ofdpa_port_fwding(struct ofdpa_port *ofdpa_port, int flags)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2051
if (ofdpa_port->stp_state != BR_STATE_LEARNING &&
drivers/net/ethernet/rocker/rocker_ofdpa.c
2052
ofdpa_port->stp_state != BR_STATE_FORWARDING)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2055
out_pport = ofdpa_port->pport;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2057
if (!test_bit(vid, ofdpa_port->vlan_bitmap))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2061
err = ofdpa_group_l2_interface(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2064
netdev_err(ofdpa_port->dev, "Error (%d) port VLAN l2 group for pport %d\n",
drivers/net/ethernet/rocker/rocker_ofdpa.c
2073
static int ofdpa_port_stp_update(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2082
memcpy(prev_ctrls, ofdpa_port->ctrls, sizeof(prev_ctrls));
drivers/net/ethernet/rocker/rocker_ofdpa.c
2083
prev_state = ofdpa_port->stp_state;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2085
if (ofdpa_port->stp_state == state)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2088
ofdpa_port->stp_state = state;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2100
if (!ofdpa_port_is_ovsed(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2104
if (ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2106
else if (ofdpa_port_is_ovsed(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2114
if (want[i] != ofdpa_port->ctrls[i]) {
drivers/net/ethernet/rocker/rocker_ofdpa.c
2117
err = ofdpa_port_ctrl(ofdpa_port, ctrl_flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2121
ofdpa_port->ctrls[i] = want[i];
drivers/net/ethernet/rocker/rocker_ofdpa.c
2125
err = ofdpa_port_fdb_flush(ofdpa_port, flags);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2129
err = ofdpa_port_fwding(ofdpa_port, flags);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2138
memcpy(ofdpa_port->ctrls, prev_ctrls, sizeof(prev_ctrls));
drivers/net/ethernet/rocker/rocker_ofdpa.c
2139
ofdpa_port->stp_state = prev_state;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2143
static int ofdpa_port_fwd_enable(struct ofdpa_port *ofdpa_port, int flags)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2145
if (ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2150
return ofdpa_port_stp_update(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2154
static int ofdpa_port_fwd_disable(struct ofdpa_port *ofdpa_port, int flags)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2156
if (ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2161
return ofdpa_port_stp_update(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2165
static int ofdpa_port_vlan_add(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2172
err = ofdpa_port_vlan(ofdpa_port, 0, vid);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2176
err = ofdpa_port_router_mac(ofdpa_port, 0, htons(vid));
drivers/net/ethernet/rocker/rocker_ofdpa.c
2178
ofdpa_port_vlan(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2184
static int ofdpa_port_vlan_del(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2189
err = ofdpa_port_router_mac(ofdpa_port, OFDPA_OP_FLAG_REMOVE,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2194
return ofdpa_port_vlan(ofdpa_port, OFDPA_OP_FLAG_REMOVE,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2212
static __be16 ofdpa_port_internal_vlan_id_get(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2215
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2245
netdev_err(ofdpa_port->dev, "Out of internal VLAN IDs\n");
drivers/net/ethernet/rocker/rocker_ofdpa.c
2254
static int ofdpa_port_fib_ipv4(struct ofdpa_port *ofdpa_port, __be32 dst,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2261
__be16 internal_vlan_id = ofdpa_port->internal_vlan_id;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2274
nh_on_port = (nh->fib_nh_dev == ofdpa_port->dev);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2278
err = ofdpa_port_ipv4_nh(ofdpa_port, flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2289
err = ofdpa_flow_tbl_ucast4_routing(ofdpa_port, eth_type, dst,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2293
netdev_err(ofdpa_port->dev, "Error (%d) IPv4 route %pI4\n",
drivers/net/ethernet/rocker/rocker_ofdpa.c
2300
ofdpa_port_internal_vlan_id_put(const struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2303
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2312
netdev_err(ofdpa_port->dev,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2407
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2409
ofdpa_port->ofdpa = rocker_port->rocker->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2410
ofdpa_port->rocker_port = rocker_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2411
ofdpa_port->dev = rocker_port->dev;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2412
ofdpa_port->pport = rocker_port->pport;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2413
ofdpa_port->brport_flags = BR_LEARNING;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2414
ofdpa_port->ageing_time = BR_DEFAULT_AGEING_TIME;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2420
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2424
!!(ofdpa_port->brport_flags & BR_LEARNING));
drivers/net/ethernet/rocker/rocker_ofdpa.c
2426
err = ofdpa_port_ig_tbl(ofdpa_port, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2428
netdev_err(ofdpa_port->dev, "install ig port table failed\n");
drivers/net/ethernet/rocker/rocker_ofdpa.c
2432
ofdpa_port->internal_vlan_id =
drivers/net/ethernet/rocker/rocker_ofdpa.c
2433
ofdpa_port_internal_vlan_id_get(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2434
ofdpa_port->dev->ifindex);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2436
err = ofdpa_port_vlan_add(ofdpa_port, OFDPA_UNTAGGED_VID, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2438
netdev_err(ofdpa_port->dev, "install untagged VLAN failed\n");
drivers/net/ethernet/rocker/rocker_ofdpa.c
2444
ofdpa_port_ig_tbl(ofdpa_port, OFDPA_OP_FLAG_REMOVE);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2450
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2452
ofdpa_port_ig_tbl(ofdpa_port, OFDPA_OP_FLAG_REMOVE);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2457
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2459
return ofdpa_port_fwd_enable(ofdpa_port, 0);
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_fwd_disable(ofdpa_port, OFDPA_OP_FLAG_NOWAIT);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2472
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2474
return ofdpa_port_stp_update(ofdpa_port, 0, state);
drivers/net/ethernet/rocker/rocker_ofdpa.c
248
static __be16 ofdpa_port_vid_to_vlan(const struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2480
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2484
orig_flags = ofdpa_port->brport_flags;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2485
ofdpa_port->brport_flags = brport_flags;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2487
if ((orig_flags ^ ofdpa_port->brport_flags) & BR_LEARNING)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2488
err = rocker_port_set_learning(ofdpa_port->rocker_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2489
!!(ofdpa_port->brport_flags & BR_LEARNING));
drivers/net/ethernet/rocker/rocker_ofdpa.c
2508
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2509
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2511
ofdpa_port->ageing_time = clock_t_to_jiffies(ageing_time);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2512
if (ofdpa_port->ageing_time < ofdpa->ageing_time)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2513
ofdpa->ageing_time = ofdpa_port->ageing_time;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2514
mod_timer(&ofdpa_port->ofdpa->fdb_cleanup_timer, jiffies);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2522
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2524
return ofdpa_port_vlan_add(ofdpa_port, vlan->vid, vlan->flags);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2530
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2532
return ofdpa_port_vlan_del(ofdpa_port, vlan->vid, vlan->flags);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2538
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2539
__be16 vlan_id = ofdpa_port_vid_to_vlan(ofdpa_port, vid, NULL);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2541
if (!ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2544
return ofdpa_port_fdb(ofdpa_port, addr, vlan_id, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2550
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2551
__be16 vlan_id = ofdpa_port_vid_to_vlan(ofdpa_port, vid, NULL);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2554
if (!ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2557
return ofdpa_port_fdb(ofdpa_port, addr, vlan_id, flags);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2560
static int ofdpa_port_bridge_join(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2564
struct net_device *dev = ofdpa_port->dev;
drivers/net/ethernet/rocker/rocker_ofdpa.c
257
vlan_id = ofdpa_port->internal_vlan_id;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2573
err = ofdpa_port_vlan_del(ofdpa_port, OFDPA_UNTAGGED_VID, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2577
ofdpa_port_internal_vlan_id_put(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2578
ofdpa_port->dev->ifindex);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2579
ofdpa_port->internal_vlan_id =
drivers/net/ethernet/rocker/rocker_ofdpa.c
2580
ofdpa_port_internal_vlan_id_get(ofdpa_port, bridge->ifindex);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2582
ofdpa_port->bridge_dev = bridge;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2584
err = ofdpa_port_vlan_add(ofdpa_port, OFDPA_UNTAGGED_VID, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2592
static int ofdpa_port_bridge_leave(struct ofdpa_port *ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2594
struct net_device *dev = ofdpa_port->dev;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2599
err = ofdpa_port_vlan_del(ofdpa_port, OFDPA_UNTAGGED_VID, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2603
ofdpa_port_internal_vlan_id_put(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2604
ofdpa_port->bridge_dev->ifindex);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2605
ofdpa_port->internal_vlan_id =
drivers/net/ethernet/rocker/rocker_ofdpa.c
2606
ofdpa_port_internal_vlan_id_get(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2607
ofdpa_port->dev->ifindex);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2609
ofdpa_port->bridge_dev = NULL;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2611
err = ofdpa_port_vlan_add(ofdpa_port, OFDPA_UNTAGGED_VID, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2615
if (ofdpa_port->dev->flags & IFF_UP)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2616
err = ofdpa_port_fwd_enable(ofdpa_port, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2621
static int ofdpa_port_ovs_changed(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2626
ofdpa_port->bridge_dev = master;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2628
err = ofdpa_port_fwd_disable(ofdpa_port, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2631
err = ofdpa_port_fwd_enable(ofdpa_port, 0);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2640
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2644
err = ofdpa_port_bridge_join(ofdpa_port, master, extack);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2646
err = ofdpa_port_ovs_changed(ofdpa_port, master);
drivers/net/ethernet/rocker/rocker_ofdpa.c
265
static u16 ofdpa_port_vlan_to_vid(const struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2653
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2656
if (ofdpa_port_is_bridged(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2657
err = ofdpa_port_bridge_leave(ofdpa_port);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2658
else if (ofdpa_port_is_ovsed(ofdpa_port))
drivers/net/ethernet/rocker/rocker_ofdpa.c
2659
err = ofdpa_port_ovs_changed(ofdpa_port, NULL);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2666
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2671
return ofdpa_port_ipv4_neigh(ofdpa_port, flags, ip_addr, n->ha);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2677
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2681
return ofdpa_port_ipv4_neigh(ofdpa_port, flags, ip_addr, n->ha);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2688
struct ofdpa_port *ofdpa_port = rocker_port->wpriv;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2691
if (ofdpa_port->stp_state != BR_STATE_LEARNING &&
drivers/net/ethernet/rocker/rocker_ofdpa.c
2692
ofdpa_port->stp_state != BR_STATE_FORWARDING)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2695
return ofdpa_port_fdb(ofdpa_port, addr, vlan_id, flags);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2698
static struct ofdpa_port *ofdpa_port_dev_lower_find(struct net_device *dev,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2711
struct ofdpa_port *ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2718
ofdpa_port = ofdpa_port_dev_lower_find(nh->fib_nh_dev, rocker);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2719
if (!ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2721
err = ofdpa_port_fib_ipv4(ofdpa_port, htonl(fen_info->dst),
drivers/net/ethernet/rocker/rocker_ofdpa.c
2734
struct ofdpa_port *ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
274
static bool ofdpa_port_is_slave(const struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
2740
ofdpa_port = ofdpa_port_dev_lower_find(nh->fib_nh_dev, rocker);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2741
if (!ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2744
return ofdpa_port_fib_ipv4(ofdpa_port, htonl(fen_info->dst),
drivers/net/ethernet/rocker/rocker_ofdpa.c
2752
struct ofdpa_port *ofdpa_port;
drivers/net/ethernet/rocker/rocker_ofdpa.c
2769
ofdpa_port = ofdpa_port_dev_lower_find(nh->fib_nh_dev, rocker);
drivers/net/ethernet/rocker/rocker_ofdpa.c
277
return ofdpa_port->bridge_dev &&
drivers/net/ethernet/rocker/rocker_ofdpa.c
2770
if (!ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
2773
ofdpa_flow_tbl_del(ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
278
!strcmp(ofdpa_port->bridge_dev->rtnl_link_ops->kind, kind);
drivers/net/ethernet/rocker/rocker_ofdpa.c
2784
.port_priv_size = sizeof(struct ofdpa_port),
drivers/net/ethernet/rocker/rocker_ofdpa.c
281
static bool ofdpa_port_is_bridged(const struct ofdpa_port *ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
283
return ofdpa_port_is_slave(ofdpa_port, "bridge");
drivers/net/ethernet/rocker/rocker_ofdpa.c
286
static bool ofdpa_port_is_ovsed(const struct ofdpa_port *ofdpa_port)
drivers/net/ethernet/rocker/rocker_ofdpa.c
288
return ofdpa_port_is_slave(ofdpa_port, "openvswitch");
drivers/net/ethernet/rocker/rocker_ofdpa.c
757
static int ofdpa_flow_tbl_add(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
760
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
786
return rocker_cmd_exec(ofdpa_port->rocker_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
792
static int ofdpa_flow_tbl_del(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
795
struct ofdpa *ofdpa = ofdpa_port->ofdpa;
drivers/net/ethernet/rocker/rocker_ofdpa.c
817
err = rocker_cmd_exec(ofdpa_port->rocker_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
827
static int ofdpa_flow_tbl_do(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
831
return ofdpa_flow_tbl_del(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
833
return ofdpa_flow_tbl_add(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
836
static int ofdpa_flow_tbl_ig_port(struct ofdpa_port *ofdpa_port, int flags,
drivers/net/ethernet/rocker/rocker_ofdpa.c
852
return ofdpa_flow_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
855
static int ofdpa_flow_tbl_vlan(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
878
return ofdpa_flow_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
881
static int ofdpa_flow_tbl_term_mac(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
914
return ofdpa_flow_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
917
static int ofdpa_flow_tbl_bridge(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
968
return ofdpa_flow_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
971
static int ofdpa_flow_tbl_ucast4_routing(struct ofdpa_port *ofdpa_port,
drivers/net/ethernet/rocker/rocker_ofdpa.c
995
return ofdpa_flow_tbl_do(ofdpa_port, flags, entry);
drivers/net/ethernet/rocker/rocker_ofdpa.c
998
static int ofdpa_flow_tbl_acl(struct ofdpa_port *ofdpa_port, int flags,