On 28/03/2018 15:54, Simon Horman wrote:
On Sun, Mar 25, 2018 at 12:53:25PM +0300, Roi Dayan wrote:


On 25/03/2018 12:11, Roi Dayan wrote:
Fragment mask (any and later) always exists so we need to test
for FLOW_NW_FRAG_LATER only if the state is FLOW_NW_FRAG_ANY.
Before this fix we could pass frag no and first at the same time to TC
which is also not tested there for bad frag state.
This fix make sure we only pass frag first/later if is frag.

Fixes: 83e866067ea6 ("netdev-tc-offloads: Add support for IP fragmentation")
Signed-off-by: Roi Dayan <[email protected]>
Reviewed-by: Paul Blakey <[email protected]>
---
   lib/netdev-tc-offloads.c | 19 +++++++++++++------
   1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/lib/netdev-tc-offloads.c b/lib/netdev-tc-offloads.c
index f22415ee11bd..6db76801fd0e 100644
--- a/lib/netdev-tc-offloads.c
+++ b/lib/netdev-tc-offloads.c
@@ -948,14 +948,21 @@ netdev_tc_flow_put(struct netdev *netdev, struct match 
*match,
           flower.key.ip_ttl = key->nw_ttl;
           flower.mask.ip_ttl = mask->nw_ttl;
-        if (mask->nw_frag) {
-            if (key->nw_frag & FLOW_NW_FRAG_ANY)
+        if (mask->nw_frag & FLOW_NW_FRAG_ANY) {
+            flower.mask.flags |= TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT;
+
+            if (key->nw_frag & FLOW_NW_FRAG_ANY) {
                   flower.key.flags |= TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT;
-            if (!(key->nw_frag & FLOW_NW_FRAG_LATER))
-                flower.key.flags |= TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST;
-            flower.mask.flags |= TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT;
-            flower.mask.flags |= TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST;
+                if (mask->nw_frag & FLOW_NW_FRAG_LATER) {
+                    flower.mask.flags |= TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST;
+
+                    if (!(key->nw_frag & FLOW_NW_FRAG_LATER)) {
+                        flower.key.flags |= TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST;
+                    }
+                }
+            }
+

Hi Simon,

This fix OVS to send TC nofrag without frag first/later.
Though for frag it will set TC frag+fragfirst flags.
This is working fine though from your patch to iproute user-space
you showed an example of using only firstfrag flag without the need
for frag flag.
I'm not sure if we need to minimize it from OVS as well or just let
this be frag+firstfrag.
let me know what you think.

Hi Roi,

thanks for reporting this. I'd like a little more time to investigate this
and follow-up properly.


ok thanks. let me know if you have some questions or need some output
examples.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to