With the bridge no longer calling switchdev_port_attr_get() to obtain the supported bridge port flags from a driver but instead trying to set the bridge port flags directly and relying on driver to reject unsupported configurations, we can effectively get rid of switchdev_port_attr_get() entirely since this was the only place where it was called.
Unified · Split
| @@ -233,7 +233,7 @@ the bridge's FDB. It's possible, but not optimal, to enable learning on the · 232 unmodified lines | ||
| 233 | 233 | device port and on the bridge port, and disable learning_sync. |
| 234 | 234 | |
| 235 | 235 | To support learning, the driver implements switchdev op |
| 236 | −switchdev_port_attr_get/set for SWITCHDEV_ATTR_PORT_ID_BRIDGE_FLAGS. | |
| 236 | +switchdev_port_attr_set for SWITCHDEV_ATTR_PORT_ID_{PRE}_BRIDGE_FLAGS. | |
| 237 | 237 | |
| 238 | 238 | FDB Ageing |
| 239 | 239 | ^^^^^^^^^^ |
| @@ -431,12 +431,6 @@ static void mlxsw_sp_bridge_vlan_put(struct mlxsw_sp_bridge_vlan *bridge_vlan) · 430 unmodified lines | ||
| 431 | 431 | mlxsw_sp_bridge_vlan_destroy(bridge_vlan); |
| 432 | 432 | } |
| 433 | 433 | |
| 434 | −static int mlxsw_sp_port_attr_get(struct net_device *dev, | |
| 435 | − struct switchdev_attr *attr) | |
| 436 | −{ | |
| 437 | − return -EOPNOTSUPP; | |
| 438 | −} | |
| 439 | − | |
| 440 | 434 | static int |
| 441 | 435 | mlxsw_sp_port_bridge_vlan_stp_set(struct mlxsw_sp_port *mlxsw_sp_port, |
| 442 | 436 | struct mlxsw_sp_bridge_vlan *bridge_vlan, |
| @@ -1945,7 +1939,6 @@ static struct mlxsw_sp_port *mlxsw_sp_lag_rep_port(struct mlxsw_sp *mlxsw_sp, · 1502 unmodified lines | ||
| 1945 | 1939 | } |
| 1946 | 1940 | |
| 1947 | 1941 | static const struct switchdev_ops mlxsw_sp_port_switchdev_ops = { |
| 1948 | − .switchdev_port_attr_get = mlxsw_sp_port_attr_get, | |
| 1949 | 1942 | .switchdev_port_attr_set = mlxsw_sp_port_attr_set, |
| 1950 | 1943 | }; |
| 1951 | 1944 | |
| @@ -2066,12 +2066,6 @@ static const struct net_device_ops rocker_port_netdev_ops = { · 2065 unmodified lines | ||
| 2066 | 2066 | * swdev interface |
| 2067 | 2067 | ********************/ |
| 2068 | 2068 | |
| 2069 | −static int rocker_port_attr_get(struct net_device *dev, | |
| 2070 | − struct switchdev_attr *attr) | |
| 2071 | −{ | |
| 2072 | − return -EOPNOTSUPP; | |
| 2073 | −} | |
| 2074 | − | |
| 2075 | 2069 | static int rocker_port_attr_set(struct net_device *dev, |
| 2076 | 2070 | const struct switchdev_attr *attr, |
| 2077 | 2071 | struct switchdev_trans *trans) |
| @@ -2148,7 +2142,6 @@ static int rocker_port_obj_del(struct net_device *dev, · 70 unmodified lines | ||
| 2148 | 2142 | } |
| 2149 | 2143 | |
| 2150 | 2144 | static const struct switchdev_ops rocker_port_switchdev_ops = { |
| 2151 | − .switchdev_port_attr_get = rocker_port_attr_get, | |
| 2152 | 2145 | .switchdev_port_attr_set = rocker_port_attr_set, |
| 2153 | 2146 | }; |
| 2154 | 2147 | |
| @@ -640,12 +640,6 @@ static void ethsw_teardown_irqs(struct fsl_mc_device *sw_dev) · 639 unmodified lines | ||
| 640 | 640 | fsl_mc_free_irqs(sw_dev); |
| 641 | 641 | } |
| 642 | 642 | |
| 643 | −static int swdev_port_attr_get(struct net_device *netdev, | |
| 644 | − struct switchdev_attr *attr) | |
| 645 | −{ | |
| 646 | − return -EOPNOTSUPP; | |
| 647 | −} | |
| 648 | − | |
| 649 | 643 | static int port_attr_stp_state_set(struct net_device *netdev, |
| 650 | 644 | struct switchdev_trans *trans, |
| 651 | 645 | u8 state) |
| @@ -932,7 +926,6 @@ static int swdev_port_obj_del(struct net_device *netdev, · 280 unmodified lines | ||
| 932 | 926 | } |
| 933 | 927 | |
| 934 | 928 | static const struct switchdev_ops ethsw_port_switchdev_ops = { |
| 935 | − .switchdev_port_attr_get = swdev_port_attr_get, | |
| 936 | 929 | .switchdev_port_attr_set = swdev_port_attr_set, |
| 937 | 930 | }; |
| 938 | 931 | |
| @@ -179,8 +179,6 @@ switchdev_notifier_info_to_extack(const struct switchdev_notifier_info *info) · 178 unmodified lines | ||
| 179 | 179 | #ifdef CONFIG_NET_SWITCHDEV |
| 180 | 180 | |
| 181 | 181 | void switchdev_deferred_process(void); |
| 182 | −int switchdev_port_attr_get(struct net_device *dev, | |
| 183 | − struct switchdev_attr *attr); | |
| 184 | 182 | int switchdev_port_attr_set(struct net_device *dev, |
| 185 | 183 | const struct switchdev_attr *attr); |
| 186 | 184 | int switchdev_port_obj_add(struct net_device *dev, |
| @@ -225,12 +223,6 @@ static inline void switchdev_deferred_process(void) · 38 unmodified lines | ||
| 225 | 223 | { |
| 226 | 224 | } |
| 227 | 225 | |
| 228 | −static inline int switchdev_port_attr_get(struct net_device *dev, | |
| 229 | − struct switchdev_attr *attr) | |
| 230 | −{ | |
| 231 | − return -EOPNOTSUPP; | |
| 232 | −} | |
| 233 | − | |
| 234 | 226 | static inline int switchdev_port_attr_set(struct net_device *dev, |
| 235 | 227 | const struct switchdev_attr *attr) |
| 236 | 228 | { |
| @@ -385,12 +385,6 @@ static int dsa_slave_get_port_parent_id(struct net_device *dev, · 384 unmodified lines | ||
| 385 | 385 | return 0; |
| 386 | 386 | } |
| 387 | 387 | |
| 388 | −static int dsa_slave_port_attr_get(struct net_device *dev, | |
| 389 | − struct switchdev_attr *attr) | |
| 390 | −{ | |
| 391 | − return -EOPNOTSUPP; | |
| 392 | −} | |
| 393 | − | |
| 394 | 388 | static inline netdev_tx_t dsa_slave_netpoll_send_skb(struct net_device *dev, |
| 395 | 389 | struct sk_buff *skb) |
| 396 | 390 | { |
| @@ -1057,7 +1051,6 @@ static const struct net_device_ops dsa_slave_netdev_ops = { · 660 unmodified lines | ||
| 1057 | 1051 | }; |
| 1058 | 1052 | |
| 1059 | 1053 | static const struct switchdev_ops dsa_slave_switchdev_ops = { |
| 1060 | − .switchdev_port_attr_get = dsa_slave_port_attr_get, | |
| 1061 | 1054 | .switchdev_port_attr_set = dsa_slave_port_attr_set, |
| 1062 | 1055 | }; |
| 1063 | 1056 | |