This patch? commit bae4e38c197f464c4bffe7037d5d491e462105b0 Author: sam <s...@freebsd.org> Date: Thu Apr 1 00:38:45 2004 +0000
radiotap updates: o force little-endian byte order for header o pad header to 32-bit boundary to guard against applications that assume packet data alignment --HPS -----Original message----- > From:Adrian Chadd <adr...@freebsd.org <mailto:adr...@freebsd.org> > > Sent: Sunday 28th July 2013 6:29 > To: XiaoQI Ge <g...@7axu.com <mailto:g...@7axu.com> > > Cc: freebsd-arm <freebsd-...@freebsd.org <mailto:freebsd-...@freebsd.org> >; > freebsd-wireless@freebsd.org <mailto:freebsd-wireless@freebsd.org> > Subject: Re: My WLI-UC-GNM up crash > > Not sure, I haven't dug into it. It shouldn't be hard to fix though. > > I think someone just screwed up in defining the structures in the USB > drivers and didn't specify alignment. ath(4) got it right because Sam > ran it on MIPS/ARM boards. > > > > -adrian > > On 27 July 2013 20:34, XiaoQI Ge <g...@7axu.com <mailto:g...@7axu.com> > > wrote: > > That should be how to solve it? > > -- > > Regards. > > By: XiaoQI Ge; PGP:8B09D5F7 > > WWW: https://www.7axu.com/ > > > > > > > > 2013/7/27 Adrian Chadd <adr...@freebsd.org <mailto:adr...@freebsd.org> >: > >> 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 <mailto:g...@7axu.com> > > >> wrote: > >>> 我更新到最新的源码(r253662),这次错误信息变成了0xde9f4d34 > >>> > >>> [root@FreeBSD.ttyu0 <mailto: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 <mailto: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 <mailto:root@FreeBSD.ttyu0> ] ˜ # ifconfig wlan > >>>> create wlandev run0 > >>>> wlan0: Ethernet address: 10:6f:3f:2b:fd:6d > >>>> wlan0 > >>>> [root@FreeBSD.ttyu0 <mailto: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 <mailto: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 <mailto: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 <mailto: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 <mailto:freebsd-wireless@freebsd.org> > >>> mailing list > >>> http://lists.freebsd.org/mailman/listinfo/freebsd-wireless > >>> <http://lists.freebsd.org/mailman/listinfo/freebsd-wireless> > >>> To unsubscribe, send any mail to > >>> "freebsd-wireless-unsubscr...@freebsd.org > >>> <mailto:freebsd-wireless-unsubscr...@freebsd.org> " > _______________________________________________ > freebsd-...@freebsd.org <mailto:freebsd-...@freebsd.org> mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-arm > <http://lists.freebsd.org/mailman/listinfo/freebsd-arm> > To unsubscribe, send any mail to "freebsd-arm-unsubscr...@freebsd.org > <mailto:freebsd-arm-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"