Tue, Mar 01, 2016 at 03:24:49PM CET, [email protected] wrote:
>Parse tc_cls_flower_offload into device specific commands and program
>the hardware to classify and act accordingly.
>
>For example, to drop ICMP (ip_proto 1) packets from specific smac, dmac,
>src_ip, src_ip, arriving to interface ens9:
>
> # tc qdisc add dev ens9 ingress
>
> # tc filter add dev ens9 protocol ip parent ffff: \
>     flower ip_proto 1 \
>     dst_mac 7c:fe:90:69:81:62 src_mac 7c:fe:90:69:81:56 \
>     dst_ip 11.11.11.11 src_ip 11.11.11.12 indev ens9 \
>     action drop
>

<snip>

>+static int parse_tc_actions(struct mlx5e_priv *priv, struct tcf_exts *exts,
>+                          u32 *action, u32 *flow_tag)
>+{
>+#ifdef CONFIG_NET_CLS_ACT
>+      const struct tc_action *a;
>+
>+      *flow_tag = MLX5_FS_DEFAULT_FLOW_TAG;
>+      *action = 0;
>+
>+      if (list_empty(&exts->actions))
>+              return -EINVAL;
>+
>+      list_for_each_entry(a, &exts->actions, list) {

I think it would make sense to make this a macro "tc_for_each_action"
and "tc_no_action" for empty list and you can loose ugly
CONFIG_NET_CLS_ACT ifdef

Reply via email to