software checksuming on IPv6 multicasting is not working

[email protected] Sun, 2 Aug 2026 11:17:44 +0200 (CEST)
Newsgroups gmane.os.openbsd.bugs
Message-ID <[email protected]>
>Synopsis:	software checksumming on IPv6 multicasting is not working
>Category:	kernel
>Environment:
	System      : OpenBSD 7.9
	Details     : OpenBSD 7.9 (GENERIC.MP) #0: Sat May  2 08:16:16 CEST 2026
			 [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP

	Architecture: OpenBSD.amd64
	Machine     : amd64
>Description:
	In writing IPv6 multicasting code, I have determined after a full day 
	of debugging, that software checksumming from udp6_output/ip6_output
	does not work.  After examining all my devices there is two that do
	hardware offloading of IPv6 UDP packets and this turned out to work.
	Conclusion is obvious, software checksumming doesn't work in this
	multicast.
>How-To-Repeat:
	[A stripped down version of both of these programs exist at the end of report (b64)]


	I have two programs, one is called dsd, the other dsc.  dsc multicasts
	on the ethernet and dsd replies per unicast to register/serialize a
	cpu as this is a work network for high cpu intensive tasks.  In an
	output of dsc 8 cpu's get serialized running on three hosts that have
	2, 2 and 4 cpu's respectively.  The total makes eight cpu's on
	console.  Here is a snippet how it looks properly:

riscv$ dsc/dsc -i axen0
sending cpu serial 0
sending cpu serial 1
sending cpu serial 2
sending cpu serial 3
sending cpu serial 4
sending cpu serial 5
sending cpu serial 6
sending cpu serial 7
^C

	on this host there is an axen as said here is it's hwfeatures:
	
riscv$ ifconfig axen0 hwfeatures
axen0: flags=248843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6TEMP,AUTOCONF6> mtu 1500
        hwfeatures=197<CSUM_IPv4,CSUM_TCPv4,CSUM_UDPv4,VLAN_MTU,CSUM_TCPv6,CSUM_UDPv6> hardmtu 1500

	notice CSUm_UDPv6.

	On another host (a raspberry pi, I have collected a tcpdump, it looks
	like so:

arm64# tcpdump -v -n -r /tmp/cksum.pcap port 1519 and udp
tcpdump: WARNING: snaplen raised from 116 to 1500
08:27:59.058781 fe80::f68c:ebff:fe4b:5d70.1519 > ff12::1519.1519: [udp sum ok] udp 592 [hlim 1] (len 600)
08:28:00.088396 fe80::f68c:ebff:fe4b:5d70.1519 > ff12::1519.1519: [udp sum ok] udp 592 [hlim 1] (len 600)

	The above shows the udp sum being OK.  This is important.  I will also
	show the responding tcp unicast followup on the SYN:

08:27:59.077887 fe80::f68c:ebff:fe4b:5d70.1519 > fe80::dea6:32ff:fecc:dba7.28375: S [tcp sum ok] 1392315276:1392315276(0) ack 1412054441 win 16384 <mss 1440,nop,nop,sackOK,nop,wscale 6,nop,nop,timestamp 4218548494 3259293879> (len 44, hlim 64)

	This above means that the remote dsd's socket descriptor is 
	receiving data.

	The following shows a ktrace receiving data through the select
	loop indicating that it too has registered/serialized:


 54669 dsd      1785392981.924654 STRU  struct fd_set { 3 }
 54669 dsd      1785392981.924669 RET   select 1
 54669 dsd      1785392981.924696 CALL  kbind(0x77560975da40,24,0xcb6b35796ecfa140)
 54669 dsd      1785392981.924780 RET   kbind 0
 54669 dsd      1785392981.924818 CALL  recvfrom(3,0x77560975e368,0x250,0,0x77560975e5cc,0x77560975df30)
 54669 dsd      1785392981.924831 GIO   fd 3 read 592 bytes
       "CENSOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0X\M-=C,\M-T\M^B\M-)A\M^K\
	T\M-VG\M--)\M-=\^\\^B\M-Z >\M-N\M-z\M-bX\M-#\M-J"\M-~\M-`\^Q,\M-[\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
 54669 dsd      1785392981.924836 STRU  struct sockaddr { AF_INET6, [fe80::f68c:ebff:fe4b:5d70%2]:1519 }
 54669 dsd      1785392981.924841 RET   recvfrom 592/0x250
 54669 dsd      1785392981.924848 CALL  socket(AF_INET6,0x1<SOCK_STREAM>,0x6)
 54669 dsd      1785392981.924870 RET   socket 4
 54669 dsd      1785392981.924879 CALL  kbind(0x77560975d7e0,24,0xcb6b35796ecfa140)
 54669 dsd      1785392981.924934 RET   kbind 0
 54669 dsd      1785392981.924962 CALL  connect(4,0x77560975e5cc,28)
 54669 dsd      1785392981.924968 STRU  struct sockaddr { AF_INET6, [fe80::f68c:ebff:fe4b:5d70%2]:1519 }
 54669 dsd      1785392981.929047 RET   connect 0
 54669 dsd      1785392981.929077 CALL  kbind(0x77560975d7e0,24,0xcb6b35796ecfa140)
 54669 dsd      1785392981.929155 RET   kbind 0
 54669 dsd      1785392981.929164 CALL  recvfrom(4,0x77560975d8c0,0x200,0,0,0)
 54669 dsd      1785392981.938349 GIO   fd 4 read 2 bytes
       "2
       "
 54669 dsd      1785392981.938363 RET   recvfrom 2
 54669 dsd      1785392981.938384 CALL  kbind(0x77560975d7e0,24,0xcb6b35796ecfa140)
 54669 dsd      1785392981.938463 RET   kbind 0
 54669 dsd      1785392981.938473 CALL  close(4)
 54669 dsd      1785392981.938548 RET   close 0
 54669 dsd      1785392981.938561 CALL  kbind(0x77560975d7e0,24,0xcb6b35796ecfa140)
 54669 dsd      1785392981.938619 RET   kbind 0
 54669 dsd      1785392981.938628 CALL  socket(AF_INET6,0x1<SOCK_STREAM>,0x6)
 54669 dsd      1785392981.938647 RET   socket 4
 54669 dsd      1785392981.938654 CALL  connect(4,0x77560975e5cc,28)
 54669 dsd      1785392981.938660 STRU  struct sockaddr { AF_INET6, [fe80::f68c:ebff:fe4b:5d70%2]:1519 }
 54669 dsd      1785392981.940424 RET   connect 0
 54669 dsd      1785392981.940449 CALL  recvfrom(4,0x77560975d8c0,0x200,0,0,0)
 54669 dsd      1785392981.944928 GIO   fd 4 read 2 bytes
       "5
       "
 54669 dsd      1785392981.944945 RET   recvfrom 2
 54669 dsd      1785392981.945038 CALL  close(4)
 54669 dsd      1785392981.945091 RET   close 0
 54669 dsd      1785392981.945104 CALL  select(4,0x77560975db20,0,0,0)
 54669 dsd      1785392981.945109 STRU  struct fd_set { 3 }
 54669 dsd      1785392982.954064 STRU  struct fd_set { 3 }
 54669 dsd      1785392982.954100 RET   select 1
 54669 dsd      1785392982.954122 CALL  recvfrom(3,0x77560975e368,0x250,0,0x77560975e5cc,0x77560975df30)
 54669 dsd      1785392982.954141 GIO   fd 3 read 592 bytes
       "CENSOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0X\M-=C,\M-T\M^B\M-)A\M^K\
	T\M-VG\M--)\M-=\^\\^B\M-Z >\M-N\M-z\M-bX\M-#\M-J"\M-~\M-`\^Q,\M-[\0\0\
	\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
 54669 dsd      1785392982.954146 STRU  struct sockaddr { AF_INET6, [fe80::f68c:ebff:fe4b:5d70%2]:1519 }
 54669 dsd      1785392982.954150 RET   recvfrom 592/0x250

	The above is all working correctly, here is one that doesn't work.
	The ifconfig hwfeatures look like so:

orca$ ifconfig bge0 hwfeatures
bge0: flags=248843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6TEMP,AUTOCONF6> mtu 1500
        hwfeatures=33<CSUM_IPv4,CSUM_TCPv4,VLAN_MTU,VLAN_HWTAGGING> hardmtu 9000
	
	Then executing the program the output of dsc is like so:

orca$ dsc/dsc -i bge0
sending cpu serial 0
sending cpu serial 1
^C

	In the above you can see only two cpu's serialized.  Those two are on
	the loopback / same box.  Also a tcpdump on another host (arm64)
	was made and it shows the wrong checksums, and this is important, it 
	doesn't work because of these:

cpdump -v -n -r /tmp/cksum-bad.pcap port 1519 and udp                         < 
tcpdump: WARNING: snaplen raised from 116 to 1500
08:53:18.736086 fe80::ae87:a3ff:fe23:e099.1519 > ff12::1519.1519: [invalid udp cksum 0] udp 592 [hlim 1] (len 600)
08:53:19.745907 fe80::ae87:a3ff:fe23:e099.1519 > ff12::1519.1519: [invalid udp cksum 0] udp 592 [hlim 1] (len 600)

	Notice on the above the "invalid udp cksum 0".  Only ever happens
	when the outgoing (dsc) interface is NOT hardware offloading.





>Fix:
	
	I didn't invest time into it, hoping to get feedback next week from
you before I lift a finger.  I'll be back on the Internet for a month starting
the 10th of august or so.


dmesg:
OpenBSD 7.9 (GENERIC.MP) #0: Sat May  2 08:16:16 CEST 2026
    [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 3965952000 (3782MB)
avail mem = 3818246144 (3641MB)
random: good seed from bootblocks
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.7 @ 0xe3e70 (51 entries)
bios0: vendor Acer version "V1.08" date 12/06/2011
bios0: Acer AO722
acpi0 at bios0: ACPI 4.0
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP HPET APIC MCFG BOOT SLIC SSDT SSDT
acpi0: wakeup devices SPB2(S4) GEC_(S4) USB0(S3) USB4(S3) P2P_(S5)
acpitimer0 at acpi0: 3579545 Hz, 32 bits
acpihpet0 at acpi0: 14318180 Hz
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: AMD C-60 APU with Radeon(tm) HD Graphics, 998.05 MHz, 14-02-00, patch 05000119
cpu0: cpuid 1 edx=178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT> ecx=802209<SSE3,MWAIT,SSSE3,CX16,POPCNT>
cpu0: cpuid 6 eax=4<ARAT> ecx=1<EFFFREQ>
cpu0: cpuid 80000001 edx=2fd3fbff<NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG> ecx=35ff<LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,IBS,SKINIT>
cpu0: cpuid 80000007 edx=3f9<HWPSTATE,ITSC>
cpu0: 32KB 64b/line 8-way D-cache, 32KB 64b/line 2-way I-cache
cpu0: 512KB 64b/line 16-way L2 cache
cpu0: smt 0, core 0, package 0, type P
mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges
cpu0: apic clock running at 199MHz
cpu0: mwait min=64, max=64, IBE
cpu1 at mainbus0: apid 1 (application processor)
cpu1: AMD C-60 APU with Radeon(tm) HD Graphics, 997.55 MHz, 14-02-00, patch 05000119
cpu1: smt 0, core 1, package 0, type P
ioapic0 at mainbus0: apid 4 pa 0xfec00000, version 21, 24 pins, remapped
acpimcfg0 at acpi0
acpimcfg0: addr 0xf8000000, bus 0-63
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus -1 (PB2_)
acpiprt2 at acpi0: bus -1 (PB3_)
acpiprt3 at acpi0: bus -1 (PB4_)
acpiprt4 at acpi0: bus -1 (PB5_)
acpiprt5 at acpi0: bus -1 (PB6_)
acpiprt6 at acpi0: bus -1 (PB7_)
acpiprt7 at acpi0: bus 2 (SPB0)
acpiprt8 at acpi0: bus -1 (SPB1)
acpiprt9 at acpi0: bus 6 (SPB2)
acpiprt10 at acpi0: bus 7 (SPB3)
acpiprt11 at acpi0: bus 1 (P2P_)
acpiec0 at acpi0
acpibtn0 at acpi0: PWRB
acpibtn1 at acpi0: SLPB
acpipci0 at acpi0 PCI0
acpicmos0 at acpi0
"PNP0303" at acpi0 not configured
"ETD0500" at acpi0 not configured
"PNP0C14" at acpi0 not configured
"PNP0C14" at acpi0 not configured
acpibat0 at acpi0: BAT1 model "31334230314c41" serial 417d type Lion oem "Sanyo "
acpiac0 at acpi0: AC unit offline
acpibtn2 at acpi0: LID_
acpicpu0 at acpi0: C2(0@100 io@0xf800), C1(@1 halt!), PSS
acpicpu1 at acpi0: C2(0@100 io@0xf800), C1(@1 halt!), PSS
acpivideo0 at acpi0: VGA_
acpivout0 at acpivideo0: LCD_
acpivideo1 at acpi0: VGA_
acpivideo2 at acpi0: VGA_
cpu0: 998 MHz: speeds: 1000 800 MHz
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 "AMD 14h Host" rev 0x00
radeondrm0 at pci0 dev 1 function 0 "ATI Radeon HD 6290" rev 0x00
drm0 at radeondrm0
radeondrm0: msi
azalia0 at pci0 dev 1 function 1 "ATI Radeon HD 6310 HD Audio" rev 0x00: msi
azalia0: no supported codecs
ahci0 at pci0 dev 17 function 0 "ATI SBx00 SATA" rev 0x00: apic 4 int 19, AHCI 1.2
ahci0: port 0: 3.0Gb/s
scsibus1 at ahci0: 32 targets
sd0 at scsibus1 targ 0 lun 0: <ATA, WDC WD3200BPVT-2, 01.0> naa.50014ee25be3a7df
sd0: 305245MB, 512 bytes/sector, 625142448 sectors
ohci0 at pci0 dev 18 function 0 "ATI SB700 USB" rev 0x00: apic 4 int 18, version 1.0, legacy support
ehci0 at pci0 dev 18 function 2 "ATI SB700 USB2" rev 0x00: apic 4 int 17
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 configuration 1 interface 0 "ATI EHCI root hub" rev 2.00/1.00 addr 1
ohci1 at pci0 dev 19 function 0 "ATI SB700 USB" rev 0x00: apic 4 int 18, version 1.0, legacy support
ehci1 at pci0 dev 19 function 2 "ATI SB700 USB2" rev 0x00: apic 4 int 17
usb1 at ehci1: USB revision 2.0
uhub1 at usb1 configuration 1 interface 0 "ATI EHCI root hub" rev 2.00/1.00 addr 1
piixpm0 at pci0 dev 20 function 0 "ATI SBx00 SMBus" rev 0x42: SMI
iic0 at piixpm0
spdmem0 at iic0 addr 0x50: 4GB DDR3 SDRAM PC3-10600 SO-DIMM
azalia1 at pci0 dev 20 function 2 "ATI SBx00 HD Audio" rev 0x40: apic 4 int 16
azalia1: codecs: Conexant/0x506c
audio0 at azalia1
pcib0 at pci0 dev 20 function 3 "ATI SB700 ISA" rev 0x40
ppb0 at pci0 dev 20 function 4 "ATI SB600 PCI" rev 0x40
pci1 at ppb0 bus 1
ppb1 at pci0 dev 21 function 0 "ATI SB800 PCIE" rev 0x00: msi
pci2 at ppb1 bus 2
ppb2 at pci0 dev 21 function 2 "ATI SB800 PCIE" rev 0x00
pci3 at ppb2 bus 6
alc0 at pci3 dev 0 function 0 "Attansic Technology L2C" rev 0xc1: msi, address dc:0e:a1:54:ba:16
atphy0 at alc0 phy 0: F2, rev. 5
ppb3 at pci0 dev 21 function 3 "ATI SB800 PCIE" rev 0x00
pci4 at ppb3 bus 7
"Atheros AR9485" rev 0x01 at pci4 dev 0 function 0 not configured
pchb1 at pci0 dev 24 function 0 "AMD 14h Link Cfg" rev 0x43
pchb2 at pci0 dev 24 function 1 "AMD 14h Address Map" rev 0x00
pchb3 at pci0 dev 24 function 2 "AMD 14h DRAM Cfg" rev 0x00
km0 at pci0 dev 24 function 3 "AMD 14h Misc Cfg" rev 0x00
pchb4 at pci0 dev 24 function 4 "AMD 14h CPU Power" rev 0x00
pchb5 at pci0 dev 24 function 5 "AMD 14h Reserved" rev 0x00
pchb6 at pci0 dev 24 function 6 "AMD 14h NB Power" rev 0x00
pchb7 at pci0 dev 24 function 7 "AMD 14h Reserved" rev 0x00
usb2 at ohci0: USB revision 1.0
uhub2 at usb2 configuration 1 interface 0 "ATI OHCI root hub" rev 1.00/1.00 addr 1
usb3 at ohci1: USB revision 1.0
uhub3 at usb3 configuration 1 interface 0 "ATI OHCI root hub" rev 1.00/1.00 addr 1
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
pms0 at pckbc0 (aux slot)
wsmouse0 at pms0 mux 0
pms0: Elantech Touchpad, version 2, firmware 0x40213
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
vmm0 at mainbus0: SVM/RVI
uvideo0 at uhub1 port 1 configuration 1 interface 0 "Chicony Electronics Co., Ltd. WebCam" rev 2.00/82.57 addr 2
video0 at uvideo0
umass0 at uhub1 port 2 configuration 1 interface 0 "Generic USB2.0-CRW" rev 2.00/38.82 addr 3
umass0: using SCSI over Bulk-Only
scsibus2 at umass0: 2 targets, initiator 0
sd1 at scsibus2 targ 1 lun 0: <Generic-, Multi-Card, 1.00> removable serial.0bda0138516388200000
uhidev0 at uhub2 port 2 configuration 1 interface 0 "Logitech USB-PS/2 Optical Mouse" rev 2.00/27.20 addr 2
uhidev0: iclass 3/1
ums0 at uhidev0: 8 buttons, Z and W dir
wsmouse1 at ums0 mux 0
vscsi0 at root
scsibus3 at vscsi0: 256 targets
softraid0 at root
scsibus4 at softraid0: 256 targets
root on sd0a (45e31731e0fe958d.a) swap on sd0b dump on sd0b
radeondrm0: PALM
radeondrm0: 1366x768, 32bpp
wsdisplay0 at radeondrm0 mux 1: console (std, vt100 emulation), using wskbd0
wsdisplay0: screen 1-5 added (std, vt100 emulation)

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