On Mon, Jan 12, 2015 at 2:59 PM, Thomas Graf <tg...@suug.ch> wrote: > On 01/12/15 at 02:50pm, Jesse Gross wrote: >> On Mon, Jan 12, 2015 at 2:47 PM, Thomas Graf <tg...@suug.ch> wrote: >> > On 01/12/15 at 11:23am, Jesse Gross wrote: >> >> On Mon, Jan 12, 2015 at 4:26 AM, Thomas Graf <tg...@suug.ch> wrote: >> >> > diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c >> >> > index 4d52aa9..b148739 100644 >> >> > --- a/drivers/net/vxlan.c >> >> > +++ b/drivers/net/vxlan.c >> >> > @@ -568,7 +569,8 @@ static struct sk_buff **vxlan_gro_receive(struct >> >> > sk_buff **head, struct sk_buff >> >> > continue; >> >> > >> >> > vh2 = (struct vxlanhdr *)(p->data + off_vx); >> >> > - if (vh->vx_vni != vh2->vx_vni) { >> >> > + if (vh->vx_flags != vh2->vx_flags || >> >> > + vh->vx_vni != vh2->vx_vni) { >> >> >> >> It's probably better to do a memcmp over the entire header. There's no >> >> guarantee that new fields will be entirely represented by flags. >> > >> > vx_flags covers the entire first 32 bit of vxlanhdr so it's >> > equivalent to a memcmp() already. I can change it to memcmp() if >> > you think that's more readable. >> >> I was actually referring to the reserved 8 bit chunk after the VNI. >> This could potentially be used for something in the future. > > Shouldn't that be covered by vh->vx_vni != vh2->vx_vni? I may > still misunderstand, sorry.
Ah, sorry. I see that vx_vni is 4 bytes instead of 3 bytes of the actual VNI. I agree that the whole header is covered for GRO purposes. The definition of the VNI field is a little confusing but I guess it's more efficient than the alternative. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev