diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c index b2a6ef559b69a975f3a962c492d4c225a9904c4d..72bcf321d1ce26dbd6c4b741bd9115919d0c361d 100644 --- a/drivers/net/wireless/ath5k/base.c +++ b/drivers/net/wireless/ath5k/base.c @@ -1775,11 +1775,18 @@ ath5k_tasklet_rx(unsigned long data) skb_pull(skb, pad); } - if (sc->opmode == IEEE80211_IF_TYPE_MNTR) - rxs.mactime = ath5k_extend_tsf(sc->ah, - ds->ds_rxstat.rs_tstamp); - else - rxs.mactime = ds->ds_rxstat.rs_tstamp; + /* + * always extend the mac timestamp, since this information is + * also needed for proper IBSS merging. + * + * XXX: it might be too late to do it here, since rs_tstamp is + * 15bit only. that means TSF extension has to be done within + * 32768usec (about 32ms). it might be necessary to move this to + * the interrupt handler, like it is done in madwifi. + */ + rxs.mactime = ath5k_extend_tsf(sc->ah, ds->ds_rxstat.rs_tstamp); + rxs.flag |= RX_FLAG_TSFT; + rxs.freq = sc->curchan->freq; rxs.channel = sc->curchan->chan; rxs.phymode = sc->curmode;