Re: [PATCH 3/3] ath10k: fix station count enforcement
From: Michal Kazior <hidden>
Date: 2014-11-25 08:38:42
On 25 November 2014 at 09:01, Kalle Valo [off-list ref] wrote:
Michal Kazior [off-list ref] writes:quoted
The number of peers isn't directly translatable to the number of stations because ath10k needs to reserve a few extra peers for special cases like multi-vif concurrency. The previous limit was 126 and 15 stations in AP mode for 10.x and main firmware branches respectively. The limit is now 128 and 16 which was the original intention. Signed-off-by: Michal Kazior <redacted>[...]quoted
+static void ath10k_core_init_max_sta_count(struct ath10k *ar) +{ + if (test_bit(ATH10K_FW_FEATURE_WMI_10X, ar->fw_features)) { + ar->max_num_peers = TARGET_10X_NUM_PEERS; + ar->max_num_stations = TARGET_10X_NUM_STATIONS; + } else { + ar->max_num_peers = TARGET_NUM_PEERS; + ar->max_num_stations = TARGET_NUM_STATIONS; + } +} + int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode) { int status;@@ -939,6 +950,8 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode) else ar->free_vdev_map = (1LL << TARGET_NUM_VDEVS) - 1; + ath10k_core_init_max_sta_count(ar);I don't see the need to call this during every firmware start as these are not changed afterwards. I think it would be better to call this once just after ath10k_core_fetch_firmware_files() is called.
Hmm.. It makes sense but now that I think about it the max number of peers should actually depend on WMI_SERVICE_IRAM_TIDS which is known after booting firmware. However since only 10.x was released with the service enabled we used fw_features. So.. yeah. I can move the function call if you want though. Michał