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>
This commit is contained in:
parent
3568bdf041
commit
86cb13e4ec
@ -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,
|
struct tc_cls_matchall_offload *cls,
|
||||||
bool ingress)
|
bool ingress)
|
||||||
{
|
{
|
||||||
struct tcf_exts *exts = cls->exts;
|
|
||||||
const struct tc_action *a;
|
const struct tc_action *a;
|
||||||
int err;
|
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");
|
netdev_err(mlxsw_sp_port->dev, "only singular actions are supported\n");
|
||||||
return -ENOTSUPP;
|
return -ENOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
a = list_first_entry(&exts->actions, struct tc_action, list);
|
tc_for_each_action(a, cls->exts) {
|
||||||
if (is_tcf_mirred_mirror(a) && protocol == htons(ETH_P_ALL)) {
|
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,
|
err = mlxsw_sp_port_add_cls_matchall_mirror(mlxsw_sp_port, cls,
|
||||||
a, ingress);
|
a, ingress);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
} else {
|
|
||||||
return -ENOTSUPP;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -192,6 +192,9 @@ int tcf_action_copy_stats(struct sk_buff *, struct tc_action *, int);
|
|||||||
#define tc_for_each_action(_a, _exts) \
|
#define tc_for_each_action(_a, _exts) \
|
||||||
list_for_each_entry(a, &(_exts)->actions, list)
|
list_for_each_entry(a, &(_exts)->actions, list)
|
||||||
|
|
||||||
|
#define tc_single_action(_exts) \
|
||||||
|
(list_is_singular(&(_exts)->actions))
|
||||||
|
|
||||||
static inline void tcf_action_stats_update(struct tc_action *a, u64 bytes,
|
static inline void tcf_action_stats_update(struct tc_action *a, u64 bytes,
|
||||||
u64 packets, u64 lastuse)
|
u64 packets, u64 lastuse)
|
||||||
{
|
{
|
||||||
@ -205,6 +208,7 @@ static inline void tcf_action_stats_update(struct tc_action *a, u64 bytes,
|
|||||||
|
|
||||||
#define tc_no_actions(_exts) true
|
#define tc_no_actions(_exts) true
|
||||||
#define tc_for_each_action(_a, _exts) while ((void)(_a), 0)
|
#define tc_for_each_action(_a, _exts) while ((void)(_a), 0)
|
||||||
|
#define tc_single_action(_exts) false
|
||||||
#define tcf_action_stats_update(a, bytes, packets, lastuse)
|
#define tcf_action_stats_update(a, bytes, packets, lastuse)
|
||||||
|
|
||||||
#endif /* CONFIG_NET_CLS_ACT */
|
#endif /* CONFIG_NET_CLS_ACT */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user