Page MenuHomeFreeBSD

D36243.id110218.diff
No OneTemporary

D36243.id110218.diff

diff --git a/sys/dev/wtap/if_wtap.c b/sys/dev/wtap/if_wtap.c
--- a/sys/dev/wtap/if_wtap.c
+++ b/sys/dev/wtap/if_wtap.c
@@ -303,6 +303,7 @@
switch (vap->iv_opmode) {
case IEEE80211_M_IBSS:
case IEEE80211_M_MBSS:
+ case IEEE80211_M_HOSTAP:
/*
* Stop any previous beacon callout. This may be
* necessary, for example, when an ibss merge
@@ -469,6 +470,19 @@
#endif
struct ieee80211vap *vap = ni->ni_vap;
struct wtap_vap *avp = WTAP_VAP(vap);
+ struct wtap_softc *sc = vap->iv_ic->ic_softc;
+ struct ieee80211_frame *wh;
+ uint8_t subtype;
+
+ wh = mtod(m, struct ieee80211_frame *);
+ subtype = wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK;
+
+ /* insert TSF into prob resp */
+ if (vap->iv_opmode == IEEE80211_M_HOSTAP &&
+ subtype == IEEE80211_FC0_SUBTYPE_PROBE_RESP) {
+ uint64_t tsf = wtap_hal_get_tsf(sc->hal);
+ memcpy(&wh[1], &tsf, sizeof(tsf));
+ }
if (ieee80211_radiotap_active_vap(vap)) {
ieee80211_radiotap_tx(vap, m);
@@ -656,7 +670,8 @@
ic->ic_name = sc->name;
ic->ic_phytype = IEEE80211_T_DS;
ic->ic_opmode = IEEE80211_M_MBSS;
- ic->ic_caps = IEEE80211_C_MBSS | IEEE80211_C_IBSS;
+ ic->ic_caps = IEEE80211_C_MBSS | IEEE80211_C_IBSS |
+ IEEE80211_C_STA | IEEE80211_C_HOSTAP;
ic->ic_max_keyix = 128; /* A value read from Atheros ATH_KEYMAX */

File Metadata

Mime Type
text/plain
Expires
Fri, Jan 10, 11:56 PM (5 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15748099
Default Alt Text
D36243.id110218.diff (1 KB)

Event Timeline