On 9/16/2015 12:43 AM, Matthew Grooms wrote:
Hey wireless folks,

I wanted to setup a Raspberry Pi as a FreeBSD AP and purchased a picked up a few Edimax 802.11 adapters to play with. Unfortunately these aren't supported in hostap mode. As it turns out these Edimax adapters use the RTL8188CUS chipset so I poked around the net and noticed that Linux does support the host AP feature with it's RTL8188CUS driver. I was also able to find a patch for OpenBSD that added support for the RTL8188EU chipset to the urtwn driver ...


So I ordered one of these which arrived from China a few weeks later ...


Next I took a stab at porting the patch to FreeBSD. With the attached patch applied, I was able to setup a wlan0 device with the hostap feature. After bridging it with the LAN I could associate with my android phone, obtain an IP address via DHCP, browse a few web pages and watch all the packets pass through the bridge. Sadly, when I attempted to destroy the wlan0 device I got a kernel panic. The screenshot for that is also attached and I'm not sure if I'm going to be able to figure this one out without some help. I'm pretty out of my element here. I assume it's happening in ieee80211_free_node() when IEEE80211_NODE_LOCK() is called. To be clear, the crash only occurs when the adapter is configured in hostap mode with the patch applied. Anyone have any suggestions as to what I should be looking at to prevent this crash?

If I can get this working for the RTL8188EU, I'll also take a stab at getting the RTL8188CUS chipset working in hostap mode. That is, assuming I can glean enough info from drivers that support this feature on other open source platforms. It appears to be extremely popular with the Raspberry PI crowd ...


It looks like my screenshot got scrubbed. Here is my hopefully faithful transcription ...

Fatal trap 9: general protection fault while in kernel mode
cpuid = 3; apic id = 03
instruction pointer = 0x20:0xffffffff80a01105
stack pointer           = 0x28:0xfffffe0092fe86f0
frame pointer         = 0x28:0xfffffe0092fe8740
code segment         = base 0x0, limit 0xfffff, type 0x1b
                                 = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags     = interrupt enabled, resume, IOPL = 0
current process      = 716 (ifconfig)
[thread pid 716 tid 100082 ]
Stopped at      __mtx_lock_flags+0x55:  movq    (%r13),%rax
db> bt
Tracing pid 716 tid 100082 td 0xffffff800512814d0
__mtx_lock_flags() at __mtx_lock_flags+0x55/frame 0xfffffe0092fe8740
ieee80211_free_node() at ieee80211_free_node()_0x38/frame 0xfffffe0092fe8780
ieee80211_node_vdetach() at ieee80211_node_vdetach()+0x2d/frame 0xfffffe0092fe87a0 ieee80211_vap_detach() at ieee80211_vap_detach()+0x35e/frame 0xfffffe0092fe87d0
urtwn_vap_delete() at urtwn_vap_delete()+0xe/frame 0xfffffe0092fe87f0
if_clone_destroyif() at if_clone_destroyif()+0x1aa/frame 0xfffffe0092fe8840
if_clone_destroy() at if_clone_destroy()0x8e/frame 0xfffffe0092fe8860
kern_ioctl() at kern_ioctl()+0x230/frame 0xfffffe0092fe88c0
sys_ioctl() at sys_ioctl()+0x153/frame 0xfffffe0092fe89a0
amd64_syscall() at amd64_syscall()+0x282/frame 0xfffffe0092fe8ab0
Xfast_syscall() at Xfast_syscall()+0xfb/frame 0xfffffe0092fe8ab0
-- syscall (54, FreeBSD ELF64, sys_ioctl), rip = 0x8011e8c8a, rsp = 0x7fffffffe2f8, rbp = 0x7fffffffe310 --

freebsd-wireless@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-wireless-unsubscr...@freebsd.org"

Reply via email to