From: Christian Lamparter <chunk...@gmail.com>
Date: Tue,  6 Nov 2018 23:27:49 +0100

> @@ -1435,6 +1436,22 @@ static inline netdev_tx_t emac_xmit_finish(struct 
> emac_instance *dev, int len)
>       return NETDEV_TX_OK;
>  }
>  
> +static inline u16 emac_tx_vlan(struct emac_instance *dev, struct sk_buff 
> *skb)
> +{
> +     /* Handle VLAN TPID and TCI insert if this is a VLAN skb */
> +     if (emac_has_feature(dev, EMAC_FTR_HAS_VLAN_CTAG_TX) &&
> +         skb_vlan_tag_present(skb)) {
> +             struct emac_regs __iomem *p = dev->emacp;
> +
> +             /* update the VLAN TCI */
> +             out_be32(&p->vtci, (u32)skb_vlan_tag_get(skb));

Hmmm, how does this vtci register work?

How can you have a global piece of register state controlling the VLAN
tag that will be used for the TX frame?

What happens if you queue up several TX SKBs, each one with a different
VLAN tci?

Normally the TCI state is implemented on a per-tx-descriptor basis.

Reply via email to