Lines Matching refs:ofdpa_port

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