diff --git a/hostapd/config_file.c b/hostapd/config_file.c index 6d340d714..03382d470 100644 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c @@ -778,7 +778,7 @@ static int hostapd_config_tx_queue(struct hostapd_config *conf, char *name, } if (num >= NUM_TX_QUEUES) { - /* for backwards compatibility, do not tricker failure */ + /* for backwards compatibility, do not trigger failure */ wpa_printf(MSG_INFO, "DEPRECATED: '%s' not used", name); return 0; } @@ -813,8 +813,6 @@ static int hostapd_config_tx_queue(struct hostapd_config *conf, char *name, return -1; } - queue->configured = 1; - return 0; } diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf index 3a79a944a..2def33560 100644 --- a/hostapd/hostapd.conf +++ b/hostapd/hostapd.conf @@ -198,7 +198,6 @@ auth_algs=3 ignore_broadcast_ssid=0 # TX queue parameters (EDCF / bursting) -# default for all these fields: not set, use hardware defaults # tx_queue__ # queues: data0, data1, data2, data3, after_beacon, beacon # (data0 is the highest priority queue) diff --git a/src/ap/ap_config.c b/src/ap/ap_config.c index 702cb765b..a40362431 100644 --- a/src/ap/ap_config.c +++ b/src/ap/ap_config.c @@ -86,14 +86,18 @@ void hostapd_config_defaults_bss(struct hostapd_bss_config *bss) bss->pac_key_lifetime = 7 * 24 * 60 * 60; bss->pac_key_refresh_time = 1 * 24 * 60 * 60; #endif /* EAP_SERVER_FAST */ + + /* Set to -1 as defaults depends on HT in setup */ + bss->wmm_enabled = -1; } struct hostapd_config * hostapd_config_defaults(void) { +#define ecw2cw(ecw) ((1 << (ecw)) - 1) + struct hostapd_config *conf; struct hostapd_bss_config *bss; - int i; const int aCWmin = 4, aCWmax = 10; const struct hostapd_wmm_ac_params ac_bk = { aCWmin, aCWmax, 7, 0, 0 }; /* background traffic */ @@ -103,6 +107,17 @@ struct hostapd_config * hostapd_config_defaults(void) { aCWmin - 1, aCWmin, 2, 3000 / 32, 1 }; const struct hostapd_wmm_ac_params ac_vo = /* voice traffic */ { aCWmin - 2, aCWmin - 1, 2, 1500 / 32, 1 }; + const struct hostapd_tx_queue_params txq_bk = + { 7, ecw2cw(aCWmin), ecw2cw(aCWmax), 0 }; + const struct hostapd_tx_queue_params txq_be = + { 3, ecw2cw(aCWmin), 4 * (ecw2cw(aCWmin) + 1) - 1, 0}; + const struct hostapd_tx_queue_params txq_vi = + { 1, (ecw2cw(aCWmin) + 1) / 2 - 1, ecw2cw(aCWmin), 30}; + const struct hostapd_tx_queue_params txq_vo = + { 1, (ecw2cw(aCWmin) + 1) / 4 - 1, + (ecw2cw(aCWmin) + 1) / 2 - 1, 15}; + +#undef ecw2cw conf = os_zalloc(sizeof(*conf)); bss = os_zalloc(sizeof(*bss)); @@ -131,14 +146,16 @@ struct hostapd_config * hostapd_config_defaults(void) conf->fragm_threshold = -1; /* user driver default: 2346 */ conf->send_probe_response = 1; - for (i = 0; i < NUM_TX_QUEUES; i++) - conf->tx_queue[i].aifs = -1; /* use hw default */ - conf->wmm_ac_params[0] = ac_be; conf->wmm_ac_params[1] = ac_bk; conf->wmm_ac_params[2] = ac_vi; conf->wmm_ac_params[3] = ac_vo; + conf->tx_queue[0] = txq_vo; + conf->tx_queue[1] = txq_vi; + conf->tx_queue[2] = txq_be; + conf->tx_queue[3] = txq_bk; + conf->ht_capab = HT_CAP_INFO_SMPS_DISABLED; return conf; diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h index 86ddc3a78..ff7e8cf22 100644 --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h @@ -130,7 +130,6 @@ struct hostapd_tx_queue_params { int cwmin; int cwmax; int burst; /* maximum burst time in 0.1 ms, i.e., 10 = 1 ms */ - int configured; }; struct hostapd_wmm_ac_params { diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c index 16d7c4512..3f2888a34 100644 --- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c @@ -511,6 +511,9 @@ static int hostapd_setup_bss(struct hostapd_data *hapd, int first) } } + if (conf->wmm_enabled < 0) + conf->wmm_enabled = hapd->iconf->ieee80211n; + hostapd_flush_old_stations(hapd); hostapd_set_privacy(hapd, 0); @@ -636,9 +639,6 @@ static void hostapd_tx_queue_params(struct hostapd_iface *iface) for (i = 0; i < NUM_TX_QUEUES; i++) { p = &iface->conf->tx_queue[i]; - if (!p->configured) - continue; - if (hostapd_set_tx_queue_params(hapd, i, p->aifs, p->cwmin, p->cwmax, p->burst)) { wpa_printf(MSG_DEBUG, "Failed to set TX queue "