On Sat, Apr 02, 2022 at 04:04:24PM +0100, Stuart Henderson wrote:
> On 2022/04/02 15:47, Stuart Henderson wrote:
> > It doesn't, but this fixes it:
> > 
> > Index: if_ure.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/usb/if_ure.c,v
> > retrieving revision 1.29
> > diff -u -p -r1.29 if_ure.c
> > --- if_ure.c        2 Apr 2022 12:22:56 -0000       1.29
> > +++ if_ure.c        2 Apr 2022 14:46:50 -0000
> > @@ -2142,7 +2142,7 @@ ure_encap_txpkt(struct mbuf *m, char *bu
> >  
> >  #if NVLAN > 0
> >     if (m->m_flags & M_VLANTAG)
> > -           cflags |= swap16(m->m_pkthdr.ether_vtag | URE_TXPKT_VLAN_TAG);
> > +           cflags |= URE_TXPKT_VLAN_TAG | swap16(m->m_pkthdr.ether_vtag);
> >  #endif
> >  
> >     txhdr.ure_pktlen = htole32(m->m_pkthdr.len | URE_TXPKT_TX_FS |
> > 
> 
> And here's equivalent code in Realtek's Linux driver:
> 
>  2059 static inline void rtl_tx_vlan_tag(struct tx_desc *desc, struct sk_buff 
> *skb)
>  2060 {
>  2061         if (skb_vlan_tag_present(skb)) {
>  2062                 u32 opts2;
>  2063 
>  2064                 opts2 = TX_VLAN_TAG | swab16(skb_vlan_tag_get(skb));
>  2065                 desc->opts2 |= cpu_to_le32(opts2);
>  2066         }
>  2067 } 

Good catch! Thanks.  I shouldn't work on vacation.

Reply via email to