summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-07-05 10:06:03 +0300
committerDavid S. Miller <davem@davemloft.net>2016-07-05 10:06:03 +0300
commit487884eb0c33f4cbf9c3f69fb318fe5897ac2981 (patch)
tree2cf19b8f4a87ca4c33f6e8ca054c261fb3ff85b7 /include/linux
parent019d0c99364a818eb08f52d7ee4b75ea6df07d09 (diff)
parente989d5a532ce6b0512bd2997c0db46fd0b5e81ec (diff)
downloadlinux-487884eb0c33f4cbf9c3f69fb318fe5897ac2981.tar.xz
Merge branch 'mlx5-ntuple-steering'
Saeed Mahameed says: ==================== Mellanox 100G mlx5 ethtool ntuple steering This series adds Ethernet ethtool ntuple steering 'ethtool -N|U' and exposes two more counter sets to Ethtool statistics, RDMA vport and global flow control statistics. We start from three refactoring patches of the flow steering infrastructure - mlx5_add_flow_rule will now receive mlx5 flow spec to simplify and reduce number of parameters - All low level steering objects are now wrapped in mlx5_flow_steering structure for better encapsulation - Flow steering object will now be removed properly and generically rather than traversing on a well-known steering tree objects Patch#4 adds the infrastructure and the data structures needed for the ethtool ntuple steering, all implemented in a new file 'en_fs_ethtool.c'. Add the support for set_rxnfc ethtool callback to add/remove/replace a flow spec of ethter type L2. Patch#5 adds the support for L3/L4 flow specs and a higher priority in favor for L3/L4 rules when interleaving with L2 rules. Patch#6 adds the support for get_rxnfc ethtool callback. Patch#7,8 adds RDMA vport and global flow control statistics. Applied on top: 8186f6e382d8 ('net-next: mediatek: fix compile error inside mtk_poll_controller()') ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/mlx5/driver.h6
-rw-r--r--include/linux/mlx5/fs.h11
2 files changed, 9 insertions, 8 deletions
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h
index e22b3456b2ee..f21c45941887 100644
--- a/include/linux/mlx5/driver.h
+++ b/include/linux/mlx5/driver.h
@@ -550,14 +550,10 @@ struct mlx5_priv {
struct list_head ctx_list;
spinlock_t ctx_lock;
+ struct mlx5_flow_steering *steering;
struct mlx5_eswitch *eswitch;
struct mlx5_core_sriov sriov;
unsigned long pci_dev_data;
- struct mlx5_flow_root_namespace *root_ns;
- struct mlx5_flow_root_namespace *fdb_root_ns;
- struct mlx5_flow_root_namespace *esw_egress_root_ns;
- struct mlx5_flow_root_namespace *esw_ingress_root_ns;
-
struct mlx5_fc_stats fc_stats;
struct mlx5_rl_table rl_table;
};
diff --git a/include/linux/mlx5/fs.h b/include/linux/mlx5/fs.h
index 6ad111938709..e036d6030867 100644
--- a/include/linux/mlx5/fs.h
+++ b/include/linux/mlx5/fs.h
@@ -55,6 +55,7 @@ static inline void build_leftovers_ft_param(int *priority,
enum mlx5_flow_namespace_type {
MLX5_FLOW_NAMESPACE_BYPASS,
MLX5_FLOW_NAMESPACE_OFFLOADS,
+ MLX5_FLOW_NAMESPACE_ETHTOOL,
MLX5_FLOW_NAMESPACE_KERNEL,
MLX5_FLOW_NAMESPACE_LEFTOVERS,
MLX5_FLOW_NAMESPACE_ANCHOR,
@@ -68,6 +69,12 @@ struct mlx5_flow_group;
struct mlx5_flow_rule;
struct mlx5_flow_namespace;
+struct mlx5_flow_spec {
+ u8 match_criteria_enable;
+ u32 match_criteria[MLX5_ST_SZ_DW(fte_match_param)];
+ u32 match_value[MLX5_ST_SZ_DW(fte_match_param)];
+};
+
struct mlx5_flow_destination {
enum mlx5_flow_destination_type type;
union {
@@ -116,9 +123,7 @@ void mlx5_destroy_flow_group(struct mlx5_flow_group *fg);
*/
struct mlx5_flow_rule *
mlx5_add_flow_rule(struct mlx5_flow_table *ft,
- u8 match_criteria_enable,
- u32 *match_criteria,
- u32 *match_value,
+ struct mlx5_flow_spec *spec,
u32 action,
u32 flow_tag,
struct mlx5_flow_destination *dest);