>Synopsis: some possible bugs with wg(4)
>Category: system
>Environment:
System : OpenBSD 7.1
Details : OpenBSD 7.1 (GENERIC.MP) #3: Sun May 15 10:27:01 MDT 2022
[email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
Architecture: OpenBSD.amd64
Machine : amd64
>Description:
I have been chasing a discrepancy between wg(4) rx and tx values
and the systems interface counters, here is a demonstration:
root@echo# ifconfig wg
wg0: flags=80c3<UP,BROADCAST,RUNNING,NOARP,MULTICAST> rdomain 24 mtu 1420
index 13 priority 0 llprio 3
wgport CENSORED
wgpubkey CENSORED
wgpeerCENSORED
wgendpoint CENSORED port
tx: 349674068, rx: 16964684844
last handshake: 11118 seconds ago
wgaip 0.0.0.0/0
wgaip 192.168.0.0/16
groups: wg
inet 192.168.178.2 netmask 0xffffff00 broadcast 192.168.178.255
root@echo# netstat -nI wg0 -b
Name Mtu Network Address Ibytes Obytes
wg0 1420 <Link> 16544461232 243495034
wg0 1420 192.168.178 192.168.178.2 16544461232 243495034
Notice the Ibytes and rx values differ, in the wg driver they are higher
(possibly having to do with padding?). The same trend on tx and Obytes.
So I couldn't explain it and put some eyeballs on wg(4) driver code and
noticed that wg_tag_get() can return NULL (if m_tag_get() returns NULL which
does a pool_get() which can return NULL if PR_NOWAIT is used)... and
wg_tag_get() uses M_NOWAIT. So that's all great, if the wg_tag_get() return
value was checked, but it isn't checked consistently. Now I must say, I've
had my youtube TV on wireguard for a week or more and I'm happy to say it
hasn't paniced my endpoint yet. But if the OpenBSD system runs out of
resources ever it may. pool_get() manpage had this to say:
pool_get() will return a pointer to an item allocated from the pool. If
PR_NOWAIT or PR_LIMITFAIL were passed as flags to the pool it may return
NULL if there are no resources available or if the pool hard limit has
been reached, respectively.
Take a look at wg_encap() in the wg(4) driver (7.1 code):
1491 t = wg_tag_get(m);
1492 peer = t->t_peer;
t can be NULL which would make peer bogus (panic here?).
I just wanted to point this out without making the tough decisions and work.
>How-To-Repeat:
discrepancy causes one to examine the code which causes one to find
this.
>Fix:
it's over my head, sorry.
dmesg:
OpenBSD 7.1 (GENERIC.MP) #3: Sun May 15 10:27:01 MDT 2022
[email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 12748275712 (12157MB)
avail mem = 12344619008 (11772MB)
random: good seed from bootblocks
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.8 @ 0xa2ede000 (53 entries)
bios0: vendor Intel Corporation version "RYBDWi35.86A.0381.2019.0807.1532" date
08/07/2019
bios0: Intel Corporation NUC5i3RYB
acpi0 at bios0: ACPI 5.0
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP APIC FPDT FIDT MCFG HPET SSDT UEFI LPIT SSDT ASF! SSDT
SSDT SSDT DMAR
acpi0: wakeup devices PEG0(S4) PEGP(S4) PEG1(S4) PEGP(S4) PEG2(S4) PEGP(S4)
RP01(S4) PXSX(S4) RP02(S4) PXSX(S4) RP03(S4) PXSX(S4) RP04(S4) PXSX(S4)
RP05(S4) PXSX(S4) [...]
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz, 2095.53 MHz, 06-3d-04
cpu0:
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,RDSEED,ADX,SMAP,PT,SRBDS_CTRL,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,MELTDOWN
cpu0: 256KB 64b/line 8-way L2 cache
cpu0: smt 0, core 0, package 0
mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges
cpu0: apic clock running at 99MHz
cpu0: mwait min=64, max=64, C-substates=0.2.1.2.4.1.1.1, IBE
cpu1 at mainbus0: apid 2 (application processor)
cpu1: Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz, 2095.15 MHz, 06-3d-04
cpu1:
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,RDSEED,ADX,SMAP,PT,SRBDS_CTRL,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,MELTDOWN
cpu1: 256KB 64b/line 8-way L2 cache
cpu1: smt 0, core 1, package 0
cpu2 at mainbus0: apid 1 (application processor)
cpu2: Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz, 2095.15 MHz, 06-3d-04
cpu2:
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,RDSEED,ADX,SMAP,PT,SRBDS_CTRL,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,MELTDOWN
cpu2: 256KB 64b/line 8-way L2 cache
cpu2: smt 1, core 0, package 0
cpu3 at mainbus0: apid 3 (application processor)
cpu3: Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz, 2095.15 MHz, 06-3d-04
cpu3:
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,RDSEED,ADX,SMAP,PT,SRBDS_CTRL,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,MELTDOWN
cpu3: 256KB 64b/line 8-way L2 cache
cpu3: smt 1, core 1, package 0
ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 40 pins
acpimcfg0 at acpi0
acpimcfg0: addr 0xf8000000, bus 0-63
acpihpet0 at acpi0: 14318179 Hz
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus -1 (PEG0)
acpiprt2 at acpi0: bus -1 (PEG1)
acpiprt3 at acpi0: bus -1 (PEG2)
acpiprt4 at acpi0: bus 1 (RP01)
acpiprt5 at acpi0: bus -1 (RP02)
acpiprt6 at acpi0: bus -1 (RP03)
acpiprt7 at acpi0: bus 2 (RP04)
acpiprt8 at acpi0: bus -1 (RP05)
acpiprt9 at acpi0: bus -1 (RP06)
acpiprt10 at acpi0: bus -1 (RP07)
acpiprt11 at acpi0: bus -1 (RP08)
acpiec0 at acpi0: not present
acpipci0 at acpi0 PCI0: 0x00000004 0x00000011 0x00000001
"NTN0530" at acpi0 not configured
acpicmos0 at acpi0
acpibtn0 at acpi0: SLPB
"INT33A1" at acpi0 not configured
acpibtn1 at acpi0: PWRB
"PNP0C0B" at acpi0 not configured
"PNP0C0B" at acpi0 not configured
"PNP0C0B" at acpi0 not configured
"PNP0C0B" at acpi0 not configured
"PNP0C0B" at acpi0 not configured
acpicpu0 at acpi0: C3(200@506 mwait.1@0x60), C2(200@117 mwait.1@0x30),
C1(1000@1 mwait.1), PSS
acpicpu1 at acpi0: C3(200@506 mwait.1@0x60), C2(200@117 mwait.1@0x30),
C1(1000@1 mwait.1), PSS
acpicpu2 at acpi0: C3(200@506 mwait.1@0x60), C2(200@117 mwait.1@0x30),
C1(1000@1 mwait.1), PSS
acpicpu3 at acpi0: C3(200@506 mwait.1@0x60), C2(200@117 mwait.1@0x30),
C1(1000@1 mwait.1), PSS
acpipwrres0 at acpi0: PG00, resource for PEG0
acpipwrres1 at acpi0: PG01, resource for PEG1
acpipwrres2 at acpi0: PG02, resource for PEG2
acpipwrres3 at acpi0: WRST
acpipwrres4 at acpi0: WRST
acpipwrres5 at acpi0: WRST
acpipwrres6 at acpi0: WRST
acpipwrres7 at acpi0: WRST
acpipwrres8 at acpi0: WRST
acpipwrres9 at acpi0: WRST
acpipwrres10 at acpi0: WRST
acpipwrres11 at acpi0: FN00, resource for FAN0
acpipwrres12 at acpi0: FN01, resource for FAN1
acpipwrres13 at acpi0: FN02, resource for FAN2
acpipwrres14 at acpi0: FN03, resource for FAN3
acpipwrres15 at acpi0: FN04, resource for FAN4
acpitz0 at acpi0: critical temperature is 105 degC
acpivideo0 at acpi0: GFX0
cpu0: using VERW MDS workaround (except on vmm entry)
cpu0: Enhanced SpeedStep 2095 MHz: speeds: 2100, 2000, 1900, 1800, 1700, 1600,
1500, 1400, 1200, 1100, 1000, 900, 800, 700, 600, 500 MHz
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 "Intel Core 5G Host" rev 0x09
inteldrm0 at pci0 dev 2 function 0 "Intel HD Graphics 5500" rev 0x09
drm0 at inteldrm0
inteldrm0: msi, BROADWELL, gen 8
azalia0 at pci0 dev 3 function 0 "Intel Core 5G HD Audio" rev 0x09: msi
azalia0: No codecs found
xhci0 at pci0 dev 20 function 0 "Intel 9 Series xHCI" rev 0x03: msi, xHCI 1.0
usb0 at xhci0: USB revision 3.0
uhub0 at usb0 configuration 1 interface 0 "Intel xHCI root hub" rev 3.00/1.00
addr 1
"Intel 9 Series MEI" rev 0x03 at pci0 dev 22 function 0 not configured
em0 at pci0 dev 25 function 0 "Intel I218-V" rev 0x03: msi, address
b8:ae:ed:73:a7:6c
azalia1 at pci0 dev 27 function 0 "Intel 9 Series HD Audio" rev 0x03: msi
azalia1: codecs: Realtek ALC283
audio0 at azalia1
ppb0 at pci0 dev 28 function 0 "Intel 9 Series PCIE" rev 0xe3
pci1 at ppb0 bus 1
ppb1 at pci0 dev 28 function 3 "Intel 9 Series PCIE" rev 0xe3: msi
pci2 at ppb1 bus 2
iwm0 at pci2 dev 0 function 0 "Intel AC 7265" rev 0x59, msi
ehci0 at pci0 dev 29 function 0 "Intel 9 Series USB" rev 0x03: apic 2 int 23
usb1 at ehci0: USB revision 2.0
uhub1 at usb1 configuration 1 interface 0 "Intel EHCI root hub" rev 2.00/1.00
addr 1
pcib0 at pci0 dev 31 function 0 "Intel 9 Series LPC" rev 0x03
ahci0 at pci0 dev 31 function 2 "Intel 9 Series AHCI" rev 0x03: msi, AHCI 1.3
ahci0: port 0: 6.0Gb/s
scsibus1 at ahci0: 32 targets
sd0 at scsibus1 targ 0 lun 0: <ATA, Samsung SSD 850, EMT0> naa.5002538d4262db53
sd0: 476940MB, 512 bytes/sector, 976773168 sectors, thin
ichiic0 at pci0 dev 31 function 3 "Intel 9 Series SMBus" rev 0x03: apic 2 int 18
iic0 at ichiic0
spdmem0 at iic0 addr 0x50: 8GB DDR3 SDRAM PC3-12800 SO-DIMM
spdmem1 at iic0 addr 0x52: 4GB DDR3 SDRAM PC3-12800 SO-DIMM
isa0 at pcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
wbsio0 at isa0 port 0x4e/2: NCT6776F rev 0x33
lm1 at wbsio0 port 0xa00/8: NCT6776F
vmm0 at mainbus0: VMX/EPT
uhub2 at uhub0 port 3 configuration 1 interface 0 "Genesys Logic USB2.0 Hub"
rev 2.00/77.63 addr 2
uhidev0 at uhub0 port 4 configuration 1 interface 0 "American Power Conversion
Back-UPS CS 650 FW:817.v9.I USB FW:v9" rev 1.10/0.06 addr 3
uhidev0: iclass 3/0, 98 report ids
upd0 at uhidev0
uhid0 at uhidev0 reportid 1: input=0, output=0, feature=1
uhid1 at uhidev0 reportid 2: input=0, output=0, feature=1
uhid2 at uhidev0 reportid 3: input=0, output=0, feature=1
uhid3 at uhidev0 reportid 4: input=0, output=0, feature=1
uhid4 at uhidev0 reportid 5: input=0, output=0, feature=1
uhid5 at uhidev0 reportid 6: input=0, output=0, feature=2
uhid6 at uhidev0 reportid 8: input=0, output=0, feature=2
uhid7 at uhidev0 reportid 9: input=0, output=0, feature=2
uhid8 at uhidev0 reportid 10: input=0, output=0, feature=2
uhid9 at uhidev0 reportid 11: input=0, output=0, feature=2
uhid10 at uhidev0 reportid 12: input=1, output=0, feature=1
uhid11 at uhidev0 reportid 13: input=2, output=0, feature=2
uhid12 at uhidev0 reportid 14: input=0, output=0, feature=2
uhid13 at uhidev0 reportid 15: input=0, output=0, feature=1
uhid14 at uhidev0 reportid 16: input=0, output=0, feature=2
uhid15 at uhidev0 reportid 17: input=0, output=0, feature=1
uhid16 at uhidev0 reportid 18: input=0, output=0, feature=2
uhid17 at uhidev0 reportid 19: input=0, output=0, feature=3
uhid18 at uhidev0 reportid 20: input=0, output=0, feature=1
uhid19 at uhidev0 reportid 21: input=0, output=0, feature=2
uhid20 at uhidev0 reportid 22: input=1, output=0, feature=1
uhid21 at uhidev0 reportid 23: input=0, output=0, feature=1
uhid22 at uhidev0 reportid 24: input=0, output=0, feature=2
uhid23 at uhidev0 reportid 25: input=0, output=0, feature=2
uhid24 at uhidev0 reportid 26: input=0, output=0, feature=2
uhid25 at uhidev0 reportid 27: input=0, output=0, feature=1
uhid26 at uhidev0 reportid 28: input=0, output=0, feature=1
uhid27 at uhidev0 reportid 29: input=0, output=0, feature=2
uhid28 at uhidev0 reportid 30: input=0, output=0, feature=2
uhid29 at uhidev0 reportid 31: input=0, output=0, feature=2
uhid30 at uhidev0 reportid 32: input=0, output=0, feature=4
uhid31 at uhidev0 reportid 33: input=0, output=0, feature=1
uhid32 at uhidev0 reportid 34: input=0, output=0, feature=1
uhid33 at uhidev0 reportid 35: input=0, output=0, feature=2
uhid34 at uhidev0 reportid 36: input=0, output=0, feature=2
uhid35 at uhidev0 reportid 37: input=0, output=0, feature=2
uhid36 at uhidev0 reportid 38: input=0, output=0, feature=2
uhid37 at uhidev0 reportid 39: input=0, output=0, feature=2
uhid38 at uhidev0 reportid 40: input=0, output=0, feature=2
uhid39 at uhidev0 reportid 41: input=0, output=0, feature=3
uhid40 at uhidev0 reportid 42: input=0, output=0, feature=2
uhid41 at uhidev0 reportid 43: input=0, output=0, feature=2
uhid42 at uhidev0 reportid 44: input=0, output=0, feature=2
uhid43 at uhidev0 reportid 45: input=0, output=0, feature=2
uhid44 at uhidev0 reportid 46: input=0, output=0, feature=1
uhid45 at uhidev0 reportid 47: input=0, output=0, feature=1
uhid46 at uhidev0 reportid 48: input=0, output=0, feature=1
uhid47 at uhidev0 reportid 49: input=0, output=0, feature=1
uhid48 at uhidev0 reportid 50: input=0, output=0, feature=1
uhid49 at uhidev0 reportid 51: input=2, output=0, feature=2
uhid50 at uhidev0 reportid 52: input=0, output=0, feature=1
uhid51 at uhidev0 reportid 53: input=0, output=0, feature=2
uhid52 at uhidev0 reportid 54: input=0, output=0, feature=1
uhid53 at uhidev0 reportid 55: input=0, output=0, feature=1
uhid54 at uhidev0 reportid 62: input=0, output=0, feature=4
uhid55 at uhidev0 reportid 63: input=0, output=0, feature=4
uhid56 at uhidev0 reportid 64: input=0, output=0, feature=1
uhid57 at uhidev0 reportid 65: input=0, output=0, feature=2
uhid58 at uhidev0 reportid 66: input=0, output=0, feature=1
uhid59 at uhidev0 reportid 69: input=0, output=0, feature=3
uhid60 at uhidev0 reportid 70: input=0, output=0, feature=1
uhid61 at uhidev0 reportid 71: input=0, output=0, feature=1
uhid62 at uhidev0 reportid 72: input=0, output=0, feature=4
uhid63 at uhidev0 reportid 81: input=0, output=0, feature=1
uhid64 at uhidev0 reportid 82: input=0, output=0, feature=2
uhid65 at uhidev0 reportid 96: input=0, output=0, feature=2
uhid66 at uhidev0 reportid 97: input=0, output=0, feature=1
uhid67 at uhidev0 reportid 98: input=0, output=0, feature=4
uhub3 at uhub1 port 1 configuration 1 interface 0 "Intel Rate Matching Hub" rev
2.00/0.03 addr 2
vscsi0 at root
scsibus2 at vscsi0: 256 targets
softraid0 at root
scsibus3 at softraid0: 256 targets
root on sd0a (8223b91dd813f26a.a) swap on sd0b dump on sd0b
inteldrm0: 1920x1080, 32bpp
wsdisplay0 at inteldrm0 mux 1: console (std, vt100 emulation), using wskbd0
wsdisplay0: screen 1-5 added (std, vt100 emulation)
iwm0: hw rev 0x210, fw ver 17.3216344376.0, address 34:13:e8:25:1d:22
uhub4 at uhub2 port 2 configuration 1 interface 0 "ROCLA KVM PORT SWITCH" rev
1.10/1.00 addr 4
uhidev1 at uhub4 port 1 configuration 1 interface 0 "Cherry GmbH CHERRY Wired
Keyboard" rev 2.00/1.20 addr 5
uhidev1: iclass 3/1
ukbd0 at uhidev1: 8 variable keys, 6 key codes
wskbd1 at ukbd0 mux 1
wskbd1: connecting to wsdisplay0
uhidev2 at uhub4 port 1 configuration 1 interface 1 "Cherry GmbH CHERRY Wired
Keyboard" rev 2.00/1.20 addr 5
uhidev2: iclass 3/0
ucc0 at uhidev2: 9 usages, 8 keys, enum
wskbd2 at ucc0 mux 1
wskbd2: connecting to wsdisplay0
uhidev3 at uhub4 port 2 configuration 1 interface 0 "PixArt USB Optical Mouse"
rev 1.10/1.00 addr 6
uhidev3: iclass 3/1
ums0 at uhidev3: 3 buttons, Z dir
wsmouse0 at ums0 mux 0
uhidev4 at uhub4 port 3 configuration 1 interface 0 "Alcor Micro USB Multimedia
Keyboard" rev 1.10/1.22 addr 7
uhidev4: iclass 3/1
ukbd1 at uhidev4: 8 variable keys, 6 key codes
wskbd3 at ukbd1 mux 1
wskbd3: connecting to wsdisplay0
uhidev5 at uhub4 port 3 configuration 1 interface 1 "Alcor Micro USB Multimedia
Keyboard" rev 1.10/1.22 addr 7
uhidev5: iclass 3/0, 3 report ids
uhid68 at uhidev5 reportid 2: input=1, output=0, feature=0
ucc1 at uhidev5 reportid 3: 573 usages, 18 keys, array
wskbd4 at ucc1 mux 1
wskbd4: connecting to wsdisplay0
usbdevs:
Controller /dev/usb0:
addr 01: 8086:0000 Intel, xHCI root hub
super speed, self powered, config 1, rev 1.00
driver: uhub0
addr 02: 05e3:0608 Genesys Logic, USB2.0 Hub
high speed, self powered, config 1, rev 77.63
driver: uhub2
addr 03: 051d:0002 American Power Conversion, Back-UPS CS 650 FW:817.v9.I USB
FW:v9
low speed, self powered, config 1, rev 0.06, iSerial 4B1814P12028
driver: uhidev0
addr 04: 8054:0001 ROCLA, KVM PORT SWITCH
full speed, self powered, config 1, rev 1.00
driver: uhub4
addr 05: 046a:0113 Cherry GmbH, CHERRY Wired Keyboard
low speed, power 100 mA, config 1, rev 1.20
driver: uhidev1
driver: uhidev2
addr 06: 093a:2510 PixArt, USB Optical Mouse
low speed, power 100 mA, config 1, rev 1.00
driver: uhidev3
addr 07: 058f:9410 Alcor Micro, USB Multimedia Keyboard
low speed, power 50 mA, config 1, rev 1.22, iSerial USB Multimedia
Keyboard
driver: uhidev4
driver: uhidev5
addr 08: 046d:081b Logitech, Webcam C310
high speed, power 500 mA, config 1, rev 0.10, iSerial DEC53330
driver: uvideo0
driver: uaudio0
Controller /dev/usb1:
addr 01: 8086:0000 Intel, EHCI root hub
high speed, self powered, config 1, rev 1.00
driver: uhub1
addr 02: 8087:8001 Intel, Rate Matching Hub
high speed, self powered, config 1, rev 0.03
driver: uhub3