diff options
author | David S. Miller <davem@davemloft.net> | 2020-06-24 00:38:05 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-06-24 00:38:05 +0300 |
commit | f7fb92acd9e5606f6666bb0f9a7240002a6b3ff0 (patch) | |
tree | 20a600442e4e86d13643d03771909596ce875f31 | |
parent | 26ac10be3c80a26d03c950b7387c4b9566c260b6 (diff) | |
parent | 7882c895b71b8cd6c81946fcc8e13d15a2841de7 (diff) |
Merge branch 'bridge-mrp-Update-MRP_PORT_ROLE'
Horatiu Vultur says:
====================
bridge: mrp: Update MRP_PORT_ROLE
This patch series does the following:
- fixes the enum br_mrp_port_role_type. It removes the port role none(0x2)
because this is in conflict with the standard. The standard defines the
interconnect port role as value 0x2.
- adds checks regarding current defined port roles: primary(0x0) and
secondary(0x1).
v2:
- add the validation code when setting the port role.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/uapi/linux/mrp_bridge.h | 1 | ||||
-rw-r--r-- | net/bridge/br_mrp.c | 10 |
2 files changed, 8 insertions, 3 deletions
diff --git a/include/uapi/linux/mrp_bridge.h b/include/uapi/linux/mrp_bridge.h index 84f15f48a7cb..bee366540212 100644 --- a/include/uapi/linux/mrp_bridge.h +++ b/include/uapi/linux/mrp_bridge.h @@ -36,7 +36,6 @@ enum br_mrp_port_state_type { enum br_mrp_port_role_type { BR_MRP_PORT_ROLE_PRIMARY, BR_MRP_PORT_ROLE_SECONDARY, - BR_MRP_PORT_ROLE_NONE, }; enum br_mrp_tlv_header_type { diff --git a/net/bridge/br_mrp.c b/net/bridge/br_mrp.c index 24986ec7d38c..779e1eb75443 100644 --- a/net/bridge/br_mrp.c +++ b/net/bridge/br_mrp.c @@ -411,10 +411,16 @@ int br_mrp_set_port_role(struct net_bridge_port *p, if (!mrp) return -EINVAL; - if (role == BR_MRP_PORT_ROLE_PRIMARY) + switch (role) { + case BR_MRP_PORT_ROLE_PRIMARY: rcu_assign_pointer(mrp->p_port, p); - else + break; + case BR_MRP_PORT_ROLE_SECONDARY: rcu_assign_pointer(mrp->s_port, p); + break; + default: + return -EINVAL; + } br_mrp_port_switchdev_set_role(p, role); |