> Date: Sat, 2 Apr 2022 15:47:17 +0100 > From: Stuart Henderson <[email protected]> > > On 2022/04/02 18:14, Kevin Lo wrote: > > On Fri, Apr 01, 2022 at 06:09:26PM +0100, Stuart Henderson wrote: > > > > > > On 2022/04/01 17:13, Stuart Henderson wrote: > > > > On 2022/04/01 10:26, Gerhard Roth wrote: > > > > > On 4/1/22 07:41, Kevin Lo wrote: > > > > > > > > > > > > ure0: RTL8153 (0x5c10), address 00:e0:4c:xx:xx:xx > > > > > > rgephy1 at ure0 phy 0: RTL8251 PHY, rev. 0 > > > > > > > > > > > > ure0: RTL8153B (0x6010), address f4:28:53:xx:xx:xx > > > > > > rgephy1 at ure0 phy 0: RTL8251 PHY, rev. 0 > > > > > > > > > > > > ure0 at uhub0 port 4 configuration 1 interface 0 "Planex USB > > > > > > 10/100/1G/2.5G LAN" rev 2.10/30.00 addr 5 > > > > > > ure0: RTL8156 (0x7030), address 1c:c0:35:xx:xx:xx > > > > > > > > > > > > > > > > > > > > > You can add another one to the list that works just fine with your > > > > > patch: > > > > > > > > > > ure0 at uhub1 port 1 configuration 1 interface 0 "Realtek USB > > > > > 10/100/1000 LAN" rev 3.00/30.00 addr 2 > > > > > ure0: RTL8153 (0x5c30), address 00:13:3b:xx:xx:xx > > > > > rgephy0 at ure0 phy 0: RTL8251 PHY, rev. 0 > > > > > > > > No new issues seen on RTL8153B: > > > > > > > > ure0 at uhub0 port 15 configuration 1 interface 0 "Realtek USB > > > > 10/100/1000 LAN" rev 3.00/31.00 addr 10 > > > > ure0: RTL8153B (0x6010), address 00:e0:4c:38:2b:0f > > > > rgephy0 at ure0 phy 0: RTL8251 PHY, rev. 0 > > > > > > > > I have also tested with vlan and discovered an existing issue, > > > > it seems that vlan transmission is not working correctly: no tag > > > > is sent on the outgoing packet. Reception appears to be ok. > > > > This occurs with the previous code too so it is not a regression. > > > > > > > > > > Tx works ok if I disable hw tagging. > > > > Thanks for the findings. Does it help if you replace the line [1] with > > "reg |= URE_CPCR_RX_VLAN | 0x80;" ? > > > > [1] https://github.com/openbsd/src/blob/master/sys/dev/usb/if_ure.c#L724 > > > > It doesn't, but this fixes it:
That fix looks correct to me given how the various byte swaps are done in this driver. > 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 | > >
