]> git.baikalelectronics.ru Git - kernel.git/commitdiff
Revert "net/sched: cls_flower: Remove match on n_proto"
authorBoris Sukholitko <boris.sukholitko@broadcom.com>
Mon, 21 Jun 2021 09:24:29 +0000 (12:24 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 21 Jun 2021 21:46:36 +0000 (14:46 -0700)
This reverts commit 0dca2c7404a938cb10c85d0515cee40ed5348788.

The commit in question breaks hardware offload of flower filters.

Quoting Vladimir Oltean <olteanv@gmail.com>:

 fl_hw_replace_filter() and fl_reoffload() create a struct
 flow_cls_offload with a rule->match.mask member derived from the mask
 of the software classifier: &f->mask->key - that same mask that is used
 for initializing the flow dissector keys, and the one from which Boris
 removed the basic.n_proto member because it was bothering him.

Reported-by: Vadym Kochan <vadym.kochan@plvision.eu>
Signed-off-by: Boris Sukholitko <boris.sukholitko@broadcom.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/cls_flower.c

index 2e704c7a105ad43f9a325bdabba0bb5ac8e418af..d7869a984881ed0d19ef0fe936b7014aa75a3912 100644 (file)
@@ -1531,13 +1531,14 @@ static int fl_set_key(struct net *net, struct nlattr **tb,
                                                       &mask->basic.n_proto,
                                                       TCA_FLOWER_UNSPEC,
                                                       sizeof(key->basic.n_proto));
-                                       mask->basic.n_proto = cpu_to_be16(0);
                                } else {
                                        key->basic.n_proto = ethertype;
+                                       mask->basic.n_proto = cpu_to_be16(~0);
                                }
                        }
                } else {
                        key->basic.n_proto = ethertype;
+                       mask->basic.n_proto = cpu_to_be16(~0);
                }
        }