IB/uverbs: Expose GRE flow spec to the user-kernel ABI header
Add ib_uverbs_flow_spec_gre to define a rule to match the GRE encapsulation protocol. The spec includes the generic specs header, type, size and reserved fields while the filter itself is defined as ib_uverbs_flow_gre_filter and includes: 1. Checksum present bit, key present bit and version bits in a single 16bit field. 2. Protocol type field - Indicates the ether protocol type of the encapsulated payload. 3. Key field - present if key bit is set and contains an application specific key value. Reviewed-by: Mark Bloch <markb@mellanox.com> Signed-off-by: Ariel Levkovich <lariel@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
e822ff213f
commit
20b6563ba1
@@ -1033,6 +1033,33 @@ struct ib_uverbs_flow_spec_esp {
|
||||
struct ib_uverbs_flow_spec_esp_filter mask;
|
||||
};
|
||||
|
||||
struct ib_uverbs_flow_gre_filter {
|
||||
/* c_ks_res0_ver field is bits 0-15 in offset 0 of a standard GRE header:
|
||||
* bit 0 - C - checksum bit.
|
||||
* bit 1 - reserved. set to 0.
|
||||
* bit 2 - key bit.
|
||||
* bit 3 - sequence number bit.
|
||||
* bits 4:12 - reserved. set to 0.
|
||||
* bits 13:15 - GRE version.
|
||||
*/
|
||||
__be16 c_ks_res0_ver;
|
||||
__be16 protocol;
|
||||
__be32 key;
|
||||
};
|
||||
|
||||
struct ib_uverbs_flow_spec_gre {
|
||||
union {
|
||||
struct ib_uverbs_flow_spec_hdr hdr;
|
||||
struct {
|
||||
__u32 type;
|
||||
__u16 size;
|
||||
__u16 reserved;
|
||||
};
|
||||
};
|
||||
struct ib_uverbs_flow_gre_filter val;
|
||||
struct ib_uverbs_flow_gre_filter mask;
|
||||
};
|
||||
|
||||
struct ib_uverbs_flow_attr {
|
||||
__u32 type;
|
||||
__u16 size;
|
||||
|
Reference in New Issue
Block a user