IB/uverbs: Add action_handle flow steering specification
Binding a flow_action to flow steering rule requires using a new specification. Therefore, adding such an IB_FLOW_SPEC_ACTION_HANDLE flow specification. Flow steering rules could use flow_action(s) and as of that we need to avoid deleting flow_action(s) as long as they're being used. Moreover, when the attached rules are deleted, action_handle reference count should be decremented. Introducing a new mechanism of flow resources to keep track on the attached action_handle(s). Later on, this mechanism should be extended to other attached flow steering resources like flow counters. Reviewed-by: Yishai Hadas <yishaih@mellanox.com> Signed-off-by: Matan Barak <matanb@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:

committed by
Jason Gunthorpe

parent
2eb9beaee5
commit
9b82844197
@@ -1836,6 +1836,7 @@ enum ib_flow_spec_type {
|
||||
/* Actions */
|
||||
IB_FLOW_SPEC_ACTION_TAG = 0x1000,
|
||||
IB_FLOW_SPEC_ACTION_DROP = 0x1001,
|
||||
IB_FLOW_SPEC_ACTION_HANDLE = 0x1002,
|
||||
};
|
||||
#define IB_FLOW_SPEC_LAYER_MASK 0xF0
|
||||
#define IB_FLOW_SPEC_SUPPORT_LAYERS 8
|
||||
@@ -1969,6 +1970,12 @@ struct ib_flow_spec_action_drop {
|
||||
u16 size;
|
||||
};
|
||||
|
||||
struct ib_flow_spec_action_handle {
|
||||
enum ib_flow_spec_type type;
|
||||
u16 size;
|
||||
struct ib_flow_action *act;
|
||||
};
|
||||
|
||||
union ib_flow_spec {
|
||||
struct {
|
||||
u32 type;
|
||||
@@ -1982,6 +1989,7 @@ union ib_flow_spec {
|
||||
struct ib_flow_spec_tunnel tunnel;
|
||||
struct ib_flow_spec_action_tag flow_tag;
|
||||
struct ib_flow_spec_action_drop drop;
|
||||
struct ib_flow_spec_action_handle action;
|
||||
};
|
||||
|
||||
struct ib_flow_attr {
|
||||
|
Reference in New Issue
Block a user