AK-san, PseudoCylon wrote: > ----- Original Message ---- > >>> From: Ganbold <ganbold_at_gmail.com> >>> To: PseudoCylon <moonlightakkiy_at_yahoo.ca> >>> Cc: freebsd-current_at_freebsd.org; Ganbold Tsagaankhuu <ganbold_at_mobicom.mn> >>> Sent: Wed, June 16, 2010 6:33:47 AM >>> Subject: Re: CALL for TEST [HOSTAP] run(4) ralink usb wireless >>> >>> AK-san, >>> >> PseudoCylon wrote: >> >> Strange, looks like this time works as expected, but sometimes it >> doesn't work. >> >> In some cases it doesn't work and you can find complete tcpdump output >> from very beginning to the modem hang: >> >> > > Hello, > > Are following true? > When manually load/reload hostapd, works > When loaded by rc.conf, doesn't work > > If so, please try attached patch. (patch to if_run.c only) Or, here is a patched file. > http://gitorious.org/run/run/blobs/raw/cmdq_fix/dev/usb/wlan/if_run.c > > When auto-loading, the driver is brought up and down a few times. It might be the cause. I will test it few more days and let you know. thanks, Ganbold > So, when you test, please reboot rspro and let rc.conf handle init process rather than manually start driver/hostapd. And > #arp -d -a > on rspro, freebsd laptop. and macbook would help for testing. (If it works on mac) So, that clients have to send arp request. If macbook receives "who-has 192.168.1.50" arp request packets, it should work. If macbook supports > # tcpdump -vv -xxx -i wlan0 'arp' > and see if macbook gets this. > 19:34:30.469720 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.1.50 tell 192.168.1.1, length 46 > 0x0000: ffff ffff ffff 0030 5462 3d24 0806 0001 > 0x0010: 0800 0604 0001 0030 5462 3d24 c0a8 0101 > 0x0020: 0000 0000 0000 c0a8 0132 0000 0000 0000 > 0x0030: 0000 0000 0000 0000 0000 0000 > > > AK > > -- begin patch -- > > diff --git a/dev/usb/wlan/if_run.c b/dev/usb/wlan/if_run.c > index e4fc8d2..f302246 100644 > --- a/dev/usb/wlan/if_run.c > +++ b/dev/usb/wlan/if_run.c > _at__at_ -17,7 +17,7 _at__at_ > */ > > #include <sys/cdefs.h> > -__FBSDID("$FreeBSD: src/sys/dev/usb/wlan/if_run.c,v 1.11 2010/06/14 23:01:50 jkim Exp $"); > +__FBSDID("$FreeBSD$"); > > /*- > * Ralink Technology RT2700U/RT2800U/RT3000U chipset driver. > _at__at_ -830,9 +830,6 _at__at_ run_vap_create(struct ieee80211com *ic, > if(sc->rvp_cnt++ == 0) > ic->ic_opmode = opmode; > > -if(opmode == IEEE80211_M_HOSTAP) > -sc->cmdq_run = RUN_CMDQ_GO; > - > DPRINTF("rvp_id=%d bmap=%x rvp_cnt=%d\n", > rvp->rvp_id, sc->rvp_bmap, sc->rvp_cnt); > > _at__at_ -894,7 +891,9 _at__at_ run_cmdq_cb(void *arg, int pending) > for(i = sc->cmdq_exec; sc->cmdq[i].func && pending; > i = sc->cmdq_exec, pending--){ > DPRINTFN(6, "cmdq_exec=%d pending=%d\n", i, pending); > -if(sc->cmdq_run == RUN_CMDQ_GO){ > +if(sc->cmdq_run == RUN_CMDQ_GO || > + (sc->cmdq_key_set == RUN_CMDQ_GO && > + sc->cmdq[i].func == run_key_set_cb)){ > /* > * If arg0 is NULL, callback func needs more > * than one arg. So, pass ptr to cmdq struct. > _at__at_ -4798,7 +4797,7 _at__at_ run_stop(void *arg) > ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); > > sc->ratectl_run = RUN_RATECTL_OFF; > -sc->cmdq_run = sc->cmdq_key_set; > +sc->cmdq_run = RUN_CMDQ_ABORT; > > RUN_UNLOCK(sc); > > -- end patch -- > > > > -- She just came in, pounced around this thing with me for a few years, enjoyed herself, gave it a sort of beautiful quality and left. Excited a few men in the meantime. -- Patrick Macnee, reminiscing on Diana Rigg's involvement in "The Avengers".Received on Fri Jun 18 2010 - 12:28:33 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:04 UTC