On 14/07/2020 10:34, Horatiu Vultur wrote: > Extend switchdev API to add support for MRP interconnect. The HW is > notified in the following cases: > > SWITCHDEV_OBJ_ID_IN_ROLE_MRP: This is used when the interconnect role > of the node changes. The supported roles are MIM and MIC. > > SWITCHDEV_OBJ_ID_IN_STATE_MRP: This is used when the interconnect ring > changes it states to open or closed. > > SWITCHDEV_OBJ_ID_IN_TEST_MRP: This is used to start/stop sending > MRP_InTest frames on all MRP ports. This is called only on nodes that > have the interconnect role MIM. > > Signed-off-by: Horatiu Vultur <horatiu.vultur@xxxxxxxxxxxxx> > --- > include/net/switchdev.h | 38 ++++++++++++++++++++++++++++++++++++++ > 1 file changed, 38 insertions(+) > Reviewed-by: Nikolay Aleksandrov <nikolay@xxxxxxxxxxxxxxxxxxx> > diff --git a/include/net/switchdev.h b/include/net/switchdev.h > index b8c059b4e06d9..ff22469143013 100644 > --- a/include/net/switchdev.h > +++ b/include/net/switchdev.h > @@ -76,6 +76,10 @@ enum switchdev_obj_id { > SWITCHDEV_OBJ_ID_RING_TEST_MRP, > SWITCHDEV_OBJ_ID_RING_ROLE_MRP, > SWITCHDEV_OBJ_ID_RING_STATE_MRP, > + SWITCHDEV_OBJ_ID_IN_TEST_MRP, > + SWITCHDEV_OBJ_ID_IN_ROLE_MRP, > + SWITCHDEV_OBJ_ID_IN_STATE_MRP, > + > #endif > }; > > @@ -155,6 +159,40 @@ struct switchdev_obj_ring_state_mrp { > #define SWITCHDEV_OBJ_RING_STATE_MRP(OBJ) \ > container_of((OBJ), struct switchdev_obj_ring_state_mrp, obj) > > +/* SWITCHDEV_OBJ_ID_IN_TEST_MRP */ > +struct switchdev_obj_in_test_mrp { > + struct switchdev_obj obj; > + /* The value is in us and a value of 0 represents to stop */ > + u32 interval; > + u32 in_id; > + u32 period; > + u8 max_miss; > +}; > + > +#define SWITCHDEV_OBJ_IN_TEST_MRP(OBJ) \ > + container_of((OBJ), struct switchdev_obj_in_test_mrp, obj) > + > +/* SWICHDEV_OBJ_ID_IN_ROLE_MRP */ > +struct switchdev_obj_in_role_mrp { > + struct switchdev_obj obj; > + struct net_device *i_port; > + u32 ring_id; > + u16 in_id; > + u8 in_role; > +}; > + > +#define SWITCHDEV_OBJ_IN_ROLE_MRP(OBJ) \ > + container_of((OBJ), struct switchdev_obj_in_role_mrp, obj) > + > +struct switchdev_obj_in_state_mrp { > + struct switchdev_obj obj; > + u32 in_id; > + u8 in_state; > +}; > + > +#define SWITCHDEV_OBJ_IN_STATE_MRP(OBJ) \ > + container_of((OBJ), struct switchdev_obj_in_state_mrp, obj) > + > #endif > > typedef int switchdev_obj_dump_cb_t(struct switchdev_obj *obj); >