Date: Wed, 2 Jan 2013 22:29:14 +0100 From: Monthadar Al Jaberi <monthadar@gmail.com> To: Adrian Chadd <adrian@freebsd.org> Cc: freebsd-wireless@freebsd.org, freebsd-mips@freebsd.org Subject: Re: ath0: could not map interrupt Message-ID: <CA%2BsBSoJg%2B%2BNo1ApSfUVnh1dDVgqEUPLpFJZPv3Ac%2BvaMno01sQ@mail.gmail.com> In-Reply-To: <CAJ-Vmon%2BGzpXYkfE%2Bu7CDoXqmpH=zeJPcQdrukxAa9QH-2GazQ@mail.gmail.com> References: <CA%2BsBSoKs9s0SxAOyf91pcPv0MZMx3LCHh%2B_dTN-2mEQdYdH45g@mail.gmail.com> <CA%2BsBSo%2BpxqvWkrMjd8pmJSYUBdr0HuMW4eARJFcaFrG5tEYqBg@mail.gmail.com> <CAJ-Vmon%2BGzpXYkfE%2Bu7CDoXqmpH=zeJPcQdrukxAa9QH-2GazQ@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jan 2, 2013 at 9:43 PM, Adrian Chadd <adrian@freebsd.org> wrote: > ... sounds like a definite interrupt routing issue. > > Who's been knee deep in the interrupt handling code in MIPS lately? Grrr. > I know there's been some FDT work in MIPS and that's touched some > interrupt code.. maybe that's interfering? I am not sure, I just re-compiled my kernel for RSPRO and it seems to work. I install openwrt on rb433ah and ath0 associated ok. and I could ping between RSPRO(FreeBSD) and RB433AH(Openwrt). RSPRO and non working RB433AH running same kernel r243866. Attached is my kernel config & hints. ( I am "playing around" with the ar71xx_spi but that should not effect the pci code, I hope). # # AR71XX -- Kernel configuration file for FreeBSD/MIPS for Atheros 71xx systems # # This includes all the common drivers for the AR71XX boards along with # the usb, net80211 and atheros driver code. # # $FreeBSD$ # machine mips mips ident RB433AH_MFS cpu CPU_MIPS4KC makeoptions KERNLOADADDR=0x80050000 options HZ=1000 options HWPMC_HOOKS files "../atheros/files.ar71xx" # For now, hints are per-board. hints "RB433AH.hints" makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols # Build these as modules so small platform builds will have the # modules already built. makeoptions MODULES_OVERRIDE="random gpio ar71xx if_gif if_gre if_bridge bridgestp usb wlan wlan_xauth wlan_acl wlan_wep wlan_tkip wlan_ccmp wlan_rssadapt wlan_amrr ath ath_pci" options DDB options KDB options SCHED_4BSD #4BSD scheduler options INET #InterNETworking #options INET6 # IPv6 # options NFS_CL #Network Filesystem Client options PSEUDOFS #Pseudo-filesystem framework options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions # options NFS_LEGACYRPC # Debugging for use in -current options INVARIANTS options INVARIANT_SUPPORT options WITNESS options WITNESS_SKIPSPIN options DEBUG_REDZONE options DEBUG_MEMGUARD options FFS #Berkeley Fast Filesystem # options SOFTUPDATES #Enable FFS soft updates support # options UFS_ACL #Support for access control lists # options UFS_DIRHASH #Improve performance on big directories # options MSDOSFS # Read MSDOS filesystems; useful for USB/CF device pci device ar71xx_pci # RTC - requires hackery in the spibus code to work device pcf2123_rtc # GEOM modules device geom_redboot # to get access to the SPI flash partitions device geom_uzip # compressed in-memory filesystem hackery! device geom_map options GEOM_UZIP # NANDFS options NANDFS ## Boot from the first MFS uzip #options ROOTDEVNAME=\"ufs:md0.uzip\" #options MD_ROOT #options MD_ROOT_SIZE="9000" # Boot from NFS options NFSLOCKD #Network Lock Manager options NFSCLIENT #Network Filesystem Client options NFS_ROOT options BOOTP options BOOTP_NFSROOT options BOOTP_NFSV3 options BOOTP_WIRED_TO=arge1 options BOOTP_COMPAT options ROOTDEVNAME=\"nfs:172.16.0.101:/usr/obj/rb433ah/nfs\" # 802.11 framework options IEEE80211_DEBUG options IEEE80211_ALQ options IEEE80211_SUPPORT_MESH # This option is currently broken for if_ath_tx. options IEEE80211_SUPPORT_TDMA options IEEE80211_AMPDU_AGE device wlan # 802.11 support device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support device wlan_xauth # 802.11 hostap support device wlan_acl # 802.11 ACL support # Atheros wireless NICs device ath # Atheros interface support device ath_pci # Atheros PCI/Cardbus bus options ATH_DEBUG options ATH_DIAGAPI options ATH_ENABLE_11N options AH_DEBUG options AH_DEBUG_ALQ options ALQ device ath_hal option AH_SUPPORT_AR5416 device ath_rate_sample option AH_RXCFG_SDMAMW_4BYTES option AH_AR5416_INTERRUPT_MITIGATION # There's no DFS radar detection support yet so this won't actually # detect radars. It however does enable the rest of the channel change # machinery so DFS can be debugged. option ATH_ENABLE_DFS device mii device arge #options ARGE_DEBUG # Enable if_arge debugging for now #device usb #options USB_EHCI_BIG_ENDIAN_DESC # handle big-endian byte order #options USB_DEBUG #options USB_HOST_ALIGN=32 # AR71XX (MIPS in general?) requires this #device ehci device scbus #device umass device da device rb4xx # On-board SPI flash device spibus device ar71xx_spi device mmc device mmcsd device mmcspi device mx25l device nand device ar71xx_wdog device uart device uart_ar71xx device loop device ether device md device bpf device random device if_bridge device gif # ip[46] in ip[46] tunneling protocol device gre # generic encapsulation - only for IPv4 in IPv4 though atm # Enable GPIO device gpio device gpioled options AR71XX_ROUTERBOOT # $FreeBSD$ hint.apb.0.at="nexus0" hint.apb.0.irq=4 # uart0 hint.uart.0.at="apb0" # see atheros/uart_cpu_ar71xx.c why +3 hint.uart.0.maddr=0x18020003 hint.uart.0.msize=0x18 hint.uart.0.irq=3 #ohci #hint.ohci.0.at="apb0" #hint.ohci.0.maddr=0x1c000000 #hint.ohci.0.msize=0x01000000 #hint.ohci.0.irq=6 #ehci #hint.ehci.0.at="nexus0" #hint.ehci.0.maddr=0x1b000000 #hint.ehci.0.msize=0x01000000 #hint.ehci.0.irq=1 # pci hint.pcib.0.at="nexus0" hint.pcib.0.irq=0 hint.arge.0.at="nexus0" hint.arge.0.maddr=0x19000000 hint.arge.0.msize=0x1000 hint.arge.0.irq=2 # PHY4 = 1 << 4 hint.arge.0.phymask=0x10 # Uncomment this hint for RS (not PRO) # PHY20 = 1 << 20 # hint.arge.0.phymask=0x100000 hint.ukphy.0.at="miibus0" hint.arge.1.at="nexus0" hint.arge.1.maddr=0x1a000000 hint.arge.1.msize=0x1000 hint.arge.1.irq=3 # PHY1, PHY2, PHY3 hint.arge.1.phymask=0x00 # should be 100 for RS #hint.arge.1.media=100 #hint.arge.1.fduplex=1 # Uncomment this hint for RS (not PRO) # hint.arge.1.phymask=70000 # SPI flash hint.spi.0.at="nexus0" hint.spi.0.maddr=0x1f000000 hint.spi.0.msize=0x10 hint.mx25l.0.at="spibus0" hint.mx25l.0.cs=1 hint.rb_cpldbus.0.at="spibus0" hint.rb_cpldbus.0.cs=1 # hint.onand.0.at="nandbus0" hint.lnand.0.at="nandbus0" hint.snand.0.at="nandbus0" hint.flash.0.at="nand0" hint.flash.0.size="0x40000" hint.flash.0.offset="0" hint.flash.0.name="bootloader" hint.flash.1.at="nand0" hint.flash.1.size="0x3c0000" hint.flash.1.offset="0x40000" hint.flash.1.name="kernelfs" hint.flash.2.at="nand0" hint.flash.2.size="0" hint.flash.2.offset="0x400000" hint.flash.2.name="rootfs" hint.ar71xx_gpio.0.at="nexus0" #hint.rb_nandbusy.0.at="gpiobus0" hint.mmcspi.0.at="spibus0" hint.mmcspi.0.cs=2 # Watchdog hint.ar71xx_wdog.0.at="nexus0" br, > > > Adrian > > > On 2 January 2013 12:40, Monthadar Al Jaberi <monthadar@gmail.com> wrote: >> I tested some more. First I changed the miniPCI slot. Now boot looks like this: >> >> pcib0 at irq 0 on nexus0 >> pci0: <PCI bus> on pcib0 >> ath0: <Atheros 5413> irq 2 at device 19.0 on pci0 >> ath0: AR5413 mac 10.5 RF5413 phy 6.1 >> ath0: 2GHz radio: 0x0000; 5GHz radio: 0x0063 >> >> >> Then I created a hostap. But none of my other devices sees it (laptop, iphone). >> >> A scan results in: >> >> # ifconfig wlan0 scan >> wlan0: ieee80211_scanreq: flags 0x1b duration 0x7fffffff mindwell 0 >> maxdwell 0 nssid 0 >> wlan0: start_scan_locked: active scan, duration 2147483647 mindwell 0 >> maxdwell 0, desired mode 11g, append, nopick, once >> wlan0: scan set 11g dwell min 200ms max 200ms >> wlan0: scan_task: chan 11g -> 11g [active, dwell min 200ms max 200ms] >> wlan0: ieee80211_ref_node (ieee80211_send_probereq:1822) >> 0xc6f27000<00:15:6d:67:21:8d> refcnt 4 >> wlan0: send probe req on channel 11 bssid ff:ff:ff:ff:ff:ff ssid "" >> wlan0: scan_task: done, [ticks 2657909, dwell min 200 scanend 2150141333] >> wlan0: notify scan done >> root@rb433ah:~ # ath0: device timeout >> >> And when I try to ping a random IP address I get the following. >> Interesting is that it seems to "bail out" when it tries to send >> probe_resp (last in output): >> $ ping -c 1 172.168.3.2 >> PING 172.168.3.2 (172.168.3.2): 56 data bytes >> ath0: device timeout >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received beacon from 28:10:7b:8e:7a:ec rssi 46 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 127, len 1 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 11, len 5 >> wlan0: [28:10:7b:8e:7a:ec] discard beacon frame, for off-channel 10 >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 13 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received beacon from 00:11:50:4d:c5:08 rssi 8 >> wlan0: [00:11:50:4d:c5:08] discard unhandled information element, id 47, len 1 >> wlan0: received beacon from 28:10:7b:8e:7a:ec rssi 40 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 127, len 1 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 11, len 5 >> wlan0: [28:10:7b:8e:7a:ec] discard beacon frame, for off-channel 10 >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 12 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: [94:0c:6d:ad:61:18] discard frame, not to bss >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 13 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received beacon from 28:10:7b:8e:7a:ec rssi 48 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 127, len 1 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 11, len 5 >> wlan0: [28:10:7b:8e:7a:ec] discard beacon frame, for off-channel 10 >> wlan0: received probe_req from 00:16:cf:3c:f7:7f rssi 2 >> [00:16:cf:3c:f7:7f] discard probe_req frame, ssid mismatch: >> 0x9ccca48e6a3b0c7f661c24413d7b9e54c5e59ddbe0c2bd96a2e65410b662f71a >> wlan0: received probe_req from 00:16:cf:3c:f7:7f rssi 5 >> [00:16:cf:3c:f7:7f] discard probe_req frame, ssid mismatch: "default" >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 12 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received probe_req from 00:16:cf:3c:f7:7f rssi 4 >> [00:16:cf:3c:f7:7f] discard probe_req frame, ssid mismatch: "default" >> wlan0: received beacon from 00:11:50:4d:c5:08 rssi 9 >> wlan0: [00:11:50:4d:c5:08] discard unhandled information element, id 47, len 1 >> wlan0: received beacon from 28:10:7b:8e:7a:ec rssi 46 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 127, len 1 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 11, len 5 >> wlan0: [28:10:7b:8e:7a:ec] discard beacon frame, for off-channel 10 >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received beacon from 28:10:7b:8e:7a:ec rssi 40 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 127, len 1 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 11, len 5 >> wlan0: [28:10:7b:8e:7a:ec] discard beacon frame, for off-channel 10 >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received beacon from 28:10:7b:8e:7a:ec rssi 43 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 127, len 1 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 11, len 5 >> wlan0: [28:10:7b:8e:7a:ec] discard beacon frame, for off-channel 10 >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 12 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received beacon from 28:10:7b:8e:7a:ec rssi 40 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 127, len 1 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 11, len 5 >> wlan0: [28:10:7b:8e:7a:ec] discard beacon frame, for off-channel 10 >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 12 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received beacon from 28:10:7b:8e:7a:ec rssi 45 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 127, len 1 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 11, len 5 >> wlan0: [28:10:7b:8e:7a:ec] discard beacon frame, for off-channel 10 >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 13 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 13 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 13 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received beacon from 28:10:7b:8e:7a:ec rssi 47 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 127, len 1 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 11, len 5 >> wlan0: [28:10:7b:8e:7a:ec] discard beacon frame, for off-channel 10 >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 12 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received beacon from 28:10:7b:8e:7a:ec rssi 44 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 51, len 8 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 127, len 1 >> wlan0: [28:10:7b:8e:7a:ec] discard unhandled information element, id 11, len 5 >> wlan0: [28:10:7b:8e:7a:ec] discard beacon frame, for off-channel 10 >> wlan0: received beacon from 74:44:01:2d:cb:5e rssi 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 47, len 1 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 74, len 14 >> wlan0: [74:44:01:2d:cb:5e] discard unhandled information element, id 127, len 1 >> wlan0: received probe_req from 00:aa:70:77:bd:77 rssi 0 >> wlan0: [00:aa:70:77:bd:77] recv probe req >> wlan0: ieee80211_ref_node (ieee80211_send_proberesp:2489) >> 0xc6f27000<00:15:6d:67:21:8d> refcnt 5 >> wlan0: send probe resp on channel 11 to 00:aa:70:77:bd:77 >> ath0: ath_raw_xmit: sc_inreset_cnt > 0; bailing >> .... >> >> >> On Tue, Jan 1, 2013 at 7:33 PM, Monthadar Al Jaberi <monthadar@gmail.com> wrote: >>> Hi, >>> >>> ath(4) failed to attach on my Routerboard RB433AH running FreeBSD >>> current. This is what I got during boo-up. >>> >>> pcib0 at irq 0 on nexus0 >>> pci0: <PCI bus> on pcib0 >>> ath0: <Atheros 5413> irq 3 at device 20.0 on pci0 >>> ath0: could not map interrupt >>> device_attach: ath0 attach returned 6 >>> >>> Any idea why? Anyone else is running ath(4) on this board? My wifi >>> card is a Ubiquity X2 with AR5413 chip. >>> >>> br, >>> >>> >>> -- >>> Monthadar Al Jaberi >> >> >> >> -- >> Monthadar Al Jaberi >> _______________________________________________ >> freebsd-wireless@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-wireless >> To unsubscribe, send any mail to "freebsd-wireless-unsubscribe@freebsd.org" -- Monthadar Al Jaberi
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2BsBSoJg%2B%2BNo1ApSfUVnh1dDVgqEUPLpFJZPv3Ac%2BvaMno01sQ>