Offload ct_state rpl and ct_state inv to tc. Signed-off-by: Paul Blakey <pa...@nvidia.com> --- lib/netdev-offload-tc.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)
diff --git a/lib/netdev-offload-tc.c b/lib/netdev-offload-tc.c index 717a987..08a4735 100644 --- a/lib/netdev-offload-tc.c +++ b/lib/netdev-offload-tc.c @@ -676,6 +676,20 @@ parse_tc_flower_to_match(struct tc_flower *flower, ct_statem |= OVS_CS_F_TRACKED; } + if (mask->ct_state & TCA_FLOWER_KEY_CT_FLAGS_REPLY) { + if (key->ct_state & TCA_FLOWER_KEY_CT_FLAGS_REPLY) { + ct_statev |= OVS_CS_F_REPLY_DIR; + } + ct_statem |= OVS_CS_F_REPLY_DIR; + } + + if (mask->ct_state & TCA_FLOWER_KEY_CT_FLAGS_INVALID) { + if (key->ct_state & TCA_FLOWER_KEY_CT_FLAGS_INVALID) { + ct_statev |= OVS_CS_F_INVALID; + } + ct_statem |= OVS_CS_F_INVALID; + } + match_set_ct_state_masked(match, ct_statev, ct_statem); } @@ -1677,6 +1691,20 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match, flower.mask.ct_state &= ~(TCA_FLOWER_KEY_CT_FLAGS_NEW); } + if (mask->ct_state & OVS_CS_F_REPLY_DIR) { + if (key->ct_state & OVS_CS_F_REPLY_DIR) { + flower.key.ct_state |= TCA_FLOWER_KEY_CT_FLAGS_REPLY; + } + flower.mask.ct_state |= TCA_FLOWER_KEY_CT_FLAGS_REPLY; + } + + if (mask->ct_state & OVS_CS_F_INVALID) { + if (key->ct_state & OVS_CS_F_INVALID) { + flower.key.ct_state |= TCA_FLOWER_KEY_CT_FLAGS_INVALID; + } + flower.mask.ct_state |= TCA_FLOWER_KEY_CT_FLAGS_INVALID; + } + mask->ct_state = 0; } -- 1.8.3.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev