vlan: Don't store VLAN tag in cb
authorPatrick McHardy <kaber@trash.net>
Tue, 15 Jul 2008 05:49:06 +0000 (22:49 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 15 Jul 2008 05:49:06 +0000 (22:49 -0700)
commit6aa895b047720f71ec4eb11452f7c3ce8426941f
treeba52827c2e90de0678043ecf9d43208057d05da7
parent968edbe1c82f1a50d80225ed7e410aba419e55bf
vlan: Don't store VLAN tag in cb

Use a real skb member to store the skb to avoid clashes with qdiscs,
which are allowed to use the cb area themselves. As currently only real
devices that consume the skb set the NETIF_F_HW_VLAN_TX flag, no explicit
invalidation is neccessary.

The new member fills a hole on 64 bit, the skb layout changes from:

        __u32                      mark;                 /*   172     4 */
        sk_buff_data_t             transport_header;     /*   176     4 */
        sk_buff_data_t             network_header;       /*   180     4 */
        sk_buff_data_t             mac_header;           /*   184     4 */
        sk_buff_data_t             tail;                 /*   188     4 */
        /* --- cacheline 3 boundary (192 bytes) --- */
        sk_buff_data_t             end;                  /*   192     4 */

        /* XXX 4 bytes hole, try to pack */

to

        __u32                      mark;                 /*   172     4 */
        __u16                      vlan_tci;             /*   176     2 */

        /* XXX 2 bytes hole, try to pack */

        sk_buff_data_t             transport_header;     /*   180     4 */
        sk_buff_data_t             network_header;       /*   184     4 */

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/if_vlan.h
include/linux/skbuff.h
net/core/skbuff.c