aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-01-11 23:55:43 -0500
committerDavid S. Miller <davem@davemloft.net>2016-01-11 23:55:43 -0500
commit9d367eddf363553c7668ba92c3b9d187ec4f71f7 (patch)
tree4f06d334d316390cc9a869ce3e74ec48d32ed0f8 /net/sched
parentb6a0e72ad3cffabaf30b856deb58fbe64a0f36a8 (diff)
parent03d84a5f83a67e692af00a3d3901e7820e3e84d5 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/bonding/bond_main.c drivers/net/ethernet/mellanox/mlxsw/spectrum.h drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c The bond_main.c and mellanox switch conflicts were cases of overlapping changes. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched')
-rw-r--r--net/sched/cls_flower.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c
index 57692947ebbe..95b021243233 100644
--- a/net/sched/cls_flower.c
+++ b/net/sched/cls_flower.c
@@ -252,23 +252,28 @@ static int fl_set_key(struct net *net, struct nlattr **tb,
252 fl_set_key_val(tb, key->eth.src, TCA_FLOWER_KEY_ETH_SRC, 252 fl_set_key_val(tb, key->eth.src, TCA_FLOWER_KEY_ETH_SRC,
253 mask->eth.src, TCA_FLOWER_KEY_ETH_SRC_MASK, 253 mask->eth.src, TCA_FLOWER_KEY_ETH_SRC_MASK,
254 sizeof(key->eth.src)); 254 sizeof(key->eth.src));
255
255 fl_set_key_val(tb, &key->basic.n_proto, TCA_FLOWER_KEY_ETH_TYPE, 256 fl_set_key_val(tb, &key->basic.n_proto, TCA_FLOWER_KEY_ETH_TYPE,
256 &mask->basic.n_proto, TCA_FLOWER_UNSPEC, 257 &mask->basic.n_proto, TCA_FLOWER_UNSPEC,
257 sizeof(key->basic.n_proto)); 258 sizeof(key->basic.n_proto));
259
258 if (key->basic.n_proto == htons(ETH_P_IP) || 260 if (key->basic.n_proto == htons(ETH_P_IP) ||
259 key->basic.n_proto == htons(ETH_P_IPV6)) { 261 key->basic.n_proto == htons(ETH_P_IPV6)) {
260 fl_set_key_val(tb, &key->basic.ip_proto, TCA_FLOWER_KEY_IP_PROTO, 262 fl_set_key_val(tb, &key->basic.ip_proto, TCA_FLOWER_KEY_IP_PROTO,
261 &mask->basic.ip_proto, TCA_FLOWER_UNSPEC, 263 &mask->basic.ip_proto, TCA_FLOWER_UNSPEC,
262 sizeof(key->basic.ip_proto)); 264 sizeof(key->basic.ip_proto));
263 } 265 }
264 if (key->control.addr_type == FLOW_DISSECTOR_KEY_IPV4_ADDRS) { 266
267 if (tb[TCA_FLOWER_KEY_IPV4_SRC] || tb[TCA_FLOWER_KEY_IPV4_DST]) {
268 key->control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
265 fl_set_key_val(tb, &key->ipv4.src, TCA_FLOWER_KEY_IPV4_SRC, 269 fl_set_key_val(tb, &key->ipv4.src, TCA_FLOWER_KEY_IPV4_SRC,
266 &mask->ipv4.src, TCA_FLOWER_KEY_IPV4_SRC_MASK, 270 &mask->ipv4.src, TCA_FLOWER_KEY_IPV4_SRC_MASK,
267 sizeof(key->ipv4.src)); 271 sizeof(key->ipv4.src));
268 fl_set_key_val(tb, &key->ipv4.dst, TCA_FLOWER_KEY_IPV4_DST, 272 fl_set_key_val(tb, &key->ipv4.dst, TCA_FLOWER_KEY_IPV4_DST,
269 &mask->ipv4.dst, TCA_FLOWER_KEY_IPV4_DST_MASK, 273 &mask->ipv4.dst, TCA_FLOWER_KEY_IPV4_DST_MASK,
270 sizeof(key->ipv4.dst)); 274 sizeof(key->ipv4.dst));
271 } else if (key->control.addr_type == FLOW_DISSECTOR_KEY_IPV6_ADDRS) { 275 } else if (tb[TCA_FLOWER_KEY_IPV6_SRC] || tb[TCA_FLOWER_KEY_IPV6_DST]) {
276 key->control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS;
272 fl_set_key_val(tb, &key->ipv6.src, TCA_FLOWER_KEY_IPV6_SRC, 277 fl_set_key_val(tb, &key->ipv6.src, TCA_FLOWER_KEY_IPV6_SRC,
273 &mask->ipv6.src, TCA_FLOWER_KEY_IPV6_SRC_MASK, 278 &mask->ipv6.src, TCA_FLOWER_KEY_IPV6_SRC_MASK,
274 sizeof(key->ipv6.src)); 279 sizeof(key->ipv6.src));
@@ -276,6 +281,7 @@ static int fl_set_key(struct net *net, struct nlattr **tb,
276 &mask->ipv6.dst, TCA_FLOWER_KEY_IPV6_DST_MASK, 281 &mask->ipv6.dst, TCA_FLOWER_KEY_IPV6_DST_MASK,
277 sizeof(key->ipv6.dst)); 282 sizeof(key->ipv6.dst));
278 } 283 }
284
279 if (key->basic.ip_proto == IPPROTO_TCP) { 285 if (key->basic.ip_proto == IPPROTO_TCP) {
280 fl_set_key_val(tb, &key->tp.src, TCA_FLOWER_KEY_TCP_SRC, 286 fl_set_key_val(tb, &key->tp.src, TCA_FLOWER_KEY_TCP_SRC,
281 &mask->tp.src, TCA_FLOWER_UNSPEC, 287 &mask->tp.src, TCA_FLOWER_UNSPEC,