IB/core: Use a common header for uverbs flow_specs
A common header will allows better checking of flow specs size, while ensuring strict alignment to 64 bits. Signed-off-by: Yann Droneaud <ydroneaud@opteya.com> Link: http://marc.info/?i=cover.1383773832.git.ydroneaud@opteya.com Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
b68c956021
commit
58913efba9
|
@ -701,6 +701,14 @@ struct ib_uverbs_detach_mcast {
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING
|
#ifdef CONFIG_INFINIBAND_EXPERIMENTAL_UVERBS_FLOW_STEERING
|
||||||
|
struct ib_uverbs_flow_spec_hdr {
|
||||||
|
__u32 type;
|
||||||
|
__u16 size;
|
||||||
|
__u16 reserved;
|
||||||
|
/* followed by flow_spec */
|
||||||
|
__u64 flow_spec_data[0];
|
||||||
|
};
|
||||||
|
|
||||||
struct ib_uverbs_flow_eth_filter {
|
struct ib_uverbs_flow_eth_filter {
|
||||||
__u8 dst_mac[6];
|
__u8 dst_mac[6];
|
||||||
__u8 src_mac[6];
|
__u8 src_mac[6];
|
||||||
|
@ -709,9 +717,14 @@ struct ib_uverbs_flow_eth_filter {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ib_uverbs_flow_spec_eth {
|
struct ib_uverbs_flow_spec_eth {
|
||||||
__u32 type;
|
union {
|
||||||
__u16 size;
|
struct ib_uverbs_flow_spec_hdr hdr;
|
||||||
__u16 reserved;
|
struct {
|
||||||
|
__u32 type;
|
||||||
|
__u16 size;
|
||||||
|
__u16 reserved;
|
||||||
|
};
|
||||||
|
};
|
||||||
struct ib_uverbs_flow_eth_filter val;
|
struct ib_uverbs_flow_eth_filter val;
|
||||||
struct ib_uverbs_flow_eth_filter mask;
|
struct ib_uverbs_flow_eth_filter mask;
|
||||||
};
|
};
|
||||||
|
@ -722,9 +735,14 @@ struct ib_uverbs_flow_ipv4_filter {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ib_uverbs_flow_spec_ipv4 {
|
struct ib_uverbs_flow_spec_ipv4 {
|
||||||
__u32 type;
|
union {
|
||||||
__u16 size;
|
struct ib_uverbs_flow_spec_hdr hdr;
|
||||||
__u16 reserved;
|
struct {
|
||||||
|
__u32 type;
|
||||||
|
__u16 size;
|
||||||
|
__u16 reserved;
|
||||||
|
};
|
||||||
|
};
|
||||||
struct ib_uverbs_flow_ipv4_filter val;
|
struct ib_uverbs_flow_ipv4_filter val;
|
||||||
struct ib_uverbs_flow_ipv4_filter mask;
|
struct ib_uverbs_flow_ipv4_filter mask;
|
||||||
};
|
};
|
||||||
|
@ -735,19 +753,27 @@ struct ib_uverbs_flow_tcp_udp_filter {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ib_uverbs_flow_spec_tcp_udp {
|
struct ib_uverbs_flow_spec_tcp_udp {
|
||||||
__u32 type;
|
union {
|
||||||
__u16 size;
|
struct ib_uverbs_flow_spec_hdr hdr;
|
||||||
__u16 reserved;
|
struct {
|
||||||
|
__u32 type;
|
||||||
|
__u16 size;
|
||||||
|
__u16 reserved;
|
||||||
|
};
|
||||||
|
};
|
||||||
struct ib_uverbs_flow_tcp_udp_filter val;
|
struct ib_uverbs_flow_tcp_udp_filter val;
|
||||||
struct ib_uverbs_flow_tcp_udp_filter mask;
|
struct ib_uverbs_flow_tcp_udp_filter mask;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ib_uverbs_flow_spec {
|
struct ib_uverbs_flow_spec {
|
||||||
union {
|
union {
|
||||||
struct {
|
union {
|
||||||
__u32 type;
|
struct ib_uverbs_flow_spec_hdr hdr;
|
||||||
__u16 size;
|
struct {
|
||||||
__u16 reserved;
|
__u32 type;
|
||||||
|
__u16 size;
|
||||||
|
__u16 reserved;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
struct ib_uverbs_flow_spec_eth eth;
|
struct ib_uverbs_flow_spec_eth eth;
|
||||||
struct ib_uverbs_flow_spec_ipv4 ipv4;
|
struct ib_uverbs_flow_spec_ipv4 ipv4;
|
||||||
|
@ -767,6 +793,7 @@ struct ib_uverbs_flow_attr {
|
||||||
* struct ib_flow_spec_xxx
|
* struct ib_flow_spec_xxx
|
||||||
* struct ib_flow_spec_yyy
|
* struct ib_flow_spec_yyy
|
||||||
*/
|
*/
|
||||||
|
struct ib_uverbs_flow_spec_hdr flow_specs[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ib_uverbs_create_flow {
|
struct ib_uverbs_create_flow {
|
||||||
|
|
Loading…
Reference in New Issue