* [dpdk-stable] [PATCH 5/7] net/ice: change default tunnle type
[not found] <20200313020023.21341-1-wei.zhao1@intel.com>
@ 2020-03-13 2:00 ` Wei Zhao
2020-03-13 2:00 ` [dpdk-stable] [PATCH 6/7] net/ice: add action number check for swicth Wei Zhao
2020-03-13 2:00 ` [dpdk-stable] [PATCH 7/7] net/ice: fix input set of VLAN item Wei Zhao
2 siblings, 0 replies; 9+ messages in thread
From: Wei Zhao @ 2020-03-13 2:00 UTC (permalink / raw)
To: wei.zhao1; +Cc: stable
From: wei zhao <wei.zhao1@intel.com>
The default tunnle type for swicth filter change to new
defination of ICE_SW_TUN_AND_NON_TUN in order that the rule
will be apply to more packet type.
Cc: stable@dpdk.org
Fixes: 47d460d63233 ("net/ice: rework switch filter")
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
drivers/net/ice/ice_switch_filter.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c
index 20d0577b5..7ca922602 100644
--- a/drivers/net/ice/ice_switch_filter.c
+++ b/drivers/net/ice/ice_switch_filter.c
@@ -1097,7 +1097,8 @@ ice_switch_parse_pattern_action(struct ice_adapter *ad,
uint16_t lkups_num = 0;
const struct rte_flow_item *item = pattern;
uint16_t item_num = 0;
- enum ice_sw_tunnel_type tun_type = ICE_NON_TUN;
+ enum ice_sw_tunnel_type tun_type =
+ ICE_SW_TUN_AND_NON_TUN;
struct ice_pattern_match_item *pattern_match_item = NULL;
for (; item->type != RTE_FLOW_ITEM_TYPE_END; item++) {
--
2.19.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-stable] [PATCH 6/7] net/ice: add action number check for swicth
[not found] <20200313020023.21341-1-wei.zhao1@intel.com>
2020-03-13 2:00 ` [dpdk-stable] [PATCH 5/7] net/ice: change default tunnle type Wei Zhao
@ 2020-03-13 2:00 ` Wei Zhao
2020-03-13 2:00 ` [dpdk-stable] [PATCH 7/7] net/ice: fix input set of VLAN item Wei Zhao
2 siblings, 0 replies; 9+ messages in thread
From: Wei Zhao @ 2020-03-13 2:00 UTC (permalink / raw)
To: wei.zhao1; +Cc: stable
From: wei zhao <wei.zhao1@intel.com>
The action number can only be one for DCF or PF
switch filter, not support large action.
Cc: stable@dpdk.org
Fixes: 47d460d63233 ("net/ice: rework switch filter")
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
drivers/net/ice/ice_switch_filter.c | 48 +++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c
index 7ca922602..48d689deb 100644
--- a/drivers/net/ice/ice_switch_filter.c
+++ b/drivers/net/ice/ice_switch_filter.c
@@ -1079,6 +1079,46 @@ ice_switch_parse_action(struct ice_pf *pf,
return -rte_errno;
}
+static int
+ice_switch_check_action(const struct rte_flow_action *actions,
+ struct rte_flow_error *error)
+{
+ const struct rte_flow_action *action;
+ enum rte_flow_action_type action_type;
+ uint16_t actions_num = 0;
+
+ for (action = actions; action->type !=
+ RTE_FLOW_ACTION_TYPE_END; action++) {
+ action_type = action->type;
+ switch (action_type) {
+ case RTE_FLOW_ACTION_TYPE_VF:
+ case RTE_FLOW_ACTION_TYPE_RSS:
+ case RTE_FLOW_ACTION_TYPE_QUEUE:
+ case RTE_FLOW_ACTION_TYPE_DROP:
+ actions_num++;
+ break;
+ case RTE_FLOW_ACTION_TYPE_VOID:
+ continue;
+ default:
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action type");
+ return -rte_errno;
+ }
+ }
+
+ if (actions_num > 1) {
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action number");
+ return -rte_errno;
+ }
+
+ return 0;
+}
+
static int
ice_switch_parse_pattern_action(struct ice_adapter *ad,
struct ice_pattern_match_item *array,
@@ -1164,6 +1204,14 @@ ice_switch_parse_pattern_action(struct ice_adapter *ad,
goto error;
}
+ ret = ice_switch_check_action(actions, error);
+ if (ret) {
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
+ "Invalid input action number");
+ goto error;
+ }
+
if (ad->hw.dcf_enabled)
ret = ice_switch_parse_dcf_action(actions, error, &rule_info);
else
--
2.19.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-stable] [PATCH 7/7] net/ice: fix input set of VLAN item
[not found] <20200313020023.21341-1-wei.zhao1@intel.com>
2020-03-13 2:00 ` [dpdk-stable] [PATCH 5/7] net/ice: change default tunnle type Wei Zhao
2020-03-13 2:00 ` [dpdk-stable] [PATCH 6/7] net/ice: add action number check for swicth Wei Zhao
@ 2020-03-13 2:00 ` Wei Zhao
2 siblings, 0 replies; 9+ messages in thread
From: Wei Zhao @ 2020-03-13 2:00 UTC (permalink / raw)
To: wei.zhao1; +Cc: stable
From: wei zhao <wei.zhao1@intel.com>
The input set for inner type of vlan item should
be ICE_INSET_ETHERTYPE, not ICE_INSET_VLAN_OUTER.
This mac vlan filter is also part of DCF switch filter.
Cc: stable@dpdk.org
Fixes: 47d460d63233 ("net/ice: rework switch filter")
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
drivers/net/ice/ice_switch_filter.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c
index 48d689deb..ecd7c75aa 100644
--- a/drivers/net/ice/ice_switch_filter.c
+++ b/drivers/net/ice/ice_switch_filter.c
@@ -867,7 +867,7 @@ ice_switch_inset_get(const struct rte_flow_item pattern[],
vlan_spec->inner_type;
list[t].m_u.vlan_hdr.type =
vlan_mask->inner_type;
- input_set |= ICE_INSET_VLAN_OUTER;
+ input_set |= ICE_INSET_ETHERTYPE;
}
t++;
}
--
2.19.1
^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <20200313022540.21984-1-wei.zhao1@intel.com>]
* [dpdk-stable] [PATCH 6/7] net/ice: add action number check for swicth
[not found] <20200313022540.21984-1-wei.zhao1@intel.com>
@ 2020-03-13 2:25 ` Wei Zhao
0 siblings, 0 replies; 9+ messages in thread
From: Wei Zhao @ 2020-03-13 2:25 UTC (permalink / raw)
To: wei.zhao1; +Cc: stable
The action number can only be one for DCF or PF
switch filter, not support large action.
Cc: stable@dpdk.org
Fixes: 47d460d63233 ("net/ice: rework switch filter")
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
drivers/net/ice/ice_switch_filter.c | 48 +++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c
index 7ca922602..48d689deb 100644
--- a/drivers/net/ice/ice_switch_filter.c
+++ b/drivers/net/ice/ice_switch_filter.c
@@ -1079,6 +1079,46 @@ ice_switch_parse_action(struct ice_pf *pf,
return -rte_errno;
}
+static int
+ice_switch_check_action(const struct rte_flow_action *actions,
+ struct rte_flow_error *error)
+{
+ const struct rte_flow_action *action;
+ enum rte_flow_action_type action_type;
+ uint16_t actions_num = 0;
+
+ for (action = actions; action->type !=
+ RTE_FLOW_ACTION_TYPE_END; action++) {
+ action_type = action->type;
+ switch (action_type) {
+ case RTE_FLOW_ACTION_TYPE_VF:
+ case RTE_FLOW_ACTION_TYPE_RSS:
+ case RTE_FLOW_ACTION_TYPE_QUEUE:
+ case RTE_FLOW_ACTION_TYPE_DROP:
+ actions_num++;
+ break;
+ case RTE_FLOW_ACTION_TYPE_VOID:
+ continue;
+ default:
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action type");
+ return -rte_errno;
+ }
+ }
+
+ if (actions_num > 1) {
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action number");
+ return -rte_errno;
+ }
+
+ return 0;
+}
+
static int
ice_switch_parse_pattern_action(struct ice_adapter *ad,
struct ice_pattern_match_item *array,
@@ -1164,6 +1204,14 @@ ice_switch_parse_pattern_action(struct ice_adapter *ad,
goto error;
}
+ ret = ice_switch_check_action(actions, error);
+ if (ret) {
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
+ "Invalid input action number");
+ goto error;
+ }
+
if (ad->hw.dcf_enabled)
ret = ice_switch_parse_dcf_action(actions, error, &rule_info);
else
--
2.19.1
^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <20200313020806.21654-1-wei.zhao1@intel.com>]
* [dpdk-stable] [PATCH 6/7] net/ice: add action number check for swicth
[not found] <20200313020806.21654-1-wei.zhao1@intel.com>
@ 2020-03-13 2:08 ` Wei Zhao
0 siblings, 0 replies; 9+ messages in thread
From: Wei Zhao @ 2020-03-13 2:08 UTC (permalink / raw)
To: dev; +Cc: qi.z.zhang, xiaolong.ye, stable, Wei Zhao
The action number can only be one for DCF or PF
switch filter, not support large action.
Cc: stable@dpdk.org
Fixes: 47d460d63233 ("net/ice: rework switch filter")
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
drivers/net/ice/ice_switch_filter.c | 48 +++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c
index 7ca922602..48d689deb 100644
--- a/drivers/net/ice/ice_switch_filter.c
+++ b/drivers/net/ice/ice_switch_filter.c
@@ -1079,6 +1079,46 @@ ice_switch_parse_action(struct ice_pf *pf,
return -rte_errno;
}
+static int
+ice_switch_check_action(const struct rte_flow_action *actions,
+ struct rte_flow_error *error)
+{
+ const struct rte_flow_action *action;
+ enum rte_flow_action_type action_type;
+ uint16_t actions_num = 0;
+
+ for (action = actions; action->type !=
+ RTE_FLOW_ACTION_TYPE_END; action++) {
+ action_type = action->type;
+ switch (action_type) {
+ case RTE_FLOW_ACTION_TYPE_VF:
+ case RTE_FLOW_ACTION_TYPE_RSS:
+ case RTE_FLOW_ACTION_TYPE_QUEUE:
+ case RTE_FLOW_ACTION_TYPE_DROP:
+ actions_num++;
+ break;
+ case RTE_FLOW_ACTION_TYPE_VOID:
+ continue;
+ default:
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action type");
+ return -rte_errno;
+ }
+ }
+
+ if (actions_num > 1) {
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action number");
+ return -rte_errno;
+ }
+
+ return 0;
+}
+
static int
ice_switch_parse_pattern_action(struct ice_adapter *ad,
struct ice_pattern_match_item *array,
@@ -1164,6 +1204,14 @@ ice_switch_parse_pattern_action(struct ice_adapter *ad,
goto error;
}
+ ret = ice_switch_check_action(actions, error);
+ if (ret) {
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
+ "Invalid input action number");
+ goto error;
+ }
+
if (ad->hw.dcf_enabled)
ret = ice_switch_parse_dcf_action(actions, error, &rule_info);
else
--
2.19.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-stable] [PATCH 0/7] add switch filter support for intel DCF
@ 2020-03-13 2:06 Wei Zhao
2020-03-13 2:07 ` [dpdk-stable] [PATCH 6/7] net/ice: add action number check for swicth Wei Zhao
0 siblings, 1 reply; 9+ messages in thread
From: Wei Zhao @ 2020-03-13 2:06 UTC (permalink / raw)
Cc: stable, qi.z.zhang, xiaolong.ye
A DCF (Device Config Function) framework has been add for intel device,
this patch set add add switch filter support for it, this set also fix
bugs which block this feature.
This patchset is based on:
[1] https://patchwork.dpdk.org/cover/66480/ : add Intel DCF PMD support
Depends-on: series-8859
wei zhao (7):
net/ice: enable switch flow on DCF
net/ice: support for more PPPoE input set
net/ice: change swicth parser to support flexible mask
net/ice: add support for MAC VLAN rule
net/ice: change default tunnle type
net/ice: add action number check for swicth
net/ice: fix input set of VLAN item
config/common_linux | 1 +
drivers/net/ice/ice_dcf_ethdev.c | 10 +-
drivers/net/ice/ice_dcf_parent.c | 7 +
drivers/net/ice/ice_fdir_filter.c | 6 +
drivers/net/ice/ice_generic_flow.c | 13 +
drivers/net/ice/ice_generic_flow.h | 9 +
drivers/net/ice/ice_hash.c | 6 +
drivers/net/ice/ice_switch_filter.c | 461 ++++++++++++++++++----------
8 files changed, 348 insertions(+), 165 deletions(-)
--
2.19.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-stable] [PATCH 6/7] net/ice: add action number check for swicth
2020-03-13 2:06 [dpdk-stable] [PATCH 0/7] add switch filter support for intel DCF Wei Zhao
@ 2020-03-13 2:07 ` Wei Zhao
0 siblings, 0 replies; 9+ messages in thread
From: Wei Zhao @ 2020-03-13 2:07 UTC (permalink / raw)
Cc: stable, qi.z.zhang, xiaolong.ye, Wei Zhao
The action number can only be one for DCF or PF
switch filter, not support large action.
Cc: stable@dpdk.org
Fixes: 47d460d63233 ("net/ice: rework switch filter")
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
drivers/net/ice/ice_switch_filter.c | 48 +++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c
index 7ca922602..48d689deb 100644
--- a/drivers/net/ice/ice_switch_filter.c
+++ b/drivers/net/ice/ice_switch_filter.c
@@ -1079,6 +1079,46 @@ ice_switch_parse_action(struct ice_pf *pf,
return -rte_errno;
}
+static int
+ice_switch_check_action(const struct rte_flow_action *actions,
+ struct rte_flow_error *error)
+{
+ const struct rte_flow_action *action;
+ enum rte_flow_action_type action_type;
+ uint16_t actions_num = 0;
+
+ for (action = actions; action->type !=
+ RTE_FLOW_ACTION_TYPE_END; action++) {
+ action_type = action->type;
+ switch (action_type) {
+ case RTE_FLOW_ACTION_TYPE_VF:
+ case RTE_FLOW_ACTION_TYPE_RSS:
+ case RTE_FLOW_ACTION_TYPE_QUEUE:
+ case RTE_FLOW_ACTION_TYPE_DROP:
+ actions_num++;
+ break;
+ case RTE_FLOW_ACTION_TYPE_VOID:
+ continue;
+ default:
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action type");
+ return -rte_errno;
+ }
+ }
+
+ if (actions_num > 1) {
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action number");
+ return -rte_errno;
+ }
+
+ return 0;
+}
+
static int
ice_switch_parse_pattern_action(struct ice_adapter *ad,
struct ice_pattern_match_item *array,
@@ -1164,6 +1204,14 @@ ice_switch_parse_pattern_action(struct ice_adapter *ad,
goto error;
}
+ ret = ice_switch_check_action(actions, error);
+ if (ret) {
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
+ "Invalid input action number");
+ goto error;
+ }
+
if (ad->hw.dcf_enabled)
ret = ice_switch_parse_dcf_action(actions, error, &rule_info);
else
--
2.19.1
^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <20200313020449.21518-1-wei.zhao1@intel.com>]
* [dpdk-stable] [PATCH 6/7] net/ice: add action number check for swicth
[not found] <20200313020449.21518-1-wei.zhao1@intel.com>
@ 2020-03-13 2:04 ` Wei Zhao
0 siblings, 0 replies; 9+ messages in thread
From: Wei Zhao @ 2020-03-13 2:04 UTC (permalink / raw)
To: wei.zhao1; +Cc: stable
The action number can only be one for DCF or PF
switch filter, not support large action.
Cc: stable@dpdk.org
Fixes: 47d460d63233 ("net/ice: rework switch filter")
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
drivers/net/ice/ice_switch_filter.c | 48 +++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c
index 7ca922602..48d689deb 100644
--- a/drivers/net/ice/ice_switch_filter.c
+++ b/drivers/net/ice/ice_switch_filter.c
@@ -1079,6 +1079,46 @@ ice_switch_parse_action(struct ice_pf *pf,
return -rte_errno;
}
+static int
+ice_switch_check_action(const struct rte_flow_action *actions,
+ struct rte_flow_error *error)
+{
+ const struct rte_flow_action *action;
+ enum rte_flow_action_type action_type;
+ uint16_t actions_num = 0;
+
+ for (action = actions; action->type !=
+ RTE_FLOW_ACTION_TYPE_END; action++) {
+ action_type = action->type;
+ switch (action_type) {
+ case RTE_FLOW_ACTION_TYPE_VF:
+ case RTE_FLOW_ACTION_TYPE_RSS:
+ case RTE_FLOW_ACTION_TYPE_QUEUE:
+ case RTE_FLOW_ACTION_TYPE_DROP:
+ actions_num++;
+ break;
+ case RTE_FLOW_ACTION_TYPE_VOID:
+ continue;
+ default:
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action type");
+ return -rte_errno;
+ }
+ }
+
+ if (actions_num > 1) {
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action number");
+ return -rte_errno;
+ }
+
+ return 0;
+}
+
static int
ice_switch_parse_pattern_action(struct ice_adapter *ad,
struct ice_pattern_match_item *array,
@@ -1164,6 +1204,14 @@ ice_switch_parse_pattern_action(struct ice_adapter *ad,
goto error;
}
+ ret = ice_switch_check_action(actions, error);
+ if (ret) {
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
+ "Invalid input action number");
+ goto error;
+ }
+
if (ad->hw.dcf_enabled)
ret = ice_switch_parse_dcf_action(actions, error, &rule_info);
else
--
2.19.1
^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <20200313020147.21394-1-wei.zhao1@intel.com>]
* [dpdk-stable] [PATCH 6/7] net/ice: add action number check for swicth
[not found] <20200313020147.21394-1-wei.zhao1@intel.com>
@ 2020-03-13 2:01 ` Wei Zhao
0 siblings, 0 replies; 9+ messages in thread
From: Wei Zhao @ 2020-03-13 2:01 UTC (permalink / raw)
To: wei.zhao1; +Cc: stable
From: wei zhao <wei.zhao1@intel.com>
The action number can only be one for DCF or PF
switch filter, not support large action.
Cc: stable@dpdk.org
Fixes: 47d460d63233 ("net/ice: rework switch filter")
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
drivers/net/ice/ice_switch_filter.c | 48 +++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c
index 7ca922602..48d689deb 100644
--- a/drivers/net/ice/ice_switch_filter.c
+++ b/drivers/net/ice/ice_switch_filter.c
@@ -1079,6 +1079,46 @@ ice_switch_parse_action(struct ice_pf *pf,
return -rte_errno;
}
+static int
+ice_switch_check_action(const struct rte_flow_action *actions,
+ struct rte_flow_error *error)
+{
+ const struct rte_flow_action *action;
+ enum rte_flow_action_type action_type;
+ uint16_t actions_num = 0;
+
+ for (action = actions; action->type !=
+ RTE_FLOW_ACTION_TYPE_END; action++) {
+ action_type = action->type;
+ switch (action_type) {
+ case RTE_FLOW_ACTION_TYPE_VF:
+ case RTE_FLOW_ACTION_TYPE_RSS:
+ case RTE_FLOW_ACTION_TYPE_QUEUE:
+ case RTE_FLOW_ACTION_TYPE_DROP:
+ actions_num++;
+ break;
+ case RTE_FLOW_ACTION_TYPE_VOID:
+ continue;
+ default:
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action type");
+ return -rte_errno;
+ }
+ }
+
+ if (actions_num > 1) {
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action number");
+ return -rte_errno;
+ }
+
+ return 0;
+}
+
static int
ice_switch_parse_pattern_action(struct ice_adapter *ad,
struct ice_pattern_match_item *array,
@@ -1164,6 +1204,14 @@ ice_switch_parse_pattern_action(struct ice_adapter *ad,
goto error;
}
+ ret = ice_switch_check_action(actions, error);
+ if (ret) {
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
+ "Invalid input action number");
+ goto error;
+ }
+
if (ad->hw.dcf_enabled)
ret = ice_switch_parse_dcf_action(actions, error, &rule_info);
else
--
2.19.1
^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <20200313014006.19589-1-wei.zhao1@intel.com>]
* [dpdk-stable] [PATCH 6/7] net/ice: add action number check for swicth
[not found] <20200313014006.19589-1-wei.zhao1@intel.com>
@ 2020-03-13 1:40 ` Wei Zhao
0 siblings, 0 replies; 9+ messages in thread
From: Wei Zhao @ 2020-03-13 1:40 UTC (permalink / raw)
To: wei.zhao1; +Cc: stable
From: wei zhao <wei.zhao1@intel.com>
The action number can only be one for DCF or PF
switch filter, not support large action.
Cc: stable@dpdk.org
Fixes: 47d460d63233 ("net/ice: rework switch filter")
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
drivers/net/ice/ice_switch_filter.c | 48 +++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c
index 7ca922602..48d689deb 100644
--- a/drivers/net/ice/ice_switch_filter.c
+++ b/drivers/net/ice/ice_switch_filter.c
@@ -1079,6 +1079,46 @@ ice_switch_parse_action(struct ice_pf *pf,
return -rte_errno;
}
+static int
+ice_switch_check_action(const struct rte_flow_action *actions,
+ struct rte_flow_error *error)
+{
+ const struct rte_flow_action *action;
+ enum rte_flow_action_type action_type;
+ uint16_t actions_num = 0;
+
+ for (action = actions; action->type !=
+ RTE_FLOW_ACTION_TYPE_END; action++) {
+ action_type = action->type;
+ switch (action_type) {
+ case RTE_FLOW_ACTION_TYPE_VF:
+ case RTE_FLOW_ACTION_TYPE_RSS:
+ case RTE_FLOW_ACTION_TYPE_QUEUE:
+ case RTE_FLOW_ACTION_TYPE_DROP:
+ actions_num++;
+ break;
+ case RTE_FLOW_ACTION_TYPE_VOID:
+ continue;
+ default:
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action type");
+ return -rte_errno;
+ }
+ }
+
+ if (actions_num > 1) {
+ rte_flow_error_set(error,
+ EINVAL, RTE_FLOW_ERROR_TYPE_ACTION,
+ actions,
+ "Invalid action number");
+ return -rte_errno;
+ }
+
+ return 0;
+}
+
static int
ice_switch_parse_pattern_action(struct ice_adapter *ad,
struct ice_pattern_match_item *array,
@@ -1164,6 +1204,14 @@ ice_switch_parse_pattern_action(struct ice_adapter *ad,
goto error;
}
+ ret = ice_switch_check_action(actions, error);
+ if (ret) {
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
+ "Invalid input action number");
+ goto error;
+ }
+
if (ad->hw.dcf_enabled)
ret = ice_switch_parse_dcf_action(actions, error, &rule_info);
else
--
2.19.1
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2020-03-13 2:46 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20200313020023.21341-1-wei.zhao1@intel.com>
2020-03-13 2:00 ` [dpdk-stable] [PATCH 5/7] net/ice: change default tunnle type Wei Zhao
2020-03-13 2:00 ` [dpdk-stable] [PATCH 6/7] net/ice: add action number check for swicth Wei Zhao
2020-03-13 2:00 ` [dpdk-stable] [PATCH 7/7] net/ice: fix input set of VLAN item Wei Zhao
[not found] <20200313022540.21984-1-wei.zhao1@intel.com>
2020-03-13 2:25 ` [dpdk-stable] [PATCH 6/7] net/ice: add action number check for swicth Wei Zhao
[not found] <20200313020806.21654-1-wei.zhao1@intel.com>
2020-03-13 2:08 ` Wei Zhao
2020-03-13 2:06 [dpdk-stable] [PATCH 0/7] add switch filter support for intel DCF Wei Zhao
2020-03-13 2:07 ` [dpdk-stable] [PATCH 6/7] net/ice: add action number check for swicth Wei Zhao
[not found] <20200313020449.21518-1-wei.zhao1@intel.com>
2020-03-13 2:04 ` Wei Zhao
[not found] <20200313020147.21394-1-wei.zhao1@intel.com>
2020-03-13 2:01 ` Wei Zhao
[not found] <20200313014006.19589-1-wei.zhao1@intel.com>
2020-03-13 1:40 ` Wei Zhao
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).