This is known; there's some alignment issue with the radiotap TX/RX structures in some of these USB devices.
-adrain On 25 July 2013 20:23, XiaoQI Ge <g...@7axu.com> wrote: > 我更新到最新的源码(r253662),这次错误信息变成了0xde9f4d34 > > [root@FreeBSD.ttyu0] ~ # Fatal kernel mode data abort: 'Alignment Fault 1' > trapframe: 0xde9f4d34 > FSR=00000801, FAR=c284afbb, spsr=00000013 > r0 =c284c000, r1 =c284afbb, r2 =c284c210, r3 =0000096c > r4 =c284c024, r5 =c05f07c5, r6 =00000014, r7 =c2844800 > r8 =c05f07c5, r9 =c284c000, r10=000035cb, r11=de9f4e10 > r12=0000002e, ssp=de9f4d80, slr=00000000, pc =c046d20c > > [ thread pid 0 tid 100053 ] > Stopped at ieee80211_radiotap_chan_change+0x90: strh r3, [r1] > db> > --- > Kernel wlan related options > device wlan # 802.11 support > options IEEE80211_DEBUG # enable debug msgs > options IEEE80211_AMPDU_AGE # age frames in AMPDU reorder q's > options IEEE80211_SUPPORT_MESH # enable 802.11s draft support > device wlan_wep # 802.11 WEP support > device wlan_ccmp # 802.11 CCMP support > device wlan_tkip # 802.11 TKIP support > device wlan_amrr # AMRR transmit rate control algorithm > device firmware # firmware assist module > device run #Ralink Technology USB IEEE 802.11a/g/n > wireless network device > device runfw #Firmware Module for Ralink driver > > --- > The compiler command > make TARGET_ARCH=armv6 TARGET_CPUTYPE=armv6 KERNCONF=BBB WITH_FDT=yes > buildkernel > -- > Regards. > By: XiaoQI Ge; PGP:8B09D5F7 > WWW: https://www.7axu.com/ > > > > 2013/7/24 XiaoQI Ge <g...@7axu.com>: >> How do I debug it? Can provide useful information >> >> login: root >> Jul 24 18:27:31 FreeBSD login: ROOT LOGIN (root) ON ttyu0 >> FreeBSD 10.0-CURRENT (BBB) #4 r253585M: Wed Jul 24 17:07:53 CST 2013 >> [root@FreeBSD.ttyu0] ~ # ifconfig wlan create wlandev run0 >> wlan0: Ethernet address: 10:6f:3f:2b:fd:6d >> wlan0 >> [root@FreeBSD.ttyu0] ~ # ifconfig wlan0 up >> run0: firmware RT2870 ver. 0.236 loaded >> Fatal kernel mode data abort: 'Alignment Fault 1' >> trapframe: 0xde9e4d5c >> FSR=00000801, FAR=c282ffbb, spsr=00000013 >> r0 =c2831000, r1 =c282ffbb, r2 =c2831210, r3 =0000096c >> r4 =c2831024, r5 =c2831000, r6 =c05d9362, r7 =c2829800 >> r8 =00000014, r9 =c08144d8, r10=80001cce, r11=de9e4e10 >> r12=0000002e, ssp=de9e4da8, slr=00000000, pc =c045c510 >> >> [ thread pid 0 tid 100053 ] >> Stopped at ieee80211_radiotap_chan_change+0x90: strh r3, [r1] >> db> >> >> >> These two places modified: >> 2522 } >> 2523 >> 2524 ant = run_maxrssi_chain(sc, rxwi); >> 2525 rssi = rxwi->rssi[ant]; >> 2526 nf = run_rssi2dbm(sc, rssi, ant); >> 2527 >> 2528 m->m_pkthdr.rcvif = ifp; >> 2529 m->m_pkthdr.len = m->m_len = len; >> 2530 /* >> 2531 if (ni != NULL) { >> 2532 (void)ieee80211_input(ni, m, rssi, nf); >> 2533 ieee80211_free_node(ni); >> 2534 } else { >> 2535 (void)ieee80211_input_all(ic, m, rssi, nf); >> 2536 } >> 2537 */ >> 2538 /* >> 2539 * DAAN: fill-in tap header BEFORE calling ieee80211_input*() so the >> 2540 * user will see the actual data that belongs to THIS packet.. >> 2541 */ >> 2542 if (__predict_false(ieee80211_radiotap_active(ic))) { >> 2543 struct run_rx_radiotap_header *tap = &sc->sc_rxtap; >> 2544 >> 2545 tap->wr_flags = 0; >> 2546 tap->wr_chan_freq = htole16(ic->ic_curchan->ic_freq); >> 2547 tap->wr_chan_flags = htole16(ic->ic_curchan->ic_flags); >> 2548 tap->wr_antsignal = rssi; >> 2549 tap->wr_antenna = ant; >> 2550 tap->wr_dbm_antsignal = run_rssi2dbm(sc, rssi, ant); >> 2551 tap->wr_rate = 2; /* in case it can't be found below */ >> 2552 phy = le16toh(rxwi->phy); >> 2553 switch (phy & RT2860_PHY_MODE) { >> 2554 case RT2860_PHY_CCK: >> 2555 switch ((phy & RT2860_PHY_MCS) & ~RT2860_PHY_SHPRE) { >> 2556 case 0: tap->wr_rate = 2; break; >> 2557 case 1: tap->wr_rate = 4; break; >> 2558 case 2: tap->wr_rate = 11; break; >> 2559 case 3: tap->wr_rate = 22; break; >> 2560 } >> 2561 if (phy & RT2860_PHY_SHPRE) >> 2562 tap->wr_flags |= IEEE80211_RADIOTAP_F_SHORTPRE; >> 2563 break; >> 2564 case RT2860_PHY_OFDM: >> 2565 switch (phy & RT2860_PHY_MCS) { >> 2566 case 0: tap->wr_rate = 12; break; >> 2567 case 1: tap->wr_rate = 18; break; >> 2568 case 2: tap->wr_rate = 24; break; >> 2569 case 3: tap->wr_rate = 36; break; >> 2570 case 4: tap->wr_rate = 48; break; >> 2571 case 5: tap->wr_rate = 72; break; >> 2572 case 6: tap->wr_rate = 96; break; >> 2573 case 7: tap->wr_rate = 108; break; >> 2574 } >> 2575 break; >> 2576 } >> 2577 } >> 2578 >> 2579 if (ni != NULL) { >> 2580 (void)ieee80211_input(ni, m, rssi, nf); >> 2581 ieee80211_free_node(ni); >> 2582 } else { >> 2583 (void)ieee80211_input_all(ic, m, rssi, nf); >> 2584 } >> 2585 >> 2586 } >> 2587 >> 2588 static void >> >> >> Index: sys/vm/vm_map.c >> =================================================================== >> --- sys/vm/vm_map.c (revision 253514) >> +++ sys/vm/vm_map.c (working copy) >> @@ -239,8 +239,7 @@ >> vm_map_t map; >> >> map = (vm_map_t)mem; >> - map->nentries = 0; >> - map->size = 0; >> + memset(map, 0, sizeof(*map)); >> mtx_init(&map->system_mtx, "vm map (system)", NULL, MTX_DEF | >> MTX_DUPOK); >> sx_init(&map->lock, "vm map (user)"); >> return (0); >> >> -- >> Regards. >> By: XiaoQI Ge; PGP:8B09D5F7 >> WWW: https://www.7axu.com/ >> >> >> >> 2013/7/24 XiaoQI Ge <g...@7axu.com>: >>> I manually make up, is compiling the kernel >>> -- >>> Regards. >>> By: XiaoQI Ge; PGP:8B09D5F7 >>> WWW: https://www.7axu.com/ >>> >>> >>> >>> 2013/7/24 XiaoQI Ge <g...@7axu.com>: >>>> patch < /root/if_run_2013_01_19_radiotap_fix_only.diff appears to be >>>> invalid >>>> >>>> ] /usr/src/sys/dev/usb/wlan # patch < >>>> /root/if_run_2013_01_19_radiotap_fix_only.diff >>>> Hmm... Looks like a unified diff to me... >>>> The text leading up to this was: >>>> -------------------------- >>>> |--- if_run.c.fix1_vnet 2013-06-14 10:12:49.786774072 +0200 >>>> |+++ if_run.c.fix2_vnet_plus_radiotap 2013-06-14 10:15:34.890774314 +0200 >>>> -------------------------- >>>> File to patch: >>>> >>>> >>>> 2013/7/23 Daan Vreeken <d...@vitsch.nl>: >>>>> cd /usr/src/sys/dev/usb/wlan >>>> >>>> >>>> >>>> -- >>>> Regards. >>>> By: XiaoQI Ge; PGP:8B09D5F7 >>>> WWW: https://www.7axu.com/ > _______________________________________________ > freebsd-wireless@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-wireless > To unsubscribe, send any mail to "freebsd-wireless-unsubscr...@freebsd.org" _______________________________________________ freebsd-wireless@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-wireless To unsubscribe, send any mail to "freebsd-wireless-unsubscr...@freebsd.org"