Subject: [PATCH] via-velocity: classical linux vlan api - step by step Signed-off-by: Francois Romieu --- drivers/net/via-velocity.c | 16 ++++++++++------ drivers/net/via-velocity.h | 9 ++------- 2 files changed, 12 insertions(+), 13 deletions(-) applies-to: 559efd762e84620f71e56102fe660e3f733c392e c3ae7038c5d9b00b205c2d1cdfa93f44113bfbdb diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c index 86e7481..4062d44 100644 --- a/drivers/net/via-velocity.c +++ b/drivers/net/via-velocity.c @@ -72,6 +72,7 @@ #include #include #include +#include #include #include #include @@ -274,6 +275,13 @@ static struct notifier_block velocity_in static DEFINE_SPINLOCK(velocity_dev_list_lock); static LIST_HEAD(velocity_dev_list); +static inline u16 velocity_tx_vlan_tag(struct velocity_info *vptr, + struct sk_buff *skb) +{ + return (vptr->vlgrp && vlan_tx_tag_present(skb)) ? + vlan_tx_tag_get(skb) : 0x00; +} + static void velocity_register_notifier(void) { register_inetaddr_notifier(&velocity_inetaddr_notifier); @@ -1983,12 +1991,8 @@ static int velocity_xmit(struct sk_buff td_ptr->tdesc1.CMDZ = 2; } - if (vptr->flags & VELOCITY_FLAGS_TAGGING) { - td_ptr->tdesc1.pqinf.VID = (vptr->options.vid & 0xfff); - td_ptr->tdesc1.pqinf.priority = 0; - td_ptr->tdesc1.pqinf.CFI = 0; - td_ptr->tdesc1.TCR |= TCR0_VETAG; - } + td_ptr->tdesc1.vlan_tag = velocity_tx_vlan_tag(vptr, skb); + td_ptr->tdesc1.TCR |= vlan_tx_tag_present(skb) ? TCR0_VETAG : 0x00; /* * Handle hardware checksum diff --git a/drivers/net/via-velocity.h b/drivers/net/via-velocity.h index d9a774b..72f0743 100644 --- a/drivers/net/via-velocity.h +++ b/drivers/net/via-velocity.h @@ -227,14 +227,8 @@ struct tdesc0 { u16 owner:1; /* Who owns the buffer */ }; -struct pqinf { /* Priority queue info */ - u16 VID:12; - u16 CFI:1; - u16 priority:3; -} __attribute__ ((__packed__)); - struct tdesc1 { - struct pqinf pqinf; + u16 vlan_tag; u8 TCR; u8 TCPLS:2; u8 reserved:2; @@ -1797,6 +1791,7 @@ struct velocity_info { u32 ticks; u32 rx_bytes; + struct vlan_group *vlgrp; }; /** --- 0.99.9a