Dave Johnson wrote:
+/* VLAN rx hw acceleration helper.  This acts like netif_{rx,receive_skb}(). */
+static inline int __vlan_hwaccel_rx(struct sk_buff *skb,
+                                   struct vlan_group *grp,
+                                   unsigned short vlan_tag, int polling)
+{
...
+               /* Driver removed vlan tag from the packet, but we have no
+                * vlan device for this VID.
+                *
+                * This can occur for 2 reasons:
+                * 1) Have a vlan group, we want some VIDs, just not this VID.
+                * 2) Have no vlan group, but hardware limitation requires it
+                *    to remove vlan tags anyway.
+                *
+                * Normally if no vlan group is configured, the underlying
+                * driver will configure the hardware to NOT strip out the
+                * vlan tag.  It can then call netif_receive_skb/netif_rx
+                * with the vlan tag still intact.  However some devices
+                * cannot be configured to keep the vlan tag and must not
+                * call netif_receive_skb/netif_rx with the vlan tag
+                * missing.  This would allow the normal protocol handlers
+                * to process this tagged packet as if it arived without a
+                * vlan tag.
+                *
+                * We need to re-add the TAG and hand the packet off to the
+                * base device with the TAG present so any protocol handlers
+                * (PF_PACKET, etc...) will get a chance to see it.
+                */


This looks like a rather expensive operation for the unlikely case
that packets will be received by a packet socket. IMO it should only
be reconstructed if actually needed, by af_packet itself.

As we discussed some time back storing the VLAN tag in the CB on
TX clashes with other users of the CB like qdiscs, so we need a
new field in the skb for this anyway.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to