Earlier, Frank had written as explanation: > Hi , > I found a problem using vlan_hwaccel_rx function to pass skb to the stack. > vlan_hwaccel_rx sets skb->dev to the vlan device accordingly to the vlan > id. > After checking pkt_type netif_rx is called in non polling mode . vlan_skb_recv > is called with a wrong skb->dev setting as the receive function is still > expecting the real device .... , the problem also exists in 2.4 vlan code ... I am not so sure we need this patch, as I believe the net_rx_skb methods should handle receiving a pkt with a vlan-device as the skb->dev. Frank, could you explain the problem you see in more detail? Dave, since you did the hw-accel work, what do you think of this patch? Frank Pavlic wrote: > Kernel 2.6.8.1 .... > > I'm sorry about 2.4 kernel it was an old one ..., but nevertheless 2.4.27 > hasn't the bug fixed yet .. > > patch for Kernel 2.4.27 : > > --- include/linux/if_vlan.old 2004-04-14 15:05:40.000000000 +0200 > +++ include/linux/if_vlan.h 2004-10-15 17:16:09.000000000 +0200 > @@ -183,7 +183,7 @@ > skb->pkt_type = PACKET_HOST; > break; > }; > - > + skb->dev = skb->real_dev; > return (polling ? netif_receive_skb(skb) : netif_rx(skb)); > } > > > > > > > Ben Greear <greearb@xxxxxxxxxxxxxxx> > Sent by: vlan-bounces@xxxxxxxxxxxxxxx > 14.10.2004 19:07 > Please respond to > "Linux 802.1Q VLAN" > > > To > "Linux 802.1Q VLAN" <vlan@xxxxxxxxxxxxxxx> > cc > > Subject > Re: [VLAN] |PATCH| setting skb->dev to vlan device in > vlan_hwaccel_rx is wrong ... > > > > > > > Frank Pavlic wrote: > >>IHi , >>I found a problem using vlan_hwaccel_rx function to pass skb to the > > stack. > >>vlan_hwaccel_rx sets skb->dev to the vlan device accordingly to the vlan > > >>id. >>After checking pkt_type netif_rx is called in non polling mode . >>vlan_skb_recv >>is called with a wrong skb->dev setting as the receive function is still > > >>expecting >>the real device .... , the problem also exists in 2.4 vlan code ... > > > While looking at the 2.4.27 code, I think that this fix may > already be in. > > 2.6.7 also looks correct. > > What versions did you base these patches off of? > > Ben > > >>Frank >> >>Kernel 2.6: >> >>Index: include/linux/if_vlan.h >>=================================================================== >>RCS file: /home/cvs/linux-2.5/include/linux/if_vlan.h,v >>retrieving revision 1.10 >>diff -B -u -b -r1.10 if_vlan.h >>--- include/linux/if_vlan.h 17 Aug 2004 11:50:08 -0000 1.10 >>+++ include/linux/if_vlan.h 14 Oct 2004 13:43:58 -0000 >>@@ -184,7 +184,7 @@ >> skb->pkt_type = PACKET_HOST; >> break; >> }; >>- >>+ skb->dev = skb->real_dev; >> return (polling ? netif_receive_skb(skb) : netif_rx(skb)); >> } >> >>KERNEL > 2.4.21: >> >>Index: include/linux/if_vlan.h >>=================================================================== >>RCS file: /home/cvs/linux-2.3/include/linux/if_vlan.h,v >>retrieving revision 1.6 >>diff -B -u -b -r1.6 if_vlan.h >>--- include/linux/if_vlan.h 17 Feb 2003 10:36:43 -0000 1.6 >>+++ include/linux/if_vlan.h 14 Oct 2004 13:45:39 -0000 >>@@ -147,6 +147,7 @@ >> unsigned short vlan_tag, int > > polling) > >> { >> struct net_device_stats *stats; >>+ struct net_device *real_dev = skb->dev; >> >> skb->dev = grp->vlan_devices[vlan_tag & VLAN_VID_MASK]; >> if (skb->dev == NULL) { >>@@ -182,7 +183,7 @@ >> skb->pkt_type = PACKET_HOST; >> break; >> }; >>- >>+ skb->dev = real_dev; >> return (polling ? netif_receive_skb(skb) : netif_rx(skb)); >> } >>_______________________________________________ >>Vlan mailing list >>Vlan@xxxxxxxxxxxx >>http://www.lanforge.com/mailman/listinfo/vlan -- Ben Greear <greearb@xxxxxxxxxxxxxxx> Candela Technologies Inc http://www.candelatech.com