iwlwifi: mvm: prepare for station count change
authorSara Sharon <sara.sharon@intel.com>
Wed, 4 Jan 2017 12:53:58 +0000 (14:53 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Wed, 19 Apr 2017 19:20:51 +0000 (22:20 +0300)
In a000 devices we will support up to 32 stations.
The max station define is used also for invalid station marking
which makes finding usages of actual maximum station pretty hard
to sort through - change it to be a different define in order
to make future changes easier.
Use also ARRAY_SIZE intead of define when possible.
Do not move yet to 32 stations until firmware do it though.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
18 files changed:
drivers/net/wireless/intel/iwlwifi/mvm/coex.c
drivers/net/wireless/intel/iwlwifi/mvm/d3.c
drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c
drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c
drivers/net/wireless/intel/iwlwifi/mvm/fw-api-mac.h
drivers/net/wireless/intel/iwlwifi/mvm/fw.c
drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
drivers/net/wireless/intel/iwlwifi/mvm/ops.c
drivers/net/wireless/intel/iwlwifi/mvm/rx.c
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
drivers/net/wireless/intel/iwlwifi/mvm/sf.c
drivers/net/wireless/intel/iwlwifi/mvm/sta.c
drivers/net/wireless/intel/iwlwifi/mvm/tdls.c
drivers/net/wireless/intel/iwlwifi/mvm/tof.c
drivers/net/wireless/intel/iwlwifi/mvm/tt.c
drivers/net/wireless/intel/iwlwifi/mvm/tx.c
drivers/net/wireless/intel/iwlwifi/mvm/utils.c

index 5bdb6c2c8390b65149c07f61f986cc8f577a43ff..49b4418e6c35dac968a57fc8a9232af4db3af090 100644 (file)
@@ -756,7 +756,7 @@ void iwl_mvm_bt_rssi_event(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
         * Rssi update while not associated - can happen since the statistics
         * are handled asynchronously
         */
-       if (mvmvif->ap_sta_id == IWL_MVM_STATION_COUNT)
+       if (mvmvif->ap_sta_id == IWL_MVM_INVALID_STA)
                return;
 
        /* No BT - reports should be disabled */
index d65acfa3b89b92c9ca7ec824d306af913a90ae5a..d74ae15b2d856a1639fa59ef5b4e8615a60006e9 100644 (file)
@@ -1208,7 +1208,7 @@ static int __iwl_mvm_suspend(struct ieee80211_hw *hw,
 
        mvmvif = iwl_mvm_vif_from_mac80211(vif);
 
-       if (mvmvif->ap_sta_id == IWL_MVM_STATION_COUNT) {
+       if (mvmvif->ap_sta_id == IWL_MVM_INVALID_STA) {
                /* if we're not associated, this must be netdetect */
                if (!wowlan->nd_config) {
                        ret = 1;
index f4d75ffe3d8a8cfae24d1cea61bf918622564ed4..5d475b4850ae331002cf35c1d42a5d61dc5e7c84 100644 (file)
@@ -280,7 +280,7 @@ static ssize_t iwl_dbgfs_mac_params_read(struct file *file,
                                 mvmvif->queue_params[i].uapsd);
 
        if (vif->type == NL80211_IFTYPE_STATION &&
-           ap_sta_id != IWL_MVM_STATION_COUNT) {
+           ap_sta_id != IWL_MVM_INVALID_STA) {
                struct iwl_mvm_sta *mvm_sta;
 
                mvm_sta = iwl_mvm_sta_from_staid_protected(mvm, ap_sta_id);
index 077bfd8f4c0cd85505a3ef7de375bfbaf4cddef5..402846650cbec93a3a871f64381cde6b7021220d 100644 (file)
@@ -330,7 +330,7 @@ static ssize_t iwl_dbgfs_stations_read(struct file *file, char __user *user_buf,
 
        mutex_lock(&mvm->mutex);
 
-       for (i = 0; i < IWL_MVM_STATION_COUNT; i++) {
+       for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) {
                pos += scnprintf(buf + pos, bufsz - pos, "%.2d: ", i);
                sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i],
                                                lockdep_is_held(&mvm->mutex));
index 480a54af453477ac7194766d9a8ada9b3f10c923..d3cdd889c85c11c75ce584df8341423c90f0cb11 100644 (file)
@@ -73,7 +73,9 @@
 #define NUM_MAC_INDEX          (NUM_MAC_INDEX_DRIVER + 1)
 #define NUM_MAC_INDEX_CDB      (NUM_MAC_INDEX_DRIVER + 2)
 
-#define IWL_MVM_STATION_COUNT  16
+#define IWL_MVM_STATION_COUNT          16
+#define IWL_MVM_INVALID_STA            0xFF
+
 #define IWL_MVM_TDLS_STA_COUNT 4
 
 enum iwl_ac {
index 6adbd4bcb40a33e30a33af8af4b6f5d99df4aed6..61cafb541554803d674d67a7e0d9a8eb5b57f8ed 100644 (file)
@@ -1250,10 +1250,10 @@ int iwl_mvm_up(struct iwl_mvm *mvm)
        }
 
        /* init the fw <-> mac80211 STA mapping */
-       for (i = 0; i < IWL_MVM_STATION_COUNT; i++)
+       for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++)
                RCU_INIT_POINTER(mvm->fw_id_to_mac_id[i], NULL);
 
-       mvm->tdls_cs.peer.sta_id = IWL_MVM_STATION_COUNT;
+       mvm->tdls_cs.peer.sta_id = IWL_MVM_INVALID_STA;
 
        /* reset quota debouncing buffer - 0xff will yield invalid data */
        memset(&mvm->last_quota_cmd, 0xff, sizeof(mvm->last_quota_cmd));
@@ -1383,7 +1383,7 @@ int iwl_mvm_load_d3_fw(struct iwl_mvm *mvm)
                goto error;
 
        /* init the fw <-> mac80211 STA mapping */
-       for (i = 0; i < IWL_MVM_STATION_COUNT; i++)
+       for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++)
                RCU_INIT_POINTER(mvm->fw_id_to_mac_id[i], NULL);
 
        /* Add auxiliary station for scanning */
index 626864f3701c023276d34c0389079fffe6945556..ae1406fe99889675b713ea3dc5ea0b26e76e2b36 100644 (file)
@@ -472,9 +472,9 @@ static int iwl_mvm_mac_ctxt_allocate_resources(struct iwl_mvm *mvm,
                vif->cab_queue = IEEE80211_INVAL_HW_QUEUE;
        }
 
-       mvmvif->bcast_sta.sta_id = IWL_MVM_STATION_COUNT;
-       mvmvif->mcast_sta.sta_id = IWL_MVM_STATION_COUNT;
-       mvmvif->ap_sta_id = IWL_MVM_STATION_COUNT;
+       mvmvif->bcast_sta.sta_id = IWL_MVM_INVALID_STA;
+       mvmvif->mcast_sta.sta_id = IWL_MVM_INVALID_STA;
+       mvmvif->ap_sta_id = IWL_MVM_INVALID_STA;
 
        for (i = 0; i < NUM_IWL_MVM_SMPS_REQ; i++)
                mvmvif->smps_requests[i] = IEEE80211_SMPS_AUTOMATIC;
index afe0e0f0744fc201d9884b5dcd80021750c5f245..26cf3dfcc108ee2f503707b8b35d9b510a4bc896 100644 (file)
@@ -767,7 +767,7 @@ static bool iwl_mvm_defer_tx(struct iwl_mvm *mvm,
                goto out;
 
        mvmsta = iwl_mvm_sta_from_mac80211(sta);
-       if (mvmsta->sta_id == IWL_MVM_STATION_COUNT ||
+       if (mvmsta->sta_id == IWL_MVM_INVALID_STA ||
            mvmsta->sta_id != mvm->d0i3_ap_sta_id)
                goto out;
 
@@ -1011,7 +1011,7 @@ static void iwl_mvm_cleanup_iterator(void *data, u8 *mac,
        struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
 
        mvmvif->uploaded = false;
-       mvmvif->ap_sta_id = IWL_MVM_STATION_COUNT;
+       mvmvif->ap_sta_id = IWL_MVM_INVALID_STA;
 
        spin_lock_bh(&mvm->time_event_lock);
        iwl_mvm_te_clear_data(mvm, &mvmvif->time_event_data);
@@ -1054,7 +1054,7 @@ static void iwl_mvm_restart_cleanup(struct iwl_mvm *mvm)
        ieee80211_iterate_interfaces(mvm->hw, 0, iwl_mvm_cleanup_iterator, mvm);
 
        mvm->p2p_device_vif = NULL;
-       mvm->d0i3_ap_sta_id = IWL_MVM_STATION_COUNT;
+       mvm->d0i3_ap_sta_id = IWL_MVM_INVALID_STA;
 
        iwl_mvm_reset_phy_ctxts(mvm);
        memset(mvm->fw_key_table, 0, sizeof(mvm->fw_key_table));
@@ -1965,7 +1965,7 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,
                                                    IWL_MVM_SMPS_REQ_PROT,
                                                    IEEE80211_SMPS_DYNAMIC);
                        }
-               } else if (mvmvif->ap_sta_id != IWL_MVM_STATION_COUNT) {
+               } else if (mvmvif->ap_sta_id != IWL_MVM_INVALID_STA) {
                        /*
                         * If update fails - SF might be running in associated
                         * mode while disassociated - which is forbidden.
@@ -1979,8 +1979,8 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,
                                IWL_ERR(mvm, "failed to remove AP station\n");
 
                        if (mvm->d0i3_ap_sta_id == mvmvif->ap_sta_id)
-                               mvm->d0i3_ap_sta_id = IWL_MVM_STATION_COUNT;
-                       mvmvif->ap_sta_id = IWL_MVM_STATION_COUNT;
+                               mvm->d0i3_ap_sta_id = IWL_MVM_INVALID_STA;
+                       mvmvif->ap_sta_id = IWL_MVM_INVALID_STA;
                        /* remove quota for this interface */
                        ret = iwl_mvm_update_quotas(mvm, false, NULL);
                        if (ret)
@@ -2391,7 +2391,7 @@ static void __iwl_mvm_mac_sta_notify(struct ieee80211_hw *hw,
                 */
                break;
        case STA_NOTIFY_AWAKE:
-               if (WARN_ON(mvmsta->sta_id == IWL_MVM_STATION_COUNT))
+               if (WARN_ON(mvmsta->sta_id == IWL_MVM_INVALID_STA))
                        break;
 
                if (txqs)
@@ -3961,7 +3961,7 @@ static void iwl_mvm_mac_flush(struct ieee80211_hw *hw,
        mvmvif = iwl_mvm_vif_from_mac80211(vif);
 
        /* flush the AP-station and all TDLS peers */
-       for (i = 0; i < IWL_MVM_STATION_COUNT; i++) {
+       for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) {
                sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i],
                                                lockdep_is_held(&mvm->mutex));
                if (IS_ERR_OR_NULL(sta))
index 72afccfe42827ec578d26ae6c9fdf3bc159c8ebf..d313941ffc9d4afae8c1e31cd7b69d0249ccbb47 100644 (file)
@@ -1268,7 +1268,7 @@ static bool iwl_mvm_disallow_offloading(struct iwl_mvm *mvm,
        u8 tid;
 
        if (WARN_ON(vif->type != NL80211_IFTYPE_STATION ||
-                   mvmvif->ap_sta_id == IWL_MVM_STATION_COUNT))
+                   mvmvif->ap_sta_id == IWL_MVM_INVALID_STA))
                return false;
 
        mvmsta = iwl_mvm_sta_from_staid_rcu(mvm, mvmvif->ap_sta_id);
@@ -1356,7 +1356,7 @@ static void iwl_mvm_set_wowlan_data(struct iwl_mvm *mvm,
        struct ieee80211_sta *ap_sta;
        struct iwl_mvm_sta *mvm_ap_sta;
 
-       if (iter_data->ap_sta_id == IWL_MVM_STATION_COUNT)
+       if (iter_data->ap_sta_id == IWL_MVM_INVALID_STA)
                return;
 
        rcu_read_lock();
@@ -1426,7 +1426,7 @@ int iwl_mvm_enter_d0i3(struct iwl_op_mode *op_mode)
                mvm->d0i3_offloading = !d0i3_iter_data.disable_offloading;
        } else {
                WARN_ON_ONCE(d0i3_iter_data.vif_count > 1);
-               mvm->d0i3_ap_sta_id = IWL_MVM_STATION_COUNT;
+               mvm->d0i3_ap_sta_id = IWL_MVM_INVALID_STA;
                mvm->d0i3_offloading = false;
        }
 
@@ -1439,7 +1439,7 @@ int iwl_mvm_enter_d0i3(struct iwl_op_mode *op_mode)
                return ret;
 
        /* configure wowlan configuration only if needed */
-       if (mvm->d0i3_ap_sta_id != IWL_MVM_STATION_COUNT) {
+       if (mvm->d0i3_ap_sta_id != IWL_MVM_INVALID_STA) {
                /* wake on beacons only if beacon storing isn't supported */
                if (!fw_has_capa(&mvm->fw->ucode_capa,
                                 IWL_UCODE_TLV_CAPA_BEACON_STORING))
@@ -1516,7 +1516,7 @@ void iwl_mvm_d0i3_enable_tx(struct iwl_mvm *mvm, __le16 *qos_seq)
 
        spin_lock_bh(&mvm->d0i3_tx_lock);
 
-       if (mvm->d0i3_ap_sta_id == IWL_MVM_STATION_COUNT)
+       if (mvm->d0i3_ap_sta_id == IWL_MVM_INVALID_STA)
                goto out;
 
        IWL_DEBUG_RPM(mvm, "re-enqueue packets\n");
@@ -1554,7 +1554,7 @@ out:
        }
        clear_bit(IWL_MVM_STATUS_IN_D0I3, &mvm->status);
        wake_up(&mvm->d0i3_exit_waitq);
-       mvm->d0i3_ap_sta_id = IWL_MVM_STATION_COUNT;
+       mvm->d0i3_ap_sta_id = IWL_MVM_INVALID_STA;
        if (wake_queues)
                ieee80211_wake_queues(mvm->hw);
 
index c1bf67f04cf60fc161de02ed0d38b18665e681a6..861d54641d1e2099569ff643f6e52dac0c7530bf 100644 (file)
@@ -351,7 +351,7 @@ void iwl_mvm_rx_rx_mpdu(struct iwl_mvm *mvm, struct napi_struct *napi,
 
                id >>= RX_MDPU_RES_STATUS_STA_ID_SHIFT;
 
-               if (!WARN_ON_ONCE(id >= IWL_MVM_STATION_COUNT)) {
+               if (!WARN_ON_ONCE(id >= ARRAY_SIZE(mvm->fw_id_to_mac_id))) {
                        sta = rcu_dereference(mvm->fw_id_to_mac_id[id]);
                        if (IS_ERR(sta))
                                sta = NULL;
@@ -693,7 +693,7 @@ void iwl_mvm_handle_rx_statistics(struct iwl_mvm *mvm,
                }
 
                rcu_read_lock();
-               for (i = 0; i < IWL_MVM_STATION_COUNT; i++) {
+               for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) {
                        struct iwl_mvm_sta *sta;
 
                        if (!energy[i])
index 85f7c83995b95fba6d704f60727c5b81122f4055..29c9c56ed3fa3431dc0c903b6e0ed02481636b87 100644 (file)
@@ -841,7 +841,7 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
        if (le16_to_cpu(desc->status) & IWL_RX_MPDU_STATUS_SRC_STA_FOUND) {
                u8 id = desc->sta_id_flags & IWL_RX_MPDU_SIF_STA_ID_MASK;
 
-               if (!WARN_ON_ONCE(id >= IWL_MVM_STATION_COUNT)) {
+               if (!WARN_ON_ONCE(id >= ARRAY_SIZE(mvm->fw_id_to_mac_id))) {
                        sta = rcu_dereference(mvm->fw_id_to_mac_id[id]);
                        if (IS_ERR(sta))
                                sta = NULL;
index 101fb04a8573492c51a343c3d41b0eb1df12cbbe..539b06bf08031b321eed18ab6b51614d812e783c 100644 (file)
@@ -235,7 +235,7 @@ static int iwl_mvm_sf_config(struct iwl_mvm *mvm, u8 sta_id,
                iwl_mvm_fill_sf_command(mvm, &sf_cmd, NULL);
                break;
        case SF_FULL_ON:
-               if (sta_id == IWL_MVM_STATION_COUNT) {
+               if (sta_id == IWL_MVM_INVALID_STA) {
                        IWL_ERR(mvm,
                                "No station: Cannot switch SF to FULL_ON\n");
                        return -EINVAL;
@@ -276,12 +276,12 @@ int iwl_mvm_sf_update(struct iwl_mvm *mvm, struct ieee80211_vif *changed_vif,
                      bool remove_vif)
 {
        enum iwl_sf_state new_state;
-       u8 sta_id = IWL_MVM_STATION_COUNT;
+       u8 sta_id = IWL_MVM_INVALID_STA;
        struct iwl_mvm_vif *mvmvif = NULL;
        struct iwl_mvm_active_iface_iterator_data data = {
                .ignore_vif = changed_vif,
                .sta_vif_state = SF_UNINIT,
-               .sta_vif_ap_sta_id = IWL_MVM_STATION_COUNT,
+               .sta_vif_ap_sta_id = IWL_MVM_INVALID_STA,
        };
 
        /*
index 566d57ec86ce4c67fee782f512692edf724c2bc3..fb031197266ee34c848a1c5818fe50a7c9f20ca0 100644 (file)
@@ -98,7 +98,7 @@ static int iwl_mvm_find_free_sta_id(struct iwl_mvm *mvm,
                reserved_ids = BIT(0);
 
        /* Don't take rcu_read_lock() since we are protected by mvm->mutex */
-       for (sta_id = 0; sta_id < IWL_MVM_STATION_COUNT; sta_id++) {
+       for (sta_id = 0; sta_id < ARRAY_SIZE(mvm->fw_id_to_mac_id); sta_id++) {
                if (BIT(sta_id) & reserved_ids)
                        continue;
 
@@ -106,7 +106,7 @@ static int iwl_mvm_find_free_sta_id(struct iwl_mvm *mvm,
                                               lockdep_is_held(&mvm->mutex)))
                        return sta_id;
        }
-       return IWL_MVM_STATION_COUNT;
+       return IWL_MVM_INVALID_STA;
 }
 
 /* send station add/update command to firmware */
@@ -1235,7 +1235,7 @@ int iwl_mvm_add_sta(struct iwl_mvm *mvm,
        else
                sta_id = mvm_sta->sta_id;
 
-       if (sta_id == IWL_MVM_STATION_COUNT)
+       if (sta_id == IWL_MVM_INVALID_STA)
                return -ENOSPC;
 
        spin_lock_init(&mvm_sta->lock);
@@ -1317,10 +1317,10 @@ update_fw:
 
        if (vif->type == NL80211_IFTYPE_STATION) {
                if (!sta->tdls) {
-                       WARN_ON(mvmvif->ap_sta_id != IWL_MVM_STATION_COUNT);
+                       WARN_ON(mvmvif->ap_sta_id != IWL_MVM_INVALID_STA);
                        mvmvif->ap_sta_id = sta_id;
                } else {
-                       WARN_ON(mvmvif->ap_sta_id == IWL_MVM_STATION_COUNT);
+                       WARN_ON(mvmvif->ap_sta_id == IWL_MVM_INVALID_STA);
                }
        }
 
@@ -1571,11 +1571,11 @@ int iwl_mvm_rm_sta(struct iwl_mvm *mvm,
                                return ret;
 
                        /* unassoc - go ahead - remove the AP STA now */
-                       mvmvif->ap_sta_id = IWL_MVM_STATION_COUNT;
+                       mvmvif->ap_sta_id = IWL_MVM_INVALID_STA;
 
                        /* clear d0i3_ap_sta_id if no longer relevant */
                        if (mvm->d0i3_ap_sta_id == sta_id)
-                               mvm->d0i3_ap_sta_id = IWL_MVM_STATION_COUNT;
+                               mvm->d0i3_ap_sta_id = IWL_MVM_INVALID_STA;
                }
        }
 
@@ -1584,7 +1584,7 @@ int iwl_mvm_rm_sta(struct iwl_mvm *mvm,
         * before the STA is removed.
         */
        if (WARN_ON_ONCE(mvm->tdls_cs.peer.sta_id == sta_id)) {
-               mvm->tdls_cs.peer.sta_id = IWL_MVM_STATION_COUNT;
+               mvm->tdls_cs.peer.sta_id = IWL_MVM_INVALID_STA;
                cancel_delayed_work(&mvm->tdls_cs.dwork);
        }
 
@@ -1641,7 +1641,7 @@ int iwl_mvm_allocate_int_sta(struct iwl_mvm *mvm,
 {
        if (!test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) {
                sta->sta_id = iwl_mvm_find_free_sta_id(mvm, iftype);
-               if (WARN_ON_ONCE(sta->sta_id == IWL_MVM_STATION_COUNT))
+               if (WARN_ON_ONCE(sta->sta_id == IWL_MVM_INVALID_STA))
                        return -ENOSPC;
        }
 
@@ -1656,7 +1656,7 @@ void iwl_mvm_dealloc_int_sta(struct iwl_mvm *mvm, struct iwl_mvm_int_sta *sta)
 {
        RCU_INIT_POINTER(mvm->fw_id_to_mac_id[sta->sta_id], NULL);
        memset(sta, 0, sizeof(struct iwl_mvm_int_sta));
-       sta->sta_id = IWL_MVM_STATION_COUNT;
+       sta->sta_id = IWL_MVM_INVALID_STA;
 }
 
 static int iwl_mvm_add_int_sta_common(struct iwl_mvm *mvm,
@@ -1837,7 +1837,7 @@ int iwl_mvm_send_add_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
        if (vif->type == NL80211_IFTYPE_ADHOC)
                baddr = vif->bss_conf.bssid;
 
-       if (WARN_ON_ONCE(bsta->sta_id == IWL_MVM_STATION_COUNT))
+       if (WARN_ON_ONCE(bsta->sta_id == IWL_MVM_INVALID_STA))
                return -ENOSPC;
 
        ret = iwl_mvm_add_int_sta_common(mvm, bsta, baddr,
@@ -2742,7 +2742,7 @@ static struct iwl_mvm_sta *iwl_mvm_get_key_sta(struct iwl_mvm *mvm,
         * station ID, then use AP's station ID.
         */
        if (vif->type == NL80211_IFTYPE_STATION &&
-           mvmvif->ap_sta_id != IWL_MVM_STATION_COUNT) {
+           mvmvif->ap_sta_id != IWL_MVM_INVALID_STA) {
                u8 sta_id = mvmvif->ap_sta_id;
 
                sta = rcu_dereference_check(mvm->fw_id_to_mac_id[sta_id],
@@ -2954,7 +2954,7 @@ static inline u8 *iwl_mvm_get_mac_addr(struct iwl_mvm *mvm,
                return sta->addr;
 
        if (vif->type == NL80211_IFTYPE_STATION &&
-           mvmvif->ap_sta_id != IWL_MVM_STATION_COUNT) {
+           mvmvif->ap_sta_id != IWL_MVM_INVALID_STA) {
                u8 sta_id = mvmvif->ap_sta_id;
                sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[sta_id],
                                                lockdep_is_held(&mvm->mutex));
@@ -3151,7 +3151,7 @@ int iwl_mvm_remove_sta_key(struct iwl_mvm *mvm,
 {
        bool mcast = !(keyconf->flags & IEEE80211_KEY_FLAG_PAIRWISE);
        struct iwl_mvm_sta *mvm_sta;
-       u8 sta_id = IWL_MVM_STATION_COUNT;
+       u8 sta_id = IWL_MVM_INVALID_STA;
        int ret, i;
 
        lockdep_assert_held(&mvm->mutex);
@@ -3408,7 +3408,7 @@ void iwl_mvm_modify_all_sta_disable_tx(struct iwl_mvm *mvm,
        lockdep_assert_held(&mvm->mutex);
 
        /* Block/unblock all the stations of the given mvmvif */
-       for (i = 0; i < IWL_MVM_STATION_COUNT; i++) {
+       for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) {
                sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i],
                                                lockdep_is_held(&mvm->mutex));
                if (IS_ERR_OR_NULL(sta))
index 9f160fc58cd079395cafeff5995574d22225a161..df7cd87199ea298565729a79c561117cbcc5edc1 100644 (file)
@@ -6,6 +6,7 @@
  * GPL LICENSE SUMMARY
  *
  * Copyright(c) 2014 Intel Mobile Communications GmbH
+ * Copyright(c) 2017 Intel Deutschland GmbH
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of version 2 of the GNU General Public License as
@@ -31,6 +32,7 @@
  * BSD LICENSE
  *
  * Copyright(c) 2014 Intel Mobile Communications GmbH
+ * Copyright(c) 2017 Intel Deutschland GmbH
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -78,7 +80,7 @@ void iwl_mvm_teardown_tdls_peers(struct iwl_mvm *mvm)
 
        lockdep_assert_held(&mvm->mutex);
 
-       for (i = 0; i < IWL_MVM_STATION_COUNT; i++) {
+       for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) {
                sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i],
                                                lockdep_is_held(&mvm->mutex));
                if (!sta || IS_ERR(sta) || !sta->tdls)
@@ -101,7 +103,7 @@ int iwl_mvm_tdls_sta_count(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
 
        lockdep_assert_held(&mvm->mutex);
 
-       for (i = 0; i < IWL_MVM_STATION_COUNT; i++) {
+       for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) {
                sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i],
                                                lockdep_is_held(&mvm->mutex));
                if (!sta || IS_ERR(sta) || !sta->tdls)
@@ -145,7 +147,7 @@ static void iwl_mvm_tdls_config(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
 
        /* populate TDLS peer data */
        cnt = 0;
-       for (i = 0; i < IWL_MVM_STATION_COUNT; i++) {
+       for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) {
                sta = rcu_dereference_protected(mvm->fw_id_to_mac_id[i],
                                                lockdep_is_held(&mvm->mutex));
                if (IS_ERR_OR_NULL(sta) || !sta->tdls)
@@ -251,7 +253,7 @@ static void iwl_mvm_tdls_update_cs_state(struct iwl_mvm *mvm,
                        iwl_read_prph(mvm->trans, DEVICE_SYSTEM_TIME_REG);
 
        if (state == IWL_MVM_TDLS_SW_IDLE)
-               mvm->tdls_cs.cur_sta_id = IWL_MVM_STATION_COUNT;
+               mvm->tdls_cs.cur_sta_id = IWL_MVM_INVALID_STA;
 }
 
 void iwl_mvm_rx_tdls_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb)
@@ -305,7 +307,7 @@ iwl_mvm_tdls_check_action(struct iwl_mvm *mvm,
 
        /* get the existing peer if it's there */
        if (mvm->tdls_cs.state != IWL_MVM_TDLS_SW_IDLE &&
-           mvm->tdls_cs.cur_sta_id != IWL_MVM_STATION_COUNT) {
+           mvm->tdls_cs.cur_sta_id != IWL_MVM_INVALID_STA) {
                struct ieee80211_sta *sta = rcu_dereference_protected(
                                mvm->fw_id_to_mac_id[mvm->tdls_cs.cur_sta_id],
                                lockdep_is_held(&mvm->mutex));
@@ -523,7 +525,7 @@ void iwl_mvm_tdls_ch_switch_work(struct work_struct *work)
        iwl_mvm_tdls_update_cs_state(mvm, IWL_MVM_TDLS_SW_IDLE);
 
        /* station might be gone, in that case do nothing */
-       if (mvm->tdls_cs.peer.sta_id == IWL_MVM_STATION_COUNT)
+       if (mvm->tdls_cs.peer.sta_id == IWL_MVM_INVALID_STA)
                goto out;
 
        sta = rcu_dereference_protected(
@@ -573,7 +575,7 @@ iwl_mvm_tdls_channel_switch(struct ieee80211_hw *hw,
                       sta->addr, chandef->chan->center_freq, chandef->width);
 
        /* we only support a single peer for channel switching */
-       if (mvm->tdls_cs.peer.sta_id != IWL_MVM_STATION_COUNT) {
+       if (mvm->tdls_cs.peer.sta_id != IWL_MVM_INVALID_STA) {
                IWL_DEBUG_TDLS(mvm,
                               "Existing peer. Can't start switch with %pM\n",
                               sta->addr);
@@ -633,7 +635,7 @@ void iwl_mvm_tdls_cancel_channel_switch(struct ieee80211_hw *hw,
        IWL_DEBUG_TDLS(mvm, "TDLS cancel channel switch with %pM\n", sta->addr);
 
        /* we only support a single peer for channel switching */
-       if (mvm->tdls_cs.peer.sta_id == IWL_MVM_STATION_COUNT) {
+       if (mvm->tdls_cs.peer.sta_id == IWL_MVM_INVALID_STA) {
                IWL_DEBUG_TDLS(mvm, "No ch switch peer - %pM\n", sta->addr);
                goto out;
        }
@@ -654,7 +656,7 @@ void iwl_mvm_tdls_cancel_channel_switch(struct ieee80211_hw *hw,
            mvm->tdls_cs.state != IWL_MVM_TDLS_SW_IDLE)
                wait_for_phy = true;
 
-       mvm->tdls_cs.peer.sta_id = IWL_MVM_STATION_COUNT;
+       mvm->tdls_cs.peer.sta_id = IWL_MVM_INVALID_STA;
        dev_kfree_skb(mvm->tdls_cs.peer.skb);
        mvm->tdls_cs.peer.skb = NULL;
 
@@ -697,7 +699,7 @@ iwl_mvm_tdls_recv_channel_switch(struct ieee80211_hw *hw,
        if (params->action_code == WLAN_TDLS_CHANNEL_SWITCH_RESPONSE &&
            params->status != 0 &&
            mvm->tdls_cs.state == IWL_MVM_TDLS_SW_REQ_SENT &&
-           mvm->tdls_cs.cur_sta_id != IWL_MVM_STATION_COUNT) {
+           mvm->tdls_cs.cur_sta_id != IWL_MVM_INVALID_STA) {
                struct ieee80211_sta *cur_sta;
 
                /* make sure it's the same peer */
index a1947d6f3a2cc1e676663885d65bde5b31c11773..16ce8a56b5b94d9b5356011a98e19888be8faef9 100644 (file)
@@ -80,7 +80,7 @@ void iwl_mvm_tof_init(struct iwl_mvm *mvm)
        if (IWL_MVM_TOF_IS_RESPONDER) {
                tof_data->responder_cfg.sub_grp_cmd_id =
                        cpu_to_le32(TOF_RESPONDER_CONFIG_CMD);
-               tof_data->responder_cfg.sta_id = IWL_MVM_STATION_COUNT;
+               tof_data->responder_cfg.sta_id = IWL_MVM_INVALID_STA;
        }
 #endif
 
index bec7d9c46087d3c8fed48d5858f4f116797eceed..f9cbd197246f7ba6ba9e5e0af816cbec54eb9790 100644 (file)
@@ -356,7 +356,7 @@ static void iwl_mvm_tt_tx_protection(struct iwl_mvm *mvm, bool enable)
        struct iwl_mvm_sta *mvmsta;
        int i, err;
 
-       for (i = 0; i < IWL_MVM_STATION_COUNT; i++) {
+       for (i = 0; i < ARRAY_SIZE(mvm->fw_id_to_mac_id); i++) {
                mvmsta = iwl_mvm_sta_from_staid_protected(mvm, i);
                if (!mvmsta)
                        continue;
index ffbbe7228f5d4ac06edf02a1731b1653330af3f6..00b6eaca08925cd7e557a22836b10f17e3fa5216 100644 (file)
@@ -598,7 +598,7 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb)
                           is_multicast_ether_addr(hdr->addr1)) {
                        u8 ap_sta_id = ACCESS_ONCE(mvmvif->ap_sta_id);
 
-                       if (ap_sta_id != IWL_MVM_STATION_COUNT)
+                       if (ap_sta_id != IWL_MVM_INVALID_STA)
                                sta_id = ap_sta_id;
                } else if (iwl_mvm_is_dqa_supported(mvm) &&
                           info.control.vif->type == NL80211_IFTYPE_STATION &&
@@ -896,7 +896,7 @@ static int iwl_mvm_tx_mpdu(struct iwl_mvm *mvm, struct sk_buff *skb,
        if (WARN_ON_ONCE(!mvmsta))
                return -1;
 
-       if (WARN_ON_ONCE(mvmsta->sta_id == IWL_MVM_STATION_COUNT))
+       if (WARN_ON_ONCE(mvmsta->sta_id == IWL_MVM_INVALID_STA))
                return -1;
 
        dev_cmd = iwl_mvm_set_tx_params(mvm, skb, info, hdrlen,
@@ -1036,7 +1036,7 @@ int iwl_mvm_tx_skb(struct iwl_mvm *mvm, struct sk_buff *skb,
        if (WARN_ON_ONCE(!mvmsta))
                return -1;
 
-       if (WARN_ON_ONCE(mvmsta->sta_id == IWL_MVM_STATION_COUNT))
+       if (WARN_ON_ONCE(mvmsta->sta_id == IWL_MVM_INVALID_STA))
                return -1;
 
        memcpy(&info, skb->cb, sizeof(info));
index 8f199ff9be8702fa2b9b28ae11eb3142fad510fe..3054945b949abec69311576002a1eab8b03c609f 100644 (file)
@@ -824,7 +824,7 @@ int iwl_mvm_send_lq_cmd(struct iwl_mvm *mvm, struct iwl_lq_cmd *lq, bool init)
                .data = { lq, },
        };
 
-       if (WARN_ON(lq->sta_id == IWL_MVM_STATION_COUNT))
+       if (WARN_ON(lq->sta_id == IWL_MVM_INVALID_STA))
                return -EINVAL;
 
        return iwl_mvm_send_cmd(mvm, &cmd);