From: Paul Blakey <[email protected]> Add support to offload rules matching on tcp_flags.
Signed-off-by: Paul Blakey <[email protected]> Reviewed-by: Roi Dayan <[email protected]> --- lib/netdev-tc-offloads.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/netdev-tc-offloads.c b/lib/netdev-tc-offloads.c index fec621b..4a72d0d 100644 --- a/lib/netdev-tc-offloads.c +++ b/lib/netdev-tc-offloads.c @@ -325,6 +325,7 @@ parse_tc_flower_to_match(struct tc_flower *flower, if (key->ip_proto == IPPROTO_TCP) { match_set_tp_dst_masked(match, key->tcp_dst, mask->tcp_dst); match_set_tp_src_masked(match, key->tcp_src, mask->tcp_src); + match_set_tcp_flags_masked(match, key->tcp_flags, mask->tcp_flags); } else if (key->ip_proto == IPPROTO_UDP) { match_set_tp_dst_masked(match, key->udp_dst, mask->udp_dst); match_set_tp_src_masked(match, key->udp_src, mask->udp_src); @@ -646,13 +647,6 @@ test_key_and_mask(struct match *match) return EOPNOTSUPP; } } - if (is_ip_any(key) && key->nw_proto == IPPROTO_TCP && mask->tcp_flags) { - if (mask->tcp_flags) { - VLOG_DBG_RL(&rl, - "offloading attribute tcp_flags isn't supported"); - return EOPNOTSUPP; - } - } if (!is_all_zeros(mask, sizeof *mask)) { VLOG_DBG_RL(&rl, "offloading isn't supported, unknown attribute"); @@ -762,8 +756,11 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match, flower.mask.tcp_dst = mask->tp_dst; flower.key.tcp_src = key->tp_src; flower.mask.tcp_src = mask->tp_src; + flower.key.tcp_flags = key->tcp_flags; + flower.mask.tcp_flags = mask->tcp_flags; mask->tp_src = 0; mask->tp_dst = 0; + mask->tcp_flags = 0; } else if (key->nw_proto == IPPROTO_UDP) { flower.key.udp_dst = key->tp_dst; flower.mask.udp_dst = mask->tp_dst; -- 2.8.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
