Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: Wang wenjuan <wwjmaomao <at> gmail.com>
Subject: About uapsd in madwifi-ng
Newsgroups: gmane.linux.drivers.madwifi.devel
Date: Monday 24th October 2005 15:12:28 UTC (over 11 years ago)
Hi all,
 I don't know well about uapsd. But the function
"ath_uapsd_processtriggers"
make madwiif-ng unnormal in my case(As a AP), I can only ping several times
and soon I can not associate with my madwifi-ng AP. I think the cause is :
 When the first RX interrupt comes,
  if (status & HAL_INT_RX) {
ath_uapsd_processtriggers(sc);
ATH_SCHEDULE_TQUEUE(&sc->sc_rxtq, &needmark);/*come to ath_rx_tasklet
thread*/
}
 before ath_rx_tasklet finished, the second RX interrupt comes again, at
that time the function ath_uapsd_processtriggers become not good,
  retval = ath_hal_rxprocdesc(ah, ds, bf->bf_daddr, PA2DESC(sc,
ds->ds_link),tsf);
if (HAL_EINPROGRESS == retval)
break;
retval always is HAL_EINPROGRESS.
 So I move "ath_uapsd_processtriggers(sc);" from the ath_intr to the
ath_rx_tasklet,
 in ath_intr func:
 if (status & HAL_INT_RX) {
ATH_SCHEDULE_TQUEUE(&sc->sc_rxtq, &needmark);
}
 in ath_rx_tasklet func:
static void
ath_rx_tasklet(TQUEUE_ARG data)
{
#define PA2DESC(_sc, _pa) \
((struct ath_desc *)((caddr_t)(_sc)->sc_rxdma.dd_desc + \
((_pa) - (_sc)->sc_rxdma.dd_desc_paddr)))
struct net_device *dev = (struct net_device *)data;
struct ath_buf *bf;
struct ath_softc *sc = dev->priv;
struct ieee80211com *ic = &sc->sc_ic;
struct ath_hal *ah = sc->sc_ah;
struct ath_desc *ds;
struct sk_buff *skb;
struct ieee80211_node *ni;
int len, type;
u_int phyerr;
 ath_uapsd_processtriggers(sc);
  I can ping normally now.
 Is it right way? I dont know what result bringing on about uapsd.

--
Regards,
Wang.
 
CD: 3ms