Changeset 37097


Ignore:
Timestamp:
2013-06-30T12:44:19+02:00 (5 years ago)
Author:
nbd
Message:

mac80211: update to wireless-testing 2013-06-27, fix ATH_USER_REGD handling

Signed-off-by: Felix Fietkau <nbd@…>

Location:
trunk/package
Files:
2 deleted
29 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/kernel/mac80211/Makefile

    r37037 r37097  
    1111PKG_NAME:=mac80211 
    1212 
    13 PKG_VERSION:=2013-06-13 
     13PKG_VERSION:=2013-06-27 
    1414PKG_RELEASE:=1 
    1515PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources 
    16 PKG_MD5SUM:=986749f5fbc5ec9b963e49c7171be300 
     16PKG_MD5SUM:=e9300c5113e3f41488718b82d0624123 
    1717 
    1818PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2 
  • trunk/package/kernel/mac80211/patches/060-no_local_ssb_bcma.patch

    r37007 r37097  
    11--- a/.local-symbols 
    22+++ b/.local-symbols 
    3 @@ -365,42 +365,6 @@ USB_CDC_PHONET= 
     3@@ -363,42 +363,6 @@ USB_CDC_PHONET= 
    44 USB_IPHETH= 
    55 USB_SIERRA_NET= 
     
    6969--- a/drivers/net/wireless/b43/main.c 
    7070+++ b/drivers/net/wireless/b43/main.c 
    71 @@ -2727,7 +2727,7 @@ static struct ssb_device *b43_ssb_gpio_d 
     71@@ -2729,7 +2729,7 @@ static struct ssb_device *b43_ssb_gpio_d 
    7272 { 
    7373        struct ssb_bus *bus = dev->dev->sdev->bus; 
     
    7878 #else 
    7979        return bus->chipco.dev; 
    80 @@ -4733,7 +4733,7 @@ static int b43_wireless_core_init(struct 
     80@@ -4735,7 +4735,7 @@ static int b43_wireless_core_init(struct 
    8181        } 
    8282        if (sprom->boardflags_lo & B43_BFL_XTAL_NOSLOW) 
  • trunk/package/kernel/mac80211/patches/300-pending_work.patch

    r37078 r37097  
    4646                            TEST(UAPSD), TEST(SP), TEST(TDLS_PEER), 
    4747                            TEST(TDLS_PEER_AUTH), TEST(4ADDR_EVENT), 
    48 --- a/net/mac80211/ht.c 
    49 +++ b/net/mac80211/ht.c 
    50 @@ -281,13 +281,14 @@ void ieee80211_ba_session_work(struct wo 
    51                                 sta, tid, WLAN_BACK_RECIPIENT, 
    52                                 WLAN_REASON_UNSPECIFIED, true); 
    53   
    54 +               spin_lock_bh(&sta->lock); 
    55 + 
    56                 tid_tx = sta->ampdu_mlme.tid_start_tx[tid]; 
    57                 if (tid_tx) { 
    58                         /* 
    59                          * Assign it over to the normal tid_tx array 
    60                          * where it "goes live". 
    61                          */ 
    62 -                       spin_lock_bh(&sta->lock); 
    63   
    64                         sta->ampdu_mlme.tid_start_tx[tid] = NULL; 
    65                         /* could there be a race? */ 
    66 @@ -300,6 +301,7 @@ void ieee80211_ba_session_work(struct wo 
    67                         ieee80211_tx_ba_session_handle_start(sta, tid); 
    68                         continue; 
    69                 } 
    70 +               spin_unlock_bh(&sta->lock); 
    71   
    72                 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); 
    73                 if (tid_tx && test_and_clear_bit(HT_AGG_STATE_WANT_STOP, 
    7448--- a/net/mac80211/iface.c 
    7549+++ b/net/mac80211/iface.c 
     
    199173                        WARN(1, "frame for unexpected interface type"); 
    200174                        break; 
     175--- a/net/mac80211/rc80211_minstrel_ht.c 
     176+++ b/net/mac80211/rc80211_minstrel_ht.c 
     177@@ -804,10 +804,18 @@ minstrel_ht_get_rate(void *priv, struct  
     178  
     179        sample_group = &minstrel_mcs_groups[sample_idx / MCS_GROUP_RATES]; 
     180        info->flags |= IEEE80211_TX_CTL_RATE_CTRL_PROBE; 
     181+       rate->count = 1; 
     182+ 
     183+       if (sample_idx / MCS_GROUP_RATES == MINSTREL_CCK_GROUP) { 
     184+               int idx = sample_idx % ARRAY_SIZE(mp->cck_rates); 
     185+               rate->idx = mp->cck_rates[idx]; 
     186+               rate->flags = 0; 
     187+               return; 
     188+       } 
     189+ 
     190        rate->idx = sample_idx % MCS_GROUP_RATES + 
     191                    (sample_group->streams - 1) * MCS_GROUP_RATES; 
     192        rate->flags = IEEE80211_TX_RC_MCS | sample_group->flags; 
     193-       rate->count = 1; 
     194 } 
     195  
     196 static void 
    201197--- a/net/mac80211/rx.c 
    202198+++ b/net/mac80211/rx.c 
     
    246242        case NL80211_IFTYPE_P2P_DEVICE: 
    247243                if (!ieee80211_is_public_action(hdr, skb->len) && 
    248 --- a/net/mac80211/sta_info.c 
    249 +++ b/net/mac80211/sta_info.c 
    250 @@ -149,6 +149,7 @@ static void cleanup_single_sta(struct st 
    251          * directly by station destruction. 
    252          */ 
    253         for (i = 0; i < IEEE80211_NUM_TIDS; i++) { 
    254 +               kfree(sta->ampdu_mlme.tid_start_tx[i]); 
    255                 tid_tx = rcu_dereference_raw(sta->ampdu_mlme.tid_tx[i]); 
    256                 if (!tid_tx) 
    257                         continue; 
    258244--- a/net/mac80211/sta_info.h 
    259245+++ b/net/mac80211/sta_info.h 
     
    274260        WLAN_STA_MFP, 
    275261        WLAN_STA_BLOCK_BA, 
    276 @@ -203,6 +201,7 @@ struct tid_ampdu_rx { 
    277   *     driver requested to close until the work for it runs 
    278   * @mtx: mutex to protect all TX data (except non-NULL assignments 
    279   *     to tid_tx[idx], which are protected by the sta spinlock) 
    280 + *     tid_start_tx is also protected by sta->lock. 
    281   */ 
    282  struct sta_ampdu_mlme { 
    283         struct mutex mtx; 
    284262--- a/drivers/net/wireless/ath/ath9k/xmit.c 
    285263+++ b/drivers/net/wireless/ath/ath9k/xmit.c 
    286 @@ -1673,6 +1673,8 @@ void ath_txq_schedule(struct ath_softc * 
    287             txq->axq_ampdu_depth >= ATH_AGGR_MIN_QDEPTH) 
     264@@ -146,6 +146,28 @@ static void ath_set_rates(struct ieee802 
     265                               ARRAY_SIZE(bf->rates)); 
     266 } 
     267  
     268+static void ath_txq_skb_done(struct ath_softc *sc, struct ath_txq *txq, 
     269+                            struct sk_buff *skb) 
     270+{ 
     271+       int q; 
     272+ 
     273+       q = skb_get_queue_mapping(skb); 
     274+       if (txq == sc->tx.uapsdq) 
     275+               txq = sc->tx.txq_map[q]; 
     276+ 
     277+       if (txq != sc->tx.txq_map[q]) 
     278+               return; 
     279+ 
     280+       if (WARN_ON(--txq->pending_frames < 0)) 
     281+               txq->pending_frames = 0; 
     282+ 
     283+       if (txq->stopped && 
     284+           txq->pending_frames < sc->tx.txq_max_pending[q]) { 
     285+               ieee80211_wake_queue(sc->hw, q); 
     286+               txq->stopped = false; 
     287+       } 
     288+} 
     289+ 
     290 static void ath_tx_flush_tid(struct ath_softc *sc, struct ath_atx_tid *tid) 
     291 { 
     292        struct ath_txq *txq = tid->ac->txq; 
     293@@ -167,6 +189,7 @@ static void ath_tx_flush_tid(struct ath_ 
     294                if (!bf) { 
     295                        bf = ath_tx_setup_buffer(sc, txq, tid, skb); 
     296                        if (!bf) { 
     297+                               ath_txq_skb_done(sc, txq, skb); 
     298                                ieee80211_free_txskb(sc->hw, skb); 
     299                                continue; 
     300                        } 
     301@@ -811,6 +834,7 @@ ath_tx_get_tid_subframe(struct ath_softc 
     302  
     303                if (!bf) { 
     304                        __skb_unlink(skb, &tid->buf_q); 
     305+                       ath_txq_skb_done(sc, txq, skb); 
     306                        ieee80211_free_txskb(sc->hw, skb); 
     307                        continue; 
     308                } 
     309@@ -1824,6 +1848,7 @@ static void ath_tx_send_ampdu(struct ath 
     310  
     311        bf = ath_tx_setup_buffer(sc, txq, tid, skb); 
     312        if (!bf) { 
     313+               ath_txq_skb_done(sc, txq, skb); 
     314                ieee80211_free_txskb(sc->hw, skb); 
    288315                return; 
    289   
    290 +       rcu_read_lock(); 
    291 + 
    292         ac = list_first_entry(&txq->axq_acq, struct ath_atx_ac, list); 
    293         last_ac = list_entry(txq->axq_acq.prev, struct ath_atx_ac, list); 
    294   
    295 @@ -1711,8 +1713,10 @@ void ath_txq_schedule(struct ath_softc * 
    296   
    297                 if (ac == last_ac || 
    298                     txq->axq_ampdu_depth >= ATH_AGGR_MIN_QDEPTH) 
    299 -                       return; 
    300 +                       break; 
    301316        } 
    302 + 
    303 +       rcu_read_unlock(); 
    304  } 
    305   
    306  /***********/ 
    307 @@ -1778,9 +1782,13 @@ static void ath_tx_txqaddbuf(struct ath_ 
     317@@ -2090,6 +2115,7 @@ int ath_tx_start(struct ieee80211_hw *hw 
     318  
     319        bf = ath_tx_setup_buffer(sc, txq, tid, skb); 
     320        if (!bf) { 
     321+               ath_txq_skb_done(sc, txq, skb); 
     322                if (txctl->paprd) 
     323                        dev_kfree_skb_any(skb); 
     324                else 
     325@@ -2189,7 +2215,7 @@ static void ath_tx_complete(struct ath_s 
     326        struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); 
     327        struct ath_common *common = ath9k_hw_common(sc->sc_ah); 
     328        struct ieee80211_hdr * hdr = (struct ieee80211_hdr *)skb->data; 
     329-       int q, padpos, padsize; 
     330+       int padpos, padsize; 
     331        unsigned long flags; 
     332  
     333        ath_dbg(common, XMIT, "TX complete: skb: %p\n", skb); 
     334@@ -2225,21 +2251,7 @@ static void ath_tx_complete(struct ath_s 
     335        spin_unlock_irqrestore(&sc->sc_pm_lock, flags); 
     336  
     337        __skb_queue_tail(&txq->complete_q, skb); 
     338- 
     339-       q = skb_get_queue_mapping(skb); 
     340-       if (txq == sc->tx.uapsdq) 
     341-               txq = sc->tx.txq_map[q]; 
     342- 
     343-       if (txq == sc->tx.txq_map[q]) { 
     344-               if (WARN_ON(--txq->pending_frames < 0)) 
     345-                       txq->pending_frames = 0; 
     346- 
     347-               if (txq->stopped && 
     348-                   txq->pending_frames < sc->tx.txq_max_pending[q]) { 
     349-                       ieee80211_wake_queue(sc->hw, q); 
     350-                       txq->stopped = false; 
     351-               } 
     352-       } 
     353+       ath_txq_skb_done(sc, txq, skb); 
     354 } 
     355  
     356 static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf, 
     357--- a/drivers/net/wireless/ath/ath9k/main.c 
     358+++ b/drivers/net/wireless/ath/ath9k/main.c 
     359@@ -2094,7 +2094,7 @@ static void ath9k_wow_add_pattern(struct 
     360 { 
     361        struct ath_hw *ah = sc->sc_ah; 
     362        struct ath9k_wow_pattern *wow_pattern = NULL; 
     363-       struct cfg80211_wowlan_trig_pkt_pattern *patterns = wowlan->patterns; 
     364+       struct cfg80211_pkt_pattern *patterns = wowlan->patterns; 
     365        int mask_len; 
     366        s8 i = 0; 
     367  
     368--- a/drivers/net/wireless/mwifiex/cfg80211.c 
     369+++ b/drivers/net/wireless/mwifiex/cfg80211.c 
     370@@ -2298,8 +2298,7 @@ EXPORT_SYMBOL_GPL(mwifiex_del_virtual_in 
     371  
     372 #ifdef CONFIG_PM 
     373 static bool 
     374-mwifiex_is_pattern_supported(struct cfg80211_wowlan_trig_pkt_pattern *pat, 
     375-                            s8 *byte_seq) 
     376+mwifiex_is_pattern_supported(struct cfg80211_pkt_pattern *pat, s8 *byte_seq) 
     377 { 
     378        int j, k, valid_byte_cnt = 0; 
     379        bool dont_care_byte = false; 
     380--- a/drivers/net/wireless/ti/wlcore/main.c 
     381+++ b/drivers/net/wireless/ti/wlcore/main.c 
     382@@ -1315,7 +1315,7 @@ static struct sk_buff *wl12xx_alloc_dumm 
     383  
     384 #ifdef CONFIG_PM 
     385 static int 
     386-wl1271_validate_wowlan_pattern(struct cfg80211_wowlan_trig_pkt_pattern *p) 
     387+wl1271_validate_wowlan_pattern(struct cfg80211_pkt_pattern *p) 
     388 { 
     389        int num_fields = 0, in_field = 0, fields_size = 0; 
     390        int i, pattern_len = 0; 
     391@@ -1458,9 +1458,9 @@ void wl1271_rx_filter_flatten_fields(str 
     392  * Allocates an RX filter returned through f 
     393  * which needs to be freed using rx_filter_free() 
     394  */ 
     395-static int wl1271_convert_wowlan_pattern_to_rx_filter( 
     396-       struct cfg80211_wowlan_trig_pkt_pattern *p, 
     397-       struct wl12xx_rx_filter **f) 
     398+static int 
     399+wl1271_convert_wowlan_pattern_to_rx_filter(struct cfg80211_pkt_pattern *p, 
     400+                                          struct wl12xx_rx_filter **f) 
     401 { 
     402        int i, j, ret = 0; 
     403        struct wl12xx_rx_filter *filter; 
     404@@ -1562,7 +1562,7 @@ static int wl1271_configure_wowlan(struc 
     405  
     406        /* Translate WoWLAN patterns into filters */ 
     407        for (i = 0; i < wow->n_patterns; i++) { 
     408-               struct cfg80211_wowlan_trig_pkt_pattern *p; 
     409+               struct cfg80211_pkt_pattern *p; 
     410                struct wl12xx_rx_filter *filter = NULL; 
     411  
     412                p = &wow->patterns[i]; 
     413--- a/include/net/cfg80211.h 
     414+++ b/include/net/cfg80211.h 
     415@@ -1698,7 +1698,7 @@ struct cfg80211_pmksa { 
     416 }; 
     417  
     418 /** 
     419- * struct cfg80211_wowlan_trig_pkt_pattern - packet pattern 
     420+ * struct cfg80211_pkt_pattern - packet pattern 
     421  * @mask: bitmask where to match pattern and where to ignore bytes, 
     422  *     one bit per byte, in same format as nl80211 
     423  * @pattern: bytes to match where bitmask is 1 
     424@@ -1708,7 +1708,7 @@ struct cfg80211_pmksa { 
     425  * Internal note: @mask and @pattern are allocated in one chunk of 
     426  * memory, free @mask only! 
     427  */ 
     428-struct cfg80211_wowlan_trig_pkt_pattern { 
     429+struct cfg80211_pkt_pattern { 
     430        u8 *mask, *pattern; 
     431        int pattern_len; 
     432        int pkt_offset; 
     433@@ -1770,7 +1770,7 @@ struct cfg80211_wowlan { 
     434        bool any, disconnect, magic_pkt, gtk_rekey_failure, 
     435             eap_identity_req, four_way_handshake, 
     436             rfkill_release; 
     437-       struct cfg80211_wowlan_trig_pkt_pattern *patterns; 
     438+       struct cfg80211_pkt_pattern *patterns; 
     439        struct cfg80211_wowlan_tcp *tcp; 
     440        int n_patterns; 
     441 }; 
     442--- a/include/uapi/linux/nl80211.h 
     443+++ b/include/uapi/linux/nl80211.h 
     444@@ -3060,11 +3060,11 @@ enum nl80211_tx_power_setting { 
     445 }; 
     446  
     447 /** 
     448- * enum nl80211_wowlan_packet_pattern_attr - WoWLAN packet pattern attribute 
     449- * @__NL80211_WOWLAN_PKTPAT_INVALID: invalid number for nested attribute 
     450- * @NL80211_WOWLAN_PKTPAT_PATTERN: the pattern, values where the mask has 
     451+ * enum nl80211_packet_pattern_attr - packet pattern attribute 
     452+ * @__NL80211_PKTPAT_INVALID: invalid number for nested attribute 
     453+ * @NL80211_PKTPAT_PATTERN: the pattern, values where the mask has 
     454  *     a zero bit are ignored 
     455- * @NL80211_WOWLAN_PKTPAT_MASK: pattern mask, must be long enough to have 
     456+ * @NL80211_PKTPAT_MASK: pattern mask, must be long enough to have 
     457  *     a bit for each byte in the pattern. The lowest-order bit corresponds 
     458  *     to the first byte of the pattern, but the bytes of the pattern are 
     459  *     in a little-endian-like format, i.e. the 9th byte of the pattern 
     460@@ -3075,23 +3075,23 @@ enum nl80211_tx_power_setting { 
     461  *     Note that the pattern matching is done as though frames were not 
     462  *     802.11 frames but 802.3 frames, i.e. the frame is fully unpacked 
     463  *     first (including SNAP header unpacking) and then matched. 
     464- * @NL80211_WOWLAN_PKTPAT_OFFSET: packet offset, pattern is matched after 
     465+ * @NL80211_PKTPAT_OFFSET: packet offset, pattern is matched after 
     466  *     these fixed number of bytes of received packet 
     467- * @NUM_NL80211_WOWLAN_PKTPAT: number of attributes 
     468- * @MAX_NL80211_WOWLAN_PKTPAT: max attribute number 
     469+ * @NUM_NL80211_PKTPAT: number of attributes 
     470+ * @MAX_NL80211_PKTPAT: max attribute number 
     471  */ 
     472-enum nl80211_wowlan_packet_pattern_attr { 
     473-       __NL80211_WOWLAN_PKTPAT_INVALID, 
     474-       NL80211_WOWLAN_PKTPAT_MASK, 
     475-       NL80211_WOWLAN_PKTPAT_PATTERN, 
     476-       NL80211_WOWLAN_PKTPAT_OFFSET, 
     477+enum nl80211_packet_pattern_attr { 
     478+       __NL80211_PKTPAT_INVALID, 
     479+       NL80211_PKTPAT_MASK, 
     480+       NL80211_PKTPAT_PATTERN, 
     481+       NL80211_PKTPAT_OFFSET, 
     482  
     483-       NUM_NL80211_WOWLAN_PKTPAT, 
     484-       MAX_NL80211_WOWLAN_PKTPAT = NUM_NL80211_WOWLAN_PKTPAT - 1, 
     485+       NUM_NL80211_PKTPAT, 
     486+       MAX_NL80211_PKTPAT = NUM_NL80211_PKTPAT - 1, 
     487 }; 
     488  
     489 /** 
     490- * struct nl80211_wowlan_pattern_support - pattern support information 
     491+ * struct nl80211_pattern_support - packet pattern support information 
     492  * @max_patterns: maximum number of patterns supported 
     493  * @min_pattern_len: minimum length of each pattern 
     494  * @max_pattern_len: maximum length of each pattern 
     495@@ -3101,13 +3101,22 @@ enum nl80211_wowlan_packet_pattern_attr  
     496  * that is part of %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED in the 
     497  * capability information given by the kernel to userspace. 
     498  */ 
     499-struct nl80211_wowlan_pattern_support { 
     500+struct nl80211_pattern_support { 
     501        __u32 max_patterns; 
     502        __u32 min_pattern_len; 
     503        __u32 max_pattern_len; 
     504        __u32 max_pkt_offset; 
     505 } __attribute__((packed)); 
     506  
     507+/* only for backward compatibility */ 
     508+#define __NL80211_WOWLAN_PKTPAT_INVALID __NL80211_PKTPAT_INVALID 
     509+#define NL80211_WOWLAN_PKTPAT_MASK NL80211_PKTPAT_MASK 
     510+#define NL80211_WOWLAN_PKTPAT_PATTERN NL80211_PKTPAT_PATTERN 
     511+#define NL80211_WOWLAN_PKTPAT_OFFSET NL80211_PKTPAT_OFFSET 
     512+#define NUM_NL80211_WOWLAN_PKTPAT NUM_NL80211_PKTPAT 
     513+#define MAX_NL80211_WOWLAN_PKTPAT MAX_NL80211_PKTPAT 
     514+#define nl80211_wowlan_pattern_support nl80211_pattern_support 
     515+ 
     516 /** 
     517  * enum nl80211_wowlan_triggers - WoWLAN trigger definitions 
     518  * @__NL80211_WOWLAN_TRIG_INVALID: invalid number for nested attributes 
     519@@ -3127,7 +3136,7 @@ struct nl80211_wowlan_pattern_support { 
     520  *     pattern matching is done after the packet is converted to the MSDU. 
     521  * 
     522  *     In %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED, it is a binary attribute 
     523- *     carrying a &struct nl80211_wowlan_pattern_support. 
     524+ *     carrying a &struct nl80211_pattern_support. 
     525  * 
     526  *     When reporting wakeup. it is a u32 attribute containing the 0-based 
     527  *     index of the pattern that caused the wakeup, in the patterns passed 
     528@@ -3284,7 +3293,7 @@ struct nl80211_wowlan_tcp_data_token_fea 
     529  * @NL80211_WOWLAN_TCP_WAKE_PAYLOAD: wake packet payload, for advertising a 
     530  *     u32 attribute holding the maximum length 
     531  * @NL80211_WOWLAN_TCP_WAKE_MASK: Wake packet payload mask, not used for 
     532- *     feature advertising. The mask works like @NL80211_WOWLAN_PKTPAT_MASK 
     533+ *     feature advertising. The mask works like @NL80211_PKTPAT_MASK 
     534  *     but on the TCP payload only. 
     535  * @NUM_NL80211_WOWLAN_TCP: number of TCP attributes 
     536  * @MAX_NL80211_WOWLAN_TCP: highest attribute number 
     537--- a/net/mac80211/mesh_ps.c 
     538+++ b/net/mac80211/mesh_ps.c 
     539@@ -229,6 +229,10 @@ void ieee80211_mps_sta_status_update(str 
     540        enum nl80211_mesh_power_mode pm; 
     541        bool do_buffer; 
     542  
     543+       /* For non-assoc STA, prevent buffering or frame transmission */ 
     544+       if (sta->sta_state < IEEE80211_STA_ASSOC) 
     545+               return; 
     546+ 
     547        /* 
     548         * use peer-specific power mode if peering is established and the 
     549         * peer's power mode is known 
     550--- a/net/wireless/nl80211.c 
     551+++ b/net/wireless/nl80211.c 
     552@@ -974,7 +974,7 @@ static int nl80211_send_wowlan(struct sk 
     553                return -ENOBUFS; 
     554  
     555        if (dev->wiphy.wowlan->n_patterns) { 
     556-               struct nl80211_wowlan_pattern_support pat = { 
     557+               struct nl80211_pattern_support pat = { 
     558                        .max_patterns = dev->wiphy.wowlan->n_patterns, 
     559                        .min_pattern_len = dev->wiphy.wowlan->pattern_min_len, 
     560                        .max_pattern_len = dev->wiphy.wowlan->pattern_max_len, 
     561@@ -1568,8 +1568,10 @@ static int nl80211_dump_wiphy(struct sk_ 
     562        rtnl_lock(); 
     563        if (!state) { 
     564                state = kzalloc(sizeof(*state), GFP_KERNEL); 
     565-               if (!state) 
     566+               if (!state) { 
     567+                       rtnl_unlock(); 
     568                        return -ENOMEM; 
     569+               } 
     570                state->filter_wiphy = -1; 
     571                ret = nl80211_dump_wiphy_parse(skb, cb, state); 
     572                if (ret) { 
     573@@ -6615,12 +6617,14 @@ EXPORT_SYMBOL(cfg80211_testmode_alloc_ev 
     574  
     575 void cfg80211_testmode_event(struct sk_buff *skb, gfp_t gfp) 
     576 { 
     577+       struct cfg80211_registered_device *rdev = ((void **)skb->cb)[0]; 
     578        void *hdr = ((void **)skb->cb)[1]; 
     579        struct nlattr *data = ((void **)skb->cb)[2]; 
     580  
     581        nla_nest_end(skb, data); 
     582        genlmsg_end(skb, hdr); 
     583-       genlmsg_multicast(skb, 0, nl80211_testmode_mcgrp.id, gfp); 
     584+       genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), skb, 0, 
     585+                               nl80211_testmode_mcgrp.id, gfp); 
     586 } 
     587 EXPORT_SYMBOL(cfg80211_testmode_event); 
     588 #endif 
     589@@ -7593,12 +7597,11 @@ static int nl80211_send_wowlan_patterns( 
     590                if (!nl_pat) 
     591                        return -ENOBUFS; 
     592                pat_len = wowlan->patterns[i].pattern_len; 
     593-               if (nla_put(msg, NL80211_WOWLAN_PKTPAT_MASK, 
     594-                           DIV_ROUND_UP(pat_len, 8), 
     595+               if (nla_put(msg, NL80211_PKTPAT_MASK, DIV_ROUND_UP(pat_len, 8), 
     596                            wowlan->patterns[i].mask) || 
     597-                   nla_put(msg, NL80211_WOWLAN_PKTPAT_PATTERN, 
     598-                           pat_len, wowlan->patterns[i].pattern) || 
     599-                   nla_put_u32(msg, NL80211_WOWLAN_PKTPAT_OFFSET, 
     600+                   nla_put(msg, NL80211_PKTPAT_PATTERN, pat_len, 
     601+                           wowlan->patterns[i].pattern) || 
     602+                   nla_put_u32(msg, NL80211_PKTPAT_OFFSET, 
     603                                wowlan->patterns[i].pkt_offset)) 
     604                        return -ENOBUFS; 
     605                nla_nest_end(msg, nl_pat); 
     606@@ -7939,7 +7942,7 @@ static int nl80211_set_wowlan(struct sk_ 
     607                struct nlattr *pat; 
     608                int n_patterns = 0; 
     609                int rem, pat_len, mask_len, pkt_offset; 
     610-               struct nlattr *pat_tb[NUM_NL80211_WOWLAN_PKTPAT]; 
     611+               struct nlattr *pat_tb[NUM_NL80211_PKTPAT]; 
     612  
     613                nla_for_each_nested(pat, tb[NL80211_WOWLAN_TRIG_PKT_PATTERN], 
     614                                    rem) 
     615@@ -7958,26 +7961,25 @@ static int nl80211_set_wowlan(struct sk_ 
     616  
     617                nla_for_each_nested(pat, tb[NL80211_WOWLAN_TRIG_PKT_PATTERN], 
     618                                    rem) { 
     619-                       nla_parse(pat_tb, MAX_NL80211_WOWLAN_PKTPAT, 
     620-                                 nla_data(pat), nla_len(pat), NULL); 
     621+                       nla_parse(pat_tb, MAX_NL80211_PKTPAT, nla_data(pat), 
     622+                                 nla_len(pat), NULL); 
     623                        err = -EINVAL; 
     624-                       if (!pat_tb[NL80211_WOWLAN_PKTPAT_MASK] || 
     625-                           !pat_tb[NL80211_WOWLAN_PKTPAT_PATTERN]) 
     626+                       if (!pat_tb[NL80211_PKTPAT_MASK] || 
     627+                           !pat_tb[NL80211_PKTPAT_PATTERN]) 
     628                                goto error; 
     629-                       pat_len = nla_len(pat_tb[NL80211_WOWLAN_PKTPAT_PATTERN]); 
     630+                       pat_len = nla_len(pat_tb[NL80211_PKTPAT_PATTERN]); 
     631                        mask_len = DIV_ROUND_UP(pat_len, 8); 
     632-                       if (nla_len(pat_tb[NL80211_WOWLAN_PKTPAT_MASK]) != 
     633-                           mask_len) 
     634+                       if (nla_len(pat_tb[NL80211_PKTPAT_MASK]) != mask_len) 
     635                                goto error; 
     636                        if (pat_len > wowlan->pattern_max_len || 
     637                            pat_len < wowlan->pattern_min_len) 
     638                                goto error; 
     639  
     640-                       if (!pat_tb[NL80211_WOWLAN_PKTPAT_OFFSET]) 
     641+                       if (!pat_tb[NL80211_PKTPAT_OFFSET]) 
     642                                pkt_offset = 0; 
     643                        else 
     644                                pkt_offset = nla_get_u32( 
     645-                                       pat_tb[NL80211_WOWLAN_PKTPAT_OFFSET]); 
     646+                                       pat_tb[NL80211_PKTPAT_OFFSET]); 
     647                        if (pkt_offset > wowlan->max_pkt_offset) 
     648                                goto error; 
     649                        new_triggers.patterns[i].pkt_offset = pkt_offset; 
     650@@ -7991,11 +7993,11 @@ static int nl80211_set_wowlan(struct sk_ 
     651                        new_triggers.patterns[i].pattern = 
     652                                new_triggers.patterns[i].mask + mask_len; 
     653                        memcpy(new_triggers.patterns[i].mask, 
     654-                              nla_data(pat_tb[NL80211_WOWLAN_PKTPAT_MASK]), 
     655+                              nla_data(pat_tb[NL80211_PKTPAT_MASK]), 
     656                               mask_len); 
     657                        new_triggers.patterns[i].pattern_len = pat_len; 
     658                        memcpy(new_triggers.patterns[i].pattern, 
     659-                              nla_data(pat_tb[NL80211_WOWLAN_PKTPAT_PATTERN]), 
     660+                              nla_data(pat_tb[NL80211_PKTPAT_PATTERN]), 
     661                               pat_len); 
     662                        i++; 
     663                } 
     664@@ -10066,7 +10068,8 @@ void cfg80211_mgmt_tx_status(struct wire 
     665  
     666        genlmsg_end(msg, hdr); 
     667  
     668-       genlmsg_multicast(msg, 0, nl80211_mlme_mcgrp.id, gfp); 
     669+       genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, 
     670+                               nl80211_mlme_mcgrp.id, gfp); 
     671        return; 
     672  
     673  nla_put_failure: 
     674--- a/net/wireless/reg.c 
     675+++ b/net/wireless/reg.c 
     676@@ -2279,7 +2279,9 @@ void wiphy_regulatory_deregister(struct  
     677 static void reg_timeout_work(struct work_struct *work) 
     678 { 
     679        REG_DBG_PRINT("Timeout while waiting for CRDA to reply, restoring regulatory settings\n"); 
     680+       rtnl_lock(); 
     681        restore_regulatory_settings(true); 
     682+       rtnl_unlock(); 
     683 } 
     684  
     685 int __init regulatory_init(void) 
     686--- a/net/wireless/sme.c 
     687+++ b/net/wireless/sme.c 
     688@@ -34,8 +34,10 @@ struct cfg80211_conn { 
     689                CFG80211_CONN_SCAN_AGAIN, 
     690                CFG80211_CONN_AUTHENTICATE_NEXT, 
     691                CFG80211_CONN_AUTHENTICATING, 
     692+               CFG80211_CONN_AUTH_FAILED, 
     693                CFG80211_CONN_ASSOCIATE_NEXT, 
     694                CFG80211_CONN_ASSOCIATING, 
     695+               CFG80211_CONN_ASSOC_FAILED, 
     696                CFG80211_CONN_DEAUTH, 
     697                CFG80211_CONN_CONNECTED, 
     698        } state; 
     699@@ -164,6 +166,8 @@ static int cfg80211_conn_do_work(struct  
     700                                          NULL, 0, 
     701                                          params->key, params->key_len, 
     702                                          params->key_idx, NULL, 0); 
     703+       case CFG80211_CONN_AUTH_FAILED: 
     704+               return -ENOTCONN; 
     705        case CFG80211_CONN_ASSOCIATE_NEXT: 
     706                BUG_ON(!rdev->ops->assoc); 
     707                wdev->conn->state = CFG80211_CONN_ASSOCIATING; 
     708@@ -188,10 +192,17 @@ static int cfg80211_conn_do_work(struct  
     709                                             WLAN_REASON_DEAUTH_LEAVING, 
     710                                             false); 
     711                return err; 
     712+       case CFG80211_CONN_ASSOC_FAILED: 
     713+               cfg80211_mlme_deauth(rdev, wdev->netdev, params->bssid, 
     714+                                    NULL, 0, 
     715+                                    WLAN_REASON_DEAUTH_LEAVING, false); 
     716+               return -ENOTCONN; 
     717        case CFG80211_CONN_DEAUTH: 
     718                cfg80211_mlme_deauth(rdev, wdev->netdev, params->bssid, 
     719                                     NULL, 0, 
     720                                     WLAN_REASON_DEAUTH_LEAVING, false); 
     721+               /* free directly, disconnected event already sent */ 
     722+               cfg80211_sme_free(wdev); 
     723                return 0; 
     724        default: 
     725                return 0; 
     726@@ -371,7 +382,7 @@ bool cfg80211_sme_rx_assoc_resp(struct w 
     727                return true; 
    308728        } 
    309729  
    310         if (!internal) { 
    311 -               txq->axq_depth++; 
    312 -               if (bf_is_ampdu_not_probing(bf)) 
    313 -                       txq->axq_ampdu_depth++; 
    314 +               while (bf) { 
    315 +                       txq->axq_depth++; 
    316 +                       if (bf_is_ampdu_not_probing(bf)) 
    317 +                               txq->axq_ampdu_depth++; 
    318 + 
    319 +                       bf = bf->bf_lastbf->bf_next; 
    320 +               } 
    321         } 
    322  } 
    323   
    324 --- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c 
    325 +++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c 
    326 @@ -1183,7 +1183,7 @@ static int ath9k_htc_config(struct ieee8 
    327                 mutex_lock(&priv->htc_pm_lock); 
    328   
    329                 priv->ps_idle = !!(conf->flags & IEEE80211_CONF_IDLE); 
    330 -               if (priv->ps_idle) 
    331 +               if (!priv->ps_idle) 
    332                         chip_reset = true; 
    333   
    334                 mutex_unlock(&priv->htc_pm_lock); 
    335 --- a/net/mac80211/rc80211_minstrel_ht.c 
    336 +++ b/net/mac80211/rc80211_minstrel_ht.c 
    337 @@ -804,10 +804,18 @@ minstrel_ht_get_rate(void *priv, struct  
    338   
    339         sample_group = &minstrel_mcs_groups[sample_idx / MCS_GROUP_RATES]; 
    340         info->flags |= IEEE80211_TX_CTL_RATE_CTRL_PROBE; 
    341 +       rate->count = 1; 
    342 + 
    343 +       if (sample_idx / MCS_GROUP_RATES == MINSTREL_CCK_GROUP) { 
    344 +               int idx = sample_idx % ARRAY_SIZE(mp->cck_rates); 
    345 +               rate->idx = mp->cck_rates[idx]; 
    346 +               rate->flags = 0; 
     730-       wdev->conn->state = CFG80211_CONN_DEAUTH; 
     731+       wdev->conn->state = CFG80211_CONN_ASSOC_FAILED; 
     732        schedule_work(&rdev->conn_work); 
     733        return false; 
     734 } 
     735@@ -383,7 +394,13 @@ void cfg80211_sme_deauth(struct wireless 
     736  
     737 void cfg80211_sme_auth_timeout(struct wireless_dev *wdev) 
     738 { 
     739-       cfg80211_sme_free(wdev); 
     740+       struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); 
     741+ 
     742+       if (!wdev->conn) 
    347743+               return; 
    348 +       } 
    349 + 
    350         rate->idx = sample_idx % MCS_GROUP_RATES + 
    351                     (sample_group->streams - 1) * MCS_GROUP_RATES; 
    352         rate->flags = IEEE80211_TX_RC_MCS | sample_group->flags; 
    353 -       rate->count = 1; 
    354  } 
    355   
    356  static void 
     744+ 
     745+       wdev->conn->state = CFG80211_CONN_AUTH_FAILED; 
     746+       schedule_work(&rdev->conn_work); 
     747 } 
     748  
     749 void cfg80211_sme_disassoc(struct wireless_dev *wdev) 
     750@@ -399,7 +416,13 @@ void cfg80211_sme_disassoc(struct wirele 
     751  
     752 void cfg80211_sme_assoc_timeout(struct wireless_dev *wdev) 
     753 { 
     754-       cfg80211_sme_disassoc(wdev); 
     755+       struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); 
     756+ 
     757+       if (!wdev->conn) 
     758+               return; 
     759+ 
     760+       wdev->conn->state = CFG80211_CONN_ASSOC_FAILED; 
     761+       schedule_work(&rdev->conn_work); 
     762 } 
     763  
     764 static int cfg80211_sme_connect(struct wireless_dev *wdev, 
  • trunk/package/kernel/mac80211/patches/400-ath_move_debug_code.patch

    r37007 r37097  
    1313--- a/drivers/net/wireless/ath/ath.h 
    1414+++ b/drivers/net/wireless/ath/ath.h 
    15 @@ -281,13 +281,6 @@ void _ath_dbg(struct ath_common *common, 
     15@@ -280,13 +280,6 @@ void _ath_dbg(struct ath_common *common, 
    1616 #endif /* CPTCFG_ATH_DEBUG */ 
    1717  
  • trunk/package/kernel/mac80211/patches/403-ath_regd_optional.patch

    r37007 r37097  
    5757        bool "Atheros wireless debugging" 
    5858        ---help--- 
     59--- a/.local-symbols 
     60+++ b/.local-symbols 
     61@@ -122,6 +122,7 @@ RTL8187_LEDS= 
     62 ATH_COMMON= 
     63 ATH_CARDS= 
     64 ATH_DEBUG= 
     65+ATH_USER_REGD= 
     66 ATH5K= 
     67 ATH5K_DEBUG= 
     68 ATH5K_TRACER= 
  • trunk/package/kernel/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch

    r37007 r37097  
    11--- a/drivers/net/wireless/ath/ath9k/init.c 
    22+++ b/drivers/net/wireless/ath/ath9k/init.c 
    3 @@ -729,6 +729,7 @@ static const struct ieee80211_iface_limi 
     3@@ -755,6 +755,7 @@ static const struct ieee80211_iface_limi 
    44 #endif 
    55                                 BIT(NL80211_IFTYPE_AP) | 
  • trunk/package/kernel/mac80211/patches/501-ath9k-eeprom_endianess.patch

    r37007 r37097  
    7272--- a/drivers/net/wireless/ath/ath9k/hw.h 
    7373+++ b/drivers/net/wireless/ath/ath9k/hw.h 
    74 @@ -735,6 +735,7 @@ enum ath_cal_list { 
     74@@ -739,6 +739,7 @@ enum ath_cal_list { 
    7575 #define AH_USE_EEPROM   0x1 
    7676 #define AH_UNPLUGGED    0x2 /* The card has been physically removed. */ 
     
    8282--- a/drivers/net/wireless/ath/ath9k/init.c 
    8383+++ b/drivers/net/wireless/ath/ath9k/init.c 
    84 @@ -592,6 +592,8 @@ static int ath9k_init_softc(u16 devid, s 
     84@@ -613,6 +613,8 @@ static int ath9k_init_softc(u16 devid, s 
    8585                ah->is_clk_25mhz = pdata->is_clk_25mhz; 
    8686                ah->get_mac_revision = pdata->get_mac_revision; 
  • trunk/package/kernel/mac80211/patches/502-ath9k_ahb_init.patch

    r37007 r37097  
    11--- a/drivers/net/wireless/ath/ath9k/init.c 
    22+++ b/drivers/net/wireless/ath/ath9k/init.c 
    3 @@ -984,23 +984,23 @@ static int __init ath9k_init(void) 
     3@@ -1011,23 +1011,23 @@ static int __init ath9k_init(void) 
    44                goto err_out; 
    55        } 
  • trunk/package/kernel/mac80211/patches/512-ath9k_channelbw_debugfs.patch

    r37007 r37097  
    11--- a/drivers/net/wireless/ath/ath9k/ath9k.h 
    22+++ b/drivers/net/wireless/ath/ath9k/ath9k.h 
    3 @@ -696,6 +696,7 @@ struct ath_softc { 
     3@@ -701,6 +701,7 @@ struct ath_softc { 
    44        struct ieee80211_hw *hw; 
    55        struct device *dev; 
     
    99        struct survey_info survey[ATH9K_NUM_CHANNELS]; 
    1010  
    11 @@ -899,6 +900,7 @@ struct fft_sample_ht20 { 
     11@@ -905,6 +906,7 @@ struct fft_sample_ht20 { 
    1212        u8 data[SPECTRAL_HT20_NUM_BINS]; 
    1313 } __packed; 
  • trunk/package/kernel/mac80211/patches/520-mac80211_cur_txpower.patch

    r37007 r37097  
    11--- a/include/net/mac80211.h 
    22+++ b/include/net/mac80211.h 
    3 @@ -1614,6 +1614,7 @@ struct ieee80211_hw { 
     3@@ -1616,6 +1616,7 @@ struct ieee80211_hw { 
    44        u8 max_tx_aggregation_subframes; 
    55        u8 offchannel_tx_hw_queue; 
  • trunk/package/kernel/mac80211/patches/523-mac80211_configure_antenna_gain.patch

    r37007 r37097  
    11--- a/include/net/mac80211.h 
    22+++ b/include/net/mac80211.h 
    3 @@ -997,6 +997,7 @@ enum ieee80211_smps_mode { 
     3@@ -999,6 +999,7 @@ enum ieee80211_smps_mode { 
    44  * 
    55  * @power_level: requested transmit power (in dBm), backward compatibility 
     
    99  * @chandef: the channel definition to tune to 
    1010  * @radar_enabled: whether radar detection is enabled 
    11 @@ -1018,6 +1019,7 @@ struct ieee80211_conf { 
     11@@ -1020,6 +1021,7 @@ struct ieee80211_conf { 
    1212        u32 flags; 
    1313        int power_level, dynamic_ps_timeout; 
     
    4848  
    4949 /* policy for the key attributes */ 
    50 @@ -1953,6 +1954,22 @@ static int nl80211_set_wiphy(struct sk_b 
     50@@ -1991,6 +1992,22 @@ static int nl80211_set_wiphy(struct sk_b 
    5151                        goto bad_res; 
    5252        } 
     
    9393                                  const u8 *addr) 
    9494 { 
    95 @@ -3484,6 +3497,7 @@ struct cfg80211_ops mac80211_config_ops  
     95@@ -3474,6 +3487,7 @@ struct cfg80211_ops mac80211_config_ops  
    9696        .set_wiphy_params = ieee80211_set_wiphy_params, 
    9797        .set_tx_power = ieee80211_set_tx_power, 
     
    103103--- a/include/net/cfg80211.h 
    104104+++ b/include/net/cfg80211.h 
    105 @@ -1942,6 +1942,7 @@ struct cfg80211_update_ft_ies_params { 
     105@@ -1970,6 +1970,7 @@ struct cfg80211_update_ft_ies_params { 
    106106  *     (as advertised by the nl80211 feature flag.) 
    107107  * @get_tx_power: store the current TX power into the dbm variable; 
     
    111111  * @set_wds_peer: set the WDS peer for a WDS interface 
    112112  * 
    113 @@ -2161,6 +2162,7 @@ struct cfg80211_ops { 
     113@@ -2189,6 +2190,7 @@ struct cfg80211_ops { 
    114114                                enum nl80211_tx_power_setting type, int mbm); 
    115115        int     (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev, 
  • trunk/package/kernel/mac80211/patches/530-ath9k_extra_leds.patch

    r37007 r37097  
    1111 static inline void ath_init_leds(struct ath_softc *sc) 
    1212 { 
    13 @@ -692,6 +695,13 @@ enum spectral_mode { 
     13@@ -697,6 +700,13 @@ enum spectral_mode { 
    1414        SPECTRAL_CHANSCAN, 
    1515 }; 
     
    2525        struct ieee80211_hw *hw; 
    2626        struct device *dev; 
    27 @@ -733,9 +743,8 @@ struct ath_softc { 
     27@@ -739,9 +749,8 @@ struct ath_softc { 
    2828        struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS]; 
    2929  
     
    163163--- a/drivers/net/wireless/ath/ath9k/init.c 
    164164+++ b/drivers/net/wireless/ath/ath9k/init.c 
    165 @@ -891,7 +891,7 @@ int ath9k_init_device(u16 devid, struct  
     165@@ -918,7 +918,7 @@ int ath9k_init_device(u16 devid, struct  
    166166  
    167167 #ifdef CPTCFG_MAC80211_LEDS 
  • trunk/package/kernel/mac80211/patches/550-ath9k_reduce_ani_interval.patch

    r37007 r37097  
    11--- a/drivers/net/wireless/ath/ath9k/ani.h 
    22+++ b/drivers/net/wireless/ath/ath9k/ani.h 
    3 @@ -34,7 +34,7 @@ 
     3@@ -38,7 +38,7 @@ 
    44 #define ATH9K_ANI_PERIOD                  300 
    55  
  • trunk/package/kernel/mac80211/patches/553-ath9k_debugfs_diag.patch

    r37007 r37097  
    6363--- a/drivers/net/wireless/ath/ath9k/hw.h 
    6464+++ b/drivers/net/wireless/ath/ath9k/hw.h 
    65 @@ -495,6 +495,12 @@ enum { 
     65@@ -499,6 +499,12 @@ enum { 
    6666        ATH9K_RESET_COLD, 
    6767 }; 
     
    7676        u32 magic; 
    7777        u16 devid; 
    78 @@ -773,6 +779,8 @@ struct ath_hw { 
     78@@ -777,6 +783,8 @@ struct ath_hw { 
    7979        u32 rfkill_polarity; 
    8080        u32 ah_flags; 
     
    8585        bool htc_reset_init; 
    8686  
    87 @@ -1020,6 +1028,7 @@ void ath9k_hw_set_sta_beacon_timers(stru 
     87@@ -1027,6 +1035,7 @@ void ath9k_hw_set_sta_beacon_timers(stru 
    8888 bool ath9k_hw_check_alive(struct ath_hw *ah); 
    8989  
  • trunk/package/kernel/mac80211/patches/554-ath9k_ani_mrc_fix.patch

    r37007 r37097  
    11--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c 
    22+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c 
    3 @@ -1136,6 +1136,10 @@ skip_ws_det: 
     3@@ -1173,6 +1173,10 @@ skip_ws_det: 
    44                 * is_on == 0 means MRC CCK is OFF (more noise imm) 
    55                 */ 
  • trunk/package/kernel/mac80211/patches/555-ath9k-allow-to-disable-bands-via-platform-data.patch

    r37007 r37097  
    4949--- a/drivers/net/wireless/ath/ath9k/hw.h 
    5050+++ b/drivers/net/wireless/ath/ath9k/hw.h 
    51 @@ -940,6 +940,8 @@ struct ath_hw { 
     51@@ -947,6 +947,8 @@ struct ath_hw { 
    5252        bool is_clk_25mhz; 
    5353        int (*get_mac_revision)(void); 
     
    6060--- a/drivers/net/wireless/ath/ath9k/init.c 
    6161+++ b/drivers/net/wireless/ath/ath9k/init.c 
    62 @@ -592,6 +592,8 @@ static int ath9k_init_softc(u16 devid, s 
     62@@ -613,6 +613,8 @@ static int ath9k_init_softc(u16 devid, s 
    6363                ah->is_clk_25mhz = pdata->is_clk_25mhz; 
    6464                ah->get_mac_revision = pdata->get_mac_revision; 
  • trunk/package/kernel/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch

    r37007 r37097  
    165165        depends on CRC_CCITT 
    166166        depends on EEPROM_93CX6 
    167 @@ -235,6 +236,9 @@ config RT2X00_LIB_FIRMWARE 
     167@@ -238,6 +239,9 @@ config RT2X00_LIB_FIRMWARE 
    168168 config RT2X00_LIB_CRYPTO 
    169169        boolean 
     
    235235  */ 
    236236 static bool rt2800pci_get_entry_state(struct queue_entry *entry) 
    237 @@ -1155,6 +1155,7 @@ static const struct rt2x00lib_ops rt2800 
     237@@ -1156,6 +1156,7 @@ static const struct rt2x00lib_ops rt2800 
    238238        .get_firmware_name      = rt2800pci_get_firmware_name, 
    239239        .check_firmware         = rt2800_check_firmware, 
     
    280280--- a/.local-symbols 
    281281+++ b/.local-symbols 
    282 @@ -272,6 +272,7 @@ RT2X00_LIB_FIRMWARE= 
     282@@ -271,6 +271,7 @@ RT2X00_LIB_FIRMWARE= 
    283283 RT2X00_LIB_CRYPTO= 
    284284 RT2X00_LIB_LEDS= 
  • trunk/package/kernel/mac80211/patches/605-rt2x00-pci-eeprom.patch

    r37007 r37097  
    1010        memcpy(rt2x00dev->eeprom, rt2x00dev->eeprom_file->data, EEPROM_SIZE); 
    1111        return 0; 
    12 @@ -1092,8 +1092,9 @@ static int rt2800pci_read_eeprom(struct  
     12@@ -1093,8 +1093,9 @@ static int rt2800pci_read_eeprom(struct  
    1313 { 
    1414        int retval; 
  • trunk/package/kernel/mac80211/patches/610-rt2x00-fix-rt3352-ext-pa.patch

    r37007 r37097  
    2323        } 
    2424  
    25 @@ -4948,6 +4951,12 @@ static void rt2800_init_rfcsr_3290(struc 
     25@@ -4971,6 +4974,12 @@ static void rt2800_init_rfcsr_3290(struc 
    2626  
    2727 static void rt2800_init_rfcsr_3352(struct rt2x00_dev *rt2x00dev) 
     
    3636  
    3737        rt2800_rfcsr_write(rt2x00dev, 0, 0xf0); 
    38 @@ -4983,15 +4992,30 @@ static void rt2800_init_rfcsr_3352(struc 
     38@@ -5006,15 +5015,30 @@ static void rt2800_init_rfcsr_3352(struc 
    3939        rt2800_rfcsr_write(rt2x00dev, 31, 0x80); 
    4040        rt2800_rfcsr_write(rt2x00dev, 32, 0x80); 
     
    7070        rt2800_rfcsr_write(rt2x00dev, 44, 0xdb); 
    7171        rt2800_rfcsr_write(rt2x00dev, 45, 0xdb); 
    72 @@ -4999,15 +5023,20 @@ static void rt2800_init_rfcsr_3352(struc 
     72@@ -5022,15 +5046,20 @@ static void rt2800_init_rfcsr_3352(struc 
    7373        rt2800_rfcsr_write(rt2x00dev, 47, 0x0d); 
    7474        rt2800_rfcsr_write(rt2x00dev, 48, 0x14); 
     
    100100        rt2800_rfcsr_write(rt2x00dev, 60, 0x00); 
    101101        rt2800_rfcsr_write(rt2x00dev, 61, 0x00); 
    102 @@ -5692,6 +5721,7 @@ static int rt2800_init_eeprom(struct rt2 
     102@@ -5715,6 +5744,7 @@ static int rt2800_init_eeprom(struct rt2 
    103103         * RT53xx: defined in "EEPROM_CHIP_ID" field 
    104104         */ 
     
    108108            rt2x00_rt(rt2x00dev, RT5392)) 
    109109                rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf); 
    110 @@ -5781,7 +5811,8 @@ static int rt2800_init_eeprom(struct rt2 
     110@@ -5804,7 +5834,8 @@ static int rt2800_init_eeprom(struct rt2 
    111111        /* 
    112112         * Detect if this device has Bluetooth co-existence. 
     
    118118  
    119119        /* 
    120 @@ -5810,6 +5841,22 @@ static int rt2800_init_eeprom(struct rt2 
     120@@ -5833,6 +5864,22 @@ static int rt2800_init_eeprom(struct rt2 
    121121                                        EIRP_MAX_TX_POWER_LIMIT) 
    122122                __set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags); 
  • trunk/package/kernel/mac80211/patches/611-rt2x00-rf_vals-rt3352-xtal20.patch

    r37007 r37097  
    11--- a/drivers/net/wireless/rt2x00/rt2800lib.c 
    22+++ b/drivers/net/wireless/rt2x00/rt2800lib.c 
    3 @@ -6133,6 +6133,27 @@ static const struct rf_channel rf_vals_5 
     3@@ -6156,6 +6156,27 @@ static const struct rf_channel rf_vals_5 
    44        {196, 83, 0, 12, 1}, 
    55 }; 
     
    2929 { 
    3030        struct hw_mode_spec *spec = &rt2x00dev->spec; 
    31 @@ -6211,7 +6232,6 @@ static int rt2800_probe_hw_mode(struct r 
     31@@ -6234,7 +6255,6 @@ static int rt2800_probe_hw_mode(struct r 
    3232                   rt2x00_rf(rt2x00dev, RF3022) || 
    3333                   rt2x00_rf(rt2x00dev, RF3290) || 
     
    3737                   rt2x00_rf(rt2x00dev, RF5370) || 
    3838                   rt2x00_rf(rt2x00dev, RF5372) || 
    39 @@ -6219,6 +6239,12 @@ static int rt2800_probe_hw_mode(struct r 
     39@@ -6242,6 +6262,12 @@ static int rt2800_probe_hw_mode(struct r 
    4040                   rt2x00_rf(rt2x00dev, RF5392)) { 
    4141                spec->num_channels = 14; 
     
    5050                spec->supported_bands |= SUPPORT_BAND_5GHZ; 
    5151                spec->num_channels = ARRAY_SIZE(rf_vals_3x); 
    52 @@ -6366,6 +6392,19 @@ static int rt2800_probe_rt(struct rt2x00 
     52@@ -6389,6 +6415,19 @@ static int rt2800_probe_rt(struct rt2x00 
    5353        return 0; 
    5454 } 
     
    7070 { 
    7171        int retval; 
    72 @@ -6395,6 +6434,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r 
     72@@ -6418,6 +6457,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r 
    7373        rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); 
    7474  
  • trunk/package/kernel/mac80211/patches/612-rt2x00-make-wmac-loadable-via-OF-on-rt288x-305x-SoC.patch

    r37007 r37097  
    1414--- a/drivers/net/wireless/rt2x00/rt2800pci.c 
    1515+++ b/drivers/net/wireless/rt2x00/rt2800pci.c 
    16 @@ -1308,11 +1308,18 @@ static int rt2800soc_probe(struct platfo 
     16@@ -1309,11 +1309,18 @@ static int rt2800soc_probe(struct platfo 
    1717        return rt2x00soc_probe(pdev, &rt2800pci_ops); 
    1818 } 
  • trunk/package/kernel/mac80211/patches/615-rt2x00-fix_20mhz_clk.patch

    r37007 r37097  
    99 #include "rt2x00.h" 
    1010 #include "rt2800lib.h" 
    11 @@ -6394,13 +6395,14 @@ static int rt2800_probe_rt(struct rt2x00 
     11@@ -6417,13 +6418,14 @@ static int rt2800_probe_rt(struct rt2x00 
    1212  
    1313 int rt2800_probe_clk(struct rt2x00_dev *rt2x00dev) 
  • trunk/package/kernel/mac80211/patches/616-rt2x00-support-rt5350.patch

    r37007 r37097  
    4343            rt2x00_rf(rt2x00dev, RF5370) || 
    4444            rt2x00_rf(rt2x00dev, RF5372) || 
    45 @@ -2755,7 +2766,8 @@ static void rt2800_config_channel(struct 
     45@@ -2778,7 +2789,8 @@ static void rt2800_config_channel(struct 
    4646        /* 
    4747         * Clear update flag 
     
    5353                rt2x00_set_field8(&bbp, BBP49_UPDATE_FLAG, 0); 
    5454                rt2800_bbp_write(rt2x00dev, 49, bbp); 
    55 @@ -3201,6 +3213,7 @@ void rt2800_vco_calibration(struct rt2x0 
     55@@ -3224,6 +3236,7 @@ void rt2800_vco_calibration(struct rt2x0 
    5656                rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); 
    5757                break; 
     
    6161        case RF5370: 
    6262        case RF5372: 
    63 @@ -3540,7 +3553,8 @@ static int rt2800_init_registers(struct  
     63@@ -3563,7 +3576,8 @@ static int rt2800_init_registers(struct  
    6464        } else if (rt2x00_rt(rt2x00dev, RT3572)) { 
    6565                rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000400); 
     
    7171                   rt2x00_rt(rt2x00dev, RT5592)) { 
    7272                rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); 
    73 @@ -4193,9 +4207,13 @@ static void rt2800_init_bbp_3352(struct  
     73@@ -4216,9 +4230,13 @@ static void rt2800_init_bbp_3352(struct  
    7474  
    7575        rt2800_bbp_write(rt2x00dev, 82, 0x62); 
     
    8888        rt2800_bbp_write(rt2x00dev, 86, 0x38); 
    8989  
    90 @@ -4209,9 +4227,13 @@ static void rt2800_init_bbp_3352(struct  
     90@@ -4232,9 +4250,13 @@ static void rt2800_init_bbp_3352(struct  
    9191  
    9292        rt2800_bbp_write(rt2x00dev, 104, 0x92); 
     
    105105        rt2800_bbp_write(rt2x00dev, 120, 0x50); 
    106106  
    107 @@ -4236,6 +4258,13 @@ static void rt2800_init_bbp_3352(struct  
     107@@ -4259,6 +4281,13 @@ static void rt2800_init_bbp_3352(struct  
    108108        rt2800_bbp_write(rt2x00dev, 143, 0xa2); 
    109109  
     
    119119  
    120120 static void rt2800_init_bbp_3390(struct rt2x00_dev *rt2x00dev) 
    121 @@ -4520,6 +4549,7 @@ static void rt2800_init_bbp(struct rt2x0 
     121@@ -4543,6 +4572,7 @@ static void rt2800_init_bbp(struct rt2x0 
    122122                rt2800_init_bbp_3290(rt2x00dev); 
    123123                break; 
     
    127127                break; 
    128128        case RT3390: 
    129 @@ -5159,6 +5189,76 @@ static void rt2800_init_rfcsr_3572(struc 
     129@@ -5182,6 +5212,76 @@ static void rt2800_init_rfcsr_3572(struc 
    130130        rt2800_normal_mode_setup_3xxx(rt2x00dev); 
    131131 } 
     
    204204 { 
    205205        rt2800_rf_init_calibration(rt2x00dev, 2); 
    206 @@ -5387,6 +5487,9 @@ static void rt2800_init_rfcsr(struct rt2 
     206@@ -5410,6 +5510,9 @@ static void rt2800_init_rfcsr(struct rt2 
    207207        case RT3572: 
    208208                rt2800_init_rfcsr_3572(rt2x00dev); 
     
    214214                rt2800_init_rfcsr_5390(rt2x00dev); 
    215215                break; 
    216 @@ -5598,6 +5701,12 @@ static int rt2800_validate_eeprom(struct 
     216@@ -5621,6 +5724,12 @@ static int rt2800_validate_eeprom(struct 
    217217                rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RF_TYPE, RF2820); 
    218218                rt2x00_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word); 
     
    227227                   rt2x00_rt(rt2x00dev, RT2872)) { 
    228228                /* 
    229 @@ -5723,9 +5832,12 @@ static int rt2800_init_eeprom(struct rt2 
     229@@ -5746,9 +5855,12 @@ static int rt2800_init_eeprom(struct rt2 
    230230         */ 
    231231        if (rt2x00_rt(rt2x00dev, RT3290) || 
     
    240240                rf = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE); 
    241241  
    242 @@ -5742,6 +5854,7 @@ static int rt2800_init_eeprom(struct rt2 
     242@@ -5765,6 +5877,7 @@ static int rt2800_init_eeprom(struct rt2 
    243243        case RF3290: 
    244244        case RF3320: 
     
    248248        case RF5370: 
    249249        case RF5372: 
    250 @@ -6240,7 +6353,8 @@ static int rt2800_probe_hw_mode(struct r 
     250@@ -6263,7 +6376,8 @@ static int rt2800_probe_hw_mode(struct r 
    251251                   rt2x00_rf(rt2x00dev, RF5392)) { 
    252252                spec->num_channels = 14; 
     
    258258                if (spec->clk_is_20mhz) 
    259259                        spec->channels = rf_vals_xtal20mhz_3x; 
    260 @@ -6341,6 +6455,7 @@ static int rt2800_probe_hw_mode(struct r 
     260@@ -6364,6 +6478,7 @@ static int rt2800_probe_hw_mode(struct r 
    261261        case RF3320: 
    262262        case RF3052: 
     
    266266        case RF5370: 
    267267        case RF5372: 
    268 @@ -6378,6 +6493,7 @@ static int rt2800_probe_rt(struct rt2x00 
     268@@ -6401,6 +6516,7 @@ static int rt2800_probe_rt(struct rt2x00 
    269269        case RT3352: 
    270270        case RT3390: 
  • trunk/package/kernel/mac80211/patches/618-rt2x00-msi-fix.patch

    r37008 r37097  
    1 Index: compat-wireless-2013-06-13/drivers/net/wireless/rt2x00/rt2x00pci.c 
    2 =================================================================== 
    3 --- compat-wireless-2013-06-13.orig/drivers/net/wireless/rt2x00/rt2x00pci.c     2013-06-20 21:19:16.205070973 +0200 
    4 +++ compat-wireless-2013-06-13/drivers/net/wireless/rt2x00/rt2x00pci.c  2013-06-20 21:18:36.705069262 +0200 
    5 @@ -108,7 +108,9 @@ 
     1--- a/drivers/net/wireless/rt2x00/rt2x00pci.c 
     2+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c 
     3@@ -108,7 +108,9 @@ int rt2x00pci_probe(struct pci_dev *pci_ 
    64                goto exit_release_regions; 
    75        } 
     
    1311        hw = ieee80211_alloc_hw(sizeof(struct rt2x00_dev), ops->hw); 
    1412        if (!hw) { 
    15 @@ -162,7 +164,9 @@ 
     13@@ -162,7 +164,9 @@ exit_free_device: 
    1614        ieee80211_free_hw(hw); 
    1715  
     
    2321 exit_release_regions: 
    2422        pci_release_regions(pci_dev); 
    25 @@ -188,7 +192,9 @@ 
     23@@ -188,7 +192,9 @@ void rt2x00pci_remove(struct pci_dev *pc 
    2624        rt2x00pci_free_reg(rt2x00dev); 
    2725        ieee80211_free_hw(hw); 
  • trunk/package/kernel/mac80211/patches/800-b43-gpio-mask-module-option.patch

    r37007 r37097  
    2323 module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444); 
    2424 MODULE_PARM_DESC(bad_frames_preempt, 
    25 @@ -2740,10 +2745,10 @@ static int b43_gpio_init(struct b43_wlde 
     25@@ -2742,10 +2747,10 @@ static int b43_gpio_init(struct b43_wlde 
    2626        u32 mask, set; 
    2727  
  • trunk/package/kernel/mac80211/patches/810-b43_no_pio.patch

    r37007 r37097  
    1212--- a/drivers/net/wireless/b43/main.c 
    1313+++ b/drivers/net/wireless/b43/main.c 
    14 @@ -1913,10 +1913,12 @@ static void b43_do_interrupt_thread(stru 
     14@@ -1915,10 +1915,12 @@ static void b43_do_interrupt_thread(stru 
    1515                        dma_reason[0], dma_reason[1], 
    1616                        dma_reason[2], dma_reason[3], 
     
    7676--- a/drivers/net/wireless/b43/Kconfig 
    7777+++ b/drivers/net/wireless/b43/Kconfig 
    78 @@ -104,7 +104,7 @@ config B43_BCMA_PIO 
     78@@ -98,7 +98,7 @@ config B43_BCMA_PIO 
    7979        default y 
    8080  
  • trunk/package/kernel/mac80211/patches/820-b43-add-antenna-control.patch

    r37007 r37097  
    11--- a/drivers/net/wireless/b43/main.c 
    22+++ b/drivers/net/wireless/b43/main.c 
    3 @@ -1560,7 +1560,7 @@ static void b43_write_beacon_template(st 
     3@@ -1562,7 +1562,7 @@ static void b43_write_beacon_template(st 
    44                                  len, ram_offset, shm_size_offset, rate); 
    55  
     
    1010        ctl = b43_shm_read16(dev, B43_SHM_SHARED, B43_SHM_SH_BEACPHYCTL); 
    1111        /* We can't send beacons with short preamble. Would get PHY errors. */ 
    12 @@ -3098,8 +3098,8 @@ static int b43_chip_init(struct b43_wlde 
     12@@ -3100,8 +3100,8 @@ static int b43_chip_init(struct b43_wlde 
    1313  
    1414        /* Select the antennae */ 
     
    2121        if (phy->type == B43_PHYTYPE_B) { 
    2222                value16 = b43_read16(dev, 0x005E); 
    23 @@ -3843,7 +3843,6 @@ static int b43_op_config(struct ieee8021 
     23@@ -3845,7 +3845,6 @@ static int b43_op_config(struct ieee8021 
    2424        struct b43_wldev *dev; 
    2525        struct b43_phy *phy; 
     
    2929        bool reload_bss = false; 
    3030  
    31 @@ -3897,11 +3896,9 @@ static int b43_op_config(struct ieee8021 
     31@@ -3899,11 +3898,9 @@ static int b43_op_config(struct ieee8021 
    3232        } 
    3333  
     
    4343        if (wl->radio_enabled != phy->radio_on) { 
    4444                if (wl->radio_enabled) { 
    45 @@ -5026,6 +5023,47 @@ static int b43_op_get_survey(struct ieee 
     45@@ -5028,6 +5025,47 @@ static int b43_op_get_survey(struct ieee 
    4646        return 0; 
    4747 } 
     
    9191        .tx                     = b43_op_tx, 
    9292        .conf_tx                = b43_op_conf_tx, 
    93 @@ -5047,6 +5085,8 @@ static const struct ieee80211_ops b43_hw 
     93@@ -5049,6 +5087,8 @@ static const struct ieee80211_ops b43_hw 
    9494        .sw_scan_complete       = b43_op_sw_scan_complete_notifier, 
    9595        .get_survey             = b43_op_get_survey, 
     
    100100  
    101101 /* Hard-reset the chip. Do not call this directly. 
    102 @@ -5293,6 +5333,8 @@ static int b43_one_core_attach(struct b4 
     102@@ -5295,6 +5335,8 @@ static int b43_one_core_attach(struct b4 
    103103        if (!wldev) 
    104104                goto out; 
     
    109109        wldev->dev = dev; 
    110110        wldev->wl = wl; 
    111 @@ -5383,6 +5425,9 @@ static struct b43_wl *b43_wireless_init( 
     111@@ -5385,6 +5427,9 @@ static struct b43_wl *b43_wireless_init( 
    112112  
    113113        hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN; 
  • trunk/package/kernel/mac80211/patches/845-b43-only-use-gpio-0-1-for-led.patch

    r37007 r37097  
    11--- a/drivers/net/wireless/b43/main.c 
    22+++ b/drivers/net/wireless/b43/main.c 
    3 @@ -2757,6 +2757,14 @@ static int b43_gpio_init(struct b43_wlde 
     3@@ -2759,6 +2759,14 @@ static int b43_gpio_init(struct b43_wlde 
    44        } else if (dev->dev->chip_id == 0x5354) { 
    55                /* Don't allow overtaking buttons GPIOs */ 
  • trunk/package/network/utils/iw/patches/001-nl80211_h_sync.patch

    r36743 r37097  
    11--- a/nl80211.h 
    22+++ b/nl80211.h 
    3 @@ -1724,8 +1724,7 @@ enum nl80211_attrs { 
    4         NL80211_ATTR_MDID, 
    5         NL80211_ATTR_IE_RIC, 
    6   
    7 -       NL80211_ATTR_CRIT_PROT_ID, 
    8 -       NL80211_ATTR_MAX_CRIT_PROT_DURATION, 
     3@@ -27,6 +27,8 @@ 
     4  
     5 #include <linux/types.h> 
     6  
     7+#define NL80211_GENL_NAME "nl80211" 
     8+ 
     9 /** 
     10  * DOC: Station handling 
     11  * 
     12@@ -1429,6 +1431,11 @@ enum nl80211_commands { 
     13  * @NL80211_ATTR_MAX_CRIT_PROT_DURATION: duration in milliseconds in which 
     14  *      the connection should have increased reliability (u16). 
     15  * 
     16+ * @NL80211_ATTR_PEER_AID: Association ID for the peer TDLS station (u16). 
     17+ *     This is similar to @NL80211_ATTR_STA_AID but with a difference of being 
     18+ *     allowed to be used with the first @NL80211_CMD_SET_STATION command to 
     19+ *     update a TDLS peer STA entry. 
     20+ * 
     21  * @NL80211_ATTR_MAX: highest attribute number currently defined 
     22  * @__NL80211_ATTR_AFTER_LAST: internal use 
     23  */ 
     24@@ -1727,6 +1734,10 @@ enum nl80211_attrs { 
     25        NL80211_ATTR_CRIT_PROT_ID, 
     26        NL80211_ATTR_MAX_CRIT_PROT_DURATION, 
     27  
     28+       NL80211_ATTR_PEER_AID, 
     29+ 
    930+       NL80211_ATTR_WIPHY_ANTENNA_GAIN, 
    10   
     31+ 
    1132        /* add attributes here, update the policy in nl80211.c */ 
    1233  
    13 @@ -1991,6 +1990,10 @@ enum nl80211_sta_bss_param { 
     34        __NL80211_ATTR_AFTER_LAST, 
     35@@ -1991,6 +2002,10 @@ enum nl80211_sta_bss_param { 
    1436  * @NL80211_STA_INFO_PEER_PM: peer mesh STA link-specific power mode 
    1537  * @NL80211_STA_INFO_NONPEER_PM: neighbor mesh STA power save mode towards 
     
    2244  * @NL80211_STA_INFO_MAX: highest possible station info attribute 
    2345  */ 
    24 @@ -2020,6 +2023,8 @@ enum nl80211_sta_info { 
     46@@ -2020,6 +2035,8 @@ enum nl80211_sta_info { 
    2547        NL80211_STA_INFO_NONPEER_PM, 
    2648        NL80211_STA_INFO_RX_BYTES64, 
     
    3153        /* keep last */ 
    3254        __NL80211_STA_INFO_AFTER_LAST, 
    33 @@ -2424,6 +2429,7 @@ enum nl80211_mntr_flags { 
     55@@ -2413,6 +2430,8 @@ enum nl80211_survey_info { 
     56  * @NL80211_MNTR_FLAG_OTHER_BSS: disable BSSID filtering 
     57  * @NL80211_MNTR_FLAG_COOK_FRAMES: report frames after processing. 
     58  *     overrides all other flags. 
     59+ * @NL80211_MNTR_FLAG_ACTIVE: use the configured MAC address 
     60+ *     and ACK incoming unicast packets. 
     61  * 
     62  * @__NL80211_MNTR_FLAG_AFTER_LAST: internal use 
     63  * @NL80211_MNTR_FLAG_MAX: highest possible monitor flag 
     64@@ -2424,6 +2443,7 @@ enum nl80211_mntr_flags { 
    3465        NL80211_MNTR_FLAG_CONTROL, 
    3566        NL80211_MNTR_FLAG_OTHER_BSS, 
     
    3970        /* keep last */ 
    4071        __NL80211_MNTR_FLAG_AFTER_LAST, 
     72@@ -2559,6 +2579,10 @@ enum nl80211_mesh_power_mode { 
     73  * 
     74  * @NL80211_MESHCONF_AWAKE_WINDOW: awake window duration (in TUs) 
     75  * 
     76+ * @NL80211_MESHCONF_PLINK_TIMEOUT: If no tx activity is seen from a STA we've 
     77+ *     established peering with for longer than this time (in seconds), then 
     78+ *     remove it from the STA's list of peers.  Default is 30 minutes. 
     79+ * 
     80  * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use 
     81  */ 
     82 enum nl80211_meshconf_params { 
     83@@ -2590,6 +2614,7 @@ enum nl80211_meshconf_params { 
     84        NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL, 
     85        NL80211_MESHCONF_POWER_MODE, 
     86        NL80211_MESHCONF_AWAKE_WINDOW, 
     87+       NL80211_MESHCONF_PLINK_TIMEOUT, 
     88  
     89        /* keep last */ 
     90        __NL80211_MESHCONF_ATTR_AFTER_LAST, 
     91@@ -2637,6 +2662,10 @@ enum nl80211_meshconf_params { 
     92  * @NL80211_MESH_SETUP_USERSPACE_MPM: Enable this option if userspace will 
     93  *     implement an MPM which handles peer allocation and state. 
     94  * 
     95+ * @NL80211_MESH_SETUP_AUTH_PROTOCOL: Inform the kernel of the authentication 
     96+ *     method (u8, as defined in IEEE 8.4.2.100.6, e.g. 0x1 for SAE). 
     97+ *     Default is no authentication method required. 
     98+ * 
     99  * @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number 
     100  * 
     101  * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use 
     102@@ -2650,6 +2679,7 @@ enum nl80211_mesh_setup_params { 
     103        NL80211_MESH_SETUP_USERSPACE_AMPE, 
     104        NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC, 
     105        NL80211_MESH_SETUP_USERSPACE_MPM, 
     106+       NL80211_MESH_SETUP_AUTH_PROTOCOL, 
     107  
     108        /* keep last */ 
     109        __NL80211_MESH_SETUP_ATTR_AFTER_LAST, 
     110@@ -2730,6 +2760,8 @@ enum nl80211_channel_type { 
     111  *     and %NL80211_ATTR_CENTER_FREQ2 attributes must be provided as well 
     112  * @NL80211_CHAN_WIDTH_160: 160 MHz channel, the %NL80211_ATTR_CENTER_FREQ1 
     113  *     attribute must be provided as well 
     114+ * @NL80211_CHAN_WIDTH_5: 5 MHz OFDM channel 
     115+ * @NL80211_CHAN_WIDTH_10: 10 MHz OFDM channel 
     116  */ 
     117 enum nl80211_chan_width { 
     118        NL80211_CHAN_WIDTH_20_NOHT, 
     119@@ -2738,6 +2770,8 @@ enum nl80211_chan_width { 
     120        NL80211_CHAN_WIDTH_80, 
     121        NL80211_CHAN_WIDTH_80P80, 
     122        NL80211_CHAN_WIDTH_160, 
     123+       NL80211_CHAN_WIDTH_5, 
     124+       NL80211_CHAN_WIDTH_10, 
     125 }; 
     126  
     127 /** 
     128@@ -3028,11 +3062,11 @@ enum nl80211_tx_power_setting { 
     129 }; 
     130  
     131 /** 
     132- * enum nl80211_wowlan_packet_pattern_attr - WoWLAN packet pattern attribute 
     133- * @__NL80211_WOWLAN_PKTPAT_INVALID: invalid number for nested attribute 
     134- * @NL80211_WOWLAN_PKTPAT_PATTERN: the pattern, values where the mask has 
     135+ * enum nl80211_packet_pattern_attr - packet pattern attribute 
     136+ * @__NL80211_PKTPAT_INVALID: invalid number for nested attribute 
     137+ * @NL80211_PKTPAT_PATTERN: the pattern, values where the mask has 
     138  *     a zero bit are ignored 
     139- * @NL80211_WOWLAN_PKTPAT_MASK: pattern mask, must be long enough to have 
     140+ * @NL80211_PKTPAT_MASK: pattern mask, must be long enough to have 
     141  *     a bit for each byte in the pattern. The lowest-order bit corresponds 
     142  *     to the first byte of the pattern, but the bytes of the pattern are 
     143  *     in a little-endian-like format, i.e. the 9th byte of the pattern 
     144@@ -3043,23 +3077,23 @@ enum nl80211_tx_power_setting { 
     145  *     Note that the pattern matching is done as though frames were not 
     146  *     802.11 frames but 802.3 frames, i.e. the frame is fully unpacked 
     147  *     first (including SNAP header unpacking) and then matched. 
     148- * @NL80211_WOWLAN_PKTPAT_OFFSET: packet offset, pattern is matched after 
     149+ * @NL80211_PKTPAT_OFFSET: packet offset, pattern is matched after 
     150  *     these fixed number of bytes of received packet 
     151- * @NUM_NL80211_WOWLAN_PKTPAT: number of attributes 
     152- * @MAX_NL80211_WOWLAN_PKTPAT: max attribute number 
     153+ * @NUM_NL80211_PKTPAT: number of attributes 
     154+ * @MAX_NL80211_PKTPAT: max attribute number 
     155  */ 
     156-enum nl80211_wowlan_packet_pattern_attr { 
     157-       __NL80211_WOWLAN_PKTPAT_INVALID, 
     158-       NL80211_WOWLAN_PKTPAT_MASK, 
     159-       NL80211_WOWLAN_PKTPAT_PATTERN, 
     160-       NL80211_WOWLAN_PKTPAT_OFFSET, 
     161+enum nl80211_packet_pattern_attr { 
     162+       __NL80211_PKTPAT_INVALID, 
     163+       NL80211_PKTPAT_MASK, 
     164+       NL80211_PKTPAT_PATTERN, 
     165+       NL80211_PKTPAT_OFFSET, 
     166  
     167-       NUM_NL80211_WOWLAN_PKTPAT, 
     168-       MAX_NL80211_WOWLAN_PKTPAT = NUM_NL80211_WOWLAN_PKTPAT - 1, 
     169+       NUM_NL80211_PKTPAT, 
     170+       MAX_NL80211_PKTPAT = NUM_NL80211_PKTPAT - 1, 
     171 }; 
     172  
     173 /** 
     174- * struct nl80211_wowlan_pattern_support - pattern support information 
     175+ * struct nl80211_pattern_support - packet pattern support information 
     176  * @max_patterns: maximum number of patterns supported 
     177  * @min_pattern_len: minimum length of each pattern 
     178  * @max_pattern_len: maximum length of each pattern 
     179@@ -3069,13 +3103,22 @@ enum nl80211_wowlan_packet_pattern_attr  
     180  * that is part of %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED in the 
     181  * capability information given by the kernel to userspace. 
     182  */ 
     183-struct nl80211_wowlan_pattern_support { 
     184+struct nl80211_pattern_support { 
     185        __u32 max_patterns; 
     186        __u32 min_pattern_len; 
     187        __u32 max_pattern_len; 
     188        __u32 max_pkt_offset; 
     189 } __attribute__((packed)); 
     190  
     191+/* only for backward compatibility */ 
     192+#define __NL80211_WOWLAN_PKTPAT_INVALID __NL80211_PKTPAT_INVALID 
     193+#define NL80211_WOWLAN_PKTPAT_MASK NL80211_PKTPAT_MASK 
     194+#define NL80211_WOWLAN_PKTPAT_PATTERN NL80211_PKTPAT_PATTERN 
     195+#define NL80211_WOWLAN_PKTPAT_OFFSET NL80211_PKTPAT_OFFSET 
     196+#define NUM_NL80211_WOWLAN_PKTPAT NUM_NL80211_PKTPAT 
     197+#define MAX_NL80211_WOWLAN_PKTPAT MAX_NL80211_PKTPAT 
     198+#define nl80211_wowlan_pattern_support nl80211_pattern_support 
     199+ 
     200 /** 
     201  * enum nl80211_wowlan_triggers - WoWLAN trigger definitions 
     202  * @__NL80211_WOWLAN_TRIG_INVALID: invalid number for nested attributes 
     203@@ -3095,7 +3138,7 @@ struct nl80211_wowlan_pattern_support { 
     204  *     pattern matching is done after the packet is converted to the MSDU. 
     205  * 
     206  *     In %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED, it is a binary attribute 
     207- *     carrying a &struct nl80211_wowlan_pattern_support. 
     208+ *     carrying a &struct nl80211_pattern_support. 
     209  * 
     210  *     When reporting wakeup. it is a u32 attribute containing the 0-based 
     211  *     index of the pattern that caused the wakeup, in the patterns passed 
     212@@ -3252,7 +3295,7 @@ struct nl80211_wowlan_tcp_data_token_fea 
     213  * @NL80211_WOWLAN_TCP_WAKE_PAYLOAD: wake packet payload, for advertising a 
     214  *     u32 attribute holding the maximum length 
     215  * @NL80211_WOWLAN_TCP_WAKE_MASK: Wake packet payload mask, not used for 
     216- *     feature advertising. The mask works like @NL80211_WOWLAN_PKTPAT_MASK 
     217+ *     feature advertising. The mask works like @NL80211_PKTPAT_MASK 
     218  *     but on the TCP payload only. 
     219  * @NUM_NL80211_WOWLAN_TCP: number of TCP attributes 
     220  * @MAX_NL80211_WOWLAN_TCP: highest attribute number 
     221@@ -3556,6 +3599,10 @@ enum nl80211_ap_sme_features { 
     222  *     Peering Management entity which may be implemented by registering for 
     223  *     beacons or NL80211_CMD_NEW_PEER_CANDIDATE events. The mesh beacon is 
     224  *     still generated by the driver. 
     225+ * @NL80211_FEATURE_ACTIVE_MONITOR: This driver supports an active monitor 
     226+ *     interface. An active monitor interface behaves like a normal monitor 
     227+ *     interface, but gets added to the driver. It ensures that incoming 
     228+ *     unicast packets directed at the configured interface address get ACKed. 
     229  */ 
     230 enum nl80211_feature_flags { 
     231        NL80211_FEATURE_SK_TX_STATUS                    = 1 << 0, 
     232@@ -3575,6 +3622,7 @@ enum nl80211_feature_flags { 
     233        NL80211_FEATURE_ADVERTISE_CHAN_LIMITS           = 1 << 14, 
     234        NL80211_FEATURE_FULL_AP_CLIENT_STATE            = 1 << 15, 
     235        NL80211_FEATURE_USERSPACE_MPM                   = 1 << 16, 
     236+       NL80211_FEATURE_ACTIVE_MONITOR                  = 1 << 17, 
     237 }; 
     238  
     239 /** 
Note: See TracChangeset for help on using the changeset viewer.