Thread: [Madwifi-cvs] madwifi/ath if_ath.c,1.36.2.19,1.36.2.20
Status: Beta
Brought to you by:
otaku
From: Bruno R. <br...@us...> - 2005-02-23 18:10:39
|
Update of /cvsroot/madwifi/madwifi/ath In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8300/ath Modified Files: Tag: BSD if_ath.c Log Message: - more debug output for ad-hoc mode - merge IBSS using ath_tsf_extend (borrowed from NetBSD) Index: if_ath.c =================================================================== RCS file: /cvsroot/madwifi/madwifi/ath/if_ath.c,v retrieving revision 1.36.2.19 retrieving revision 1.36.2.20 diff -C2 -d -r1.36.2.19 -r1.36.2.20 *** if_ath.c 22 Feb 2005 18:51:45 -0000 1.36.2.19 --- if_ath.c 23 Feb 2005 18:09:22 -0000 1.36.2.20 *************** *** 2680,2683 **** --- 2680,2701 ---- } + static uint64_t + ath_tsf_extend(struct ath_hal *ah, uint32_t rstamp) + { + uint64_t tsf; + + /* rstamp is assigned from ath_rx_status.rs_tstamp which is 16bit */ + KASSERT((rstamp & 0xffff0000) == 0, + ("rx timestamp > 16 bits wide, %u", rstamp)); + + tsf = ath_hal_gettsf64(ah); + + /* Compensate for rollover. */ + if ((tsf & 0xffff) <= rstamp) + tsf -= 0x10000; + + return (tsf & ~(uint64_t)0xffff) | rstamp; + } + /* * Intercept management frames to collect beacon rssi data *************** *** 2704,2711 **** if (ic->ic_opmode == IEEE80211_M_IBSS && ic->ic_state == IEEE80211_S_RUN) { ! struct ath_hal *ah = sc->sc_ah; ! /* XXX extend rstamp */ ! u_int64_t tsf = ath_hal_gettsf64(ah); ! /* * Handle ibss merge as needed; check the tsf on the --- 2722,2727 ---- if (ic->ic_opmode == IEEE80211_M_IBSS && ic->ic_state == IEEE80211_S_RUN) { ! /* Extend rstamp with the current tsf to 64 bit */ ! u_int64_t tsf = ath_tsf_extend(sc->sc_ah, rstamp); /* * Handle ibss merge as needed; check the tsf on the *************** *** 2719,2723 **** */ if (le64toh(ni->ni_tstamp.tsf) >= tsf) ! (void) ieee80211_ibss_merge(ic, ni); } break; --- 2735,2739 ---- */ if (le64toh(ni->ni_tstamp.tsf) >= tsf) ! ieee80211_ibss_merge(ic, ni); } break; |