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"

Reply via email to