summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBogdan Purcareata <bogdan.purcareata@nxp.com>2017-08-08 13:33:13 (GMT)
committerXie Xiaobo <xiaobo.xie@nxp.com>2017-12-12 07:32:40 (GMT)
commit9aa493b51778f5b6a072d7138a2f4747043ff63b (patch)
treeff2d9e9fff7cf5a20af92d03c3f7e97393452b34
parent5e254855328efe55f370ba9d9a4cfe20bfc7db42 (diff)
downloadlinux-9aa493b51778f5b6a072d7138a2f4747043ff63b.tar.xz
staging: fsl-dpaa2/eth: Add fs entries for all tcs
The current MC (10.3.1) design uses a separate flow steering table for each traffic class. When adding a flow steering rule, add it for each traffic class. The location of the rule is the same in all tables. Signed-off-by: Bogdan Purcareata <bogdan.purcareata@nxp.com>
-rw-r--r--drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c
index 9859814..4c2c654 100644
--- a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c
+++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c
@@ -676,7 +676,7 @@ static int do_cls(struct net_device *net_dev,
struct dpni_rule_cfg rule_cfg;
struct dpni_fs_action_cfg fs_act = { 0 };
void *dma_mem;
- int err = 0;
+ int err = 0, tc;
if (!dpaa2_eth_fs_enabled(priv)) {
netdev_err(net_dev, "dev does not support steering!\n");
@@ -719,12 +719,19 @@ static int do_cls(struct net_device *net_dev,
else
fs_act.flow_id = fs->ring_cookie;
- if (add)
- err = dpni_add_fs_entry(priv->mc_io, 0, priv->mc_token,
- 0, fs->location, &rule_cfg, &fs_act);
- else
- err = dpni_remove_fs_entry(priv->mc_io, 0, priv->mc_token,
- 0, &rule_cfg);
+ for (tc = 0; tc < dpaa2_eth_tc_count(priv); tc++) {
+ if (add)
+ err = dpni_add_fs_entry(priv->mc_io, 0, priv->mc_token,
+ tc, fs->location, &rule_cfg,
+ &fs_act);
+ else
+ err = dpni_remove_fs_entry(priv->mc_io, 0,
+ priv->mc_token, tc,
+ &rule_cfg);
+
+ if (err)
+ break;
+ }
dma_unmap_single(dev, rule_cfg.key_iova,
rule_cfg.key_size * 2, DMA_TO_DEVICE);