Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 150387
b: refs/heads/master
c: 6b96f93
h: refs/heads/master
i:
  150385: 5acbda9
  150383: 7fdcba0
v: v3
  • Loading branch information
Vasanthakumar Thiagarajan authored and John W. Linville committed May 20, 2009
1 parent 343959c commit 611abb1
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 29 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d31e20af9f65e38429a3ed32175f8e233bdcd2b2
refs/heads/master: 6b96f93e962e25d38d7a73c0009597672d87c496
1 change: 1 addition & 0 deletions trunk/drivers/net/wireless/ath/ath9k/ath9k.h
Original file line number Diff line number Diff line change
Expand Up @@ -600,6 +600,7 @@ struct ath_softc {
struct ath9k_debug debug;
#endif
struct ath_bus_ops *bus_ops;
struct ath_beacon_config cur_beacon_conf;
};

struct ath_wiphy {
Expand Down
63 changes: 35 additions & 28 deletions trunk/drivers/net/wireless/ath/ath9k/beacon.c
Original file line number Diff line number Diff line change
Expand Up @@ -695,43 +695,50 @@ static void ath_beacon_config_adhoc(struct ath_softc *sc,
sc->beacon.bmisscnt = 0;
ath9k_hw_set_interrupts(sc->sc_ah, sc->imask);

if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_VEOL)
/* FIXME: Handle properly when vif is NULL */
if (vif && sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_VEOL)
ath_beacon_start_adhoc(sc, vif);
}

void ath_beacon_config(struct ath_softc *sc, struct ieee80211_vif *vif)
{
struct ath_beacon_config conf;
struct ath_beacon_config *cur_conf = &sc->cur_beacon_conf;
enum nl80211_iftype iftype;

/* Setup the beacon configuration parameters */

memset(&conf, 0, sizeof(struct ath_beacon_config));
conf.beacon_interval = sc->beacon_interval ? : ATH_DEFAULT_BINTVAL;
conf.listen_interval = 1;
conf.dtim_period = conf.beacon_interval;
conf.dtim_count = 1;
conf.bmiss_timeout = ATH_DEFAULT_BMISS_LIMIT * conf.beacon_interval;

if (vif) {
struct ath_vif *avp = (struct ath_vif *)vif->drv_priv;

switch(avp->av_opmode) {
case NL80211_IFTYPE_AP:
ath_beacon_config_ap(sc, &conf);
break;
case NL80211_IFTYPE_ADHOC:
case NL80211_IFTYPE_MESH_POINT:
ath_beacon_config_adhoc(sc, &conf, vif);
break;
case NL80211_IFTYPE_STATION:
ath_beacon_config_sta(sc, &conf);
break;
default:
DPRINTF(sc, ATH_DBG_CONFIG,
"Unsupported beaconing mode\n");
return;
}
struct ieee80211_bss_conf *bss_conf = &vif->bss_conf;

iftype = vif->type;

sc->sc_flags |= SC_OP_BEACONS;
cur_conf->beacon_interval = bss_conf->beacon_int;
cur_conf->dtim_period = bss_conf->dtim_period;
cur_conf->listen_interval = 1;
cur_conf->dtim_count = 1;
cur_conf->bmiss_timeout =
ATH_DEFAULT_BMISS_LIMIT * cur_conf->beacon_interval;
} else {
iftype = sc->sc_ah->opmode;
}


switch (iftype) {
case NL80211_IFTYPE_AP:
ath_beacon_config_ap(sc, cur_conf);
break;
case NL80211_IFTYPE_ADHOC:
case NL80211_IFTYPE_MESH_POINT:
ath_beacon_config_adhoc(sc, cur_conf, vif);
break;
case NL80211_IFTYPE_STATION:
ath_beacon_config_sta(sc, cur_conf);
break;
default:
DPRINTF(sc, ATH_DBG_CONFIG,
"Unsupported beaconing mode\n");
return;
}

sc->sc_flags |= SC_OP_BEACONS;
}

0 comments on commit 611abb1

Please sign in to comment.