ath10k: set max_num_vdevs based on wmi op version
authorKalle Valo <kvalo@qca.qualcomm.com>
Wed, 17 Dec 2014 10:20:45 +0000 (12:20 +0200)
committerKalle Valo <kvalo@qca.qualcomm.com>
Tue, 23 Dec 2014 15:17:48 +0000 (17:17 +0200)
To make it easier to manage firmware differences, we should not use
ATH10K_FW_FEATURE_WMI_10X outside ath10k_core_init_firmware_features(). To
achieve that create new field ar->max_num_vdevs and set it based on wmi op
version.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/core.c
drivers/net/wireless/ath/ath10k/core.h

index c83f1e7..bf4a46a 100644 (file)
@@ -904,12 +904,14 @@ static int ath10k_core_init_firmware_features(struct ath10k *ar)
        case ATH10K_FW_WMI_OP_VERSION_MAIN:
                ar->max_num_peers = TARGET_NUM_PEERS;
                ar->max_num_stations = TARGET_NUM_STATIONS;
+               ar->max_num_vdevs = TARGET_NUM_VDEVS;
                ar->htt.max_num_pending_tx = TARGET_NUM_MSDU_DESC;
                break;
        case ATH10K_FW_WMI_OP_VERSION_10_1:
        case ATH10K_FW_WMI_OP_VERSION_10_2:
                ar->max_num_peers = TARGET_10X_NUM_PEERS;
                ar->max_num_stations = TARGET_10X_NUM_STATIONS;
+               ar->max_num_vdevs = TARGET_10X_NUM_VDEVS;
                ar->htt.max_num_pending_tx = TARGET_10X_NUM_MSDU_DESC;
                break;
        case ATH10K_FW_WMI_OP_VERSION_TLV:
@@ -1061,10 +1063,7 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode)
        if (status)
                goto err_hif_stop;
 
-       if (test_bit(ATH10K_FW_FEATURE_WMI_10X, ar->fw_features))
-               ar->free_vdev_map = (1LL << TARGET_10X_NUM_VDEVS) - 1;
-       else
-               ar->free_vdev_map = (1LL << TARGET_NUM_VDEVS) - 1;
+       ar->free_vdev_map = (1LL << ar->max_num_vdevs) - 1;
 
        INIT_LIST_HEAD(&ar->arvifs);
 
index 613355c..3998f1e 100644 (file)
@@ -581,6 +581,7 @@ struct ath10k {
 
        int max_num_peers;
        int max_num_stations;
+       int max_num_vdevs;
 
        struct work_struct offchan_tx_work;
        struct sk_buff_head offchan_tx_queue;