Commit 96673a30440a60559a63a16a6e7eb4ced02d7fe9
Committed by
David S. Miller
1 parent
8cc186a485
rocker: Add support for querying supported bridge flags
Add support for querying supported bridge flags. Signed-off-by: Arkadi Sharshevsky <arkadis@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 3 changed files with 33 additions and 0 deletions Side-by-side Diff
drivers/net/ethernet/rocker/rocker.h
... | ... | @@ -112,6 +112,10 @@ |
112 | 112 | struct switchdev_trans *trans); |
113 | 113 | int (*port_attr_bridge_flags_get)(const struct rocker_port *rocker_port, |
114 | 114 | unsigned long *p_brport_flags); |
115 | + int (*port_attr_bridge_flags_support_get)(const struct rocker_port * | |
116 | + rocker_port, | |
117 | + unsigned long * | |
118 | + p_brport_flags); | |
115 | 119 | int (*port_attr_bridge_ageing_time_set)(struct rocker_port *rocker_port, |
116 | 120 | u32 ageing_time, |
117 | 121 | struct switchdev_trans *trans); |
drivers/net/ethernet/rocker/rocker_main.c
... | ... | @@ -1585,6 +1585,20 @@ |
1585 | 1585 | } |
1586 | 1586 | |
1587 | 1587 | static int |
1588 | +rocker_world_port_attr_bridge_flags_support_get(const struct rocker_port * | |
1589 | + rocker_port, | |
1590 | + unsigned long * | |
1591 | + p_brport_flags_support) | |
1592 | +{ | |
1593 | + struct rocker_world_ops *wops = rocker_port->rocker->wops; | |
1594 | + | |
1595 | + if (!wops->port_attr_bridge_flags_support_get) | |
1596 | + return -EOPNOTSUPP; | |
1597 | + return wops->port_attr_bridge_flags_support_get(rocker_port, | |
1598 | + p_brport_flags_support); | |
1599 | +} | |
1600 | + | |
1601 | +static int | |
1588 | 1602 | rocker_world_port_attr_bridge_ageing_time_set(struct rocker_port *rocker_port, |
1589 | 1603 | u32 ageing_time, |
1590 | 1604 | struct switchdev_trans *trans) |
... | ... | @@ -2052,6 +2066,10 @@ |
2052 | 2066 | case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS: |
2053 | 2067 | err = rocker_world_port_attr_bridge_flags_get(rocker_port, |
2054 | 2068 | &attr->u.brport_flags); |
2069 | + break; | |
2070 | + case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT: | |
2071 | + err = rocker_world_port_attr_bridge_flags_support_get(rocker_port, | |
2072 | + &attr->u.brport_flags_support); | |
2055 | 2073 | break; |
2056 | 2074 | default: |
2057 | 2075 | return -EOPNOTSUPP; |
drivers/net/ethernet/rocker/rocker_ofdpa.c
... | ... | @@ -2643,6 +2643,16 @@ |
2643 | 2643 | } |
2644 | 2644 | |
2645 | 2645 | static int |
2646 | +ofdpa_port_attr_bridge_flags_support_get(const struct rocker_port * | |
2647 | + rocker_port, | |
2648 | + unsigned long * | |
2649 | + p_brport_flags_support) | |
2650 | +{ | |
2651 | + *p_brport_flags_support = BR_LEARNING; | |
2652 | + return 0; | |
2653 | +} | |
2654 | + | |
2655 | +static int | |
2646 | 2656 | ofdpa_port_attr_bridge_ageing_time_set(struct rocker_port *rocker_port, |
2647 | 2657 | u32 ageing_time, |
2648 | 2658 | struct switchdev_trans *trans) |
... | ... | @@ -2989,6 +2999,7 @@ |
2989 | 2999 | .port_attr_stp_state_set = ofdpa_port_attr_stp_state_set, |
2990 | 3000 | .port_attr_bridge_flags_set = ofdpa_port_attr_bridge_flags_set, |
2991 | 3001 | .port_attr_bridge_flags_get = ofdpa_port_attr_bridge_flags_get, |
3002 | + .port_attr_bridge_flags_support_get = ofdpa_port_attr_bridge_flags_support_get, | |
2992 | 3003 | .port_attr_bridge_ageing_time_set = ofdpa_port_attr_bridge_ageing_time_set, |
2993 | 3004 | .port_obj_vlan_add = ofdpa_port_obj_vlan_add, |
2994 | 3005 | .port_obj_vlan_del = ofdpa_port_obj_vlan_del, |