wl12xx: move ba fields into wlvif
authorEliad Peller <eliad@wizery.com>
Wed, 5 Oct 2011 09:56:04 +0000 (11:56 +0200)
committerLuciano Coelho <coelho@ti.com>
Fri, 7 Oct 2011 05:32:54 +0000 (08:32 +0300)
move ba_fields into the per-interface data, rather than
being global.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/wl12xx/debugfs.c
drivers/net/wireless/wl12xx/event.c
drivers/net/wireless/wl12xx/init.c
drivers/net/wireless/wl12xx/main.c
drivers/net/wireless/wl12xx/tx.c
drivers/net/wireless/wl12xx/wl12xx.h

index e53f96830c2f2214cee5148a73c673d49b214ee7..ee42a43d6a66f8327792c3360aabff7f4c1ce8d2 100644 (file)
@@ -357,8 +357,6 @@ static ssize_t driver_state_read(struct file *file, char __user *user_buf,
        DRIVER_STATE_PRINT_INT(noise);
        DRIVER_STATE_PRINT_LHEX(ap_hlid_map[0]);
        DRIVER_STATE_PRINT_INT(last_tx_hlid);
-       DRIVER_STATE_PRINT_INT(ba_support);
-       DRIVER_STATE_PRINT_HEX(ba_rx_bitmap);
        DRIVER_STATE_PRINT_HEX(ap_fw_ps_map);
        DRIVER_STATE_PRINT_LHEX(ap_ps_map);
        DRIVER_STATE_PRINT_HEX(quirks);
index 775ad952ac8fe297529f5d62976d2b4af439856e..8c31274228ead2dddf9e0d11a2d7c2c2e9ae072f 100644 (file)
@@ -184,9 +184,9 @@ static void wl1271_event_rssi_trigger(struct wl1271 *wl,
 static void wl1271_stop_ba_event(struct wl1271 *wl, struct wl12xx_vif *wlvif)
 {
        if (wlvif->bss_type != BSS_TYPE_AP_BSS) {
-               if (!wl->ba_rx_bitmap)
+               if (!wlvif->sta.ba_rx_bitmap)
                        return;
-               ieee80211_stop_rx_ba_session(wl->vif, wl->ba_rx_bitmap,
+               ieee80211_stop_rx_ba_session(wl->vif, wlvif->sta.ba_rx_bitmap,
                                             wl->vif->bss_conf.bssid);
        } else {
                int i;
@@ -306,9 +306,9 @@ static int wl1271_event_process(struct wl1271 *wl, struct event_mailbox *mbox)
                wl1271_debug(DEBUG_EVENT, "BA_SESSION_RX_CONSTRAINT_EVENT_ID. "
                             "ba_allowed = 0x%x", mbox->rx_ba_allowed);
 
-               wl->ba_allowed = !!mbox->rx_ba_allowed;
+               wlvif->ba_allowed = !!mbox->rx_ba_allowed;
 
-               if (wl->vif && !wl->ba_allowed)
+               if (wl->vif && !wlvif->ba_allowed)
                        wl1271_stop_ba_event(wl, wlvif);
        }
 
index 1eaa0a3d92731589a6a862599808d9221e3620fe..80e89e319879669113d77931aa9b12d67cc8f204 100644 (file)
@@ -486,18 +486,17 @@ int wl1271_init_ap_rates(struct wl1271 *wl, struct wl12xx_vif *wlvif)
 static int wl1271_set_ba_policies(struct wl1271 *wl, struct wl12xx_vif *wlvif)
 {
        /* Reset the BA RX indicators */
-       wl->ba_rx_bitmap = 0;
-       wl->ba_allowed = true;
+       wlvif->ba_allowed = true;
        wl->ba_rx_session_count = 0;
 
        /* BA is supported in STA/AP modes */
        if (wlvif->bss_type != BSS_TYPE_AP_BSS &&
            wlvif->bss_type != BSS_TYPE_STA_BSS) {
-               wl->ba_support = false;
+               wlvif->ba_support = false;
                return 0;
        }
 
-       wl->ba_support = true;
+       wlvif->ba_support = true;
 
        /* 802.11n initiator BA session setting */
        return wl12xx_acx_set_ba_initiator_policy(wl, wlvif);
index 72ab25657dab900559cc6f8ae490b382a8e92719..984dae881a8d6cc0db11d24a181b2d1bef314bc7 100644 (file)
@@ -4106,7 +4106,7 @@ static int wl1271_op_ampdu_action(struct ieee80211_hw *hw,
 
        if (wlvif->bss_type == BSS_TYPE_STA_BSS) {
                hlid = wlvif->sta.hlid;
-               ba_bitmap = &wl->ba_rx_bitmap;
+               ba_bitmap = &wlvif->sta.ba_rx_bitmap;
        } else if (wlvif->bss_type == BSS_TYPE_AP_BSS) {
                struct wl1271_station *wl_sta;
 
@@ -4127,7 +4127,7 @@ static int wl1271_op_ampdu_action(struct ieee80211_hw *hw,
 
        switch (action) {
        case IEEE80211_AMPDU_RX_START:
-               if (!wl->ba_support || !wl->ba_allowed) {
+               if (!wlvif->ba_support || !wlvif->ba_allowed) {
                        ret = -ENOTSUPP;
                        break;
                }
index 509ae10f0e03096e0a2f375b32ab8f7f2ed9f27c..6ce61635f3bdbf3dd602783894c1a8b77b0ce7d7 100644 (file)
@@ -941,7 +941,7 @@ void wl1271_tx_reset(struct wl1271 *wl, bool reset_tx_queues)
                        }
                }
 
-               wl->ba_rx_bitmap = 0;
+               wlvif->sta.ba_rx_bitmap = 0;
        }
 
        for (i = 0; i < NUM_TX_QUEUES; i++)
index 5a82450d8c70270fafcc2c4ab57f8fa93d71cf65..fcc779147c1c2c12551adb80edce89f3ea8d099b 100644 (file)
@@ -546,11 +546,6 @@ struct wl1271 {
        /* bands supported by this instance of wl12xx */
        struct ieee80211_supported_band bands[IEEE80211_NUM_BANDS];
 
-       /* RX BA constraint value */
-       bool ba_support;
-       u8 ba_rx_bitmap;
-       bool ba_allowed;
-
        int tcxo_clock;
 
        /*
@@ -605,6 +600,7 @@ struct wl12xx_vif {
        union {
                struct {
                        u8 hlid;
+                       u8 ba_rx_bitmap;
                } sta;
                struct {
                        u8 global_hlid;
@@ -652,6 +648,10 @@ struct wl12xx_vif {
 
        int rssi_thold;
        int last_rssi_event;
+
+       /* RX BA constraint value */
+       bool ba_support;
+       bool ba_allowed;
 };
 
 static inline struct wl12xx_vif *wl12xx_vif_to_data(struct ieee80211_vif *vif)