Changeset 32018


Ignore:
Timestamp:
2012-06-01T12:26:02+02:00 (6 years ago)
Author:
nbd
Message:

mac80211: merge some pending fixes

Location:
trunk/package/mac80211/patches
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/mac80211/patches/300-pending_work.patch

    r32002 r32018  
    3636--- a/net/mac80211/agg-rx.c 
    3737+++ b/net/mac80211/agg-rx.c 
    38 @@ -200,6 +200,8 @@ static void ieee80211_send_addba_resp(st 
     38@@ -145,15 +145,20 @@ static void sta_rx_agg_session_timer_exp 
     39        struct tid_ampdu_rx *tid_rx; 
     40        unsigned long timeout; 
     41  
     42+       rcu_read_lock(); 
     43        tid_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[*ptid]); 
     44-       if (!tid_rx) 
     45+       if (!tid_rx) { 
     46+               rcu_read_unlock(); 
     47                return; 
     48+       } 
     49  
     50        timeout = tid_rx->last_rx + TU_TO_JIFFIES(tid_rx->timeout); 
     51        if (time_is_after_jiffies(timeout)) { 
     52                mod_timer(&tid_rx->session_timer, timeout); 
     53+               rcu_read_unlock(); 
     54                return; 
     55        } 
     56+       rcu_read_unlock(); 
     57  
     58 #ifdef CONFIG_MAC80211_HT_DEBUG 
     59        printk(KERN_DEBUG "rx session timer expired on tid %d\n", (u16)*ptid); 
     60@@ -200,6 +205,8 @@ static void ieee80211_send_addba_resp(st 
    3961                memcpy(mgmt->bssid, sdata->u.mgd.bssid, ETH_ALEN); 
    4062        else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) 
     
    120142         * set_multicast_list will be invoked by the networking core 
    121143         * which will check whether any increments here were done in 
    122 @@ -848,6 +825,72 @@ static void ieee80211_if_setup(struct ne 
     144@@ -642,6 +619,8 @@ static void ieee80211_do_stop(struct iee 
     145                ieee80211_configure_filter(local); 
     146                break; 
     147        default: 
     148+               flush_work(&local->hw_roc_start); 
     149+               flush_work(&local->hw_roc_done); 
     150                flush_work(&sdata->work); 
     151                /* 
     152                 * When we get here, the interface is marked down. 
     153@@ -848,6 +827,72 @@ static void ieee80211_if_setup(struct ne 
    123154        dev->destructor = free_netdev; 
    124155 } 
     
    193224 { 
    194225        struct ieee80211_sub_if_data *sdata = 
    195 @@ -952,6 +995,9 @@ static void ieee80211_iface_work(struct  
     226@@ -952,6 +997,9 @@ static void ieee80211_iface_work(struct  
    196227                                break; 
    197228                        ieee80211_mesh_rx_queued_mgmt(sdata, skb); 
     
    268299        WLAN_STA_MFP, 
    269300        WLAN_STA_BLOCK_BA, 
     301--- a/net/mac80211/util.c 
     302+++ b/net/mac80211/util.c 
     303@@ -804,7 +804,7 @@ void ieee80211_set_wmm_default(struct ie 
     304        struct ieee80211_local *local = sdata->local; 
     305        struct ieee80211_tx_queue_params qparam; 
     306        int ac; 
     307-       bool use_11b; 
     308+       bool use_11b, enable_qos; 
     309        int aCWmin, aCWmax; 
     310  
     311        if (!local->ops->conf_tx) 
     312@@ -818,6 +818,13 @@ void ieee80211_set_wmm_default(struct ie 
     313        use_11b = (local->hw.conf.channel->band == IEEE80211_BAND_2GHZ) && 
     314                 !(sdata->flags & IEEE80211_SDATA_OPERATING_GMODE); 
     315  
     316+       /* 
     317+        * By default disable QoS in STA mode for old access points, which do 
     318+        * not support 802.11e. New APs will provide proper queue parameters, 
     319+        * that we will configure later. 
     320+        */ 
     321+       enable_qos = (sdata->vif.type != NL80211_IFTYPE_STATION); 
     322+ 
     323        for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { 
     324                /* Set defaults according to 802.11-2007 Table 7-37 */ 
     325                aCWmax = 1023; 
     326@@ -826,38 +833,47 @@ void ieee80211_set_wmm_default(struct ie 
     327                else 
     328                        aCWmin = 15; 
     329  
     330-               switch (ac) { 
     331-               case IEEE80211_AC_BK: 
     332-                       qparam.cw_max = aCWmax; 
     333-                       qparam.cw_min = aCWmin; 
     334-                       qparam.txop = 0; 
     335-                       qparam.aifs = 7; 
     336-                       break; 
     337-               default: /* never happens but let's not leave undefined */ 
     338-               case IEEE80211_AC_BE: 
     339+               if (enable_qos) { 
     340+                       switch (ac) { 
     341+                       case IEEE80211_AC_BK: 
     342+                               qparam.cw_max = aCWmax; 
     343+                               qparam.cw_min = aCWmin; 
     344+                               qparam.txop = 0; 
     345+                               qparam.aifs = 7; 
     346+                               break; 
     347+                       /* never happens but let's not leave undefined */ 
     348+                       default: 
     349+                       case IEEE80211_AC_BE: 
     350+                               qparam.cw_max = aCWmax; 
     351+                               qparam.cw_min = aCWmin; 
     352+                               qparam.txop = 0; 
     353+                               qparam.aifs = 3; 
     354+                               break; 
     355+                       case IEEE80211_AC_VI: 
     356+                               qparam.cw_max = aCWmin; 
     357+                               qparam.cw_min = (aCWmin + 1) / 2 - 1; 
     358+                               if (use_11b) 
     359+                                       qparam.txop = 6016/32; 
     360+                               else 
     361+                                       qparam.txop = 3008/32; 
     362+                               qparam.aifs = 2; 
     363+                               break; 
     364+                       case IEEE80211_AC_VO: 
     365+                               qparam.cw_max = (aCWmin + 1) / 2 - 1; 
     366+                               qparam.cw_min = (aCWmin + 1) / 4 - 1; 
     367+                               if (use_11b) 
     368+                                       qparam.txop = 3264/32; 
     369+                               else 
     370+                                       qparam.txop = 1504/32; 
     371+                               qparam.aifs = 2; 
     372+                               break; 
     373+                       } 
     374+               } else { 
     375+                       /* Confiure old 802.11b/g medium access rules. */ 
     376                        qparam.cw_max = aCWmax; 
     377                        qparam.cw_min = aCWmin; 
     378                        qparam.txop = 0; 
     379-                       qparam.aifs = 3; 
     380-                       break; 
     381-               case IEEE80211_AC_VI: 
     382-                       qparam.cw_max = aCWmin; 
     383-                       qparam.cw_min = (aCWmin + 1) / 2 - 1; 
     384-                       if (use_11b) 
     385-                               qparam.txop = 6016/32; 
     386-                       else 
     387-                               qparam.txop = 3008/32; 
     388                        qparam.aifs = 2; 
     389-                       break; 
     390-               case IEEE80211_AC_VO: 
     391-                       qparam.cw_max = (aCWmin + 1) / 2 - 1; 
     392-                       qparam.cw_min = (aCWmin + 1) / 4 - 1; 
     393-                       if (use_11b) 
     394-                               qparam.txop = 3264/32; 
     395-                       else 
     396-                               qparam.txop = 1504/32; 
     397-                       qparam.aifs = 2; 
     398-                       break; 
     399                } 
     400  
     401                qparam.uapsd = false; 
     402@@ -866,12 +882,8 @@ void ieee80211_set_wmm_default(struct ie 
     403                drv_conf_tx(local, sdata, ac, &qparam); 
     404        } 
     405  
     406-       /* after reinitialize QoS TX queues setting to default, 
     407-        * disable QoS at all */ 
     408- 
     409        if (sdata->vif.type != NL80211_IFTYPE_MONITOR) { 
     410-               sdata->vif.bss_conf.qos = 
     411-                       sdata->vif.type != NL80211_IFTYPE_STATION; 
     412+               sdata->vif.bss_conf.qos = enable_qos; 
     413                if (bss_notify) 
     414                        ieee80211_bss_info_change_notify(sdata, 
     415                                                         BSS_CHANGED_QOS); 
     416--- a/drivers/net/wireless/ath/ath9k/beacon.c 
     417+++ b/drivers/net/wireless/ath/ath9k/beacon.c 
     418@@ -48,7 +48,10 @@ int ath_beaconq_config(struct ath_softc  
     419                txq = sc->tx.txq_map[WME_AC_BE]; 
     420                ath9k_hw_get_txq_props(ah, txq->axq_qnum, &qi_be); 
     421                qi.tqi_aifs = qi_be.tqi_aifs; 
     422-               qi.tqi_cwmin = 4*qi_be.tqi_cwmin; 
     423+               if (ah->slottime == ATH9K_SLOT_TIME_20) 
     424+                       qi.tqi_cwmin = 2*qi_be.tqi_cwmin; 
     425+               else 
     426+                       qi.tqi_cwmin = 4*qi_be.tqi_cwmin; 
     427                qi.tqi_cwmax = qi_be.tqi_cwmax; 
     428        } 
     429  
     430--- a/net/mac80211/mlme.c 
     431+++ b/net/mac80211/mlme.c 
     432@@ -1220,6 +1220,22 @@ static void ieee80211_sta_wmm_params(str 
     433        sdata->vif.bss_conf.qos = true; 
     434 } 
     435  
     436+static void __ieee80211_stop_poll(struct ieee80211_sub_if_data *sdata) 
     437+{ 
     438+       lockdep_assert_held(&sdata->local->mtx); 
     439+ 
     440+       sdata->u.mgd.flags &= ~(IEEE80211_STA_CONNECTION_POLL | 
     441+                               IEEE80211_STA_BEACON_POLL); 
     442+       ieee80211_run_deferred_scan(sdata->local); 
     443+} 
     444+ 
     445+static void ieee80211_stop_poll(struct ieee80211_sub_if_data *sdata) 
     446+{ 
     447+       mutex_lock(&sdata->local->mtx); 
     448+       __ieee80211_stop_poll(sdata); 
     449+       mutex_unlock(&sdata->local->mtx); 
     450+} 
     451+ 
     452 static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata, 
     453                                           u16 capab, bool erp_valid, u8 erp) 
     454 { 
     455@@ -1285,8 +1301,7 @@ static void ieee80211_set_associated(str 
     456        sdata->u.mgd.flags |= IEEE80211_STA_RESET_SIGNAL_AVE; 
     457  
     458        /* just to be sure */ 
     459-       sdata->u.mgd.flags &= ~(IEEE80211_STA_CONNECTION_POLL | 
     460-                               IEEE80211_STA_BEACON_POLL); 
     461+       ieee80211_stop_poll(sdata); 
     462  
     463        ieee80211_led_assoc(local, 1); 
     464  
     465@@ -1456,8 +1471,7 @@ static void ieee80211_reset_ap_probe(str 
     466                return; 
     467        } 
     468  
     469-       ifmgd->flags &= ~(IEEE80211_STA_CONNECTION_POLL | 
     470-                         IEEE80211_STA_BEACON_POLL); 
     471+       __ieee80211_stop_poll(sdata); 
     472  
     473        mutex_lock(&local->iflist_mtx); 
     474        ieee80211_recalc_ps(local, -1); 
     475@@ -1477,7 +1491,6 @@ static void ieee80211_reset_ap_probe(str 
     476                  round_jiffies_up(jiffies + 
     477                                   IEEE80211_CONNECTION_IDLE_TIME)); 
     478 out: 
     479-       ieee80211_run_deferred_scan(local); 
     480        mutex_unlock(&local->mtx); 
     481 } 
     482  
     483@@ -2413,7 +2426,11 @@ static void ieee80211_rx_mgmt_beacon(str 
     484                               "to a received beacon\n", sdata->name); 
     485                } 
     486 #endif 
     487+               mutex_lock(&local->mtx); 
     488                ifmgd->flags &= ~IEEE80211_STA_BEACON_POLL; 
     489+               ieee80211_run_deferred_scan(local); 
     490+               mutex_unlock(&local->mtx); 
     491+ 
     492                mutex_lock(&local->iflist_mtx); 
     493                ieee80211_recalc_ps(local, -1); 
     494                mutex_unlock(&local->iflist_mtx); 
     495@@ -2600,8 +2617,7 @@ static void ieee80211_sta_connection_los 
     496        struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; 
     497        u8 frame_buf[DEAUTH_DISASSOC_LEN]; 
     498  
     499-       ifmgd->flags &= ~(IEEE80211_STA_CONNECTION_POLL | 
     500-                         IEEE80211_STA_BEACON_POLL); 
     501+       ieee80211_stop_poll(sdata); 
     502  
     503        ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH, reason, 
     504                               false, frame_buf); 
     505@@ -2879,8 +2895,7 @@ static void ieee80211_restart_sta_timer( 
     506        u32 flags; 
     507  
     508        if (sdata->vif.type == NL80211_IFTYPE_STATION) { 
     509-               sdata->u.mgd.flags &= ~(IEEE80211_STA_BEACON_POLL | 
     510-                                       IEEE80211_STA_CONNECTION_POLL); 
     511+               __ieee80211_stop_poll(sdata); 
     512  
     513                /* let's probe the connection once */ 
     514                flags = sdata->local->hw.flags; 
     515@@ -2949,7 +2964,10 @@ void ieee80211_sta_restart(struct ieee80 
     516        if (test_and_clear_bit(TMR_RUNNING_CHANSW, &ifmgd->timers_running)) 
     517                add_timer(&ifmgd->chswitch_timer); 
     518        ieee80211_sta_reset_beacon_monitor(sdata); 
     519+ 
     520+       mutex_lock(&sdata->local->mtx); 
     521        ieee80211_restart_sta_timer(sdata); 
     522+       mutex_unlock(&sdata->local->mtx); 
     523 } 
     524 #endif 
     525  
  • trunk/package/mac80211/patches/513-mac80211_reduce_txqueuelen.patch

    r31862 r32018  
    11--- a/net/mac80211/iface.c 
    22+++ b/net/mac80211/iface.c 
    3 @@ -815,6 +815,7 @@ static const struct net_device_ops ieee8 
     3@@ -817,6 +817,7 @@ static const struct net_device_ops ieee8 
    44 static void ieee80211_if_setup(struct net_device *dev) 
    55 { 
Note: See TracChangeset for help on using the changeset viewer.