Commit 96673a30440a60559a63a16a6e7eb4ced02d7fe9

Authored by Arkadi Sharshevsky
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,