RE: [PATCH net] hyperv: Fix vlan_proto setting in netvsc_recv_callback()
> -Original Message- > From: Olaf Hering [mailto:o...@aepfle.de] > Sent: Friday, June 14, 2013 11:29 AM > To: Haiyang Zhang > Cc: da...@davemloft.net; net...@vger.kernel.org; KY Srinivasan; > jasow...@redhat.com; linux-kernel@vger.kernel.org; > de...@linuxdriverproject.org > Subject: Re: [PATCH net] hyperv: Fix vlan_proto setting in > netvsc_recv_callback() > > On Tue, May 28, Haiyang Zhang wrote: > > > Since the recent addition of 8021AD, we need to set the new field > > vlan_proto in sk_buff. Otherwise, it will trigger BUG() call in > vlan_proto_idx(). > > > @@ -284,7 +285,7 @@ int netvsc_recv_callback(struct hv_device > > *device_obj, > > > > skb->protocol = eth_type_trans(skb, net); > > skb->ip_summed = CHECKSUM_NONE; > > - skb->vlan_tci = packet->vlan_tci; > > + __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), packet- > >vlan_tci); > > > Just curious: > > Doesnt that change behaviour in the sense that __vlan_hwaccel_put_tag() > now always adds VLAN_TAG_PRESENT to skb->vlan_tci, while before that > change packet->vlan_tci may or may not had this flag? > > In other words, should a variant of this patch be backported if it was a bug > not not use __vlan_hwaccel_put_tag right from the start? > Thanks for looking at this. Actually, the previous code was correct, because I add the VLAN_TAG_PRESENT if the packet comes from vlan in function rndis_filter_receive_data(): if (vlan) { pkt->vlan_tci = VLAN_TAG_PRESENT | vlan->vlanid | (vlan->pri << VLAN_PRIO_SHIFT); } else { pkt->vlan_tci = 0; } But, the new code should be updated below, so the VLAN_TAG_PRESENT won't be set when it's not from a vlan: If (VLAN_TAG_PRESENT & packet->vlan_tci) __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), packet- vlan_tci); I will submit a patch soon. Thanks, - Haiyang
Re: [PATCH net] hyperv: Fix vlan_proto setting in netvsc_recv_callback()
On Tue, May 28, Haiyang Zhang wrote: > Since the recent addition of 8021AD, we need to set the new field vlan_proto > in > sk_buff. Otherwise, it will trigger BUG() call in vlan_proto_idx(). > @@ -284,7 +285,7 @@ int netvsc_recv_callback(struct hv_device *device_obj, > > skb->protocol = eth_type_trans(skb, net); > skb->ip_summed = CHECKSUM_NONE; > - skb->vlan_tci = packet->vlan_tci; > + __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), packet->vlan_tci); Just curious: Doesnt that change behaviour in the sense that __vlan_hwaccel_put_tag() now always adds VLAN_TAG_PRESENT to skb->vlan_tci, while before that change packet->vlan_tci may or may not had this flag? In other words, should a variant of this patch be backported if it was a bug not not use __vlan_hwaccel_put_tag right from the start? Olaf -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH net] hyperv: Fix vlan_proto setting in netvsc_recv_callback()
From: Haiyang Zhang Date: Tue, 28 May 2013 09:15:56 -0700 > Since the recent addition of 8021AD, we need to set the new field vlan_proto > in > sk_buff. Otherwise, it will trigger BUG() call in vlan_proto_idx(). > > This patch fixes the problem. > > Signed-off-by: Haiyang Zhang > Reviewed-by: K. Y. Srinivasan Applied, thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/