aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/mellanox/mlxsw
diff options
context:
space:
mode:
authorIdo Schimmel <idosch@mellanox.com>2016-07-25 13:12:33 +0300
committerDavid S. Miller <davem@davemloft.net>2016-07-25 17:57:33 -0700
commit86cb13e4ec5060d94069a8418fd4f3ccb38edee2 (patch)
tree3b45b1bf9df3cce13fef997a19a3d92815c81d03 /drivers/net/ethernet/mellanox/mlxsw
parentnet: davinci_cpdma: remove excessive dump of register values to kernel log (diff)
downloadlinux-dev-86cb13e4ec5060d94069a8418fd4f3ccb38edee2.tar.xz
linux-dev-86cb13e4ec5060d94069a8418fd4f3ccb38edee2.zip
mlxsw: spectrum: Fix compilation error when CLS_ACT isn't set
When CONFIG_NET_CLS_ACT isn't set 'struct tcf_exts' has no member named 'actions' and we therefore must not access it. Otherwise compilation fails. Fix this by introducing a new macro similar to tc_no_actions(), which always returns 'false' if CONFIG_NET_CLS_ACT isn't set. Fixes: 763b4b70afcd ("mlxsw: spectrum: Add support in matchall mirror TC offloading") Reported-by: kbuild test robot <fengguang.wu@intel.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to '')
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
index 552636b73416..c3e61500819d 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
@@ -1148,23 +1148,22 @@ static int mlxsw_sp_port_add_cls_matchall(struct mlxsw_sp_port *mlxsw_sp_port,
struct tc_cls_matchall_offload *cls,
bool ingress)
{
- struct tcf_exts *exts = cls->exts;
const struct tc_action *a;
int err;
- if (!list_is_singular(&exts->actions)) {
+ if (!tc_single_action(cls->exts)) {
netdev_err(mlxsw_sp_port->dev, "only singular actions are supported\n");
return -ENOTSUPP;
}
- a = list_first_entry(&exts->actions, struct tc_action, list);
- if (is_tcf_mirred_mirror(a) && protocol == htons(ETH_P_ALL)) {
+ tc_for_each_action(a, cls->exts) {
+ if (!is_tcf_mirred_mirror(a) || protocol != htons(ETH_P_ALL))
+ return -ENOTSUPP;
+
err = mlxsw_sp_port_add_cls_matchall_mirror(mlxsw_sp_port, cls,
a, ingress);
if (err)
return err;
- } else {
- return -ENOTSUPP;
}
return 0;