[kernel] r21973 - in dists/sid/linux/debian: . patches patches/features/all/r8723au

Ben Hutchings benh at moszumanska.debian.org
Sun Oct 26 00:59:17 UTC 2014


Author: benh
Date: Sun Oct 26 00:59:13 2014
New Revision: 21973

Log:
[x86] r8723au: Backport changes up to Linux 3.17 (Closes: #765685)

Added:
   dists/sid/linux/debian/patches/features/all/r8723au/
   dists/sid/linux/debian/patches/features/all/r8723au/0001-staging-rtl8723au-rtw_get_wps_ie23a-Remove-unused-de.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0002-staging-rtl8723au-rtw_mlme_ext.c-Convert-rtw_get_wps.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0003-staging-rtl8723au-rtw_mlme.c-Convert-rtw_get_wps_ie2.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0004-staging-rtl8723au-ioctl_cfg80211.c-Convert-rtw_get_w.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0005-staging-rtl8723au-rtw_ap.c-Convert-from-rtw_get_wps_.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0006-staging-rtl8723au-Remove-obsolete-rtw_get_wps_ie23a.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0009-staging-rtl8723au-rtw_mlme_ext.c-Fix-up-some-of-the-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0010-staging-rtl8723au-rtw_mlme.c-Remove-some-tab-and-par.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0011-staging-rtl8723au-Use-struct-ieee80211_mcs_info-to-d.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0012-staging-rtl8723au-Use-struct-ieee80211_ht_cap-and-as.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0013-staging-rtl8723au-Use-correct-struct-for-WLAN_EID_HT.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0014-staging-rtl8723au-Eliminate-struct-HT_info_element.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0015-staging-rtl8723au-Don-t-carry-ht_cap_info-and-ht_par.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0016-staging-rtl8723au-rtw_check_bcn_info23a-Use-capabili.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0017-staging-rtl8723au-Remmove-buddy-adapter-linking.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0018-staging-rtl8723au-Rewrite-update_beacon23a_info-tto-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0019-staging-rtl8723au-collect_bss_info23a-Collect-beacon.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0020-staging-rtl8723au-collect_bss_info23a-ieee80211_mgmt.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0021-staging-rtl8723au-rtw_update_ht_cap23a-Use-correct-m.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0022-staging-rtl8723au-rtw_get_bcn_info23a-Use-cfg80211_-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0023-staging-rtl8723au-rtw_wlan_util.c-Use-cfg80211_-to-d.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0024-staging-rtl8723au-Remove-obsolete-rtw_get_sec_ie23a.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0025-staging-rtl8723au-Declare-rtw_get_wpa-2-_cipher_suit.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0026-staging-rtl8723au-Make-WMM_param_handler23a-and-HT_c.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0027-staging-rtl8723au-OnAssocRsp23a-Use-cfg80211_-to-par.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0028-staging-rtl8723au-Remove-WMM_-defines.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0029-staging-rtl8723au-Make-struct-ht_priv.ht_option-a-bo.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0030-staging-rtl8723au-Be-consistent-in-how-htpriv.ht_opt.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0031-staging-rtl8723au-Make-struct-htpriv.ampdu_enable-a-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0032-staging-rtl8723au-issue_auth-Convert-to-using-struct.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0033-staging-rtl8723au-issue_assocrsp-Use-struct-ieee8021.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0034-staging-rtl8723au-_issue_deauth-Use-struct-ieee80211.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0035-staging-rtl8723au-issue_action_spct_ch_switch23a-Use.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0036-staging-rtl8723au-issue_action_BSSCoexistPacket-Use-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0037-staging-rtl8723au-Do-not-xmit-BSS-Coexistence-manage.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0038-staging-rtl8723au-Let-cfg80211-handle-public-action-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0039-staging-rtl8723au-ioctl_cfg80211.c-Use-struct-ieee80.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0040-staging-rtl8723au-issue_action_BA23a-Use-struct-ieee.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0041-staging-rtl8723au-Remove-obsolete-rtw_set_fixed_ie23.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0042-staging-rtl8723au-Remove-duplicate-defines-of-IEEE80.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0043-staging-rtl8723au-Remove-unused-defines-WEP_KEY_LEN-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0044-staging-rtl8723au-Remove-some-unused-80211-header-pa.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0045-staging-rtl8723au-rtw_check_bcn_info23a-Use-ether_ad.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0046-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-make-a.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0047-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-search.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0048-staging-rtl8723au-Declare-rtw_update_scanned_network.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0049-staging-rtl8723au-rtw_survey_event_cb23a-Use-the-cor.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0050-staging-rtl8723au-Do-not-embed-struct-wlan_bssid_ex-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0051-staging-rtl8723au-Allocate-struct-wlan_bssid_ex-in-c.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0052-staging-rtl8723au-collect_bss_info-Don-t-memset-what.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0053-staging-rtl8723au-free_scanqueue-Use-_rtw_free_netwo.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0054-staging-rtl8723au-rtw_stadel_event_callback23a-Remov.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0055-staging-rtl8723au-OnAuth23a-Use-ether_addr_copy.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0056-staging-rtl8723au-Get-rid-of-IW_ESSID_MAX_SIZE.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0057-staging-rtl8723au-Make-rtw_is_same_ibss23a-return-bo.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0058-staging-rtl8723au-cfg80211_rtw_connect-Check-correct.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0059-staging-rtl8723au-Fold-rtw_set_802_11_authentication.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0060-staging-rtl8723au-Move-rtw_set_802_11_ssid23a-to-ioc.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0061-staging-rtl8723au-cfg80211_rtw_connect-Clean-up-vari.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0062-staging-rtl8723au-cfg80211_rtw_connect-Remove-obfusc.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0063-staging-rtl8723au-cfg80211_rtw_connect-Simplify-ssid.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0064-staging-rtl8723au-Pass-a-struct-wlan_network-to-rtw_.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0065-staging-rtl8723au-rtw_set_ssid-This-is-never-called-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0066-staging-rtl8723au-rtw_cfg80211_add_wep-Use-WLAN_KEY_.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0067-staging-rtl8723au-rtw_do_join23a-Use-correct-error-r.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0068-staging-rtl8723au-Minor-debug-message-fixup.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0069-staging-rtl8723au-Don-t-prepend-debug-console-messag.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0070-staging-rtl8723au-Introduce-rtw_select_candidate_fro.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0071-staging-rtl8723au-Introduce-rtw_do_join_network.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0072-staging-rtl8723au-rtw_do_join23a-Use-__func__-to-get.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0073-staging-rtl8723au-rtw_surveydone_event_callback23a-R.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0074-staging-rtl8723au-Consolidate-duplicate-adhoc-joinin.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0075-staging-rtl8723au-Remove-no-op-rtw_get_encrypt_decry.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0076-staging-rtl8723au-to_join-will-no-be-true-if-_FW_LIN.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0077-staging-rtl8723au-rtw_surveydone_event_callback23a-W.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0078-staging-rtl8723au-rtw_select_and_join_from_scanned_q.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0079-staging-rtl8723au-rtw_set_ssid-Use-rtw_do_join_netwo.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0080-staging-rtl8723au-rtw_do_join23a-Don-t-start-scannin.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0081-staging-rtl8723au-Move-rtw_do_join23a-to-rtw_mlme.c-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0082-staging-rtl8723au-rtw_get_cur_max_rate23a-Remove-dup.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0083-staging-rtl8723au-rtw_get_cur_max_rate23a-We-are-in-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0084-staging-rtl8723au-Move-rtw_get_cur_max_rate23a-to-io.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0085-staging-rtl8723au-rtw_set_802_11_bssid23a_list_scan-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0086-staging-rtl8723au-Don-t-run-regular-scans-in-the-dri.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0087-staging-rtl8723au-Quiet-unused-variable-warning-when.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0088-staging-rtl8723au-Move-FillH2CCmd-prototype-to-rtl87.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0089-staging-rtl8723au-rtw_cfg80211_set_wpa_ie-Avoid-poin.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0090-staging-rtl8723au-Add-compiler-check-for-Wtype-limit.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0091-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0092-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0093-staging-rtl8723au-rtw_cfg80211_inform_bss-timestamp-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0094-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-cfg802.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0095-staging-rtl8723au-Save-timestamp-for-network-in-coll.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0096-staging-rtl8723au-rtw_cfg80211_inform_bss-Report-the.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0097-staging-rtl8723au-collect_bss_info-Save-capability-i.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0098-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-the-ca.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0099-staging-rtl8723au-struct-wlan_bssid_ex-Rename-Beacon.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0100-staging-rtl8723au-rtw_add_beacon-Replace-magic-const.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0101-staging-rtl8723au-Update-bss-beacon-info-in-rtw_add_.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0102-staging-rtl8723au-is_same_network23a-Use-the-capabil.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0103-staging-rtl8723au-ConstructBeacon-Use-struct-ieee802.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0104-staging-rtl8723au-issue_beacon23a-Do-not-copy-IEs-in.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0105-staging-rtl8723au-issue_beacon23a-Use-struct-ieee802.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0106-staging-rtl8723au-issue_probersp-Do-not-copy-the-IEs.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0107-staging-rtl8723au-issue_assocrsp-Use-capability-from.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0108-staging-rtl8723au-issue_assocreq-Use-struct-ieee8021.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0109-staging-rtl8723au-rtw_get_bcn_info23a-Use-capability.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0110-staging-rtl8723au-rtw_get_bcn_info23a-Use-__func__-i.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0111-staging-rtl8723au-Remove-last-users-of-rtw_get_capab.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0112-staging-rtl8723au-Eliminate-last-rtw_get_beacon_inte.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0113-staging-rtl8723au-struct-mlme_priv-wps_beacon_ie-is-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0114-staging-rtl8723au-Remove-unused-mlme_priv-wps_assoc_.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0115-staging-rtl8723au-Remove-unused-struct-mlme_priv-wps.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0116-staging-rtl8723au-Remove-obsolete-mlme_priv-p2p_-ent.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0117-staging-rtl8723au-Remove-unused-struct-mlme_priv-wfd.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0118-staging-rtl8723au-Remove-write-only-struct-security_.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0119-staging-rtl8723au-Remove-hopefully-last-duplicate-de.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0120-staging-rtl8723au-rtw_survey_event_cb23a-Remember-to.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0121-staging-rtl8723au-rtw_joinbss_update_network23a-upda.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0122-staging-rtl8723au-issue_probersp-Don-t-insert-beacon.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0123-staging-rtl8723au-issue_probersp-No-need-to-calculat.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0124-staging-rtl8723au-Remove-unused-size-defines-for-mgm.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0125-staging-rtl8723au-Remove-usage-of-_-RE-ASOCREQ_IE_OF.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0126-staging-rtl8723au-Remove-unused-IE-offset-defines.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0127-staging-rtl8723au-rtw_get_cur_max_rate-Use-_FIXED_IE.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0128-staging-rtl8723au-rtw_add_beacon-Construct-a-full-be.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0129-staging-rtl8723au-rtw_check_beacon_data23a-Capabilit.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0130-staging-rtl8723au-Use-_FIXED_IE_LEN_-instead-of-hard.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0131-staging-rtl8723au-ConstructProbeRsp-Use-struct-ieee8.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0132-staging-rtl8723au-Remove-no-op-CheckFwRsvdPageConten.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0133-staging-rtl8723au-Remove-unused-dump_txrpt_ccx_8723a.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0134-staging-rtl8723au-issue_beacon23a-Fix-another-case-i.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0135-staging-rtl8723au-issue_beacon23a-Determine-ie-buffe.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0136-staging-rtl8723au-rtw_generate_ie23a-update-network-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0137-staging-rtl8723au-Stop-carrying-half-the-beacon-fram.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0138-staging-rtl8723au-Get-rid-of-obsolete-_FIXED_IE_LENG.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0139-staging-rtl8723au-Remove-unused-define-EID_BSSIntole.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0140-staging-rtl8723au-Remove-unused-define-P80211CAPTURE.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0141-staging-rtl8723au-rtw_get_wps_attr_content23a-Remove.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0142-staging-rtl8723au-Remove-unused-RSN_VERSION_BSD23A.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0143-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0144-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-is-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0145-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0146-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Sto.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0147-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0148-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-a.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0149-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0150-staging-rtl8723au-rtw_cfg80211_set_encryption-Use-ke.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0151-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0152-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-k.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0153-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Pas.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0154-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-obt.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0155-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0156-staging-rtl8723au-Stop-setting-ieee_parm-arguments-t.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0157-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-N.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0158-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0159-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-S.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0160-staging-rtl8723au-Remove-obsolete-struct-ieee_parm.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0161-staging-rtl8723au-Validate-keys-in-cfg80211_rtw_add_.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0162-staging-rtl8723au-Eliminate-set_wep_key-and-call-set.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0163-staging-rtl8723au-rtw_restruct_wmm_ie23a-Use-cfg8021.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0164-staging-rtl8723au-rtw_append_pmkid-Adjust-for-IEs-ar.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0165-staging-rtl8723au-Only-validate-vendor-specific-ies-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0166-staging-rtl8723au-OnAssocReq23a-Use-cfg80211_find_ve.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0167-staging-rtl8723au-fix-sparse-warning.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0168-staging-rtl8723au-usb_ops_linux.c-Add-blank-line-bet.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0169-staging-rtl8723au-rtw_sta_mgt.c-Use-ether_addr_-copy.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0170-staging-rtl8723au-rtw_sta_mgt.c-One-copy-of-the-broa.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0171-staging-rtl8723au-rtw_allow_stainfo23a-Make-hwaddr-a.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0172-staging-rtl8723au-Remove-unused-rtw_sreset_get_wifi_.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0173-staging-rtl8723au-Wifi_Error_Status-isn-t-used-for-a.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0174-staging-rtl8723au-sreset_priv-dbg_trigger_point-is-n.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0175-staging-rtl8723au-Remove-no-op-rtl8723a_sreset_linke.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0176-staging-rtl8723au-Remove-unused-rtw_pwr_wakeup_ex.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0177-staging-rtl8723au-Clean-up-rtw_pm_set_ips23a.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0178-staging-rtl8723au-Fold-power_saving_wk_hdl-into-rtw_.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0179-staging-rtl8723au-Remove-unused-pwrctrl_priv-brfoffb.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0180-staging-rtl8723au-Remove-unused-variables-from-struc.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0181-staging-rtl8723au-pnp_bstop_trx-is-never-set.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0182-staging-rtl8723au-pwrctrl_priv-ps_flag-is-never-set.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0183-staging-rtl8723au-Remove-never-set-struct-rtw_adapte.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0184-staging-rtl8723au-Sanitize-USB-read-write-functions.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0185-staging-rtl8723au-Simplify-_BlockWrite-based-on-sane.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0186-staging-rtl8723au-Remove-unnecessary-null-test-befor.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0187-staging-rtl8723au-Remove-horrendous-code-obfuscation.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0188-staging-rtl8723au-Call-to-ODM_ConfigRFWithHeaderFile.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0189-staging-rtl8723au-Eliminate-wrapper-ODM_ConfigRFWith.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0190-staging-rtl8723au-Remove-zero-value-calculation-adde.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0191-staging-rtl8723au-Remove-pointless-wrappers-for-call.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0192-staging-rtl8723au-Remove-unused-ODM_ReadAndConfig_PH.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0193-staging-rtl8723au-Remove-ugly-wrapper-ODM_ConfigBBWi.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0194-staging-rtl8723au-Remove-unused-ODM_MacStatusQuery23.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0195-staging-rtl8723au-Remove-obfuscating-wrapper-ODM_Con.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0196-staging-rtl8723au-Remove-unncessary-wrapper-PHY_RFCo.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0197-staging-rtl8723au-Eliminate-Set_MSR-wrapper-call.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0198-staging-rtl8723au-Reduce-number-of-duplicate-defines.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0199-staging-rtl8723au-Use-rtl8723au_set_media_status-to-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0200-staging-rtl8723au-Corrections-in-the-coding-style.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0201-staging-rtl8723au-Remove-write-only-variable-UsbRxHi.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0202-staging-rtl8723au-Remove-no-op-usb_AggSetting.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0203-staging-rtl8723au-Remove-no-op-_InitOperation_mode-f.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0204-staging-rtl8723au-Remove-RegBcnCtrlVal.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0205-staging-rtl8723au-Use-proper-name-REG_CAMCMD-and-rem.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0206-staging-rtl8723au-rtl8723a_InitBeaconParameters-Remo.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0207-staging-rtl8723au-ODM_IC_11N_SERIES-is-always-true-f.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0208-staging-rtl8723au-Remove-unused-odm_RegDefine11AC.h.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0209-staging-rtl8723au-Remove-pointless-IS_STA_VALID-macr.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0210-staging-rtl8723au-Fold-odm_EdcaTurboCheck23aCE23a-in.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0211-staging-rtl8723au-Declare-odm_EdcaTurbo-functions-st.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0212-staging-rtl8723au-bDMInitialGainEnable-is-always-tru.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0213-staging-rtl8723au-Remove-unused-DefaultInitialGain-a.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0214-staging-rtl8723au-Remove-some-redundant-check-for-hw.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0215-staging-rtl8723au-Remove-no-op-rtl8723a_deinit_dm_pr.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0216-staging-rtl8723au-Remove-no-op-function-dm_CheckStat.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0217-staging-rtl8723au-Remove-write-only-struct-dm_priv-D.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0218-staging-rtl8723au-Remove-write-only-variables-struct.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0219-staging-rtl8723au-Remove-ODM_CMNINFO_-RT-X_UNI-and-r.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0220-staging-rtl8723au-Remove-useless-ODM_CMNINFO_-WM_MOD.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0221-staging-rtl8723au-Remove-another-pile-of-useless-ODM.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0222-staging-rtl8723au-Remove-another-pile-of-awful-unuse.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0223-staging-rtl8723au-We-don-t-need-two-APIs-to-set-pHal.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0224-staging-rtl8723au-ODM_DMWatchdog23a-Take-a-struct-ha.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0225-staging-rtl8723au-Eliminate-ugly-ODM_CMNINFO_SEC_CHN.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0226-staging-rtl8723au-Eliminate-ODM_CMNINFO_BW-usage.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0227-staging-rtl8723au-Eliminate-ODM_CMNINFO_CHNL-usage.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0228-staging-rtl8723au-Eliminate-ODM_CMNINFO_SCAN-related.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0229-staging-rtl8723au-Eliminate-ODM_CMNINFO_POWER_SAVING.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0230-staging-rtl8723au-Eliminate-obsolete-odm_CmnInfoHook.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0231-staging-rtl8723au-Remove-obsolete-ODM23a_CmnInfoHook.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0232-staging-rtl8723au-Merge-Init_ODM_ComInfo_8723a-into-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0233-staging-rtl8723au-odm_CommonInfoSelfInit23a-Use-prop.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0234-staging-rtl8723au-Remove-a-pile-of-fluff-for-calling.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0235-staging-rtl8723au-Fold-rtl8723a_set_nav_upper-into-r.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0236-staging-rtl8723au-Reduce-wrapper-layers-around-hal_-.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0237-staging-rtl8723au-Fold-rtw_resume_process23a-into-rt.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0239-staging-rtl8723au-Fix-typo-in-rtw_mlme_ext.c.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0240-staging-rtl8723au-Fix-typo-in-rtw_mlme.c.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0241-staging-rtl8723au-Fix-typo-in-rtw_xmit.c.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0242-staging-rtl8723au-Fix-typo-in-rtw_ap.c.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0243-staging-rtl8723au-Fix-typo-in-rtl8723au-core.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0244-staging-rtl8723au-RSSI_test-is-never-set.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0245-staging-rtl8723au-Remove-two-never-set-variables.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0246-staging-rtl8723au-Remove-never-set-struct-pwrctrl_pr.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0247-staging-rtl8723au-Do-not-duplicate-kernel-provided-U.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0248-staging-rtl8723au-usb_dvobj_init-Remove-unused-varia.patch
   dists/sid/linux/debian/patches/features/all/r8723au/0249-staging-rtl8723au-Fix-static-symbol-sparse-warning.patch
Modified:
   dists/sid/linux/debian/changelog
   dists/sid/linux/debian/patches/series

Modified: dists/sid/linux/debian/changelog
==============================================================================
--- dists/sid/linux/debian/changelog	Sat Oct 25 23:26:41 2014	(r21972)
+++ dists/sid/linux/debian/changelog	Sun Oct 26 00:59:13 2014	(r21973)
@@ -5,6 +5,7 @@
     (Closes: #764804)
   * [i386/486] Update description to say that the processor must have a TSC
     (see #766105)
+  * [x86] r8723au: Backport changes up to Linux 3.17 (Closes: #765685)
 
   [ Mauricio Faria de Oliveira ]
   * [ppc64el] Disable CONFIG_CMDLINE{,_BOOL} usage for setting consoles

Added: dists/sid/linux/debian/patches/features/all/r8723au/0001-staging-rtl8723au-rtw_get_wps_ie23a-Remove-unused-de.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0001-staging-rtl8723au-rtw_get_wps_ie23a-Remove-unused-de.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,156 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:15:53 +0200
+Subject: [001/249] staging: rtl8723au: rtw_get_wps_ie23a(): Remove unused dest
+ pointer wps_ie
+Origin: https://git.kernel.org/linus/fbf380cf9af65ef79741ef128f583bc14339da8b
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c           | 7 +++++--
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c    | 7 +------
+ drivers/staging/rtl8723au/core/rtw_mlme.c         | 2 +-
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c     | 6 ++----
+ drivers/staging/rtl8723au/include/ieee80211.h     | 2 +-
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 9 ++++-----
+ 6 files changed, 14 insertions(+), 19 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index c8700b3..976d4e4 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -660,7 +660,9 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
+ 	/* check if there is wps ie, */
+ 	/* if there is wpsie in beacon, the hostapd will update beacon twice when stating hostapd, */
+ 	/* and at first time the security ie (RSN/WPA IE) will not include in beacon. */
+-	if (NULL == rtw_get_wps_ie23a(pnetwork->IEs+_FIXED_IE_LENGTH_, pnetwork->IELength-_FIXED_IE_LENGTH_, NULL, NULL))
++	if (NULL == rtw_get_wps_ie23a(pnetwork->IEs + _FIXED_IE_LENGTH_,
++				      pnetwork->IELength - _FIXED_IE_LENGTH_,
++				      NULL))
+ 		pmlmeext->bstart_bss = true;
+ 
+ 	/* todo: update wmm, ht cap */
+@@ -1239,7 +1241,8 @@ static void update_bcn_wps_ie(struct rtw_adapter *padapter)
+ 	if (pwps_ie_src == NULL)
+ 		return;
+ 
+-	pwps_ie = rtw_get_wps_ie23a(ie+_FIXED_IE_LENGTH_, ielen-_FIXED_IE_LENGTH_, NULL, &wps_ielen);
++	pwps_ie = rtw_get_wps_ie23a(ie + _FIXED_IE_LENGTH_,
++				    ielen - _FIXED_IE_LENGTH_, &wps_ielen);
+ 
+ 	if (pwps_ie == NULL || wps_ielen == 0)
+ 		return;
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index adb86a5..52eb5ff 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -700,14 +700,12 @@ int rtw_get_sec_ie23a(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len,
+  * rtw_get_wps_ie23a - Search WPS IE from a series of IEs
+  * @in_ie: Address of IEs to search
+  * @in_len: Length limit from in_ie
+- * @wps_ie: If not NULL and WPS IE is found, WPS IE will be copied to the
+- *          buf starting from wps_ie
+  * @wps_ielen: If not NULL and WPS IE is found, will set to the length of
+  *             the entire WPS IE
+  *
+  * Returns: The address of the WPS IE found, or NULL
+  */
+-u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen)
++u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, uint *wps_ielen)
+ {
+ 	uint cnt;
+ 	u8 *wpsie_ptr = NULL;
+@@ -728,9 +726,6 @@ u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen)
+ 		    !memcmp(&in_ie[cnt+2], wps_oui, 4)) {
+ 			wpsie_ptr = &in_ie[cnt];
+ 
+-			if (wps_ie)
+-				memcpy(wps_ie, &in_ie[cnt], in_ie[cnt + 1] + 2);
+-
+ 			if (wps_ielen)
+ 				*wps_ielen = in_ie[cnt + 1] + 2;
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 7170258..f292fce 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -600,7 +600,7 @@ static int rtw_is_desired_network(struct rtw_adapter *adapter,
+ 	if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) {
+ 		if (rtw_get_wps_ie23a(pnetwork->network.IEs + _FIXED_IE_LENGTH_,
+ 				      pnetwork->network.IELength -
+-				      _FIXED_IE_LENGTH_, NULL, &wps_ielen))
++				      _FIXED_IE_LENGTH_, &wps_ielen))
+ 			return true;
+ 		else
+ 			return false;
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index e1b28a2..c1e8299 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2511,8 +2511,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 					   sizeof (struct ieee80211_hdr_3addr) +
+ 					   _BEACON_IE_OFFSET_, pattrib->pktlen -
+ 					   sizeof (struct ieee80211_hdr_3addr) -
+-					   _BEACON_IE_OFFSET_, NULL,
+-					   &wps_ielen);
++					   _BEACON_IE_OFFSET_, &wps_ielen);
+ 		if (wps_ie && wps_ielen > 0) {
+ 			rtw_get_wps_attr_content23a(wps_ie, wps_ielen,
+ 						    WPS_ATTR_SELECTED_REGISTRAR,
+@@ -2677,8 +2676,7 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 		pwps_ie = rtw_get_wps_ie23a(cur_network->IEs +
+ 					    _FIXED_IE_LENGTH_,
+ 					    cur_network->IELength -
+-					    _FIXED_IE_LENGTH_, NULL,
+-					    &wps_ielen);
++					    _FIXED_IE_LENGTH_, &wps_ielen);
+ 
+ 		/* inerset & update wps_probe_resp_ie */
+ 		if (pmlmepriv->wps_probe_resp_ie && pwps_ie && wps_ielen > 0) {
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index 69c0f5c..68ee71b 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -432,7 +432,7 @@ int rtw_parse_wpa2_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, in
+ 
+ int rtw_get_sec_ie23a(u8 *in_ie,uint in_len,u8 *rsn_ie,u16 *rsn_len,u8 *wpa_ie,u16 *wpa_len);
+ 
+-u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen);
++u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, uint *wps_ielen);
+ u8 *rtw_get_wps_attr23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_attr, u32 *len_attr);
+ u8 *rtw_get_wps_attr_content23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content, uint *len_content);
+ 
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index f0839f6..693310c 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -1486,7 +1486,7 @@ static int rtw_cfg80211_set_probe_req_wpsp2pie(struct rtw_adapter *padapter,
+ 	DBG_8723A("%s, ielen =%d\n", __func__, len);
+ 
+ 	if (len > 0) {
+-		wps_ie = rtw_get_wps_ie23a(buf, len, NULL, &wps_ielen);
++		wps_ie = rtw_get_wps_ie23a(buf, len, &wps_ielen);
+ 		if (wps_ie) {
+ 			DBG_8723A("probe_req_wps_ielen =%d\n", wps_ielen);
+ 
+@@ -1886,7 +1886,7 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie,
+ 		uint wps_ielen;
+ 		u8 *wps_ie;
+ 
+-		wps_ie = rtw_get_wps_ie23a(buf, ielen, NULL, &wps_ielen);
++		wps_ie = rtw_get_wps_ie23a(buf, ielen, &wps_ielen);
+ 		if (wps_ie && wps_ielen > 0) {
+ 			DBG_8723A("got wps_ie, wps_ielen:%u\n", wps_ielen);
+ 			padapter->securitypriv.wps_ie_len =
+@@ -2825,9 +2825,8 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head,
+ 	len = head_len + tail_len - 24;
+ 
+ 	/* check wps ie if inclued */
+-	if (rtw_get_wps_ie23a
+-	    (pbuf + _FIXED_IE_LENGTH_, len - _FIXED_IE_LENGTH_, NULL,
+-	     &wps_ielen))
++	if (rtw_get_wps_ie23a(pbuf + _FIXED_IE_LENGTH_, len - _FIXED_IE_LENGTH_,
++			      &wps_ielen))
+ 		DBG_8723A("add bcn, wps_ielen =%d\n", wps_ielen);
+ 
+ 	/* pbss_network->IEs will not include p2p_ie, wfd ie */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0002-staging-rtl8723au-rtw_mlme_ext.c-Convert-rtw_get_wps.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0002-staging-rtl8723au-rtw_mlme_ext.c-Convert-rtw_get_wps.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,147 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:15:54 +0200
+Subject: [002/249] staging: rtl8723au: rtw_mlme_ext.c: Convert
+ rtw_get_wps_ie23a() to cfg80211_find_vendor_ie()
+Origin: https://git.kernel.org/linus/6e5e41840e2bdafbe1be3fffa2cb0d90bfd067ca
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 15 +++++-----
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c  | 40 +++++++++++++++-----------
+ drivers/staging/rtl8723au/include/ieee80211.h  |  4 +--
+ 3 files changed, 34 insertions(+), 25 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index 52eb5ff..a1a27e2 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -752,11 +752,11 @@ u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, uint *wps_ielen)
+  *
+  * Returns: the address of the specific WPS attribute found, or NULL
+  */
+-u8 *rtw_get_wps_attr23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id,
+-		     u8 *buf_attr, u32 *len_attr)
++const u8 *rtw_get_wps_attr23a(const u8 *wps_ie, uint wps_ielen,
++			      u16 target_attr_id, u8 *buf_attr, u32 *len_attr)
+ {
+-	u8 *attr_ptr = NULL;
+-	u8 * target_attr_ptr = NULL;
++	const u8 *attr_ptr = NULL;
++	const u8 *target_attr_ptr = NULL;
+ 	u8 wps_oui[4] = {0x00, 0x50, 0xF2, 0x04};
+ 
+ 	if (len_attr)
+@@ -808,10 +808,11 @@ u8 *rtw_get_wps_attr23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id,
+  *
+  * Returns: the address of the specific WPS attribute content found, or NULL
+  */
+-u8 *rtw_get_wps_attr_content23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id,
+-				u8 *buf_content, uint *len_content)
++const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen,
++				      u16 target_attr_id, u8 *buf_content,
++				      uint *len_content)
+ {
+-	u8 *attr_ptr;
++	const u8 *attr_ptr;
+ 	u32 attr_len;
+ 
+ 	if (len_content)
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index c1e8299..20e9b62 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2460,8 +2460,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *cur_network = &pmlmeinfo->network;
+ 	u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+-	u8 *wps_ie;
+-	u32 wps_ielen;
++	const u8 *wps_ie;
+ 	u8 sr = 0;
+ 	int len_diff;
+ 
+@@ -2498,6 +2497,8 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
+ 
+ 	if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) {
++		u8 *iebuf;
++		int buflen;
+ 		/* DBG_8723A("ie len =%d\n", cur_network->IELength); */
+ 		memcpy(pframe, cur_network->IEs, cur_network->IELength);
+ 		len_diff = update_hidden_ssid(pframe + _BEACON_IE_OFFSET_,
+@@ -2507,13 +2508,17 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 		pframe += (cur_network->IELength+len_diff);
+ 		pattrib->pktlen += (cur_network->IELength+len_diff);
+ 
+-		wps_ie = rtw_get_wps_ie23a(pmgntframe->buf_addr + TXDESC_OFFSET+
+-					   sizeof (struct ieee80211_hdr_3addr) +
+-					   _BEACON_IE_OFFSET_, pattrib->pktlen -
+-					   sizeof (struct ieee80211_hdr_3addr) -
+-					   _BEACON_IE_OFFSET_, &wps_ielen);
+-		if (wps_ie && wps_ielen > 0) {
+-			rtw_get_wps_attr_content23a(wps_ie, wps_ielen,
++		iebuf = pmgntframe->buf_addr + TXDESC_OFFSET +
++			sizeof (struct ieee80211_hdr_3addr) +
++			_BEACON_IE_OFFSET_;
++		buflen = pattrib->pktlen - sizeof (struct ieee80211_hdr_3addr) -
++			_BEACON_IE_OFFSET_;
++		wps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
++						 WLAN_OUI_TYPE_MICROSOFT_WPS,
++						 iebuf, buflen);
++
++		if (wps_ie && wps_ie[1] > 0) {
++			rtw_get_wps_attr_content23a(wps_ie, wps_ie[1],
+ 						    WPS_ATTR_SELECTED_REGISTRAR,
+ 						    (u8*)&sr, NULL);
+ 		}
+@@ -2619,7 +2624,7 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 	unsigned char *mac, *bssid;
+ 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
+ #ifdef CONFIG_8723AU_AP_MODE
+-	u8 *pwps_ie;
++	const u8 *pwps_ie;
+ 	uint wps_ielen;
+ 	u8 *ssid_ie;
+ 	int ssid_ielen;
+@@ -2673,16 +2678,19 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 
+ #ifdef CONFIG_8723AU_AP_MODE
+ 	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
+-		pwps_ie = rtw_get_wps_ie23a(cur_network->IEs +
+-					    _FIXED_IE_LENGTH_,
+-					    cur_network->IELength -
+-					    _FIXED_IE_LENGTH_, &wps_ielen);
++		pwps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
++						  WLAN_OUI_TYPE_MICROSOFT_WPS,
++						  cur_network->IEs +
++						  _FIXED_IE_LENGTH_,
++						  cur_network->IELength -
++						  _FIXED_IE_LENGTH_);
+ 
+ 		/* inerset & update wps_probe_resp_ie */
+-		if (pmlmepriv->wps_probe_resp_ie && pwps_ie && wps_ielen > 0) {
++		if (pmlmepriv->wps_probe_resp_ie && pwps_ie && pwps_ie[1] > 0) {
+ 			uint wps_offset, remainder_ielen;
+-			u8 *premainder_ie;
++			const u8 *premainder_ie;
+ 
++			wps_ielen = pwps_ie[1];
+ 			wps_offset = (uint)(pwps_ie - cur_network->IEs);
+ 
+ 			premainder_ie = pwps_ie + wps_ielen;
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index 68ee71b..e023e05 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -433,8 +433,8 @@ int rtw_parse_wpa2_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, in
+ int rtw_get_sec_ie23a(u8 *in_ie,uint in_len,u8 *rsn_ie,u16 *rsn_len,u8 *wpa_ie,u16 *wpa_len);
+ 
+ u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, uint *wps_ielen);
+-u8 *rtw_get_wps_attr23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_attr, u32 *len_attr);
+-u8 *rtw_get_wps_attr_content23a(u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content, uint *len_content);
++const u8 *rtw_get_wps_attr23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_attr, u32 *len_attr);
++const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content, uint *len_content);
+ 
+ uint	rtw_get_rateset_len23a(u8	*rateset);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0003-staging-rtl8723au-rtw_mlme.c-Convert-rtw_get_wps_ie2.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0003-staging-rtl8723au-rtw_mlme.c-Convert-rtw_get_wps_ie2.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,42 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:15:55 +0200
+Subject: [003/249] staging: rtl8723au: rtw_mlme.c: Convert rtw_get_wps_ie23a()
+ to cfg80211_find_vendor_ie()
+Origin: https://git.kernel.org/linus/9c40e1230ec57a8ff7261681feeec6cbe72bbfb2
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 13 ++++++-------
+ 1 file changed, 6 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index f292fce..0b9fd3a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -588,19 +588,18 @@ static int rtw_is_desired_network(struct rtw_adapter *adapter,
+ 	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+ 	u32 desired_encmode;
+ 	u32 privacy;
+-
+-	/* u8 wps_ie[512]; */
+-	uint wps_ielen;
+-
+ 	int bselected = true;
+ 
+ 	desired_encmode = psecuritypriv->ndisencryptstatus;
+ 	privacy = pnetwork->network.Privacy;
+ 
+ 	if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) {
+-		if (rtw_get_wps_ie23a(pnetwork->network.IEs + _FIXED_IE_LENGTH_,
+-				      pnetwork->network.IELength -
+-				      _FIXED_IE_LENGTH_, &wps_ielen))
++		if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
++					    WLAN_OUI_TYPE_MICROSOFT_WPA,
++					    pnetwork->network.IEs +
++					    _FIXED_IE_LENGTH_,
++					    pnetwork->network.IELength -
++					    _FIXED_IE_LENGTH_))
+ 			return true;
+ 		else
+ 			return false;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0004-staging-rtl8723au-ioctl_cfg80211.c-Convert-rtw_get_w.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0004-staging-rtl8723au-ioctl_cfg80211.c-Convert-rtw_get_w.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,128 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:15:56 +0200
+Subject: [004/249] staging: rtl8723au: ioctl_cfg80211.c: Convert
+ rtw_get_wps_ie23a() to cfg80211_find_vendor_ie()
+Origin: https://git.kernel.org/linus/d3797af488780e4f83d92ea0a3dc0a6381b566f3
+
+Given that the IE len is stored in a u8, there is no point having a
+512 buffer to store it, nor check if the size exceeds this size.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/ieee80211.h     |  2 +-
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 48 +++++++++++------------
+ 2 files changed, 24 insertions(+), 26 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index e023e05..43ad669 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -317,7 +317,7 @@ struct ieee80211_snap_hdr {
+ #define MAX_CHANNEL_NUMBER	161
+ 
+ #define MAX_WPA_IE_LEN		256
+-#define MAX_WPS_IE_LEN		512
++#define MAX_WPS_IE_LEN		256
+ #define MAX_P2P_IE_LEN		256
+ #define MAX_WFD_IE_LEN		128
+ 
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 693310c..d2fa9b20 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -1479,16 +1479,17 @@ static int rtw_cfg80211_set_probe_req_wpsp2pie(struct rtw_adapter *padapter,
+ 					       char *buf, int len)
+ {
+ 	int ret = 0;
+-	uint wps_ielen = 0;
+-	u8 *wps_ie;
++	const u8 *wps_ie;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 
+ 	DBG_8723A("%s, ielen =%d\n", __func__, len);
+ 
+ 	if (len > 0) {
+-		wps_ie = rtw_get_wps_ie23a(buf, len, &wps_ielen);
++		wps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
++						 WLAN_OUI_TYPE_MICROSOFT_WPS,
++						 buf, len);
+ 		if (wps_ie) {
+-			DBG_8723A("probe_req_wps_ielen =%d\n", wps_ielen);
++			DBG_8723A("probe_req_wps_ielen =%d\n", wps_ie[1]);
+ 
+ 			if (pmlmepriv->wps_probe_req_ie) {
+ 				pmlmepriv->wps_probe_req_ie_len = 0;
+@@ -1496,15 +1497,14 @@ static int rtw_cfg80211_set_probe_req_wpsp2pie(struct rtw_adapter *padapter,
+ 				pmlmepriv->wps_probe_req_ie = NULL;
+ 			}
+ 
+-			pmlmepriv->wps_probe_req_ie = kmemdup(wps_ie,
+-							      wps_ielen,
++			pmlmepriv->wps_probe_req_ie = kmemdup(wps_ie, wps_ie[1],
+ 							      GFP_KERNEL);
+ 			if (pmlmepriv->wps_probe_req_ie == NULL) {
+ 				DBG_8723A("%s()-%d: kmalloc() ERROR!\n",
+ 					  __func__, __LINE__);
+ 				return -EINVAL;
+ 			}
+-			pmlmepriv->wps_probe_req_ie_len = wps_ielen;
++			pmlmepriv->wps_probe_req_ie_len = wps_ie[1];
+ 		}
+ 	}
+ 
+@@ -1751,6 +1751,7 @@ static int rtw_cfg80211_set_key_mgt(struct security_priv *psecuritypriv,
+ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie,
+ 				   size_t ielen)
+ {
++	const u8 *wps_ie;
+ 	u8 *buf = NULL;
+ 	int group_cipher = 0, pairwise_cipher = 0;
+ 	int ret = 0;
+@@ -1882,22 +1883,17 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie,
+ 		break;
+ 	}
+ 
+-	{			/* handle wps_ie */
+-		uint wps_ielen;
+-		u8 *wps_ie;
+-
+-		wps_ie = rtw_get_wps_ie23a(buf, ielen, &wps_ielen);
+-		if (wps_ie && wps_ielen > 0) {
+-			DBG_8723A("got wps_ie, wps_ielen:%u\n", wps_ielen);
+-			padapter->securitypriv.wps_ie_len =
+-				wps_ielen <
+-				MAX_WPS_IE_LEN ? wps_ielen : MAX_WPS_IE_LEN;
+-			memcpy(padapter->securitypriv.wps_ie, wps_ie,
+-			       padapter->securitypriv.wps_ie_len);
+-			set_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS);
+-		} else {
+-			_clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS);
+-		}
++	wps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
++					 WLAN_OUI_TYPE_MICROSOFT_WPS,
++					 buf, ielen);
++	if (wps_ie && wps_ie[1] > 0) {
++		DBG_8723A("got wps_ie, wps_ielen:%u\n", wps_ie[1]);
++		padapter->securitypriv.wps_ie_len = wps_ie[1];
++		memcpy(padapter->securitypriv.wps_ie, wps_ie,
++		       padapter->securitypriv.wps_ie_len);
++		set_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS);
++	} else {
++		_clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS);
+ 	}
+ 
+ 	/* TKIP and AES disallow multicast packets until installing group key */
+@@ -2825,8 +2821,10 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head,
+ 	len = head_len + tail_len - 24;
+ 
+ 	/* check wps ie if inclued */
+-	if (rtw_get_wps_ie23a(pbuf + _FIXED_IE_LENGTH_, len - _FIXED_IE_LENGTH_,
+-			      &wps_ielen))
++	if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
++				    WLAN_OUI_TYPE_MICROSOFT_WPS,
++				    pbuf + _FIXED_IE_LENGTH_,
++				    len - _FIXED_IE_LENGTH_))
+ 		DBG_8723A("add bcn, wps_ielen =%d\n", wps_ielen);
+ 
+ 	/* pbss_network->IEs will not include p2p_ie, wfd ie */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0005-staging-rtl8723au-rtw_ap.c-Convert-from-rtw_get_wps_.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0005-staging-rtl8723au-rtw_ap.c-Convert-from-rtw_get_wps_.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,78 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:15:57 +0200
+Subject: [005/249] staging: rtl8723au: rtw_ap.c: Convert from
+ rtw_get_wps_ie23a() to cfg80211_find_vendor_ie()
+Origin: https://git.kernel.org/linus/715a8a749310e78d6ca34d85229407db7a7775ec
+
+Some of this is hackish, but so was the original code. This needs to
+be cleaned up eventually.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c | 25 ++++++++++++++++---------
+ 1 file changed, 16 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index 976d4e4..d03bb3e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -660,9 +660,11 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
+ 	/* check if there is wps ie, */
+ 	/* if there is wpsie in beacon, the hostapd will update beacon twice when stating hostapd, */
+ 	/* and at first time the security ie (RSN/WPA IE) will not include in beacon. */
+-	if (NULL == rtw_get_wps_ie23a(pnetwork->IEs + _FIXED_IE_LENGTH_,
+-				      pnetwork->IELength - _FIXED_IE_LENGTH_,
+-				      NULL))
++	if (NULL == cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
++					    WLAN_OUI_TYPE_MICROSOFT_WPS,
++					    pnetwork->IEs + _FIXED_IE_LENGTH_,
++					    pnetwork->IELength -
++					    _FIXED_IE_LENGTH_))
+ 		pmlmeext->bstart_bss = true;
+ 
+ 	/* todo: update wmm, ht cap */
+@@ -1226,7 +1228,8 @@ static void update_bcn_wmm_ie(struct rtw_adapter *padapter)
+ 
+ static void update_bcn_wps_ie(struct rtw_adapter *padapter)
+ {
+-	u8 *pwps_ie = NULL, *pwps_ie_src, *premainder_ie, *pbackup_remainder_ie = NULL;
++	const u8 *pwps_ie, *premainder_ie;
++	u8 *pwps_ie_src, *pbackup_remainder_ie = NULL;
+ 	uint wps_ielen = 0, wps_offset, remainder_ielen;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+@@ -1241,12 +1244,15 @@ static void update_bcn_wps_ie(struct rtw_adapter *padapter)
+ 	if (pwps_ie_src == NULL)
+ 		return;
+ 
+-	pwps_ie = rtw_get_wps_ie23a(ie + _FIXED_IE_LENGTH_,
+-				    ielen - _FIXED_IE_LENGTH_, &wps_ielen);
++	pwps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
++					  WLAN_OUI_TYPE_MICROSOFT_WPS,
++					  ie + _FIXED_IE_LENGTH_,
++					  ielen - _FIXED_IE_LENGTH_);
+ 
+-	if (pwps_ie == NULL || wps_ielen == 0)
++	if (pwps_ie == NULL || pwps_ie[1] == 0)
+ 		return;
+ 
++	wps_ielen = pwps_ie[1];
+ 	wps_offset = (uint)(pwps_ie-ie);
+ 
+ 	premainder_ie = pwps_ie + wps_ielen;
+@@ -1263,11 +1269,12 @@ static void update_bcn_wps_ie(struct rtw_adapter *padapter)
+ 	wps_ielen = (uint)pwps_ie_src[1];/* to get ie data len */
+ 	if ((wps_offset+wps_ielen+2+remainder_ielen)<= MAX_IE_SZ)
+ 	{
+-		memcpy(pwps_ie, pwps_ie_src, wps_ielen+2);
++		memcpy(ie + wps_offset, pwps_ie_src, wps_ielen + 2);
+ 		pwps_ie += (wps_ielen+2);
+ 
+ 		if (pbackup_remainder_ie)
+-			memcpy(pwps_ie, pbackup_remainder_ie, remainder_ielen);
++			memcpy(ie + wps_offset + wps_ielen + 2,
++			       pbackup_remainder_ie, remainder_ielen);
+ 
+ 		/* update IELength */
+ 		pnetwork->IELength = wps_offset + (wps_ielen+2) + remainder_ielen;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0006-staging-rtl8723au-Remove-obsolete-rtw_get_wps_ie23a.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0006-staging-rtl8723au-Remove-obsolete-rtw_get_wps_ie23a.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,79 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:15:58 +0200
+Subject: [006/249] staging: rtl8723au: Remove obsolete rtw_get_wps_ie23a()
+Origin: https://git.kernel.org/linus/4aea177681d809cb64ff97a3f10ed49780a9de99
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 44 --------------------------
+ drivers/staging/rtl8723au/include/ieee80211.h  |  1 -
+ 2 files changed, 45 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index a1a27e2..3dc9119 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -697,50 +697,6 @@ int rtw_get_sec_ie23a(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len,
+ }
+ 
+ /**
+- * rtw_get_wps_ie23a - Search WPS IE from a series of IEs
+- * @in_ie: Address of IEs to search
+- * @in_len: Length limit from in_ie
+- * @wps_ielen: If not NULL and WPS IE is found, will set to the length of
+- *             the entire WPS IE
+- *
+- * Returns: The address of the WPS IE found, or NULL
+- */
+-u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, uint *wps_ielen)
+-{
+-	uint cnt;
+-	u8 *wpsie_ptr = NULL;
+-	u8 eid, wps_oui[4] = {0x0, 0x50, 0xf2, 0x04};
+-
+-	if (wps_ielen)
+-		*wps_ielen = 0;
+-
+-	if (!in_ie || in_len <= 0)
+-		return wpsie_ptr;
+-
+-	cnt = 0;
+-
+-	while (cnt < in_len) {
+-		eid = in_ie[cnt];
+-
+-		if (eid == WLAN_EID_VENDOR_SPECIFIC &&
+-		    !memcmp(&in_ie[cnt+2], wps_oui, 4)) {
+-			wpsie_ptr = &in_ie[cnt];
+-
+-			if (wps_ielen)
+-				*wps_ielen = in_ie[cnt + 1] + 2;
+-
+-			cnt += in_ie[cnt + 1] + 2;
+-
+-			break;
+-		} else {
+-			cnt += in_ie[cnt + 1] + 2; /* goto next */
+-		}
+-	}
+-
+-	return wpsie_ptr;
+-}
+-
+-/**
+  * rtw_get_wps_attr23a - Search a specific WPS attribute from a given WPS IE
+  * @wps_ie: Address of WPS IE to search
+  * @wps_ielen: Length limit from wps_ie
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index 43ad669..bb645cf 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -432,7 +432,6 @@ int rtw_parse_wpa2_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, in
+ 
+ int rtw_get_sec_ie23a(u8 *in_ie,uint in_len,u8 *rsn_ie,u16 *rsn_len,u8 *wpa_ie,u16 *wpa_len);
+ 
+-u8 *rtw_get_wps_ie23a(u8 *in_ie, uint in_len, uint *wps_ielen);
+ const u8 *rtw_get_wps_attr23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_attr, u32 *len_attr);
+ const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content, uint *len_content);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0009-staging-rtl8723au-rtw_mlme_ext.c-Fix-up-some-of-the-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0009-staging-rtl8723au-rtw_mlme_ext.c-Fix-up-some-of-the-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,621 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 31 May 2014 18:05:08 +0200
+Subject: [009/249] staging: rtl8723au: rtw_mlme_ext.c: Fix up some of the bad
+ formatting
+Origin: https://git.kernel.org/linus/d54239a4856cf447a4ba0cbbb4b4f35f4715e4f4
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 274 +++++++++++++++-----------
+ 1 file changed, 160 insertions(+), 114 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 20e9b62..7a117c0 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -107,12 +107,12 @@ static u8	null_addr[ETH_ALEN]= {0, 0, 0, 0, 0, 0};
+ OUI definitions for the vendor specific IE
+ ***************************************************/
+ unsigned char WMM_OUI23A[] = {0x00, 0x50, 0xf2, 0x02};
+-unsigned char	WPS_OUI23A[] = {0x00, 0x50, 0xf2, 0x04};
+-unsigned char	P2P_OUI23A[] = {0x50, 0x6F, 0x9A, 0x09};
+-unsigned char	WFD_OUI23A[] = {0x50, 0x6F, 0x9A, 0x0A};
++unsigned char WPS_OUI23A[] = {0x00, 0x50, 0xf2, 0x04};
++unsigned char P2P_OUI23A[] = {0x50, 0x6F, 0x9A, 0x09};
++unsigned char WFD_OUI23A[] = {0x50, 0x6F, 0x9A, 0x0A};
+ 
+-unsigned char	WMM_INFO_OUI23A[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01};
+-unsigned char	WMM_PARA_OUI23A[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01};
++unsigned char WMM_INFO_OUI23A[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01};
++unsigned char WMM_PARA_OUI23A[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01};
+ 
+ static unsigned char REALTEK_96B_IE[] = {0x00, 0xe0, 0x4c, 0x02, 0x01, 0x20};
+ 
+@@ -120,49 +120,87 @@ static unsigned char REALTEK_96B_IE[] = {0x00, 0xe0, 0x4c, 0x02, 0x01, 0x20};
+ MCS rate definitions
+ *********************************************************/
+ unsigned char MCS_rate_2R23A[16] = {
+-	0xff, 0xff, 0x0, 0x0, 0x01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
++	0xff, 0xff, 0x0, 0x0, 0x01, 0x0, 0x0, 0x0,
++	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
+ unsigned char MCS_rate_1R23A[16] = {
+-	0xff, 0x00, 0x0, 0x0, 0x01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
++	0xff, 0x00, 0x0, 0x0, 0x01, 0x0, 0x0, 0x0,
++	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
+ 
+ /********************************************************
+ ChannelPlan definitions
+ *********************************************************/
+ 
+-static struct rt_channel_plan_2g	RTW_ChannelPlan2G[RT_CHANNEL_DOMAIN_2G_MAX] = {
+-	{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13},		/*  0x00, RT_CHANNEL_DOMAIN_2G_WORLD , Passive scan CH 12, 13 */
+-	{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13},		/*  0x01, RT_CHANNEL_DOMAIN_2G_ETSI1 */
+-	{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 11},			/*  0x02, RT_CHANNEL_DOMAIN_2G_FCC1 */
+-	{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, 14},	/*  0x03, RT_CHANNEL_DOMAIN_2G_MIKK1 */
+-	{{10, 11, 12, 13}, 4},					/*  0x04, RT_CHANNEL_DOMAIN_2G_ETSI2 */
+-	{{}, 0},									/*  0x05, RT_CHANNEL_DOMAIN_2G_NULL */
++static struct rt_channel_plan_2g RTW_ChannelPlan2G[RT_CHANNEL_DOMAIN_2G_MAX] = {
++	/*  0x00, RT_CHANNEL_DOMAIN_2G_WORLD , Passive scan CH 12, 13 */
++	{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13},
++	/*  0x01, RT_CHANNEL_DOMAIN_2G_ETSI1 */
++	{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13},
++	/*  0x02, RT_CHANNEL_DOMAIN_2G_FCC1 */
++	{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 11},
++	/*  0x03, RT_CHANNEL_DOMAIN_2G_MIKK1 */
++	{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, 14},
++	/*  0x04, RT_CHANNEL_DOMAIN_2G_ETSI2 */
++	{{10, 11, 12, 13}, 4},
++	/*  0x05, RT_CHANNEL_DOMAIN_2G_NULL */
++	{{}, 0},
+ };
+ 
+-static struct rt_channel_plan_5g	RTW_ChannelPlan5G[RT_CHANNEL_DOMAIN_5G_MAX] = {
+-	{{}, 0},																					/*  0x00, RT_CHANNEL_DOMAIN_5G_NULL */
+-	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140}, 19},						/*  0x01, RT_CHANNEL_DOMAIN_5G_ETSI1 */
+-	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165}, 24},	/*  0x02, RT_CHANNEL_DOMAIN_5G_ETSI2 */
+-	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 149, 153, 157, 161, 165}, 22},			/*  0x03, RT_CHANNEL_DOMAIN_5G_ETSI3 */
+-	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165}, 24},	/*  0x04, RT_CHANNEL_DOMAIN_5G_FCC1 */
+-	{{36, 40, 44, 48, 149, 153, 157, 161, 165}, 9},														/*  0x05, RT_CHANNEL_DOMAIN_5G_FCC2 */
+-	{{36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165}, 13},											/*  0x06, RT_CHANNEL_DOMAIN_5G_FCC3 */
+-	{{36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161}, 12},												/*  0x07, RT_CHANNEL_DOMAIN_5G_FCC4 */
+-	{{149, 153, 157, 161, 165}, 5},																	/*  0x08, RT_CHANNEL_DOMAIN_5G_FCC5 */
+-	{{36, 40, 44, 48, 52, 56, 60, 64}, 8},																/*  0x09, RT_CHANNEL_DOMAIN_5G_FCC6 */
+-	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 136, 140, 149, 153, 157, 161, 165}, 20},					/*  0x0A, RT_CHANNEL_DOMAIN_5G_FCC7_IC1 */
+-	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 149, 153, 157, 161, 165}, 20},					/*  0x0B, RT_CHANNEL_DOMAIN_5G_KCC1 */
+-	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140}, 19},						/*  0x0C, RT_CHANNEL_DOMAIN_5G_MKK1 */
+-	{{36, 40, 44, 48, 52, 56, 60, 64}, 8},																/*  0x0D, RT_CHANNEL_DOMAIN_5G_MKK2 */
+-	{{100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140}, 11},											/*  0x0E, RT_CHANNEL_DOMAIN_5G_MKK3 */
+-	{{56, 60, 64, 100, 104, 108, 112, 116, 136, 140, 149, 153, 157, 161, 165}, 15},								/*  0x0F, RT_CHANNEL_DOMAIN_5G_NCC1 */
+-	{{56, 60, 64, 149, 153, 157, 161, 165}, 8},															/*  0x10, RT_CHANNEL_DOMAIN_5G_NCC2 */
+-
+-	/*  Driver self defined for old channel plan Compatible , Remember to modify if have new channel plan definition ===== */
+-	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165}, 21},				/*  0x11, RT_CHANNEL_DOMAIN_5G_FCC */
+-	{{36, 40, 44, 48}, 4},																			/*  0x12, RT_CHANNEL_DOMAIN_5G_JAPAN_NO_DFS */
+-	{{36, 40, 44, 48, 149, 153, 157, 161}, 8},																/*  0x13, RT_CHANNEL_DOMAIN_5G_FCC4_NO_DFS */
++static struct rt_channel_plan_5g RTW_ChannelPlan5G[RT_CHANNEL_DOMAIN_5G_MAX] = {
++	/*  0x00, RT_CHANNEL_DOMAIN_5G_NULL */
++	{{}, 0},
++	/*  0x01, RT_CHANNEL_DOMAIN_5G_ETSI1 */
++	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112,
++	  116, 120, 124, 128, 132, 136, 140}, 19},
++	/*  0x02, RT_CHANNEL_DOMAIN_5G_ETSI2 */
++	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112,
++	  116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165}, 24},
++	/*  0x03, RT_CHANNEL_DOMAIN_5G_ETSI3 */
++	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112,
++	  116, 120, 124, 128, 132, 149, 153, 157, 161, 165}, 22},
++	/*  0x04, RT_CHANNEL_DOMAIN_5G_FCC1 */
++	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112,
++	  116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165}, 24},
++	/*  0x05, RT_CHANNEL_DOMAIN_5G_FCC2 */
++	{{36, 40, 44, 48, 149, 153, 157, 161, 165}, 9},
++	/*  0x06, RT_CHANNEL_DOMAIN_5G_FCC3 */
++	{{36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165}, 13},
++	/*  0x07, RT_CHANNEL_DOMAIN_5G_FCC4 */
++	{{36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161}, 12},
++	/*  0x08, RT_CHANNEL_DOMAIN_5G_FCC5 */
++	{{149, 153, 157, 161, 165}, 5},
++	/*  0x09, RT_CHANNEL_DOMAIN_5G_FCC6 */
++	{{36, 40, 44, 48, 52, 56, 60, 64}, 8},
++	/*  0x0A, RT_CHANNEL_DOMAIN_5G_FCC7_IC1 */
++	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112,
++	  116, 136, 140, 149, 153, 157, 161, 165}, 20},
++	/*  0x0B, RT_CHANNEL_DOMAIN_5G_KCC1 */
++	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112,
++	  116, 120, 124, 149, 153, 157, 161, 165}, 20},
++	/*  0x0C, RT_CHANNEL_DOMAIN_5G_MKK1 */
++	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112,
++	  116, 120, 124, 128, 132, 136, 140}, 19},
++	/*  0x0D, RT_CHANNEL_DOMAIN_5G_MKK2 */
++	{{36, 40, 44, 48, 52, 56, 60, 64}, 8},
++	/*  0x0E, RT_CHANNEL_DOMAIN_5G_MKK3 */
++	{{100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140}, 11},
++	/*  0x0F, RT_CHANNEL_DOMAIN_5G_NCC1 */
++	{{56, 60, 64, 100, 104, 108, 112, 116, 136, 140, 149,
++	  153, 157, 161, 165}, 15},
++	/*  0x10, RT_CHANNEL_DOMAIN_5G_NCC2 */
++	{{56, 60, 64, 149, 153, 157, 161, 165}, 8},
++
++	/*  Driver self defined for old channel plan Compatible,
++	    Remember to modify if have new channel plan definition ===== */
++	/*  0x11, RT_CHANNEL_DOMAIN_5G_FCC */
++	{{36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112,
++	  116, 132, 136, 140, 149, 153, 157, 161, 165}, 21},
++	/*  0x12, RT_CHANNEL_DOMAIN_5G_JAPAN_NO_DFS */
++	{{36, 40, 44, 48}, 4},
++	/*  0x13, RT_CHANNEL_DOMAIN_5G_FCC4_NO_DFS */
++	{{36, 40, 44, 48, 149, 153, 157, 161}, 8},
+ };
+ 
+-static struct rt_channel_plan_map	RTW_ChannelPlanMap[RT_CHANNEL_DOMAIN_MAX] = {
++static struct rt_channel_plan_map RTW_ChannelPlanMap[RT_CHANNEL_DOMAIN_MAX] = {
+ 	/*  0x00 ~ 0x1F , Old Define ===== */
+ 	{0x02, 0x11},	/* 0x00, RT_CHANNEL_DOMAIN_FCC */
+ 	{0x02, 0x0A},	/* 0x01, RT_CHANNEL_DOMAIN_IC */
+@@ -233,7 +271,8 @@ static struct rt_channel_plan_map	RTW_ChannelPlanMap[RT_CHANNEL_DOMAIN_MAX] = {
+ 	{0x03, 0x00},	/* 0x41, RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN_2G */
+ };
+ 
+-static struct rt_channel_plan_map	RTW_CHANNEL_PLAN_MAP_REALTEK_DEFINE = {0x03, 0x02}; /* use the conbination for max channel numbers */
++static struct rt_channel_plan_map RTW_CHANNEL_PLAN_MAP_REALTEK_DEFINE =
++{0x03, 0x02}; /* use the conbination for max channel numbers */
+ 
+ static void dummy_event_callback(struct rtw_adapter *adapter, const u8 *pbuf)
+ {
+@@ -250,8 +289,7 @@ static struct fwevent wlanevents[] =
+ 	{0, NULL},
+ 	{0, NULL},
+ 	{0, &rtw_survey_event_cb23a},		/*8*/
+-	{sizeof (struct surveydone_event), &rtw_surveydone_event_callback23a},	/*9*/
+-
++	{sizeof (struct surveydone_event), &rtw_surveydone_event_callback23a},
+ 	{0, &rtw23a_joinbss_event_cb},		/*10*/
+ 	{sizeof(struct stassoc_event), &rtw_stassoc_event_callback23a},
+ 	{sizeof(struct stadel_event), &rtw_stadel_event_callback23a},
+@@ -309,7 +347,7 @@ Following are the initialization functions for WiFi MLME
+ 
+ int init_hw_mlme_ext23a(struct rtw_adapter *padapter)
+ {
+-	struct	mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 
+ 	set_channel_bwmode23a(padapter, pmlmeext->cur_channel,
+ 			      pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode);
+@@ -318,7 +356,7 @@ int init_hw_mlme_ext23a(struct rtw_adapter *padapter)
+ 
+ static void init_mlme_ext_priv23a_value(struct rtw_adapter* padapter)
+ {
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	unsigned char	mixed_datarate[NumRates] = {
+ 		_1M_RATE_, _2M_RATE_, _5M_RATE_, _11M_RATE_, _6M_RATE_,
+@@ -391,8 +429,8 @@ static int has_channel(struct rt_channel_info *channel_set,
+ static void init_channel_list(struct rtw_adapter *padapter,
+ 			      struct rt_channel_info *channel_set,
+ 			      u8 chanset_size,
+-			      struct p2p_channels *channel_list) {
+-
++			      struct p2p_channels *channel_list)
++{
+ 	struct p2p_oper_class_map op_class[] = {
+ 		{ IEEE80211G,  81,   1,  13,  1, BW20 },
+ 		{ IEEE80211G,  82,  14,  14,  1, BW20 },
+@@ -526,7 +564,7 @@ static u8 init_channel_set(struct rtw_adapter* padapter, u8 cplan,
+ 
+ int init_mlme_ext_priv23a(struct rtw_adapter* padapter)
+ {
+-	int	res = _SUCCESS;
++	int res = _SUCCESS;
+ 	struct registry_priv* pregistrypriv = &padapter->registrypriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+@@ -1920,7 +1958,7 @@ OnDeAuth23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ static int
+ OnDisassoc23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ {
+-	unsigned short	reason;
++	unsigned short reason;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+@@ -2835,17 +2873,17 @@ static int _issue_probereq(struct rtw_adapter *padapter,
+ 			   struct cfg80211_ssid *pssid, u8 *da, int wait_ack)
+ {
+ 	int ret = _FAIL;
+-	struct xmit_frame		*pmgntframe;
+-	struct pkt_attrib		*pattrib;
+-	unsigned char			*pframe;
+-	struct ieee80211_hdr	*pwlanhdr;
+-	unsigned char			*mac;
+-	unsigned char			bssrate[NumRates];
++	struct xmit_frame *pmgntframe;
++	struct pkt_attrib *pattrib;
++	unsigned char *pframe;
++	struct ieee80211_hdr *pwlanhdr;
++	unsigned char *mac;
++	unsigned char bssrate[NumRates];
+ 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+-	int	bssrate_len = 0;
+-	u8	bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
++	int bssrate_len = 0;
++	u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+ 
+ 	RT_TRACE(_module_rtl871x_mlme_c_, _drv_notice_,
+ 		 ("+%s\n", __func__));
+@@ -4297,7 +4335,7 @@ int send_delba23a(struct rtw_adapter *padapter, u8 initiator, u8 *addr)
+ 	struct sta_priv *pstapriv = &padapter->stapriv;
+ 	struct sta_info *psta = NULL;
+ 	/* struct recv_reorder_ctrl *preorder_ctrl; */
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	u16 tid;
+ 
+@@ -4334,8 +4372,8 @@ int send_delba23a(struct rtw_adapter *padapter, u8 initiator, u8 *addr)
+ 
+ int send_beacon23a(struct rtw_adapter *padapter)
+ {
+-	bool	bxmitok;
+-	int	issue = 0;
++	bool bxmitok;
++	int issue = 0;
+ 	int poll = 0;
+ 	unsigned long start = jiffies;
+ 	unsigned int passing_time;
+@@ -4383,9 +4421,10 @@ bool IsLegal5GChannel(struct rtw_adapter *Adapter, u8 channel)
+ 
+ 	int i = 0;
+ 	u8 Channel_5G[45] = {36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
+-		60, 62, 64, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122,
+-		124, 126, 128, 130, 132, 134, 136, 138, 140, 149, 151, 153, 155, 157, 159,
+-		161, 163, 165};
++			     60, 62, 64, 100, 102, 104, 106, 108, 110, 112,
++			     114, 116, 118, 120, 122, 124, 126, 128, 130, 132,
++			     134, 136, 138, 140, 149, 151, 153, 155, 157, 159,
++			     161, 163, 165};
+ 	for (i = 0; i < sizeof(Channel_5G); i++)
+ 		if (channel == Channel_5G[i])
+ 			return true;
+@@ -4396,7 +4435,7 @@ static void rtw_site_survey(struct rtw_adapter *padapter)
+ {
+ 	unsigned char survey_channel = 0;
+ 	enum rt_scan_type ScanType = SCAN_PASSIVE;
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct rtw_ieee80211_channel *ch;
+ 
+@@ -4659,8 +4698,8 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 
+ static void start_create_ibss(struct rtw_adapter* padapter)
+ {
+-	unsigned short	caps;
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	unsigned short caps;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network;
+ 	pmlmeext->cur_channel = (u8)pnetwork->DSConfig;
+@@ -4711,9 +4750,9 @@ static void start_create_ibss(struct rtw_adapter* padapter)
+ 
+ static void start_clnt_join(struct rtw_adapter* padapter)
+ {
+-	unsigned short	caps;
+-	u8	val8;
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	unsigned short caps;
++	u8 val8;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network;
+ 	int beacon_timeout;
+@@ -4771,7 +4810,7 @@ static void start_clnt_join(struct rtw_adapter* padapter)
+ 
+ static void start_clnt_auth(struct rtw_adapter* padapter)
+ {
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 
+ 	del_timer_sync(&pmlmeext->link_timer);
+@@ -4789,8 +4828,10 @@ static void start_clnt_auth(struct rtw_adapter* padapter)
+ 	/*  AP may: 1)not response auth or 2)deauth us after link is complete */
+ 	/*  issue deauth before issuing auth to deal with the situation */
+ 	/*	Commented by Albert 2012/07/21 */
+-	/*	For the Win8 P2P connection, it will be hard to have a successful connection if this Wi-Fi doesn't connect to it. */
+-	issue_deauth23a(padapter, (&pmlmeinfo->network)->MacAddress, WLAN_REASON_DEAUTH_LEAVING);
++	/*	For the Win8 P2P connection, it will be hard to have a
++		successful connection if this Wi-Fi doesn't connect to it. */
++	issue_deauth23a(padapter, (&pmlmeinfo->network)->MacAddress,
++			WLAN_REASON_DEAUTH_LEAVING);
+ 
+ 	DBG_8723A_LEVEL(_drv_always_, "start auth\n");
+ 	issue_auth(padapter, NULL, 0);
+@@ -4800,7 +4841,7 @@ static void start_clnt_auth(struct rtw_adapter* padapter)
+ 
+ static void start_clnt_assoc(struct rtw_adapter* padapter)
+ {
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 
+ 	del_timer_sync(&pmlmeext->link_timer);
+@@ -4816,7 +4857,7 @@ static void start_clnt_assoc(struct rtw_adapter* padapter)
+ int receive_disconnect23a(struct rtw_adapter *padapter,
+ 			  unsigned char *MacAddr, unsigned short reason)
+ {
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 
+ 	/* check A3 */
+@@ -5074,12 +5115,13 @@ Following are the functions to report events
+ 
+ *****************************************************************************/
+ 
+-void report_survey_event23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
++void report_survey_event23a(struct rtw_adapter *padapter,
++			    struct recv_frame *precv_frame)
+ {
+ 	struct cmd_obj *pcmd_obj;
+-	u8	*pevtcmd;
++	u8 *pevtcmd;
+ 	u32 cmdsz;
+-	struct survey_event	*psurvey_evt;
++	struct survey_event *psurvey_evt;
+ 	struct C2HEvent_Header *pc2h_evt_hdr;
+ 	struct mlme_ext_priv *pmlmeext;
+ 	struct cmd_priv *pcmdpriv;
+@@ -5134,11 +5176,11 @@ void report_survey_event23a(struct rtw_adapter *padapter, struct recv_frame *pre
+ void report_surveydone_event23a(struct rtw_adapter *padapter)
+ {
+ 	struct cmd_obj *pcmd_obj;
+-	u8	*pevtcmd;
++	u8 *pevtcmd;
+ 	u32 cmdsz;
+ 	struct surveydone_event *psurveydone_evt;
+-	struct C2HEvent_Header	*pc2h_evt_hdr;
+-	struct mlme_ext_priv		*pmlmeext = &padapter->mlmeextpriv;
++	struct C2HEvent_Header *pc2h_evt_hdr;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
+ 
+ 	pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj),
+@@ -5178,7 +5220,7 @@ void report_surveydone_event23a(struct rtw_adapter *padapter)
+ void report_join_res23a(struct rtw_adapter *padapter, int res)
+ {
+ 	struct cmd_obj *pcmd_obj;
+-	u8	*pevtcmd;
++	u8 *pevtcmd;
+ 	u32 cmdsz;
+ 	struct joinbss_event		*pjoinbss_evt;
+ 	struct C2HEvent_Header	*pc2h_evt_hdr;
+@@ -5224,16 +5266,17 @@ void report_join_res23a(struct rtw_adapter *padapter, int res)
+ 	return;
+ }
+ 
+-void report_del_sta_event23a(struct rtw_adapter *padapter, unsigned char* MacAddr, unsigned short reason)
++void report_del_sta_event23a(struct rtw_adapter *padapter,
++			     unsigned char* MacAddr, unsigned short reason)
+ {
+ 	struct cmd_obj *pcmd_obj;
+-	u8	*pevtcmd;
++	u8 *pevtcmd;
+ 	u32 cmdsz;
+ 	struct sta_info *psta;
+-	int	mac_id;
+-	struct stadel_event			*pdel_sta_evt;
+-	struct C2HEvent_Header	*pc2h_evt_hdr;
+-	struct mlme_ext_priv		*pmlmeext = &padapter->mlmeextpriv;
++	int mac_id;
++	struct stadel_event *pdel_sta_evt;
++	struct C2HEvent_Header *pc2h_evt_hdr;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
+ 
+ 	pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj),
+@@ -5280,14 +5323,15 @@ void report_del_sta_event23a(struct rtw_adapter *padapter, unsigned char* MacAdd
+ 	return;
+ }
+ 
+-void report_add_sta_event23a(struct rtw_adapter *padapter, unsigned char* MacAddr, int cam_idx)
++void report_add_sta_event23a(struct rtw_adapter *padapter,
++			     unsigned char* MacAddr, int cam_idx)
+ {
+ 	struct cmd_obj *pcmd_obj;
+-	u8	*pevtcmd;
++	u8 *pevtcmd;
+ 	u32 cmdsz;
+-	struct stassoc_event		*padd_sta_evt;
+-	struct C2HEvent_Header	*pc2h_evt_hdr;
+-	struct mlme_ext_priv		*pmlmeext = &padapter->mlmeextpriv;
++	struct stassoc_event *padd_sta_evt;
++	struct C2HEvent_Header *pc2h_evt_hdr;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
+ 
+ 	pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj),
+@@ -5335,8 +5379,8 @@ Following are the event callback functions
+ void update_sta_info23a(struct rtw_adapter *padapter, struct sta_info *psta)
+ {
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
+-	struct mlme_ext_info	*pmlmeinfo = &pmlmeext->mlmext_info;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 
+ 	/* ERP */
+ 	VCS_update23a(padapter, psta);
+@@ -5377,13 +5421,14 @@ void update_sta_info23a(struct rtw_adapter *padapter, struct sta_info *psta)
+ 	psta->state = _FW_LINKED;
+ }
+ 
+-void mlmeext_joinbss_event_callback23a(struct rtw_adapter *padapter, int join_res)
++void mlmeext_joinbss_event_callback23a(struct rtw_adapter *padapter,
++				       int join_res)
+ {
+-	struct sta_info		*psta, *psta_bmc;
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	struct sta_info *psta, *psta_bmc;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *cur_network = &pmlmeinfo->network;
+-	struct sta_priv		*pstapriv = &padapter->stapriv;
++	struct sta_priv *pstapriv = &padapter->stapriv;
+ 
+ 	if (join_res < 0) {
+ 		hw_var_set_mlme_join(padapter, 1);
+@@ -5459,7 +5504,8 @@ exit_mlmeext_joinbss_event_callback23a:
+ 	DBG_8723A("=>%s\n", __func__);
+ }
+ 
+-void mlmeext_sta_add_event_callback23a(struct rtw_adapter *padapter, struct sta_info *psta)
++void mlmeext_sta_add_event_callback23a(struct rtw_adapter *padapter,
++				       struct sta_info *psta)
+ {
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+@@ -5732,7 +5778,7 @@ static void link_timer_hdl(unsigned long data)
+ 	/* static unsigned int		rx_pkt = 0; */
+ 	/* static u64				tx_cnt = 0; */
+ 	/* struct xmit_priv *pxmitpriv = &padapter->xmitpriv; */
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	/* struct sta_priv		*pstapriv = &padapter->stapriv; */
+ 
+@@ -5779,7 +5825,7 @@ static void link_timer_hdl(unsigned long data)
+ static void addba_timer_hdl(unsigned long data)
+ {
+ 	struct sta_info *psta = (struct sta_info *)data;
+-	struct ht_priv	*phtpriv;
++	struct ht_priv *phtpriv;
+ 
+ 	if (!psta)
+ 		return;
+@@ -5800,7 +5846,7 @@ void init_addba_retry_timer23a(struct sta_info *psta)
+ 
+ void init_mlme_ext_timer23a(struct rtw_adapter *padapter)
+ {
+-	struct	mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 
+ 	setup_timer(&pmlmeext->survey_timer, survey_timer_hdl,
+ 		    (unsigned long)padapter);
+@@ -5851,7 +5897,7 @@ int setopmode_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 
+ int createbss_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ {
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network;
+ 	const struct wlan_bssid_ex *pparm = (struct wlan_bssid_ex *)pbuf;
+@@ -6069,7 +6115,7 @@ int disconnect_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 
+ 	rtw_free_uc_swdec_pending_queue23a(padapter);
+ 
+-	return	H2C_SUCCESS;
++	return H2C_SUCCESS;
+ }
+ 
+ static int
+@@ -6080,7 +6126,7 @@ rtw_scan_ch_decision(struct rtw_adapter *padapter,
+ 	int i, j;
+ 	int scan_ch_num = 0;
+ 	int set_idx;
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 
+ 	/* clear out first */
+ 	memset(out, 0, sizeof(struct rtw_ieee80211_channel)*out_num);
+@@ -6233,7 +6279,7 @@ int setauth_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 	if (pparm->mode < 4)
+ 		pmlmeinfo->auth_algo = pparm->mode;
+ 
+-	return	H2C_SUCCESS;
++	return H2C_SUCCESS;
+ }
+ 
+ int setkey_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+@@ -6358,7 +6404,7 @@ int add_ba_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 	psta = rtw_get_stainfo23a(&padapter->stapriv, pparm->addr);
+ 
+ 	if (!psta)
+-		return	H2C_SUCCESS;
++		return H2C_SUCCESS;
+ 
+ 	if (((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) &&
+ 	     pmlmeinfo->HT_enable) ||
+@@ -6370,15 +6416,15 @@ int add_ba_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 	} else
+ 		psta->htpriv.candidate_tid_bitmap &= ~BIT(pparm->tid);
+ 
+-	return	H2C_SUCCESS;
++	return H2C_SUCCESS;
+ }
+ 
+ int set_tx_beacon_cmd23a(struct rtw_adapter* padapter)
+ {
+ 	struct cmd_obj *ph2c;
+-	struct Tx_Beacon_param	*ptxBeacon_parm;
++	struct Tx_Beacon_param *ptxBeacon_parm;
+ 	struct cmd_priv	*pcmdpriv = &padapter->cmdpriv;
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	u8 res = _SUCCESS;
+ 	int len_diff = 0;
+@@ -6518,7 +6564,7 @@ int tx_beacon_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ int set_ch_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ {
+ 	const struct set_ch_parm *set_ch_parm;
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 
+ 	if (!pbuf)
+ 		return H2C_PARAMETERS_ERROR;
+@@ -6536,13 +6582,13 @@ int set_ch_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 	set_channel_bwmode23a(padapter, set_ch_parm->ch,
+ 			      set_ch_parm->ch_offset, set_ch_parm->bw);
+ 
+-	return	H2C_SUCCESS;
++	return H2C_SUCCESS;
+ }
+ 
+ int set_chplan_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ {
+ 	const struct SetChannelPlan_param *setChannelPlan_param;
+-	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
++	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 
+ 	if (!pbuf)
+ 		return H2C_PARAMETERS_ERROR;
+@@ -6555,7 +6601,7 @@ int set_chplan_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 	init_channel_list(padapter, pmlmeext->channel_set,
+ 			  pmlmeext->max_chan_nums, &pmlmeext->channel_list);
+ 
+-	return	H2C_SUCCESS;
++	return H2C_SUCCESS;
+ }
+ 
+ int led_blink_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+@@ -6567,12 +6613,12 @@ int led_blink_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 
+ 	ledBlink_param = (struct LedBlink_param *)pbuf;
+ 
+-	return	H2C_SUCCESS;
++	return H2C_SUCCESS;
+ }
+ 
+ int set_csa_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ {
+-	return	H2C_REJECTED;
++	return H2C_REJECTED;
+ }
+ 
+ /*  TDLS_WRCR		: write RCR DATA BIT */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0010-staging-rtl8723au-rtw_mlme.c-Remove-some-tab-and-par.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0010-staging-rtl8723au-rtw_mlme.c-Remove-some-tab-and-par.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,102 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 31 May 2014 18:05:09 +0200
+Subject: [010/249] staging: rtl8723au: rtw_mlme.c: Remove some tab and
+ parenthesis abuse
+Origin: https://git.kernel.org/linus/8b3d9cde7d8a50ae7bf7902cbf966adf856350d1
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 26 ++++++++++++--------------
+ 1 file changed, 12 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 0b9fd3a..47a1df0 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -29,7 +29,7 @@
+ 
+ static void rtw_init_mlme_timer(struct rtw_adapter *padapter)
+ {
+-	struct	mlme_priv *pmlmepriv = &padapter->mlmepriv;
++	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 
+ 	setup_timer(&pmlmepriv->assoc_timer, rtw23a_join_to_handler,
+ 		    (unsigned long)padapter);
+@@ -369,11 +369,10 @@ int is_same_network23a(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst)
+ 	return ((src->Ssid.ssid_len == dst->Ssid.ssid_len) &&
+ 		/*	(src->DSConfig == dst->DSConfig) && */
+ 		ether_addr_equal(src->MacAddress, dst->MacAddress) &&
+-		((!memcmp(src->Ssid.ssid, dst->Ssid.ssid, src->Ssid.ssid_len))) &&
+-		((s_cap & WLAN_CAPABILITY_IBSS) ==
+-		 (d_cap & WLAN_CAPABILITY_IBSS)) &&
+-		((s_cap & WLAN_CAPABILITY_ESS) ==
+-		 (d_cap & WLAN_CAPABILITY_ESS)));
++		!memcmp(src->Ssid.ssid, dst->Ssid.ssid, src->Ssid.ssid_len) &&
++		(s_cap & WLAN_CAPABILITY_IBSS) ==
++		(d_cap & WLAN_CAPABILITY_IBSS) &&
++		(s_cap & WLAN_CAPABILITY_ESS) == (d_cap & WLAN_CAPABILITY_ESS));
+ }
+ 
+ struct wlan_network *
+@@ -611,8 +610,7 @@ static int rtw_is_desired_network(struct rtw_adapter *adapter,
+ 	            bselected = false;
+ 	}
+ 
+-	if (desired_encmode != Ndis802_11EncryptionDisabled &&
+-	    privacy == 0) {
++	if (desired_encmode != Ndis802_11EncryptionDisabled && privacy == 0) {
+ 		DBG_8723A("desired_encmode: %d, privacy: %d\n",
+ 			  desired_encmode, privacy);
+ 		bselected = false;
+@@ -639,7 +637,7 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ {
+ 	u32 len;
+ 	struct wlan_bssid_ex *pnetwork;
+-	struct	mlme_priv *pmlmepriv = &adapter->mlmepriv;
++	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+ 
+ 	pnetwork = (struct wlan_bssid_ex *)pbuf;
+ 
+@@ -698,7 +696,7 @@ exit:
+ void
+ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ {
+-	struct	mlme_priv *pmlmepriv = &adapter->mlmepriv;
++	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+ 	struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;
+ 	struct wlan_bssid_ex *pdev_network;
+ 	u8 *pibss;
+@@ -937,7 +935,7 @@ void rtw_indicate_connect23a(struct rtw_adapter *padapter)
+  */
+ void rtw_indicate_disconnect23a(struct rtw_adapter *padapter)
+ {
+-	struct	mlme_priv *pmlmepriv = &padapter->mlmepriv;
++	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 
+ 	RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
+ 		 ("+rtw_indicate_disconnect23a\n"));
+@@ -1538,12 +1536,12 @@ void rtw_stadel_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ void rtw23a_join_to_handler (unsigned long data)
+ {
+ 	struct rtw_adapter *adapter = (struct rtw_adapter *)data;
+-	struct	mlme_priv *pmlmepriv = &adapter->mlmepriv;
++	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+ 	int do_join_r;
+ 
+ 	DBG_8723A("%s, fw_state=%x\n", __func__, get_fwstate(pmlmepriv));
+ 
+-	if (adapter->bDriverStopped ||adapter->bSurpriseRemoved)
++	if (adapter->bDriverStopped || adapter->bSurpriseRemoved)
+ 		return;
+ 
+ 	spin_lock_bh(&pmlmepriv->lock);
+@@ -1589,7 +1587,7 @@ void rtw23a_join_to_handler (unsigned long data)
+ void rtw_scan_timeout_handler23a(unsigned long data)
+ {
+ 	struct rtw_adapter *adapter = (struct rtw_adapter *)data;
+-	struct	mlme_priv *pmlmepriv = &adapter->mlmepriv;
++	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+ 
+ 	DBG_8723A("%s(%s): fw_state =%x\n", __func__, adapter->pnetdev->name,
+ 		  get_fwstate(pmlmepriv));

Added: dists/sid/linux/debian/patches/features/all/r8723au/0011-staging-rtl8723au-Use-struct-ieee80211_mcs_info-to-d.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0011-staging-rtl8723au-Use-struct-ieee80211_mcs_info-to-d.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,236 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 31 May 2014 18:05:10 +0200
+Subject: [011/249] staging: rtl8723au: Use struct ieee80211_mcs_info to
+ describe MCS information
+Origin: https://git.kernel.org/linus/198e95d548ac741e91521f1e638aa8221bb0f468
+
+The original RTL code defined the MCS information as a 16 byte array
+and blindly applied it's masking over the full array, ignoring the
+fact that only the first 10 bytes describe the rx_mask and the rest
+are different fields.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 52 +++++++++++++-------------
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c |  2 +-
+ drivers/staging/rtl8723au/core/rtw_mlme.c      |  6 +--
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c  |  4 +-
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c | 12 +++---
+ drivers/staging/rtl8723au/include/ieee80211.h  |  3 +-
+ drivers/staging/rtl8723au/include/wifi.h       |  2 +-
+ 7 files changed, 40 insertions(+), 41 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index 3dc9119..47ac4e9 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -924,69 +924,69 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork)
+ 
+ /* show MCS rate, unit: 100Kbps */
+ u16 rtw_mcs_rate23a(u8 rf_type, u8 bw_40MHz, u8 short_GI_20, u8 short_GI_40,
+-		 unsigned char * MCS_rate)
++		    struct ieee80211_mcs_info *mcs)
+ {
+ 	u16 max_rate = 0;
+ 
+ 	if (rf_type == RF_1T1R) {
+-		if (MCS_rate[0] & BIT(7))
++		if (mcs->rx_mask[0] & BIT(7))
+ 			max_rate = (bw_40MHz) ? ((short_GI_40)?1500:1350):
+ 				((short_GI_20)?722:650);
+-		else if (MCS_rate[0] & BIT(6))
++		else if (mcs->rx_mask[0] & BIT(6))
+ 			max_rate = (bw_40MHz) ? ((short_GI_40)?1350:1215):
+ 				((short_GI_20)?650:585);
+-		else if (MCS_rate[0] & BIT(5))
++		else if (mcs->rx_mask[0] & BIT(5))
+ 			max_rate = (bw_40MHz) ? ((short_GI_40)?1200:1080):
+ 				((short_GI_20)?578:520);
+-		else if (MCS_rate[0] & BIT(4))
++		else if (mcs->rx_mask[0] & BIT(4))
+ 			max_rate = (bw_40MHz) ? ((short_GI_40)?900:810):
+ 				((short_GI_20)?433:390);
+-		else if (MCS_rate[0] & BIT(3))
++		else if (mcs->rx_mask[0] & BIT(3))
+ 			max_rate = (bw_40MHz) ? ((short_GI_40)?600:540):
+ 				((short_GI_20)?289:260);
+-		else if (MCS_rate[0] & BIT(2))
++		else if (mcs->rx_mask[0] & BIT(2))
+ 			max_rate = (bw_40MHz) ? ((short_GI_40)?450:405):
+ 				((short_GI_20)?217:195);
+-		else if (MCS_rate[0] & BIT(1))
++		else if (mcs->rx_mask[0] & BIT(1))
+ 			max_rate = (bw_40MHz) ? ((short_GI_40)?300:270):
+ 				((short_GI_20)?144:130);
+-		else if (MCS_rate[0] & BIT(0))
++		else if (mcs->rx_mask[0] & BIT(0))
+ 			max_rate = (bw_40MHz) ? ((short_GI_40)?150:135):
+ 				((short_GI_20)?72:65);
+ 	} else {
+-		if (MCS_rate[1]) {
+-			if (MCS_rate[1] & BIT(7))
++		if (mcs->rx_mask[1]) {
++			if (mcs->rx_mask[1] & BIT(7))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?3000:2700):((short_GI_20)?1444:1300);
+-			else if (MCS_rate[1] & BIT(6))
++			else if (mcs->rx_mask[1] & BIT(6))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?2700:2430):((short_GI_20)?1300:1170);
+-			else if (MCS_rate[1] & BIT(5))
++			else if (mcs->rx_mask[1] & BIT(5))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?2400:2160):((short_GI_20)?1156:1040);
+-			else if (MCS_rate[1] & BIT(4))
++			else if (mcs->rx_mask[1] & BIT(4))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?1800:1620):((short_GI_20)?867:780);
+-			else if (MCS_rate[1] & BIT(3))
++			else if (mcs->rx_mask[1] & BIT(3))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?1200:1080):((short_GI_20)?578:520);
+-			else if (MCS_rate[1] & BIT(2))
++			else if (mcs->rx_mask[1] & BIT(2))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?900:810):((short_GI_20)?433:390);
+-			else if (MCS_rate[1] & BIT(1))
++			else if (mcs->rx_mask[1] & BIT(1))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?600:540):((short_GI_20)?289:260);
+-			else if (MCS_rate[1] & BIT(0))
++			else if (mcs->rx_mask[1] & BIT(0))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?300:270):((short_GI_20)?144:130);
+ 		} else {
+-			if (MCS_rate[0] & BIT(7))
++			if (mcs->rx_mask[0] & BIT(7))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?1500:1350):((short_GI_20)?722:650);
+-			else if (MCS_rate[0] & BIT(6))
++			else if (mcs->rx_mask[0] & BIT(6))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?1350:1215):((short_GI_20)?650:585);
+-			else if (MCS_rate[0] & BIT(5))
++			else if (mcs->rx_mask[0] & BIT(5))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?1200:1080):((short_GI_20)?578:520);
+-			else if (MCS_rate[0] & BIT(4))
++			else if (mcs->rx_mask[0] & BIT(4))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?900:810):((short_GI_20)?433:390);
+-			else if (MCS_rate[0] & BIT(3))
++			else if (mcs->rx_mask[0] & BIT(3))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?600:540):((short_GI_20)?289:260);
+-			else if (MCS_rate[0] & BIT(2))
++			else if (mcs->rx_mask[0] & BIT(2))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?450:405):((short_GI_20)?217:195);
+-			else if (MCS_rate[0] & BIT(1))
++			else if (mcs->rx_mask[0] & BIT(1))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?300:270):((short_GI_20)?144:130);
+-			else if (MCS_rate[0] & BIT(0))
++			else if (mcs->rx_mask[0] & BIT(0))
+ 				max_rate = (bw_40MHz) ? ((short_GI_40)?150:135):((short_GI_20)?72:65);
+ 		}
+ 	}
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index cf897c7..30474f5 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -406,7 +406,7 @@ u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter)
+ 			max_rate = rtw_mcs_rate23a(rf_type, bw_40MHz &
+ 						pregistrypriv->cbw40_enable,
+ 						short_GI_20, short_GI_40,
+-						pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate
++						&pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info
+ 			);
+ 		}
+ 	} else {
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 47a1df0..ab59ab7 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -2328,11 +2328,11 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 		rf_type = rtl8723a_get_rf_type(padapter);
+ 
+ 		/* update the MCS rates */
+-		for (i = 0; i < 16; i++) {
++		for (i = 0; i < IEEE80211_HT_MCS_MASK_LEN; i++) {
+ 			if (rf_type == RF_1T1R || rf_type == RF_1T2R)
+-				pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_1R23A[i];
++				pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_1R23A[i];
+ 			else
+-				pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_2R23A[i];
++				pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_2R23A[i];
+ 		}
+ 		/* switch to the 40M Hz mode accoring to the AP */
+ 		pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40;
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 7a117c0..6249ab2 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -3498,7 +3498,7 @@ static void issue_assocreq(struct rtw_adapter *padapter)
+ 				if (pregpriv->rx_stbc)
+ 					pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= cpu_to_le16(0x0100);
+ 
+-				memcpy(pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate, MCS_rate_1R23A, 16);
++				memcpy(&pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info, MCS_rate_1R23A, 16);
+ 				break;
+ 
+ 			case RF_2T2R:
+@@ -3519,7 +3519,7 @@ static void issue_assocreq(struct rtw_adapter *padapter)
+ 						  "STBC\n");
+ 					pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= cpu_to_le16(0x0200);/* RX STBC two spatial stream */
+ 				}
+-				memcpy(pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate, MCS_rate_2R23A, 16);
++				memcpy(&pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info, MCS_rate_2R23A, 16);
+ 				break;
+ 			}
+ 			pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info =
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 579a4a8..b63248b 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -762,13 +762,11 @@ void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p)
+ 	rf_type = rtl8723a_get_rf_type(padapter);
+ 
+ 	/* update the MCS rates */
+-	for (i = 0; i < 16; i++) {
++	for (i = 0; i < IEEE80211_HT_MCS_MASK_LEN; i++) {
+ 		if (rf_type == RF_1T1R || rf_type == RF_1T2R)
+-			pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &=
+-				MCS_rate_1R23A[i];
++			pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_1R23A[i];
+ 		else
+-			pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &=
+-				MCS_rate_2R23A[i];
++			pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_2R23A[i];
+ 	}
+ 	return;
+ }
+@@ -1344,8 +1342,8 @@ unsigned int update_MSC_rate23a(struct HT_caps_element *pHT_caps)
+ {
+ 	unsigned int mask = 0;
+ 
+-	mask = pHT_caps->u.HT_cap_element.MCS_rate[0] << 12 |
+-		pHT_caps->u.HT_cap_element.MCS_rate[1] << 20;
++	mask = pHT_caps->u.HT_cap_element.mcs_info.rx_mask[0] << 12 |
++		pHT_caps->u.HT_cap_element.mcs_info.rx_mask[1] << 20;
+ 
+ 	return mask;
+ }
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index bb645cf..6f42d2d 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -447,7 +447,8 @@ int rtw_check_network_type23a(unsigned char *rate, int ratelen, int channel);
+ 
+ void rtw_get_bcn_info23a(struct wlan_network *pnetwork);
+ 
+-u16 rtw_mcs_rate23a(u8 rf_type, u8 bw_40MHz, u8 short_GI_20, u8 short_GI_40, unsigned char * MCS_rate);
++u16 rtw_mcs_rate23a(u8 rf_type, u8 bw_40MHz, u8 short_GI_20, u8 short_GI_40,
++		    struct ieee80211_mcs_info *mcs);
+ 
+ const char *action_public_str23a(u8 action);
+ 
+diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h
+index cccea6a..f731833 100644
+--- a/drivers/staging/rtl8723au/include/wifi.h
++++ b/drivers/staging/rtl8723au/include/wifi.h
+@@ -81,7 +81,7 @@ struct HT_caps_element {
+ 		struct {
+ 			unsigned short	HT_caps_info;
+ 			unsigned char	AMPDU_para;
+-			unsigned char	MCS_rate[16];
++			struct ieee80211_mcs_info mcs_info;
+ 			unsigned short	HT_ext_caps;
+ 			unsigned int	Beamforming_caps;
+ 			unsigned char	ASEL_caps;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0012-staging-rtl8723au-Use-struct-ieee80211_ht_cap-and-as.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0012-staging-rtl8723au-Use-struct-ieee80211_ht_cap-and-as.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,426 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 31 May 2014 18:05:11 +0200
+Subject: [012/249] staging: rtl8723au: Use struct ieee80211_ht_cap and
+ associated #defines
+Origin: https://git.kernel.org/linus/65be27da4953163c638a006542d279f5b1f346ea
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c            |  9 ++--
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c     | 11 ++--
+ drivers/staging/rtl8723au/core/rtw_mlme.c          | 14 +++--
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c      | 42 ++++++++-------
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c     | 60 ++++++++++++----------
+ .../staging/rtl8723au/hal/rtl8723a_bt-coexist.c    |  4 +-
+ drivers/staging/rtl8723au/hal/usb_halinit.c        |  4 +-
+ drivers/staging/rtl8723au/include/rtw_mlme_ext.h   |  6 +--
+ drivers/staging/rtl8723au/include/wifi.h           | 14 -----
+ 9 files changed, 84 insertions(+), 80 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index d03bb3e..83be27f 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -623,15 +623,18 @@ static void update_hw_ht_param(struct rtw_adapter *padapter)
+ 		AMPDU_para [1:0]:Max AMPDU Len => 0:8k , 1:16k, 2:32k, 3:64k
+ 		AMPDU_para [4:2]:Min MPDU Start Spacing
+ 	*/
+-	max_AMPDU_len = pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x03;
++	max_AMPDU_len = pmlmeinfo->ht_cap.ampdu_params_info &
++		IEEE80211_HT_AMPDU_PARM_FACTOR;
+ 
+-	min_MPDU_spacing = (pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c) >> 2;
++	min_MPDU_spacing = (pmlmeinfo->ht_cap.ampdu_params_info &
++			    IEEE80211_HT_AMPDU_PARM_DENSITY) >> 2;
+ 
+ 	rtl8723a_set_ampdu_min_space(padapter, min_MPDU_spacing);
+ 	rtl8723a_set_ampdu_factor(padapter, max_AMPDU_len);
+ 
+ 	/*  Config SM Power Save setting */
+-	pmlmeinfo->SM_PS = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info & 0x0C) >> 2;
++	pmlmeinfo->SM_PS = (le16_to_cpu(pmlmeinfo->ht_cap.cap_info) &
++			    IEEE80211_HT_CAP_SM_PS) >> 2;
+ 	if (pmlmeinfo->SM_PS == WLAN_HT_CAP_SM_PS_STATIC)
+ 		DBG_8723A("%s(): WLAN_HT_CAP_SM_PS_STATIC\n", __func__);
+ }
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index 30474f5..e9f46a6 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -399,15 +399,18 @@ u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter)
+ 
+ 			/* short_GI = (pht_capie->cap_info & (IEEE80211_HT_CAP
+ 			   _SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1 : 0; */
+-			short_GI_20 = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info&IEEE80211_HT_CAP_SGI_20) ? 1:0;
+-			short_GI_40 = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info&IEEE80211_HT_CAP_SGI_40) ? 1:0;
++			short_GI_20 =
++				(pmlmeinfo->ht_cap.cap_info &
++				 cpu_to_le16(IEEE80211_HT_CAP_SGI_20)) ? 1:0;
++			short_GI_40 =
++				(pmlmeinfo->ht_cap.cap_info &
++				 cpu_to_le16(IEEE80211_HT_CAP_SGI_40)) ? 1:0;
+ 
+ 			rf_type = rtl8723a_get_rf_type(adapter);
+ 			max_rate = rtw_mcs_rate23a(rf_type, bw_40MHz &
+ 						pregistrypriv->cbw40_enable,
+ 						short_GI_20, short_GI_40,
+-						&pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info
+-			);
++						&pmlmeinfo->ht_cap.mcs);
+ 		}
+ 	} else {
+ 		while ((pcur_bss->SupportedRates[i] != 0) &&
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index ab59ab7..19b891f 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -2320,7 +2320,8 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 
+ 	/* update cur_bwmode & cur_ch_offset */
+ 	if (pregistrypriv->cbw40_enable &&
+-	    pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info & BIT(1) &&
++	    pmlmeinfo->ht_cap.cap_info &
++	    cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH_20_40) &&
+ 	    pmlmeinfo->HT_info.infos[0] & BIT(2)) {
+ 		int i;
+ 		u8 rf_type;
+@@ -2330,9 +2331,11 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 		/* update the MCS rates */
+ 		for (i = 0; i < IEEE80211_HT_MCS_MASK_LEN; i++) {
+ 			if (rf_type == RF_1T1R || rf_type == RF_1T2R)
+-				pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_1R23A[i];
++				pmlmeinfo->ht_cap.mcs.rx_mask[i] &=
++					MCS_rate_1R23A[i];
+ 			else
+-				pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_2R23A[i];
++				pmlmeinfo->ht_cap.mcs.rx_mask[i] &=
++					MCS_rate_2R23A[i];
+ 		}
+ 		/* switch to the 40M Hz mode accoring to the AP */
+ 		pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40;
+@@ -2356,8 +2359,9 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 	/*  */
+ 	/*  Config SM Power Save setting */
+ 	/*  */
+-	pmlmeinfo->SM_PS = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info &
+-			    0x0C) >> 2;
++	pmlmeinfo->SM_PS =
++		(le16_to_cpu(pmlmeinfo->ht_cap.cap_info) &
++		 IEEE80211_HT_CAP_SM_PS) >> IEEE80211_HT_CAP_SM_PS_SHIFT;
+ 	if (pmlmeinfo->SM_PS == WLAN_HT_CAP_SM_PS_STATIC)
+ 		DBG_8723A("%s(): WLAN_HT_CAP_SM_PS_STATIC\n", __func__);
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 6249ab2..b5f1d40 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -3476,19 +3476,22 @@ static void issue_assocreq(struct rtw_adapter *padapter)
+ 		p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, pie, pie_len);
+ 
+ 		if (p && !is_ap_in_tkip23a(padapter)) {
+-			memcpy(&pmlmeinfo->HT_caps, p + 2,
+-			       sizeof(struct HT_caps_element));
++			struct ieee80211_ht_cap *cap = &pmlmeinfo->ht_cap;
++
++			memcpy(cap, p + 2, sizeof(struct ieee80211_ht_cap));
+ 
+ 			/* to disable 40M Hz support while gd_bw_40MHz_en = 0 */
+ 			if (pregpriv->cbw40_enable == 0) {
+-				pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info &= (~(BIT(6) | BIT(1)));
++				cap->cap_info &= ~cpu_to_le16(
++					IEEE80211_HT_CAP_SGI_40 |
++					IEEE80211_HT_CAP_SUP_WIDTH_20_40);
+ 			} else {
+-				pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= BIT(1);
++				cap->cap_info |= cpu_to_le16(
++					IEEE80211_HT_CAP_SUP_WIDTH_20_40);
+ 			}
+ 
+ 			/* todo: disable SM power save mode */
+-			pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |=
+-				0x000c;
++			cap->cap_info |= cpu_to_le16(IEEE80211_HT_CAP_SM_PS);
+ 
+ 			rf_type = rtl8723a_get_rf_type(padapter);
+ 			/* switch (pregpriv->rf_config) */
+@@ -3496,9 +3499,9 @@ static void issue_assocreq(struct rtw_adapter *padapter)
+ 			case RF_1T1R:
+ 				/* RX STBC One spatial stream */
+ 				if (pregpriv->rx_stbc)
+-					pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= cpu_to_le16(0x0100);
++					cap->cap_info |= cpu_to_le16(1 << IEEE80211_HT_CAP_RX_STBC_SHIFT);
+ 
+-				memcpy(&pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info, MCS_rate_1R23A, 16);
++				memcpy(&cap->mcs, MCS_rate_1R23A, 16);
+ 				break;
+ 
+ 			case RF_2T2R:
+@@ -3517,23 +3520,23 @@ static void issue_assocreq(struct rtw_adapter *padapter)
+ 				    pregpriv->wifi_spec == 1) {
+ 					DBG_8723A("declare supporting RX "
+ 						  "STBC\n");
+-					pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= cpu_to_le16(0x0200);/* RX STBC two spatial stream */
++					/* RX STBC two spatial stream */
++					cap->cap_info |= cpu_to_le16(2 << IEEE80211_HT_CAP_RX_STBC_SHIFT);
+ 				}
+-				memcpy(&pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info, MCS_rate_2R23A, 16);
++				memcpy(&cap->mcs, MCS_rate_2R23A, 16);
+ 				break;
+ 			}
+-			pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info =
+-				cpu_to_le16(pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info);
+ 
+ 			if (rtl8723a_BT_coexist(padapter) &&
+ 			    rtl8723a_BT_using_antenna_1(padapter)) {
+ 				/*  set to 8K */
+-				pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para &= (u8)~IEEE80211_HT_AMPDU_PARM_FACTOR;
+-/*				pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para |= MAX_AMPDU_FACTOR_8K */
++				cap->ampdu_params_info &=
++					~IEEE80211_HT_AMPDU_PARM_FACTOR;
++/*				cap->ampdu_params_info |= MAX_AMPDU_FACTOR_8K */
+ 			}
+ 
+ 			pframe = rtw_set_ie23a(pframe, WLAN_EID_HT_CAPABILITY,
+-					       p[1], (u8 *)&pmlmeinfo->HT_caps,
++					       p[1], (u8 *)&pmlmeinfo->ht_cap,
+ 					       &pattrib->pktlen);
+ 		}
+ 	}
+@@ -4679,10 +4682,11 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 				     bssid->IEs + ie_offset,
+ 				     bssid->IELength - ie_offset);
+ 		if (p && p[1] > 0) {
+-			struct HT_caps_element *pHT_caps;
+-			pHT_caps = (struct HT_caps_element *)(p + 2);
++			struct ieee80211_ht_cap *pHT_caps;
++			pHT_caps = (struct ieee80211_ht_cap *)(p + 2);
+ 
+-			if (pHT_caps->u.HT_cap_element.HT_caps_info & BIT(14))
++			if (pHT_caps->cap_info &
++			    cpu_to_le16(IEEE80211_HT_CAP_40MHZ_INTOLERANT))
+ 				pmlmepriv->num_FortyMHzIntolerant++;
+ 		} else
+ 			pmlmepriv->num_sta_no_ht++;
+@@ -5392,7 +5396,7 @@ void update_sta_info23a(struct rtw_adapter *padapter, struct sta_info *psta)
+ 
+ 		psta->htpriv.ampdu_enable = pmlmepriv->htpriv.ampdu_enable;
+ 
+-		if (support_short_GI23a(padapter, &pmlmeinfo->HT_caps))
++		if (support_short_GI23a(padapter, &pmlmeinfo->ht_cap))
+ 			psta->htpriv.sgi = true;
+ 
+ 		psta->qos_option = true;
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index b63248b..1194a6e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -720,6 +720,8 @@ void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p)
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct ht_priv *phtpriv = &pmlmepriv->htpriv;
++	struct ieee80211_ht_cap *cap;
++	u8 *dstcap;
+ 
+ 	if (!p)
+ 		return;
+@@ -729,44 +731,44 @@ void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p)
+ 
+ 	pmlmeinfo->HT_caps_enable = 1;
+ 
++	cap = &pmlmeinfo->ht_cap;
++	dstcap = (u8 *)cap;
+ 	for (i = 0; i < p[1]; i++) {
+ 		if (i != 2) {
+-			/*	Commented by Albert 2010/07/12 */
+-			/*	Got the endian issue here. */
+-			pmlmeinfo->HT_caps.u.HT_cap[i] &= p[i + 2];
++			dstcap[i] &= p[i + 2];
+ 		} else {
+ 			/* modify from  fw by Thomas 2010/11/17 */
+-			if ((pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x3) > (p[i + 2] & 0x3))
+-				max_AMPDU_len = p[i + 2] & 0x3;
++			if ((cap->ampdu_params_info &
++			     IEEE80211_HT_AMPDU_PARM_FACTOR) >
++			    (p[i + 2] & IEEE80211_HT_AMPDU_PARM_FACTOR))
++				max_AMPDU_len = p[i + 2] &
++					IEEE80211_HT_AMPDU_PARM_FACTOR;
+ 			else
+-				max_AMPDU_len = pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x3;
+-
+-			if ((pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c) > (p[i + 2] & 0x1c))
+-				min_MPDU_spacing = pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c;
++				max_AMPDU_len = cap->ampdu_params_info &
++					IEEE80211_HT_AMPDU_PARM_FACTOR;
++
++			if ((cap->ampdu_params_info &
++			     IEEE80211_HT_AMPDU_PARM_DENSITY) >
++			    (p[i + 2] & IEEE80211_HT_AMPDU_PARM_DENSITY))
++				min_MPDU_spacing = cap->ampdu_params_info &
++					IEEE80211_HT_AMPDU_PARM_DENSITY;
+ 			else
+-				min_MPDU_spacing = p[i + 2] & 0x1c;
++				min_MPDU_spacing = p[i + 2] &
++					IEEE80211_HT_AMPDU_PARM_DENSITY;
+ 
+-			pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para =
++			cap->ampdu_params_info =
+ 				max_AMPDU_len | min_MPDU_spacing;
+ 		}
+ 	}
+ 
+-	/*	Commented by Albert 2010/07/12 */
+-	/*	Have to handle the endian issue after copying. */
+-	/*	HT_ext_caps didn't be used yet. */
+-	pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info =
+-		le16_to_cpu(pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info);
+-	pmlmeinfo->HT_caps.u.HT_cap_element.HT_ext_caps =
+-		le16_to_cpu(pmlmeinfo->HT_caps.u.HT_cap_element.HT_ext_caps);
+-
+ 	rf_type = rtl8723a_get_rf_type(padapter);
+ 
+ 	/* update the MCS rates */
+ 	for (i = 0; i < IEEE80211_HT_MCS_MASK_LEN; i++) {
+ 		if (rf_type == RF_1T1R || rf_type == RF_1T2R)
+-			pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_1R23A[i];
++			cap->mcs.rx_mask[i] &= MCS_rate_1R23A[i];
+ 		else
+-			pmlmeinfo->HT_caps.u.HT_cap_element.mcs_info.rx_mask[i] &= MCS_rate_2R23A[i];
++			cap->mcs.rx_mask[i] &= MCS_rate_2R23A[i];
+ 	}
+ 	return;
+ }
+@@ -816,10 +818,12 @@ void HTOnAssocRsp23a(struct rtw_adapter *padapter)
+ 		AMPDU_para [1:0]:Max AMPDU Len => 0:8k , 1:16k, 2:32k, 3:64k
+ 		AMPDU_para [4:2]:Min MPDU Start Spacing
+ 	*/
+-	max_AMPDU_len = pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x03;
++	max_AMPDU_len = pmlmeinfo->ht_cap.ampdu_params_info &
++		IEEE80211_HT_AMPDU_PARM_FACTOR;
+ 
+ 	min_MPDU_spacing =
+-		(pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c) >> 2;
++		(pmlmeinfo->ht_cap.ampdu_params_info &
++		 IEEE80211_HT_AMPDU_PARM_DENSITY) >> 2;
+ 
+ 	rtl8723a_set_ampdu_min_space(padapter, min_MPDU_spacing);
+ 	rtl8723a_set_ampdu_factor(padapter, max_AMPDU_len);
+@@ -1338,18 +1342,18 @@ unsigned int update_supported_rate23a(unsigned char *ptn, unsigned int ptn_sz)
+ 	return mask;
+ }
+ 
+-unsigned int update_MSC_rate23a(struct HT_caps_element *pHT_caps)
++unsigned int update_MSC_rate23a(struct ieee80211_ht_cap *pHT_caps)
+ {
+ 	unsigned int mask = 0;
+ 
+-	mask = pHT_caps->u.HT_cap_element.mcs_info.rx_mask[0] << 12 |
+-		pHT_caps->u.HT_cap_element.mcs_info.rx_mask[1] << 20;
++	mask = pHT_caps->mcs.rx_mask[0] << 12 |
++		pHT_caps->mcs.rx_mask[1] << 20;
+ 
+ 	return mask;
+ }
+ 
+ int support_short_GI23a(struct rtw_adapter *padapter,
+-			struct HT_caps_element *pHT_caps)
++			struct ieee80211_ht_cap *pHT_caps)
+ {
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+@@ -1361,7 +1365,7 @@ int support_short_GI23a(struct rtw_adapter *padapter,
+ 		return _FAIL;
+ 	bit_offset = (pmlmeext->cur_bwmode & HT_CHANNEL_WIDTH_40)? 6: 5;
+ 
+-	if (pHT_caps->u.HT_cap_element.HT_caps_info & (0x1 << bit_offset))
++	if (pHT_caps->cap_info & cpu_to_le16(0x1 << bit_offset))
+ 		return _SUCCESS;
+ 	else
+ 		return _FAIL;
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c b/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c
+index c001053..bb86986 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c
+@@ -5871,8 +5871,8 @@ btdm_1AntUpdateHalRAMask(struct rtw_adapter *padapter, u32 mac_id, u32 filter)
+ 		mask = update_supported_rate23a(cur_network->SupportedRates,
+ 						supportRateNum);
+ 		mask |= (pmlmeinfo->HT_enable) ?
+-			update_MSC_rate23a(&pmlmeinfo->HT_caps):0;
+-		if (support_short_GI23a(padapter, &pmlmeinfo->HT_caps))
++			update_MSC_rate23a(&pmlmeinfo->ht_cap):0;
++		if (support_short_GI23a(padapter, &pmlmeinfo->ht_cap))
+ 			shortGIrate = true;
+ 		break;
+ 	case 1:/* for broadcast/multicast */
+diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c
+index 6a7fb28..d3d7289 100644
+--- a/drivers/staging/rtl8723au/hal/usb_halinit.c
++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c
+@@ -1532,9 +1532,9 @@ void rtl8723a_update_ramask(struct rtw_adapter *padapter,
+ 		mask = update_supported_rate23a(cur_network->SupportedRates,
+ 					     supportRateNum);
+ 		mask |= (pmlmeinfo->HT_enable) ?
+-			update_MSC_rate23a(&pmlmeinfo->HT_caps) : 0;
++			update_MSC_rate23a(&pmlmeinfo->ht_cap) : 0;
+ 
+-		if (support_short_GI23a(padapter, &pmlmeinfo->HT_caps))
++		if (support_short_GI23a(padapter, &pmlmeinfo->ht_cap))
+ 			shortGIrate = true;
+ 		break;
+ 
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+index badbce0..57622fb 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+@@ -366,7 +366,7 @@ struct mlme_ext_info
+ 
+ 	struct ADDBA_request		ADDBA_req;
+ 	struct WMM_para_element	WMM_param;
+-	struct HT_caps_element	HT_caps;
++	struct ieee80211_ht_cap ht_cap;
+ 	struct HT_info_element		HT_info;
+ 	struct wlan_bssid_ex			network;/* join network or bss_network, if in ap mode, it is the same to cur_network.network */
+ 	struct FW_Sta_Info		FW_sta_info[NUM_STA];
+@@ -536,7 +536,7 @@ int update_sta_support_rate23a(struct rtw_adapter *padapter, u8* pvar_ie,
+ void update_sta_info23a(struct rtw_adapter *padapter, struct sta_info *psta);
+ unsigned int update_basic_rate23a(unsigned char *ptn, unsigned int ptn_sz);
+ unsigned int update_supported_rate23a(unsigned char *ptn, unsigned int ptn_sz);
+-unsigned int update_MSC_rate23a(struct HT_caps_element *pHT_caps);
++unsigned int update_MSC_rate23a(struct ieee80211_ht_cap *ht_cap);
+ void Update_RA_Entry23a(struct rtw_adapter *padapter, struct sta_info *psta);
+ void set_sta_rate23a(struct rtw_adapter *padapter, struct sta_info *psta);
+ 
+@@ -545,7 +545,7 @@ int receive_disconnect23a(struct rtw_adapter *padapter,
+ 
+ unsigned char get_highest_rate_idx23a(u32 mask);
+ int support_short_GI23a(struct rtw_adapter *padapter,
+-		     struct HT_caps_element *pHT_caps);
++			struct ieee80211_ht_cap *ht_cap);
+ bool is_ap_in_tkip23a(struct rtw_adapter *padapter);
+ bool is_ap_in_wep23a(struct rtw_adapter *padapter);
+ bool should_forbid_n_rate23a(struct rtw_adapter *padapter);
+diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h
+index f731833..d0a8c86 100644
+--- a/drivers/staging/rtl8723au/include/wifi.h
++++ b/drivers/staging/rtl8723au/include/wifi.h
+@@ -76,20 +76,6 @@ struct ieee80211_ht_addt_info {
+ 	unsigned char	basic_set[16];
+ } __packed;
+ 
+-struct HT_caps_element {
+-	union {
+-		struct {
+-			unsigned short	HT_caps_info;
+-			unsigned char	AMPDU_para;
+-			struct ieee80211_mcs_info mcs_info;
+-			unsigned short	HT_ext_caps;
+-			unsigned int	Beamforming_caps;
+-			unsigned char	ASEL_caps;
+-		} HT_cap_element;
+-		unsigned char HT_cap[26];
+-	} u;
+-} __packed;
+-
+ struct HT_info_element {
+ 	unsigned char	primary_channel;
+ 	unsigned char	infos[5];

Added: dists/sid/linux/debian/patches/features/all/r8723au/0013-staging-rtl8723au-Use-correct-struct-for-WLAN_EID_HT.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0013-staging-rtl8723au-Use-correct-struct-for-WLAN_EID_HT.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,66 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 31 May 2014 18:05:12 +0200
+Subject: [013/249] staging: rtl8723au: Use correct struct for
+ WLAN_EID_HT_CAPABILITY
+Origin: https://git.kernel.org/linus/6594c965ca8c07ba2c152bfa3c23700650d2969b
+
+WLAN_EID_HT_CAPABILITY carries a struct ieee80211_ht_operation - use
+the right struct instead of a self invented one.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 6 +++---
+ drivers/staging/rtl8723au/include/wifi.h  | 8 --------
+ 2 files changed, 3 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 19b891f..297e2e4 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -2249,7 +2249,7 @@ unsigned int rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
+ 
+ 		p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, in_ie + 12,
+ 				     in_len -12);
+-		if (p && (p[1] == sizeof(struct ieee80211_ht_addt_info))) {
++		if (p && (p[1] == sizeof(struct ieee80211_ht_operation))) {
+ 			out_len = *pout_len;
+ 			pframe = rtw_set_ie23a(out_ie + out_len,
+ 					       WLAN_EID_HT_OPERATION,
+@@ -2266,7 +2266,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 	u8 max_ampdu_sz;
+ 	const u8 *p;
+ 	struct ieee80211_ht_cap *pht_capie;
+-	struct ieee80211_ht_addt_info *pht_addtinfo;
++	struct ieee80211_ht_operation *pht_addtinfo;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct ht_priv *phtpriv = &pmlmepriv->htpriv;
+ 	struct registry_priv *pregistrypriv = &padapter->registrypriv;
+@@ -2314,7 +2314,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 
+ 	p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pie, ie_len);
+ 	if (p && p[1] > 0) {
+-		pht_addtinfo = (struct ieee80211_ht_addt_info *)(p + 2);
++		pht_addtinfo = (struct ieee80211_ht_operation *)(p + 2);
+ 		/* todo: */
+ 	}
+ 
+diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h
+index d0a8c86..6d221df 100644
+--- a/drivers/staging/rtl8723au/include/wifi.h
++++ b/drivers/staging/rtl8723au/include/wifi.h
+@@ -68,14 +68,6 @@
+  * This structure refers to "HT information element" as
+  * described in 802.11n draft section 7.3.2.53
+  */
+-struct ieee80211_ht_addt_info {
+-	unsigned char	control_chan;
+-	unsigned char	ht_param;
+-	unsigned short	operation_mode;
+-	unsigned short	stbc_param;
+-	unsigned char	basic_set[16];
+-} __packed;
+-
+ struct HT_info_element {
+ 	unsigned char	primary_channel;
+ 	unsigned char	infos[5];

Added: dists/sid/linux/debian/patches/features/all/r8723au/0014-staging-rtl8723au-Eliminate-struct-HT_info_element.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0014-staging-rtl8723au-Eliminate-struct-HT_info_element.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,331 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 31 May 2014 18:05:13 +0200
+Subject: [014/249] staging: rtl8723au: Eliminate struct HT_info_element
+Origin: https://git.kernel.org/linus/4dc5f8bab2663b902b9cb0be29198dbbf38aa3fb
+
+Yet another duplicate version of struct ieee80211_ht_operation
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c          | 14 +++++++------
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c   |  6 +++---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c   |  4 ++--
+ drivers/staging/rtl8723au/core/rtw_mlme.c        | 14 +++++++------
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c    | 23 +++++++++++-----------
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c   | 25 ++++++++++++------------
+ drivers/staging/rtl8723au/include/rtw_mlme_ext.h |  2 +-
+ drivers/staging/rtl8723au/include/rtw_rf.h       | 11 -----------
+ drivers/staging/rtl8723au/include/wifi.h         | 11 -----------
+ 9 files changed, 47 insertions(+), 63 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index 83be27f..d67a5f1 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -652,7 +652,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *pnetwork_mlmeext = &pmlmeinfo->network;
+-	struct HT_info_element *pht_info = NULL;
++	struct ieee80211_ht_operation *pht_info = NULL;
+ 	int bcn_fixed_size;
+ 
+ 	bcn_interval = (u16)pnetwork->BeaconPeriod;
+@@ -736,18 +736,20 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
+ 			     pnetwork->IEs + bcn_fixed_size,
+ 			     pnetwork->IELength - bcn_fixed_size);
+ 	if (p && p[1]) {
+-		pht_info = (struct HT_info_element *)(p + 2);
++		pht_info = (struct ieee80211_ht_operation *)(p + 2);
+ 
+-		if (pregpriv->cbw40_enable && pht_info->infos[0] & BIT(2)) {
++		if (pregpriv->cbw40_enable && pht_info->ht_param &
++		    IEEE80211_HT_PARAM_CHAN_WIDTH_ANY) {
+ 			/* switch to the 40M Hz mode */
+ 			cur_bwmode = HT_CHANNEL_WIDTH_40;
+-			switch (pht_info->infos[0] & 0x3) {
+-			case 1:
++			switch (pht_info->ht_param &
++				IEEE80211_HT_PARAM_CHA_SEC_OFFSET) {
++			case IEEE80211_HT_PARAM_CHA_SEC_ABOVE:
+ 				/* pmlmeext->cur_ch_offset =
+ 				   HAL_PRIME_CHNL_OFFSET_LOWER; */
+ 				cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
+ 				break;
+-			case 3:
++			case IEEE80211_HT_PARAM_CHA_SEC_BELOW:
+ 				cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER;
+ 				break;
+ 			default:
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index 47ac4e9..69d2423 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -859,7 +859,7 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork)
+ 	u8 bencrypt = 0;
+ 	/* u8 wpa_ie[255], rsn_ie[255]; */
+ 	u16 wpa_len = 0, rsn_len = 0;
+-	struct HT_info_element *pht_info;
++	struct ieee80211_ht_operation *pht_info;
+ 	struct ieee80211_ht_cap *pht_cap;
+ 	const u8 *p;
+ 
+@@ -916,8 +916,8 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork)
+ 			     pnetwork->network.IEs + _FIXED_IE_LENGTH_,
+ 		       pnetwork->network.IELength - _FIXED_IE_LENGTH_);
+ 	if (p && p[1] > 0) {
+-		pht_info = (struct HT_info_element *)(p + 2);
+-		pnetwork->BcnInfo.ht_info_infos_0 = pht_info->infos[0];
++		pht_info = (struct ieee80211_ht_operation *)(p + 2);
++		pnetwork->BcnInfo.ht_info_infos_0 = pht_info->ht_param;
+ 	} else
+ 		pnetwork->BcnInfo.ht_info_infos_0 = 0;
+ }
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index e9f46a6..1d2ea4e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -394,8 +394,8 @@ u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter)
+ 			/* cur_bwmod is updated by beacon, pmlmeinfo is
+ 			   updated by association response */
+ 			bw_40MHz = (pmlmeext->cur_bwmode &&
+-				    (IEEE80211_HT_PARAM_CHAN_WIDTH_ANY &
+-				     pmlmeinfo->HT_info.infos[0])) ? 1:0;
++				    (pmlmeinfo->HT_info.ht_param &
++				     IEEE80211_HT_PARAM_CHAN_WIDTH_ANY)) ? 1:0;
+ 
+ 			/* short_GI = (pht_capie->cap_info & (IEEE80211_HT_CAP
+ 			   _SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1 : 0; */
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 297e2e4..9982886 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -2322,7 +2322,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 	if (pregistrypriv->cbw40_enable &&
+ 	    pmlmeinfo->ht_cap.cap_info &
+ 	    cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH_20_40) &&
+-	    pmlmeinfo->HT_info.infos[0] & BIT(2)) {
++	    pmlmeinfo->HT_info.ht_param & IEEE80211_HT_PARAM_CHAN_WIDTH_ANY) {
+ 		int i;
+ 		u8 rf_type;
+ 
+@@ -2339,13 +2339,13 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 		}
+ 		/* switch to the 40M Hz mode accoring to the AP */
+ 		pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40;
+-		switch ((pmlmeinfo->HT_info.infos[0] & 0x3))
+-		{
+-		case HT_EXTCHNL_OFFSET_UPPER:
++		switch (pmlmeinfo->HT_info.ht_param &
++			IEEE80211_HT_PARAM_CHAN_WIDTH_ANY) {
++		case IEEE80211_HT_PARAM_CHA_SEC_ABOVE:
+ 			pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
+ 			break;
+ 
+-		case HT_EXTCHNL_OFFSET_LOWER:
++		case IEEE80211_HT_PARAM_CHA_SEC_BELOW:
+ 			pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER;
+ 			break;
+ 
+@@ -2368,7 +2368,9 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 	/*  */
+ 	/*  Config current HT Protection mode. */
+ 	/*  */
+-	pmlmeinfo->HT_protection = pmlmeinfo->HT_info.infos[1] & 0x3;
++	pmlmeinfo->HT_protection =
++		le16_to_cpu(pmlmeinfo->HT_info.operation_mode) &
++		IEEE80211_HT_OP_MODE_PROTECTION;
+ }
+ 
+ void rtw_issue_addbareq_cmd23a(struct rtw_adapter *padapter,
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index b5f1d40..0dc49d3 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4640,9 +4640,9 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 				     bssid->IEs + ie_offset,
+ 				     bssid->IELength - ie_offset);
+ 		if (p) {
+-			struct HT_info_element *HT_info =
+-				(struct HT_info_element *)(p + 2);
+-			bssid->DSConfig = HT_info->primary_channel;
++			struct ieee80211_ht_operation *HT_info =
++				(struct ieee80211_ht_operation *)(p + 2);
++			bssid->DSConfig = HT_info->primary_chan;
+ 		} else /*  use current channel */
+ 			bssid->DSConfig = rtw_get_oper_ch23a(padapter);
+ 	}
+@@ -5959,7 +5959,7 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network;
+ 	const struct wlan_bssid_ex *pparm = (struct wlan_bssid_ex *)pbuf;
+-	struct HT_info_element *pht_info;
++	struct ieee80211_ht_operation *pht_info;
+ 	u32 i;
+ 	int bcn_fixed_size;
+ 	u8 *p;
+@@ -6028,20 +6028,21 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 
+ 			/* spec case only for cisco's ap because cisco's ap
+ 			 * issue assoc rsp using mcs rate @40MHz or @20MHz */
+-			pht_info = (struct HT_info_element *)(p + 2);
++			pht_info = (struct ieee80211_ht_operation *)(p + 2);
+ 
+-			if ((pregpriv->cbw40_enable) &&
+-			    (pht_info->infos[0] & BIT(2))) {
++			if (pregpriv->cbw40_enable &&
++			    (pht_info->ht_param &
++			     IEEE80211_HT_PARAM_CHAN_WIDTH_ANY)) {
+ 				/* switch to the 40M Hz mode according to AP */
+ 				pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40;
+-				switch (pht_info->infos[0] & 0x3)
+-				{
+-				case 1:
++				switch (pht_info->ht_param &
++					IEEE80211_HT_PARAM_CHA_SEC_OFFSET) {
++				case IEEE80211_HT_PARAM_CHA_SEC_ABOVE:
+ 					pmlmeext->cur_ch_offset =
+ 						HAL_PRIME_CHNL_OFFSET_LOWER;
+ 					break;
+ 
+-				case 3:
++				case IEEE80211_HT_PARAM_CHA_SEC_BELOW:
+ 					pmlmeext->cur_ch_offset =
+ 						HAL_PRIME_CHNL_OFFSET_UPPER;
+ 					break;
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 1194a6e..6d69811 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -635,7 +635,7 @@ void WMMOnAssocRsp23a(struct rtw_adapter *padapter)
+ 
+ static void bwmode_update_check(struct rtw_adapter *padapter, u8 *p)
+ {
+-	struct HT_info_element *pHT_info;
++	struct ieee80211_ht_operation *pHT_info;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+@@ -648,19 +648,20 @@ static void bwmode_update_check(struct rtw_adapter *padapter, u8 *p)
+ 		return;
+ 	if (!phtpriv->ht_option)
+ 		return;
+-	if (p[1] > sizeof(struct HT_info_element))
++	if (p[1] != sizeof(struct ieee80211_ht_operation))
+ 		return;
+ 
+-	pHT_info = (struct HT_info_element *)(p + 2);
++	pHT_info = (struct ieee80211_ht_operation *)(p + 2);
+ 
+-	if ((pHT_info->infos[0] & BIT(2)) && pregistrypriv->cbw40_enable) {
++	if ((pHT_info->ht_param & IEEE80211_HT_PARAM_CHAN_WIDTH_ANY) &&
++	    pregistrypriv->cbw40_enable) {
+ 		new_bwmode = HT_CHANNEL_WIDTH_40;
+ 
+-		switch (pHT_info->infos[0] & 0x3) {
+-		case 1:
++		switch (pHT_info->ht_param & IEEE80211_HT_PARAM_CHA_SEC_OFFSET){
++		case IEEE80211_HT_PARAM_CHA_SEC_ABOVE:
+ 			new_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
+ 			break;
+-		case 3:
++		case IEEE80211_HT_PARAM_CHA_SEC_BELOW:
+ 			new_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER;
+ 			break;
+ 		default:
+@@ -786,7 +787,7 @@ void HT_info_handler23a(struct rtw_adapter *padapter, u8 *p)
+ 	if (phtpriv->ht_option == false)
+ 		return;
+ 
+-	if (p[1] > sizeof(struct HT_info_element))
++	if (p[1] != sizeof(struct ieee80211_ht_operation))
+ 		return;
+ 
+ 	pmlmeinfo->HT_info_enable = 1;
+@@ -883,7 +884,7 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 			  struct ieee80211_mgmt *mgmt, u32 pkt_len)
+ {
+ 	struct wlan_network *cur_network = &Adapter->mlmepriv.cur_network;
+-	struct HT_info_element *pht_info;
++	struct ieee80211_ht_operation *pht_info;
+ 	struct ieee80211_ht_cap *pht_cap;
+ 	struct wlan_bssid_ex *bssid;
+ 	unsigned short val16;
+@@ -952,8 +953,8 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 	/* parsing HT_INFO_IE */
+ 	p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pie, pie_len);
+ 	if (p && p[1] > 0) {
+-		pht_info = (struct HT_info_element *)(p + 2);
+-		ht_info_infos_0 = pht_info->infos[0];
++		pht_info = (struct ieee80211_ht_operation *)(p + 2);
++		ht_info_infos_0 = pht_info->ht_param;
+ 	} else {
+ 		pht_info = NULL;
+ 		ht_info_infos_0 = 0;
+@@ -985,7 +986,7 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 		p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pie, pie_len);
+ 
+ 		if (pht_info)
+-			bcn_channel = pht_info->primary_channel;
++			bcn_channel = pht_info->primary_chan;
+ 		else { /* we don't find channel IE, so don't check it */
+ 			DBG_8723A("Oops: %s we don't find channel IE, so don't "
+ 				  "check it\n", __func__);
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+index 57622fb..368e57d 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+@@ -367,7 +367,7 @@ struct mlme_ext_info
+ 	struct ADDBA_request		ADDBA_req;
+ 	struct WMM_para_element	WMM_param;
+ 	struct ieee80211_ht_cap ht_cap;
+-	struct HT_info_element		HT_info;
++	struct ieee80211_ht_operation HT_info;
+ 	struct wlan_bssid_ex			network;/* join network or bss_network, if in ap mode, it is the same to cur_network.network */
+ 	struct FW_Sta_Info		FW_sta_info[NUM_STA];
+ };
+diff --git a/drivers/staging/rtl8723au/include/rtw_rf.h b/drivers/staging/rtl8723au/include/rtw_rf.h
+index 91a0a22..a7de714 100644
+--- a/drivers/staging/rtl8723au/include/rtw_rf.h
++++ b/drivers/staging/rtl8723au/include/rtw_rf.h
+@@ -89,17 +89,6 @@ enum ht_channel_width {
+ 	HT_CHANNEL_WIDTH_10 = 4,
+ };
+ 
+-/*  */
+-/*  Represent Extention Channel Offset in HT Capabilities */
+-/*  This is available only in 40Mhz mode. */
+-/*  */
+-enum {
+-	HT_EXTCHNL_OFFSET_NO_EXT = 0,
+-	HT_EXTCHNL_OFFSET_UPPER = 1,
+-	HT_EXTCHNL_OFFSET_NO_DEF = 2,
+-	HT_EXTCHNL_OFFSET_LOWER = 3,
+-};
+-
+ /* 2007/11/15 MH Define different RF type. */
+ enum {
+ 	RF_1T2R = 0,
+diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h
+index 6d221df..4ab28e5 100644
+--- a/drivers/staging/rtl8723au/include/wifi.h
++++ b/drivers/staging/rtl8723au/include/wifi.h
+@@ -63,17 +63,6 @@
+ 				Below is the definition for 802.11n
+ ------------------------------------------------------------------------------*/
+ 
+-/* struct rtw_ieee80211_ht_cap - HT additional information
+- *
+- * This structure refers to "HT information element" as
+- * described in 802.11n draft section 7.3.2.53
+- */
+-struct HT_info_element {
+-	unsigned char	primary_channel;
+-	unsigned char	infos[5];
+-	unsigned char	MCS_rate[16];
+-}  __packed;
+-
+ struct AC_param {
+ 	unsigned char		ACI_AIFSN;
+ 	unsigned char		CW;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0015-staging-rtl8723au-Don-t-carry-ht_cap_info-and-ht_par.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0015-staging-rtl8723au-Don-t-carry-ht_cap_info-and-ht_par.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,146 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 31 May 2014 18:05:14 +0200
+Subject: [015/249] staging: rtl8723au: Don't carry ht_cap_info and ht_param in
+ struct wlan_bcn_info
+Origin: https://git.kernel.org/linus/ed08b4de7c26a898b9deb65ee46c5d7eaf2bdd62
+
+These were just stored to check whether the beacon info had changed
+and print a debug message in this case. If we ever need this again, we
+can determine this change differently.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c  | 22 -------------
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c  | 43 ++-----------------------
+ drivers/staging/rtl8723au/include/wlan_bssdef.h |  2 --
+ 3 files changed, 3 insertions(+), 64 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index 69d2423..2740639 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -859,9 +859,6 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork)
+ 	u8 bencrypt = 0;
+ 	/* u8 wpa_ie[255], rsn_ie[255]; */
+ 	u16 wpa_len = 0, rsn_len = 0;
+-	struct ieee80211_ht_operation *pht_info;
+-	struct ieee80211_ht_cap *pht_cap;
+-	const u8 *p;
+ 
+ 	cap = get_unaligned_le16(
+ 		rtw_get_capability23a_from_ie(pnetwork->network.IEs));
+@@ -901,25 +898,6 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork)
+ 	rtw_get_cipher_info(pnetwork);
+ 
+ 	/* get bwmode and ch_offset */
+-	/* parsing HT_CAP_IE */
+-	p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY,
+-			     pnetwork->network.IEs + _FIXED_IE_LENGTH_,
+-			     pnetwork->network.IELength - _FIXED_IE_LENGTH_);
+-	if (p && p[1] > 0) {
+-		pht_cap = (struct ieee80211_ht_cap *)(p + 2);
+-		pnetwork->BcnInfo.ht_cap_info = pht_cap->cap_info;
+-	} else
+-		pnetwork->BcnInfo.ht_cap_info = 0;
+-
+-	/* parsing HT_INFO_IE */
+-	p = cfg80211_find_ie(WLAN_EID_HT_OPERATION,
+-			     pnetwork->network.IEs + _FIXED_IE_LENGTH_,
+-		       pnetwork->network.IELength - _FIXED_IE_LENGTH_);
+-	if (p && p[1] > 0) {
+-		pht_info = (struct ieee80211_ht_operation *)(p + 2);
+-		pnetwork->BcnInfo.ht_info_infos_0 = pht_info->ht_param;
+-	} else
+-		pnetwork->BcnInfo.ht_info_infos_0 = 0;
+ }
+ 
+ /* show MCS rate, unit: 100Kbps */
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 6d69811..8c007cd 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -885,15 +885,12 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ {
+ 	struct wlan_network *cur_network = &Adapter->mlmepriv.cur_network;
+ 	struct ieee80211_ht_operation *pht_info;
+-	struct ieee80211_ht_cap *pht_cap;
+ 	struct wlan_bssid_ex *bssid;
+ 	unsigned short val16;
+ 	u16 wpa_len = 0, rsn_len = 0;
+ 	u8 encryp_protocol;
+ 	int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0, r;
+ 	u32 bcn_channel;
+-	unsigned short ht_cap_info;
+-	unsigned char ht_info_infos_0;
+ 	int len, pie_len, ie_offset;
+ 	const u8 *p;
+ 	u8 *pie;
+@@ -941,41 +938,6 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 	pie = bssid->IEs + ie_offset;
+ 	pie_len = pkt_len - ie_offset;
+ 
+-	p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, pie, pie_len);
+-	if (p && p[1] > 0) {
+-		pht_cap = (struct ieee80211_ht_cap *)(p + 2);
+-		ht_cap_info = pht_cap->cap_info;
+-	} else {
+-		pht_cap = NULL;
+-		ht_cap_info = 0;
+-	}
+-
+-	/* parsing HT_INFO_IE */
+-	p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pie, pie_len);
+-	if (p && p[1] > 0) {
+-		pht_info = (struct ieee80211_ht_operation *)(p + 2);
+-		ht_info_infos_0 = pht_info->ht_param;
+-	} else {
+-		pht_info = NULL;
+-		ht_info_infos_0 = 0;
+-	}
+-
+-	if (ht_cap_info != cur_network->BcnInfo.ht_cap_info ||
+-	    ((ht_info_infos_0 & 0x03) !=
+-	     (cur_network->BcnInfo.ht_info_infos_0 & 0x03))) {
+-		DBG_8723A("%s bcn now: ht_cap_info:%x ht_info_infos_0:%x\n",
+-			  __func__, ht_cap_info, ht_info_infos_0);
+-		DBG_8723A("%s bcn link: ht_cap_info:%x ht_info_infos_0:%x\n",
+-			  __func__, cur_network->BcnInfo.ht_cap_info,
+-			  cur_network->BcnInfo.ht_info_infos_0);
+-		DBG_8723A("%s bw mode change, disconnect\n", __func__);
+-		/* bcn_info_update */
+-		cur_network->BcnInfo.ht_cap_info = ht_cap_info;
+-		cur_network->BcnInfo.ht_info_infos_0 = ht_info_infos_0;
+-		/* to do : need to check that whether modify related
+-		   register of BB or not */
+-	}
+-
+ 	/* Checking for channel */
+ 	p = cfg80211_find_ie(WLAN_EID_DS_PARAMS, pie, pie_len);
+ 	if (p)
+@@ -985,9 +947,10 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 		   info for channel */
+ 		p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pie, pie_len);
+ 
+-		if (pht_info)
++		if (p && p[1] > 0) {
++			pht_info = (struct ieee80211_ht_operation *)(p + 2);
+ 			bcn_channel = pht_info->primary_chan;
+-		else { /* we don't find channel IE, so don't check it */
++		} else { /* we don't find channel IE, so don't check it */
+ 			DBG_8723A("Oops: %s we don't find channel IE, so don't "
+ 				  "check it\n", __func__);
+ 			bcn_channel = Adapter->mlmeextpriv.cur_channel;
+diff --git a/drivers/staging/rtl8723au/include/wlan_bssdef.h b/drivers/staging/rtl8723au/include/wlan_bssdef.h
+index 664015d..b717687 100644
+--- a/drivers/staging/rtl8723au/include/wlan_bssdef.h
++++ b/drivers/staging/rtl8723au/include/wlan_bssdef.h
+@@ -83,8 +83,6 @@ struct wlan_bcn_info {
+ 	int is_8021x;
+ 
+ 	/* bwmode 20/40 and ch_offset UP/LOW */
+-	unsigned short	ht_cap_info;
+-	unsigned char	ht_info_infos_0;
+ };
+ 
+ struct wlan_bssid_ex {

Added: dists/sid/linux/debian/patches/features/all/r8723au/0016-staging-rtl8723au-rtw_check_bcn_info23a-Use-capabili.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0016-staging-rtl8723au-rtw_check_bcn_info23a-Use-capabili.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,25 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 31 May 2014 18:05:15 +0200
+Subject: [016/249] staging: rtl8723au: rtw_check_bcn_info23a(): Use capability
+ bit define
+Origin: https://git.kernel.org/linus/a665bcc2441fcf30636c2792c125a4d07d44d617
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 8c007cd..67fb7ec 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -995,7 +995,7 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 	/* check encryption info */
+ 	val16 = rtw_get_capability23a(bssid);
+ 
+-	if (val16 & BIT(4))
++	if (val16 & WLAN_CAPABILITY_PRIVACY)
+ 		bssid->Privacy = 1;
+ 	else
+ 		bssid->Privacy = 0;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0017-staging-rtl8723au-Remmove-buddy-adapter-linking.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0017-staging-rtl8723au-Remmove-buddy-adapter-linking.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,168 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 31 May 2014 18:05:16 +0200
+Subject: [017/249] staging: rtl8723au: Remmove buddy-adapter linking
+Origin: https://git.kernel.org/linus/e3916153ea15f97a343e463c4b69bd819229d41a
+
+This sort of stuff should be handled by the bonding driver
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_pwrctrl.c   | 16 ----------------
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c | 25 -------------------------
+ drivers/staging/rtl8723au/include/drv_types.h  |  3 ---
+ drivers/staging/rtl8723au/os_dep/os_intfs.c    |  5 -----
+ drivers/staging/rtl8723au/os_dep/usb_intf.c    | 12 ++----------
+ 5 files changed, 2 insertions(+), 59 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
+index dbd01b6..7dc7c90 100644
+--- a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
++++ b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
+@@ -114,7 +114,6 @@ int ips_leave23a(struct rtw_adapter * padapter)
+ 
+ static bool rtw_pwr_unassociated_idle(struct rtw_adapter *adapter)
+ {
+-	struct rtw_adapter *buddy = adapter->pbuddy_adapter;
+ 	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+ 	struct xmit_priv *pxmit_priv = &adapter->xmitpriv;
+ 
+@@ -130,21 +129,6 @@ static bool rtw_pwr_unassociated_idle(struct rtw_adapter *adapter)
+ 		goto exit;
+ 	}
+ 
+-	/* consider buddy, if exist */
+-	if (buddy) {
+-		struct mlme_priv *b_pmlmepriv = &buddy->mlmepriv;
+-
+-		if (check_fwstate(b_pmlmepriv,
+-				  WIFI_ASOC_STATE|WIFI_SITE_MONITOR) ||
+-		    check_fwstate(b_pmlmepriv,
+-				  WIFI_UNDER_LINKING|WIFI_UNDER_WPS) ||
+-		    check_fwstate(b_pmlmepriv, WIFI_AP_STATE) ||
+-		    check_fwstate(b_pmlmepriv,
+-				  WIFI_ADHOC_MASTER_STATE|WIFI_ADHOC_STATE)) {
+-			goto exit;
+-		}
+-	}
+-
+ 	if (pxmit_priv->free_xmitbuf_cnt != NR_XMITBUFF ||
+ 		pxmit_priv->free_xmit_extbuf_cnt != NR_XMIT_EXTBUFF) {
+ 		DBG_8723A_LEVEL(_drv_always_,
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 67fb7ec..a9fa109 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -1644,28 +1644,3 @@ void process_addba_req23a(struct rtw_adapter *padapter,
+ 			true : false;
+ 	}
+ }
+-
+-static struct rtw_adapter *pbuddy_padapter;
+-
+-int rtw_handle_dualmac23a(struct rtw_adapter *adapter, bool init)
+-{
+-	int status = _SUCCESS;
+-
+-	if (init) {
+-		if (pbuddy_padapter == NULL) {
+-			pbuddy_padapter = adapter;
+-			DBG_8723A("%s(): pbuddy_padapter == NULL, "
+-				  "Set pbuddy_padapter\n", __func__);
+-		} else {
+-			adapter->pbuddy_adapter = pbuddy_padapter;
+-			pbuddy_padapter->pbuddy_adapter = adapter;
+-			/*  clear global value */
+-			pbuddy_padapter = NULL;
+-			DBG_8723A("%s(): pbuddy_padapter exist, "
+-				  "Exchange Information\n", __func__);
+-		}
+-	} else
+-		pbuddy_padapter = NULL;
+-
+-	return status;
+-}
+diff --git a/drivers/staging/rtl8723au/include/drv_types.h b/drivers/staging/rtl8723au/include/drv_types.h
+index a94857d..3ef9d7a 100644
+--- a/drivers/staging/rtl8723au/include/drv_types.h
++++ b/drivers/staging/rtl8723au/include/drv_types.h
+@@ -259,7 +259,6 @@ struct rtw_adapter {
+ 	u8 bWritePortCancel;
+ 	/* The driver will show the desired chan nor when this flag is 1. */
+ 	u8 bNotifyChannelChange;
+-	struct rtw_adapter *pbuddy_adapter;
+ 
+ 	/* extend to support multi interface */
+ 	/* IFACE_ID0 is equals to PRIMARY_ADAPTER */
+@@ -269,8 +268,6 @@ struct rtw_adapter {
+ 
+ #define adapter_to_dvobj(adapter) (adapter->dvobj)
+ 
+-int rtw_handle_dualmac23a(struct rtw_adapter *adapter, bool init);
+-
+ static inline u8 *myid(struct eeprom_priv *peepriv)
+ {
+ 	return peepriv->mac_addr;
+diff --git a/drivers/staging/rtl8723au/os_dep/os_intfs.c b/drivers/staging/rtl8723au/os_dep/os_intfs.c
+index 1fb3438..ee3d62c 100644
+--- a/drivers/staging/rtl8723au/os_dep/os_intfs.c
++++ b/drivers/staging/rtl8723au/os_dep/os_intfs.c
+@@ -584,11 +584,6 @@ int rtw_free_drv_sw23a(struct rtw_adapter *padapter)
+ 	kfree(padapter->HalData);
+ 	padapter->HalData = NULL;
+ 
+-	RT_TRACE(_module_os_intfs_c_, _drv_info_, ("<== rtw_free_drv_sw23a\n"));
+-
+-	/*  clear pbuddy_adapter to avoid access wrong pointer. */
+-	if (padapter->pbuddy_adapter != NULL)
+-		padapter->pbuddy_adapter->pbuddy_adapter = NULL;
+ 	RT_TRACE(_module_os_intfs_c_, _drv_info_, ("-rtw_free_drv_sw23a\n"));
+ 	return _SUCCESS;
+ }
+diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+index 8b25c1a..d0a3a1e6 100644
+--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c
++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+@@ -572,7 +572,7 @@ static struct rtw_adapter *rtw_usb_if1_init(struct dvobj_priv *dvobj,
+ 
+ 	pnetdev = rtw_init_netdev23a(padapter);
+ 	if (!pnetdev)
+-		goto handle_dualmac;
++		goto free_adapter;
+ 	padapter = netdev_priv(pnetdev);
+ 
+ 	padapter->dvobj = dvobj;
+@@ -583,13 +583,10 @@ static struct rtw_adapter *rtw_usb_if1_init(struct dvobj_priv *dvobj,
+ 
+ 	rtl8723au_set_hw_type(padapter);
+ 
+-	if (rtw_handle_dualmac23a(padapter, 1) != _SUCCESS)
+-		goto free_adapter;
+-
+ 	SET_NETDEV_DEV(pnetdev, dvobj_to_dev(dvobj));
+ 
+ 	if (rtw_wdev_alloc(padapter, dvobj_to_dev(dvobj)))
+-		goto handle_dualmac;
++		goto free_adapter;
+ 
+ 	/* step 2. allocate HalData */
+ 	padapter->HalData = kzalloc(sizeof(struct hal_data_8723a), GFP_KERNEL);
+@@ -650,9 +647,6 @@ free_wdev:
+ 		rtw_wdev_unregister(padapter->rtw_wdev);
+ 		rtw_wdev_free(padapter->rtw_wdev);
+ 	}
+-handle_dualmac:
+-	if (status != _SUCCESS)
+-		rtw_handle_dualmac23a(padapter, 0);
+ free_adapter:
+ 	if (status != _SUCCESS) {
+ 		if (pnetdev)
+@@ -684,8 +678,6 @@ static void rtw_usb_if1_deinit(struct rtw_adapter *if1)
+ 	DBG_8723A("+r871xu_dev_remove, hw_init_completed =%d\n",
+ 		  if1->hw_init_completed);
+ 
+-	rtw_handle_dualmac23a(if1, 0);
+-
+ 	if (if1->rtw_wdev) {
+ 		rtw_wdev_unregister(if1->rtw_wdev);
+ 		rtw_wdev_free(if1->rtw_wdev);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0018-staging-rtl8723au-Rewrite-update_beacon23a_info-tto-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0018-staging-rtl8723au-Rewrite-update_beacon23a_info-tto-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,144 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 31 May 2014 18:05:17 +0200
+Subject: [018/249] staging: rtl8723au: Rewrite update_beacon23a_info() tto use
+ cfg80211_find_ie()
+Origin: https://git.kernel.org/linus/7882ef454c613c8e79700ca1c81274357e1286ff
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c    |  5 ++--
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c   | 38 ++++++++++--------------
+ drivers/staging/rtl8723au/include/rtw_mlme_ext.h |  9 +++---
+ 3 files changed, 22 insertions(+), 30 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 0dc49d3..bf0d62e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -789,7 +789,6 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 	struct sta_priv	*pstapriv = &padapter->stapriv;
+ 	struct sk_buff *skb = precv_frame->pkt;
+ 	struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *) skb->data;
+-	u8 *pframe = skb->data;
+ 	int pkt_len = skb->len;
+ 	struct wlan_bssid_ex *pbss;
+ 	int ret = _SUCCESS;
+@@ -869,7 +868,7 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 			   the number of the beacon received */
+ 			if ((sta_rx_pkts(psta) & 0xf) == 0) {
+ 				/* DBG_8723A("update_bcn_info\n"); */
+-				update_beacon23a_info(padapter, pframe,
++				update_beacon23a_info(padapter, mgmt,
+ 						      pkt_len, psta);
+ 			}
+ 		}
+@@ -881,7 +880,7 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 			   number of the beacon received */
+ 			if ((sta_rx_pkts(psta) & 0xf) == 0) {
+ 				/* DBG_8723A("update_bcn_info\n"); */
+-				update_beacon23a_info(padapter, pframe,
++				update_beacon23a_info(padapter, mgmt,
+ 						      pkt_len, psta);
+ 			}
+ 		} else {
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index a9fa109..82904d0 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -633,7 +633,7 @@ void WMMOnAssocRsp23a(struct rtw_adapter *padapter)
+ 	return;
+ }
+ 
+-static void bwmode_update_check(struct rtw_adapter *padapter, u8 *p)
++static void bwmode_update_check(struct rtw_adapter *padapter, const u8 *p)
+ {
+ 	struct ieee80211_ht_operation *pHT_info;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+@@ -774,7 +774,7 @@ void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p)
+ 	return;
+ }
+ 
+-void HT_info_handler23a(struct rtw_adapter *padapter, u8 *p)
++void HT_info_handler23a(struct rtw_adapter *padapter, const u8 *p)
+ {
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+@@ -830,7 +830,7 @@ void HTOnAssocRsp23a(struct rtw_adapter *padapter)
+ 	rtl8723a_set_ampdu_factor(padapter, max_AMPDU_len);
+ }
+ 
+-void ERP_IE_handler23a(struct rtw_adapter *padapter, u8 *p)
++void ERP_IE_handler23a(struct rtw_adapter *padapter, const u8 *p)
+ {
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+@@ -1091,32 +1091,24 @@ _mismatch:
+ 	return _FAIL;
+ }
+ 
+-void update_beacon23a_info(struct rtw_adapter *padapter, u8 *pframe,
++void update_beacon23a_info(struct rtw_adapter *padapter,
++			   struct ieee80211_mgmt *mgmt,
+ 			   uint pkt_len, struct sta_info *psta)
+ {
+-	unsigned int i;
+ 	unsigned int len;
+-	u8 *p;
++	const u8 *p;
+ 
+-	len = pkt_len -
+-		(_BEACON_IE_OFFSET_ + sizeof(struct ieee80211_hdr_3addr));
++	len = pkt_len - offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 
+-	for (i = 0; i < len;) {
+-		p = (u8 *)(pframe + (_BEACON_IE_OFFSET_ + sizeof(struct ieee80211_hdr_3addr)) + i);
++	p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, mgmt->u.beacon.variable,
++			     len);
++	if (p)
++		bwmode_update_check(padapter, p);
+ 
+-		switch (p[0]) {
+-		case WLAN_EID_HT_OPERATION:	/* HT info */
+-			/* HT_info_handler23a(padapter, pIE); */
+-			bwmode_update_check(padapter, p);
+-			break;
+-		case WLAN_EID_ERP_INFO:
+-			ERP_IE_handler23a(padapter, p);
+-			VCS_update23a(padapter, psta);
+-			break;
+-		default:
+-			break;
+-		}
+-		i += (p[1] + 2);
++	p = cfg80211_find_ie(WLAN_EID_ERP_INFO, mgmt->u.beacon.variable, len);
++	if (p) {
++		ERP_IE_handler23a(padapter, p);
++		VCS_update23a(padapter, psta);
+ 	}
+ }
+ 
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+index 368e57d..b8a108b 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+@@ -514,14 +514,15 @@ int WMM_param_handler23a(struct rtw_adapter *padapter, u8 *p);
+ void WMMOnAssocRsp23a(struct rtw_adapter *padapter);
+ 
+ void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p);
+-void HT_info_handler23a(struct rtw_adapter *padapter, u8 *p);
++void HT_info_handler23a(struct rtw_adapter *padapter, const u8 *p);
+ void HTOnAssocRsp23a(struct rtw_adapter *padapter);
+ 
+-void ERP_IE_handler23a(struct rtw_adapter *padapter, u8 *p);
++void ERP_IE_handler23a(struct rtw_adapter *padapter, const u8 *p);
+ void VCS_update23a(struct rtw_adapter *padapter, struct sta_info *psta);
+ 
+-void update_beacon23a_info(struct rtw_adapter *padapter, u8 *pframe, uint len,
+-			struct sta_info *psta);
++void update_beacon23a_info(struct rtw_adapter *padapter,
++			   struct ieee80211_mgmt *mgmt, uint len,
++			   struct sta_info *psta);
+ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 			  struct ieee80211_mgmt *mgmt, u32 packet_len);
+ void update_IOT_info23a(struct rtw_adapter *padapter);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0019-staging-rtl8723au-collect_bss_info23a-Collect-beacon.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0019-staging-rtl8723au-collect_bss_info23a-Collect-beacon.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,58 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 31 May 2014 18:05:18 +0200
+Subject: [019/249] staging: rtl8723au: collect_bss_info23a(): Collect
+ beacon_interval correct
+Origin: https://git.kernel.org/linus/5b124b1aa2979b1319d6434464c318ef0111ceb4
+
+Only retrieve beacon_interval from frames where it is present. This
+avoids setting BeaconPeriod to garbage for other frame types.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index bf0d62e..fde8a32 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4547,20 +4547,28 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 		bssid->reserved = 1;
+ 		ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 		capab_info = mgmt->u.beacon.capab_info;
++		bssid->BeaconPeriod =
++			get_unaligned_le16(&mgmt->u.beacon.beacon_int);
+ 	} else  if (ieee80211_is_probe_req(mgmt->frame_control)) {
+ 		ie_offset = offsetof(struct ieee80211_mgmt,
+ 				     u.probe_req.variable);
+ 		bssid->reserved = 2;
+ 		capab_info = 0;
++		bssid->BeaconPeriod =
++			padapter->registrypriv.dev_network.BeaconPeriod;
+ 	} else if (ieee80211_is_probe_resp(mgmt->frame_control)) {
+ 		ie_offset = offsetof(struct ieee80211_mgmt,
+ 				     u.probe_resp.variable);
+ 		bssid->reserved = 3;
+ 		capab_info = mgmt->u.probe_resp.capab_info;
++		bssid->BeaconPeriod =
++			get_unaligned_le16(&mgmt->u.probe_resp.beacon_int);
+ 	} else {
+ 		bssid->reserved = 0;
+ 		ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 		capab_info = mgmt->u.beacon.capab_info;
++		bssid->BeaconPeriod =
++			padapter->registrypriv.dev_network.BeaconPeriod;
+ 	}
+ 	ie_offset -= offsetof(struct ieee80211_mgmt, u);
+ 
+@@ -4654,9 +4662,6 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 		return _SUCCESS;
+ 	}
+ 
+-	bssid->BeaconPeriod = get_unaligned_le16(
+-		rtw_get_beacon_interval23a_from_ie(bssid->IEs));
+-
+ 	if (capab_info & BIT(0)) {
+ 		bssid->ifmode = NL80211_IFTYPE_STATION;
+ 		ether_addr_copy(bssid->MacAddress, mgmt->sa);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0020-staging-rtl8723au-collect_bss_info23a-ieee80211_mgmt.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0020-staging-rtl8723au-collect_bss_info23a-ieee80211_mgmt.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,59 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 31 May 2014 18:05:19 +0200
+Subject: [020/249] staging: rtl8723au: collect_bss_info23a(): ieee80211_mgmt
+ capab_info is little endian
+Origin: https://git.kernel.org/linus/c2b8047aff855bfbcb5a2ff478465c01bb82fda5
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index fde8a32..1c22d1b 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4546,7 +4546,7 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 	if (ieee80211_is_beacon(mgmt->frame_control)) {
+ 		bssid->reserved = 1;
+ 		ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+-		capab_info = mgmt->u.beacon.capab_info;
++		capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info);
+ 		bssid->BeaconPeriod =
+ 			get_unaligned_le16(&mgmt->u.beacon.beacon_int);
+ 	} else  if (ieee80211_is_probe_req(mgmt->frame_control)) {
+@@ -4560,13 +4560,13 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 		ie_offset = offsetof(struct ieee80211_mgmt,
+ 				     u.probe_resp.variable);
+ 		bssid->reserved = 3;
+-		capab_info = mgmt->u.probe_resp.capab_info;
++		capab_info = get_unaligned_le16(&mgmt->u.probe_resp.capab_info);
+ 		bssid->BeaconPeriod =
+ 			get_unaligned_le16(&mgmt->u.probe_resp.beacon_int);
+ 	} else {
+ 		bssid->reserved = 0;
+ 		ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+-		capab_info = mgmt->u.beacon.capab_info;
++		capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info);
+ 		bssid->BeaconPeriod =
+ 			padapter->registrypriv.dev_network.BeaconPeriod;
+ 	}
+@@ -4662,7 +4662,7 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 		return _SUCCESS;
+ 	}
+ 
+-	if (capab_info & BIT(0)) {
++	if (capab_info & WLAN_CAPABILITY_ESS) {
+ 		bssid->ifmode = NL80211_IFTYPE_STATION;
+ 		ether_addr_copy(bssid->MacAddress, mgmt->sa);
+ 	} else {
+@@ -4670,7 +4670,7 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 		ether_addr_copy(bssid->MacAddress, mgmt->bssid);
+ 	}
+ 
+-	if (capab_info & BIT(4))
++	if (capab_info & WLAN_CAPABILITY_PRIVACY)
+ 		bssid->Privacy = 1;
+ 	else
+ 		bssid->Privacy = 0;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0021-staging-rtl8723au-rtw_update_ht_cap23a-Use-correct-m.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0021-staging-rtl8723au-rtw_update_ht_cap23a-Use-correct-m.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,42 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 3 Jun 2014 23:41:22 +0200
+Subject: [021/249] staging: rtl8723au: rtw_update_ht_cap23a(): Use correct
+ mask when determining 40MHz channel location
+Origin: https://git.kernel.org/linus/b2775415844e89d528a0c40f81caedd6aad595f7
+
+commit 4dc5f8bab2663b902b9cb0be29198dbbf38aa3fb
+Author: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date:   Tue May 27 13:43:12 2014 +0200
+
+    staging: rtl8723au: Eliminate struct HT_info_element
+
+    Yet another duplicate version of struct ieee80211_ht_operation
+
+    Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+
+introduced a bad error, applying the wrong value as the mask when
+determining the location of the 40MHz channel, effectively making it
+always determining it as not present. This caused hangs and delays
+when running in 40MHz channel mode.
+
+This should get it right.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 9982886..76e1797 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -2340,7 +2340,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 		/* switch to the 40M Hz mode accoring to the AP */
+ 		pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40;
+ 		switch (pmlmeinfo->HT_info.ht_param &
+-			IEEE80211_HT_PARAM_CHAN_WIDTH_ANY) {
++			IEEE80211_HT_PARAM_CHA_SEC_OFFSET) {
+ 		case IEEE80211_HT_PARAM_CHA_SEC_ABOVE:
+ 			pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
+ 			break;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0022-staging-rtl8723au-rtw_get_bcn_info23a-Use-cfg80211_-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0022-staging-rtl8723au-rtw_get_bcn_info23a-Use-cfg80211_-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,64 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:15:59 +0200
+Subject: [022/249] staging: rtl8723au: rtw_get_bcn_info23a(): Use cfg80211_*
+ to obtain crypto info
+Origin: https://git.kernel.org/linus/54ddd2266a429e801382a32733177ec33384c8a0
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 29 +++++++++++++-------------
+ 1 file changed, 14 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index 2740639..484272e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -857,8 +857,9 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork)
+ {
+ 	unsigned short cap;
+ 	u8 bencrypt = 0;
+-	/* u8 wpa_ie[255], rsn_ie[255]; */
+-	u16 wpa_len = 0, rsn_len = 0;
++	int pie_len, ie_offset;
++	u8 *pie;
++	const u8 *p;
+ 
+ 	cap = get_unaligned_le16(
+ 		rtw_get_capability23a_from_ie(pnetwork->network.IEs));
+@@ -868,24 +869,22 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork)
+ 	} else
+ 		pnetwork->BcnInfo.encryp_protocol = ENCRYP_PROTOCOL_OPENSYS;
+ 
+-	rtw_get_sec_ie23a(pnetwork->network.IEs, pnetwork->network.IELength,
+-		       NULL, &rsn_len, NULL, &wpa_len);
+ 	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
+ 		 ("rtw_get_bcn_info23a: ssid =%s\n", pnetwork->network.Ssid.ssid));
+-	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
+-		 ("rtw_get_bcn_info23a: wpa_len =%d rsn_len =%d\n",
+-		  wpa_len, rsn_len));
+-	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
+-		 ("rtw_get_bcn_info23a: ssid =%s\n", pnetwork->network.Ssid.ssid));
+-	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
+-		 ("rtw_get_bcn_info23a: wpa_len =%d rsn_len =%d\n",
+-		  wpa_len, rsn_len));
+ 
+-	if (rsn_len > 0)
++	ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
++		offsetof(struct ieee80211_mgmt, u);
++	pie = pnetwork->network.IEs + ie_offset;
++	pie_len = pnetwork->network.IELength - ie_offset;
++
++	p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len);
++	if (p && p[1]) {
+ 		pnetwork->BcnInfo.encryp_protocol = ENCRYP_PROTOCOL_WPA2;
+-	else if (wpa_len > 0)
++	} else if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
++					   WLAN_OUI_TYPE_MICROSOFT_WPA,
++					   pie, pie_len)) {
+ 		pnetwork->BcnInfo.encryp_protocol = ENCRYP_PROTOCOL_WPA;
+-	else {
++	} else {
+ 		if (bencrypt)
+ 			pnetwork->BcnInfo.encryp_protocol = ENCRYP_PROTOCOL_WEP;
+ 	}

Added: dists/sid/linux/debian/patches/features/all/r8723au/0023-staging-rtl8723au-rtw_wlan_util.c-Use-cfg80211_-to-d.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0023-staging-rtl8723au-rtw_wlan_util.c-Use-cfg80211_-to-d.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,45 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:00 +0200
+Subject: [023/249] staging: rtl8723au: rtw_wlan_util.c: Use cfg80211_* to
+ determine crypto
+Origin: https://git.kernel.org/linus/77953edfac8dfc2c5b0d2007fdc64839c736e7a1
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c | 13 ++++++-------
+ 1 file changed, 6 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 82904d0..043ba40 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -887,7 +887,6 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 	struct ieee80211_ht_operation *pht_info;
+ 	struct wlan_bssid_ex *bssid;
+ 	unsigned short val16;
+-	u16 wpa_len = 0, rsn_len = 0;
+ 	u8 encryp_protocol;
+ 	int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0, r;
+ 	u32 bcn_channel;
+@@ -1009,14 +1008,14 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 		goto _mismatch;
+ 	}
+ 
+-	rtw_get_sec_ie23a(bssid->IEs, bssid->IELength, NULL, &rsn_len, NULL,
+-			  &wpa_len);
+-
+-	if (rsn_len > 0)
++	p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len);
++	if (p && p[1]) {
+ 		encryp_protocol = ENCRYP_PROTOCOL_WPA2;
+-	else if (wpa_len > 0)
++	} else if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
++					   WLAN_OUI_TYPE_MICROSOFT_WPA,
++					   pie, pie_len)) {
+ 		encryp_protocol = ENCRYP_PROTOCOL_WPA;
+-	else {
++	} else {
+ 		if (bssid->Privacy)
+ 			encryp_protocol = ENCRYP_PROTOCOL_WEP;
+ 		else

Added: dists/sid/linux/debian/patches/features/all/r8723au/0024-staging-rtl8723au-Remove-obsolete-rtw_get_sec_ie23a.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0024-staging-rtl8723au-Remove-obsolete-rtw_get_sec_ie23a.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,111 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:01 +0200
+Subject: [024/249] staging: rtl8723au: Remove obsolete rtw_get_sec_ie23a()
+Origin: https://git.kernel.org/linus/0b548a5c4d55058393b27c888a5cd04610c95ee3
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 75 --------------------------
+ drivers/staging/rtl8723au/include/ieee80211.h  |  2 -
+ 2 files changed, 77 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index 484272e..cbb1b85 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -621,81 +621,6 @@ int rtw_parse_wpa2_ie23a(const u8* rsn_ie, int rsn_ie_len, int *group_cipher,
+ 	return ret;
+ }
+ 
+-int rtw_get_sec_ie23a(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len,
+-		   u8 *wpa_ie, u16 *wpa_len)
+-{
+-	u8 authmode, sec_idx, i;
+-	uint cnt;
+-
+-
+-	/* Search required WPA or WPA2 IE and copy to sec_ie[ ] */
+-
+-	cnt = (_TIMESTAMP_ + _BEACON_ITERVAL_ + _CAPABILITY_);
+-
+-	sec_idx = 0;
+-
+-	while(cnt < in_len) {
+-		authmode = in_ie[cnt];
+-
+-		if ((authmode == WLAN_EID_VENDOR_SPECIFIC) &&
+-		    !memcmp(&in_ie[cnt+2], RTW_WPA_OUI23A_TYPE, 4)) {
+-				RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
+-					 ("\n rtw_get_wpa_ie23a: sec_idx =%d "
+-					  "in_ie[cnt+1]+2 =%d\n",
+-					  sec_idx, in_ie[cnt + 1] + 2));
+-
+-				if (wpa_ie) {
+-				memcpy(wpa_ie, &in_ie[cnt], in_ie[cnt+1]+2);
+-
+-				for (i = 0; i < (in_ie[cnt + 1] + 2); i = i + 8) {
+-					RT_TRACE(_module_rtl871x_mlme_c_,
+-						 _drv_info_,
+-						 ("\n %2x,%2x,%2x,%2x,%2x,%2x,"
+-						  "%2x,%2x\n", wpa_ie[i],
+-						  wpa_ie[i + 1], wpa_ie[i + 2],
+-						  wpa_ie[i + 3], wpa_ie[i + 4],
+-						  wpa_ie[i + 5], wpa_ie[i + 6],
+-						  wpa_ie[i + 7]));
+-					}
+-				}
+-
+-				*wpa_len = in_ie[cnt + 1] + 2;
+-				cnt += in_ie[cnt + 1] + 2;  /* get next */
+-		} else {
+-			if (authmode == _WPA2_IE_ID_) {
+-				RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
+-					 ("\n get_rsn_ie: sec_idx =%d in_ie"
+-					  "[cnt+1]+2 =%d\n", sec_idx,
+-					  in_ie[cnt + 1] + 2));
+-
+-				if (rsn_ie) {
+-				memcpy(rsn_ie, &in_ie[cnt], in_ie[cnt + 1] + 2);
+-
+-				for (i = 0; i < (in_ie[cnt + 1] + 2); i = i + 8) {
+-					RT_TRACE(_module_rtl871x_mlme_c_,
+-						 _drv_info_,
+-						 ("\n %2x,%2x,%2x,%2x,%2x,%2x,"
+-						  "%2x,%2x\n", rsn_ie[i],
+-						  rsn_ie[i + 1], rsn_ie[i + 2],
+-						  rsn_ie[i + 3], rsn_ie[i + 4],
+-						  rsn_ie[i + 5], rsn_ie[i + 6],
+-						  rsn_ie[i + 7]));
+-					}
+-				}
+-
+-				*rsn_len = in_ie[cnt + 1] + 2;
+-				cnt += in_ie[cnt + 1] + 2;  /* get next */
+-			} else {
+-				cnt += in_ie[cnt + 1] + 2;   /* get next */
+-			}
+-		}
+-	}
+-
+-
+-
+-	return *rsn_len + *wpa_len;
+-}
+-
+ /**
+  * rtw_get_wps_attr23a - Search a specific WPS attribute from a given WPS IE
+  * @wps_ie: Address of WPS IE to search
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index 6f42d2d..3738978 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -430,8 +430,6 @@ int rtw_get_wpa2_cipher_suite23a(const u8 *s);
+ int rtw_parse_wpa_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x);
+ int rtw_parse_wpa2_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x);
+ 
+-int rtw_get_sec_ie23a(u8 *in_ie,uint in_len,u8 *rsn_ie,u16 *rsn_len,u8 *wpa_ie,u16 *wpa_len);
+-
+ const u8 *rtw_get_wps_attr23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_attr, u32 *len_attr);
+ const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content, uint *len_content);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0025-staging-rtl8723au-Declare-rtw_get_wpa-2-_cipher_suit.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0025-staging-rtl8723au-Declare-rtw_get_wpa-2-_cipher_suit.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,84 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:02 +0200
+Subject: [025/249] staging: rtl8723au: Declare rtw_get_wpa{2, }_cipher_suite()
+ static
+Origin: https://git.kernel.org/linus/0cac3f9ee447e42c01a38a795c4f6eccd2868084
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 12 ++++++------
+ drivers/staging/rtl8723au/include/ieee80211.h  |  2 --
+ 2 files changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index cbb1b85..fa3ca9e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -436,7 +436,7 @@ int rtw_generate_ie23a(struct registry_priv *pregistrypriv)
+ 	return sz;
+ }
+ 
+-int rtw_get_wpa_cipher_suite23a(const u8 *s)
++static int rtw_get_wpa_cipher_suite(const u8 *s)
+ {
+ 	if (!memcmp(s, WPA_CIPHER_SUITE_NONE23A, WPA_SELECTOR_LEN))
+ 		return WPA_CIPHER_NONE;
+@@ -452,7 +452,7 @@ int rtw_get_wpa_cipher_suite23a(const u8 *s)
+ 	return 0;
+ }
+ 
+-int rtw_get_wpa2_cipher_suite23a(const u8 *s)
++static int rtw_get_wpa2_cipher_suite(const u8 *s)
+ {
+ 	if (!memcmp(s, RSN_CIPHER_SUITE_NONE23A, RSN_SELECTOR_LEN))
+ 		return WPA_CIPHER_NONE;
+@@ -490,7 +490,7 @@ int rtw_parse_wpa_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int
+ 	/* group_cipher */
+ 	if (left >= WPA_SELECTOR_LEN) {
+ 
+-		*group_cipher = rtw_get_wpa_cipher_suite23a(pos);
++		*group_cipher = rtw_get_wpa_cipher_suite(pos);
+ 
+ 		pos += WPA_SELECTOR_LEN;
+ 		left -= WPA_SELECTOR_LEN;
+@@ -518,7 +518,7 @@ int rtw_parse_wpa_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int
+ 		}
+ 
+ 		for (i = 0; i < count; i++) {
+-			*pairwise_cipher |= rtw_get_wpa_cipher_suite23a(pos);
++			*pairwise_cipher |= rtw_get_wpa_cipher_suite(pos);
+ 
+ 			pos += WPA_SELECTOR_LEN;
+ 			left -= WPA_SELECTOR_LEN;
+@@ -567,7 +567,7 @@ int rtw_parse_wpa2_ie23a(const u8* rsn_ie, int rsn_ie_len, int *group_cipher,
+ 
+ 	/* group_cipher */
+ 	if (left >= RSN_SELECTOR_LEN) {
+-		*group_cipher = rtw_get_wpa2_cipher_suite23a(pos);
++		*group_cipher = rtw_get_wpa2_cipher_suite(pos);
+ 
+ 		pos += RSN_SELECTOR_LEN;
+ 		left -= RSN_SELECTOR_LEN;
+@@ -594,7 +594,7 @@ int rtw_parse_wpa2_ie23a(const u8* rsn_ie, int rsn_ie_len, int *group_cipher,
+ 		}
+ 
+ 		for (i = 0; i < count; i++) {
+-			*pairwise_cipher |= rtw_get_wpa2_cipher_suite23a(pos);
++			*pairwise_cipher |= rtw_get_wpa2_cipher_suite(pos);
+ 
+ 			pos += RSN_SELECTOR_LEN;
+ 			left -= RSN_SELECTOR_LEN;
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index 3738978..0ef6e79 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -425,8 +425,6 @@ int rtw_ies_remove_ie23a(u8 *ies, uint *ies_len, uint offset, u8 eid, u8 *oui, u
+ 
+ void rtw_set_supported_rate23a(u8* SupportedRates, uint mode) ;
+ 
+-int rtw_get_wpa_cipher_suite23a(const u8 *s);
+-int rtw_get_wpa2_cipher_suite23a(const u8 *s);
+ int rtw_parse_wpa_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x);
+ int rtw_parse_wpa2_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0026-staging-rtl8723au-Make-WMM_param_handler23a-and-HT_c.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0026-staging-rtl8723au-Make-WMM_param_handler23a-and-HT_c.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,52 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:03 +0200
+Subject: [026/249] staging: rtl8723au: Make WMM_param_handler23a() and
+ HT_caps_handler23a() take a const u8 *
+Origin: https://git.kernel.org/linus/3cdf27730ac7a005cc0ca15bea5743389e136030
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c   | 4 ++--
+ drivers/staging/rtl8723au/include/rtw_mlme_ext.h | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 043ba40..b9ca088 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -504,7 +504,7 @@ void flush_all_cam_entry23a(struct rtw_adapter *padapter)
+ 	memset(pmlmeinfo->FW_sta_info, 0, sizeof(pmlmeinfo->FW_sta_info));
+ }
+ 
+-int WMM_param_handler23a(struct rtw_adapter *padapter, u8 *p)
++int WMM_param_handler23a(struct rtw_adapter *padapter, const u8 *p)
+ {
+ 	/* struct registry_priv	*pregpriv = &padapter->registrypriv; */
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+@@ -712,7 +712,7 @@ static void bwmode_update_check(struct rtw_adapter *padapter, const u8 *p)
+ 	}
+ }
+ 
+-void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p)
++void HT_caps_handler23a(struct rtw_adapter *padapter, const u8 *p)
+ {
+ 	unsigned int i;
+ 	u8 rf_type;
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+index b8a108b..eb61012 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+@@ -510,10 +510,10 @@ bool is_IBSS_empty23a(struct rtw_adapter *padapter);
+ 
+ unsigned char check_assoc_AP23a(u8 *pframe, uint len);
+ 
+-int WMM_param_handler23a(struct rtw_adapter *padapter, u8 *p);
++int WMM_param_handler23a(struct rtw_adapter *padapter, const u8 *p);
+ void WMMOnAssocRsp23a(struct rtw_adapter *padapter);
+ 
+-void HT_caps_handler23a(struct rtw_adapter *padapter, u8 *p);
++void HT_caps_handler23a(struct rtw_adapter *padapter, const u8 *p);
+ void HT_info_handler23a(struct rtw_adapter *padapter, const u8 *p);
+ void HTOnAssocRsp23a(struct rtw_adapter *padapter);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0027-staging-rtl8723au-OnAssocRsp23a-Use-cfg80211_-to-par.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0027-staging-rtl8723au-OnAssocRsp23a-Use-cfg80211_-to-par.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,104 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:04 +0200
+Subject: [027/249] staging: rtl8723au: OnAssocRsp23a(): Use cfg80211_* to
+ parse IEs
+Origin: https://git.kernel.org/linus/e1d143b49521e5c5859c3b7dd48ac301720000af
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 66 +++++++++++++++------------
+ 1 file changed, 37 insertions(+), 29 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 1c22d1b..e32df75 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -1805,11 +1805,12 @@ OnAssocRsp23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct sk_buff *skb = precv_frame->pkt;
+ 	struct ieee80211_mgmt *pmgmt = (struct ieee80211_mgmt *) skb->data;
+-	int res, i;
++	int res;
+ 	unsigned short status;
+-	u8 *p;
++	const u8 *p, *pie;
+ 	u8 *pframe = skb->data;
+ 	int pkt_len = skb->len;
++	int pielen;
+ 
+ 	DBG_8723A("%s\n", __func__);
+ 
+@@ -1843,38 +1844,45 @@ OnAssocRsp23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 	/* AID */
+ 	res = pmlmeinfo->aid = le16_to_cpu(pmgmt->u.assoc_resp.aid) & 0x3fff;
+ 
+-	/* following are moved to join event callback function */
+-	/* to handle HT, WMM, rate adaptive, update MAC reg */
+-	/* for not to handle the synchronous IO in the tasklet */
+-	for (i = offsetof(struct ieee80211_mgmt, u.assoc_resp.variable);
+-	     i < pkt_len;) {
+-		p = pframe + i;
+-
+-		switch (p[0])
+-		{
+-		case WLAN_EID_VENDOR_SPECIFIC:
+-			if (!memcmp(p + 2, WMM_PARA_OUI23A, 6))/* WMM */
+-				WMM_param_handler23a(padapter, p);
+-			break;
+-
+-		case WLAN_EID_HT_CAPABILITY:	/* HT caps */
+-			HT_caps_handler23a(padapter, p);
++	pie = pframe + offsetof(struct ieee80211_mgmt, u.assoc_resp.variable);
++	pielen = pkt_len -
++		offsetof(struct ieee80211_mgmt, u.assoc_resp.variable);
++
++	p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY,
++			     pmgmt->u.assoc_resp.variable, pielen);
++	if (p && p[1])
++		HT_caps_handler23a(padapter, p);
++
++	p = cfg80211_find_ie(WLAN_EID_HT_OPERATION,
++			     pmgmt->u.assoc_resp.variable, pielen);
++	if (p && p[1])
++		HT_info_handler23a(padapter, p);
++
++	p = cfg80211_find_ie(WLAN_EID_ERP_INFO,
++			     pmgmt->u.assoc_resp.variable, pielen);
++	if (p && p[1])
++		ERP_IE_handler23a(padapter, p);
++
++	pie = pframe + offsetof(struct ieee80211_mgmt, u.assoc_resp.variable);
++	while (true) {
++		p = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
++					    WLAN_OUI_TYPE_MICROSOFT_WMM,
++					    pie, pframe + pkt_len - pie);
++		if (!p)
+ 			break;
+ 
+-		case WLAN_EID_HT_OPERATION:	/* HT info */
+-			HT_info_handler23a(padapter, p);
++		pie = p + p[1] + 2;
++		/* if this IE is too short, try the next */
++		if (p[1] <= 4)
++			continue;
++		/* if this IE is WMM params, we found what we wanted */
++		if (p[6] == 1)
+ 			break;
+-
+-		case WLAN_EID_ERP_INFO:
+-			ERP_IE_handler23a(padapter, p);
+-
+-		default:
+-			break;
+-		}
+-
+-		i += (p[1] + 2);
+ 	}
+ 
++	if (p && p[1])
++		WMM_param_handler23a(padapter, p);
++
+ 	pmlmeinfo->state &= ~WIFI_FW_ASSOC_STATE;
+ 	pmlmeinfo->state |= WIFI_FW_ASSOC_SUCCESS;
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0028-staging-rtl8723au-Remove-WMM_-defines.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0028-staging-rtl8723au-Remove-WMM_-defines.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,58 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:05 +0200
+Subject: [028/249] staging: rtl8723au: Remove WMM_ defines
+Origin: https://git.kernel.org/linus/c9324c88533fbb15ec59de8e0d4b9d0c9d100026
+
+Only one is used, and only describes the size of an array defined in a
+local function. Use sizeof() in the local function to deobfuscate it.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 7 ++++---
+ drivers/staging/rtl8723au/include/wifi.h  | 7 -------
+ 2 files changed, 4 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 76e1797..a3174c0 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -2197,7 +2197,7 @@ unsigned int rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
+ 	unsigned char *pframe;
+ 	const u8 *p;
+ 	struct ieee80211_ht_cap ht_capie;
+-	unsigned char WMM_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00};
++	u8 WMM_IE[7] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00};
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct ht_priv *phtpriv = &pmlmepriv->htpriv;
+ 
+@@ -2210,8 +2210,9 @@ unsigned int rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
+ 		if (pmlmepriv->qos_option == 0) {
+ 			out_len = *pout_len;
+ 			pframe = rtw_set_ie23a(out_ie + out_len,
+-					    WLAN_EID_VENDOR_SPECIFIC,
+-					    _WMM_IE_Length_, WMM_IE, pout_len);
++					       WLAN_EID_VENDOR_SPECIFIC,
++					       sizeof(WMM_IE), WMM_IE,
++					       pout_len);
+ 
+ 			pmlmepriv->qos_option = 1;
+ 		}
+diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h
+index 4ab28e5..07ea4c6 100644
+--- a/drivers/staging/rtl8723au/include/wifi.h
++++ b/drivers/staging/rtl8723au/include/wifi.h
+@@ -53,13 +53,6 @@
+ #define _TIMESTAMP_		8
+ 
+ /*-----------------------------------------------------------------------------
+-				Below is the definition for WMM
+-------------------------------------------------------------------------------*/
+-#define _WMM_IE_Length_				7  /*  for WMM STA */
+-#define _WMM_Para_Element_Length_		24
+-
+-
+-/*-----------------------------------------------------------------------------
+ 				Below is the definition for 802.11n
+ ------------------------------------------------------------------------------*/
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0029-staging-rtl8723au-Make-struct-ht_priv.ht_option-a-bo.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0029-staging-rtl8723au-Make-struct-ht_priv.ht_option-a-bo.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,58 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:06 +0200
+Subject: [029/249] staging: rtl8723au: Make struct ht_priv.ht_option a bool
+Origin: https://git.kernel.org/linus/6f765c20ca85b4d11d9f1e4b81d0d3251f5a4321
+
+Match the return type of rtw_restructure_ht_ie23a() accordingly
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c    | 4 ++--
+ drivers/staging/rtl8723au/include/rtw_ht.h   | 2 +-
+ drivers/staging/rtl8723au/include/rtw_mlme.h | 4 ++--
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index a3174c0..d48b986 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -2189,8 +2189,8 @@ void rtw_joinbss_reset23a(struct rtw_adapter *padapter)
+ }
+ 
+ /* the fucntion is >= passive_level */
+-unsigned int rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
+-				      u8 *out_ie, uint in_len, uint *pout_len)
++bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
++			      u8 *out_ie, uint in_len, uint *pout_len)
+ {
+ 	u32 out_len;
+ 	int max_rx_ampdu_factor;
+diff --git a/drivers/staging/rtl8723au/include/rtw_ht.h b/drivers/staging/rtl8723au/include/rtw_ht.h
+index 86ce86b..f086376 100644
+--- a/drivers/staging/rtl8723au/include/rtw_ht.h
++++ b/drivers/staging/rtl8723au/include/rtw_ht.h
+@@ -21,7 +21,7 @@
+ 
+ struct ht_priv
+ {
+-	u32	ht_option;
++	bool	ht_option;
+ 	u32	ampdu_enable;/* for enable Tx A-MPDU */
+ 	/* u8	baddbareq_issued[16]; */
+ 	u32	tx_amsdu_enable;/* for enable Tx A-MSDU */
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index 4d327ba..a11b5bd 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -356,8 +356,8 @@ __le16 *rtw_get_beacon_interval23a_from_ie(u8 *ie);
+ 
+ void rtw_joinbss_reset23a(struct rtw_adapter *padapter);
+ 
+-unsigned int rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
+-				   u8 *out_ie, uint in_len, uint *pout_len);
++bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
++			      u8 *out_ie, uint in_len, uint *pout_len);
+ void rtw_update_ht_cap23a(struct rtw_adapter *padapter,
+ 		       u8 *pie, uint ie_len);
+ void rtw_issue_addbareq_cmd23a(struct rtw_adapter *padapter,

Added: dists/sid/linux/debian/patches/features/all/r8723au/0030-staging-rtl8723au-Be-consistent-in-how-htpriv.ht_opt.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0030-staging-rtl8723au-Be-consistent-in-how-htpriv.ht_opt.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,112 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:07 +0200
+Subject: [030/249] staging: rtl8723au: Be consistent in how htpriv.ht_option
+ is checked
+Origin: https://git.kernel.org/linus/6a5f657db5cb7e0ced04d085154d7f96296488e6
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c        | 6 +++---
+ drivers/staging/rtl8723au/core/rtw_mlme.c      | 2 +-
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c  | 6 +++---
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c | 4 ++--
+ 4 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index d67a5f1..a52662e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -1391,7 +1391,7 @@ static int rtw_ht_operation_update(struct rtw_adapter *padapter)
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct ht_priv *phtpriv_ap = &pmlmepriv->htpriv;
+ 
+-	if (pmlmepriv->htpriv.ht_option == true)
++	if (pmlmepriv->htpriv.ht_option)
+ 		return 0;
+ 
+ 	/* if (!iface->conf->ieee80211n || iface->conf->ht_op_mode_fixed) */
+@@ -1627,7 +1627,7 @@ void bss_cap_update_on_sta_join23a(struct rtw_adapter *padapter, struct sta_info
+ 			psta->no_ht_set = 1;
+ 			pmlmepriv->num_sta_no_ht++;
+ 		}
+-		if (pmlmepriv->htpriv.ht_option == true) {
++		if (pmlmepriv->htpriv.ht_option) {
+ 			DBG_8723A("%s STA " MAC_FMT
+ 				   " - no HT, num of non-HT stations %d\n",
+ 				   __func__, MAC_ARG(psta->hwaddr),
+@@ -1865,7 +1865,7 @@ void sta_info_update23a(struct rtw_adapter *padapter, struct sta_info *psta)
+ 		psta->htpriv.ht_option = false;
+ 	}
+ 
+-	if (pmlmepriv->htpriv.ht_option == false)
++	if (!pmlmepriv->htpriv.ht_option)
+ 		psta->htpriv.ht_option = false;
+ 
+ 	update_sta_info23a_apmode23a(padapter, psta);
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index d48b986..31c414a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -2409,7 +2409,7 @@ void rtw_issue_addbareq_cmd23a(struct rtw_adapter *padapter,
+ 
+ 	phtpriv = &psta->htpriv;
+ 
+-	if (phtpriv->ht_option == true && phtpriv->ampdu_enable == true) {
++	if (phtpriv->ht_option && phtpriv->ampdu_enable == true) {
+ 		issued = (phtpriv->agg_enable_bitmap>>priority)&0x1;
+ 		issued |= (phtpriv->candidate_tid_bitmap>>priority)&0x1;
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index e32df75..ae8d38f 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -1666,7 +1666,7 @@ OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 	} else
+ 		pstat->flags &= ~WLAN_STA_HT;
+ 
+-	if (pmlmepriv->htpriv.ht_option == false && pstat->flags & WLAN_STA_HT){
++	if (!pmlmepriv->htpriv.ht_option && pstat->flags & WLAN_STA_HT){
+ 		status = WLAN_STATUS_UNSPECIFIED_FAILURE;
+ 		goto OnAssocReq23aFail;
+ 	}
+@@ -3479,7 +3479,7 @@ static void issue_assocreq(struct rtw_adapter *padapter)
+ 				       &pattrib->pktlen);
+ 
+ 	/* HT caps */
+-	if (padapter->mlmepriv.htpriv.ht_option == true) {
++	if (padapter->mlmepriv.htpriv.ht_option) {
+ 		p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, pie, pie_len);
+ 
+ 		if (p && !is_ap_in_tkip23a(padapter)) {
+@@ -5848,7 +5848,7 @@ static void addba_timer_hdl(unsigned long data)
+ 
+ 	phtpriv = &psta->htpriv;
+ 
+-	if (phtpriv->ht_option == true && phtpriv->ampdu_enable == true) {
++	if (phtpriv->ht_option && phtpriv->ampdu_enable == true) {
+ 		if (phtpriv->candidate_tid_bitmap)
+ 			phtpriv->candidate_tid_bitmap = 0x0;
+ 	}
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index b9ca088..3195b44 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -727,7 +727,7 @@ void HT_caps_handler23a(struct rtw_adapter *padapter, const u8 *p)
+ 	if (!p)
+ 		return;
+ 
+-	if (phtpriv->ht_option == false)
++	if (!phtpriv->ht_option)
+ 		return;
+ 
+ 	pmlmeinfo->HT_caps_enable = 1;
+@@ -784,7 +784,7 @@ void HT_info_handler23a(struct rtw_adapter *padapter, const u8 *p)
+ 	if (!p)
+ 		return;
+ 
+-	if (phtpriv->ht_option == false)
++	if (!phtpriv->ht_option)
+ 		return;
+ 
+ 	if (p[1] != sizeof(struct ieee80211_ht_operation))

Added: dists/sid/linux/debian/patches/features/all/r8723au/0031-staging-rtl8723au-Make-struct-htpriv.ampdu_enable-a-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0031-staging-rtl8723au-Make-struct-htpriv.ampdu_enable-a-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,64 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:08 +0200
+Subject: [031/249] staging: rtl8723au: Make struct htpriv.ampdu_enable a bool
+Origin: https://git.kernel.org/linus/47e5d2f26d86d8bf1b5ecff2994f939e4283ffeb
+
+Be consistent in parsing it's value
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c     | 5 ++---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 +-
+ drivers/staging/rtl8723au/include/rtw_ht.h    | 2 +-
+ 3 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 31c414a..4a33e7d 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -2291,8 +2291,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 	ie_len -= bcn_fixed_size;
+ 
+ 	/* maybe needs check if ap supports rx ampdu. */
+-	if (phtpriv->ampdu_enable == false &&
+-	    pregistrypriv->ampdu_enable == 1) {
++	if (!phtpriv->ampdu_enable && pregistrypriv->ampdu_enable == 1) {
+ 		if (pregistrypriv->wifi_spec == 1)
+ 			phtpriv->ampdu_enable = false;
+ 		else
+@@ -2409,7 +2408,7 @@ void rtw_issue_addbareq_cmd23a(struct rtw_adapter *padapter,
+ 
+ 	phtpriv = &psta->htpriv;
+ 
+-	if (phtpriv->ht_option && phtpriv->ampdu_enable == true) {
++	if (phtpriv->ht_option && phtpriv->ampdu_enable) {
+ 		issued = (phtpriv->agg_enable_bitmap>>priority)&0x1;
+ 		issued |= (phtpriv->candidate_tid_bitmap>>priority)&0x1;
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index ae8d38f..9b8566c 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -5848,7 +5848,7 @@ static void addba_timer_hdl(unsigned long data)
+ 
+ 	phtpriv = &psta->htpriv;
+ 
+-	if (phtpriv->ht_option && phtpriv->ampdu_enable == true) {
++	if (phtpriv->ht_option && phtpriv->ampdu_enable) {
+ 		if (phtpriv->candidate_tid_bitmap)
+ 			phtpriv->candidate_tid_bitmap = 0x0;
+ 	}
+diff --git a/drivers/staging/rtl8723au/include/rtw_ht.h b/drivers/staging/rtl8723au/include/rtw_ht.h
+index f086376..cfc947d 100644
+--- a/drivers/staging/rtl8723au/include/rtw_ht.h
++++ b/drivers/staging/rtl8723au/include/rtw_ht.h
+@@ -22,7 +22,7 @@
+ struct ht_priv
+ {
+ 	bool	ht_option;
+-	u32	ampdu_enable;/* for enable Tx A-MPDU */
++	bool	ampdu_enable;/* for enable Tx A-MPDU */
+ 	/* u8	baddbareq_issued[16]; */
+ 	u32	tx_amsdu_enable;/* for enable Tx A-MSDU */
+ 	u32	tx_amdsu_maxlen; /*  1: 8k, 0:4k ; default:8k, for tx */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0032-staging-rtl8723au-issue_auth-Convert-to-using-struct.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0032-staging-rtl8723au-issue_auth-Convert-to-using-struct.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,191 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:09 +0200
+Subject: [032/249] staging: rtl8723au: issue_auth(): Convert to using struct
+ ieee80211_mgmt
+Origin: https://git.kernel.org/linus/88e06f020083d7d276fda6df331f96469f1517c8
+
+This reduces the dependency of rtw_set_fixed_ie23a() which is
+scheduled to go away.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 101 +++++++++++---------------
+ 1 file changed, 44 insertions(+), 57 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 9b8566c..616bb7c 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -3036,9 +3036,10 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta,
+ 	struct xmit_frame *pmgntframe;
+ 	struct pkt_attrib *pattrib;
+ 	unsigned char *pframe;
+-	struct ieee80211_hdr *pwlanhdr;
++	struct ieee80211_mgmt *mgmt;
+ 	unsigned int val32;
+ 	unsigned short val16;
++	u16 auth_algo;
+ 	int use_shared_key = 0;
+ 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+@@ -3055,23 +3056,20 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta,
+ 	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
+ 
+ 	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
+-	pwlanhdr = (struct ieee80211_hdr *)pframe;
++	mgmt = (struct ieee80211_mgmt *)pframe;
+ 
+-	pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+-					      IEEE80211_STYPE_AUTH);
+-	pwlanhdr->seq_ctrl =
+-		cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
++	mgmt->frame_control =
++		cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH);
++	mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
+ 	pmlmeext->mgnt_seq++;
+ 
+-	pframe += sizeof(struct ieee80211_hdr_3addr);
+-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
++	pattrib->pktlen = offsetof(struct ieee80211_mgmt, u.auth.variable);
+ 
+ 	if (psta) { /*  for AP mode */
+ #ifdef CONFIG_8723AU_AP_MODE
+-
+-		ether_addr_copy(pwlanhdr->addr1, psta->hwaddr);
+-		ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
+-		ether_addr_copy(pwlanhdr->addr3, myid(&padapter->eeprompriv));
++		ether_addr_copy(mgmt->da, psta->hwaddr);
++		ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv));
++		ether_addr_copy(mgmt->bssid, myid(&padapter->eeprompriv));
+ 
+ 		/*  setting auth algo number */
+ 		val16 = (u16)psta->authalg;
+@@ -3079,29 +3077,19 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta,
+ 		if (status != WLAN_STATUS_SUCCESS)
+ 			val16 = 0;
+ 
+-		if (val16) {
+-			val16 = cpu_to_le16(val16);
++		if (val16)
+ 			use_shared_key = 1;
+-		}
+ 
+-		pframe = rtw_set_fixed_ie23a(pframe, _AUTH_ALGM_NUM_,
+-					     (unsigned char *)&val16,
+-					     &pattrib->pktlen);
++		mgmt->u.auth.auth_alg = cpu_to_le16(val16);
+ 
+ 		/*  setting auth seq number */
+-		val16 = (u16)psta->auth_seq;
+-		val16 = cpu_to_le16(val16);
+-		pframe = rtw_set_fixed_ie23a(pframe, _AUTH_SEQ_NUM_,
+-					     (unsigned char *)&val16,
+-					     &pattrib->pktlen);
++		mgmt->u.auth.auth_transaction =
++			cpu_to_le16((u16)psta->auth_seq);
+ 
+ 		/*  setting status code... */
+-		val16 = status;
+-		val16 = cpu_to_le16(val16);
+-		pframe = rtw_set_fixed_ie23a(pframe, _STATUS_CODE_,
+-					     (unsigned char *)&val16,
+-					     &pattrib->pktlen);
++		mgmt->u.auth.status_code = cpu_to_le16(status);
+ 
++		pframe = mgmt->u.auth.variable;
+ 		/*  added challenging text... */
+ 		if ((psta->auth_seq == 2) &&
+ 		    (psta->state & WIFI_FW_AUTH_STATE) && (use_shared_key == 1))
+@@ -3109,19 +3097,21 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta,
+ 					       psta->chg_txt, &pattrib->pktlen);
+ #endif
+ 	} else {
+-		ether_addr_copy(pwlanhdr->addr1,
+-				get_my_bssid23a(&pmlmeinfo->network));
+-		ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
+-		ether_addr_copy(pwlanhdr->addr3,
++		struct ieee80211_mgmt *iv_mgmt;
++
++		ether_addr_copy(mgmt->da, get_my_bssid23a(&pmlmeinfo->network));
++		ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv));
++		ether_addr_copy(mgmt->bssid,
+ 				get_my_bssid23a(&pmlmeinfo->network));
+ 
+ 		/*  setting auth algo number */
+ 		/*  0:OPEN System, 1:Shared key */
+-		val16 = (pmlmeinfo->auth_algo == dot11AuthAlgrthm_Shared)? 1: 0;
+-		if (val16) {
+-			val16 = cpu_to_le16(val16);
++		if (pmlmeinfo->auth_algo == dot11AuthAlgrthm_Shared) {
+ 			use_shared_key = 1;
+-		}
++			auth_algo = WLAN_AUTH_SHARED_KEY;
++		} else
++			auth_algo = WLAN_AUTH_OPEN;
++
+ 		/* DBG_8723A("%s auth_algo = %s auth_seq =%d\n", __func__,
+ 		   (pmlmeinfo->auth_algo == 0)?"OPEN":"SHARED",
+ 		   pmlmeinfo->auth_seq); */
+@@ -3130,35 +3120,32 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta,
+ 		if ((pmlmeinfo->auth_seq == 3) &&
+ 		    (pmlmeinfo->state & WIFI_FW_AUTH_STATE) &&
+ 		    (use_shared_key == 1)) {
++			u32 *piv = (u32 *)&mgmt->u.auth;
++
++			iv_mgmt = (struct ieee80211_mgmt *)(pframe + 4);
+ 			/* DBG_8723A("==> iv(%d), key_index(%d)\n",
+ 			   pmlmeinfo->iv, pmlmeinfo->key_index); */
+-			val32 = ((pmlmeinfo->iv++) |
+-				 (pmlmeinfo->key_index << 30));
+-			val32 = cpu_to_le32(val32);
+-			pframe = rtw_set_fixed_ie23a(pframe, 4,
+-						     (unsigned char *)&val32,
+-						     &pattrib->pktlen);
++			val32 = (pmlmeinfo->iv & 0x3fffffff) |
++				(pmlmeinfo->key_index << 30);
++			pmlmeinfo->iv++;
++			put_unaligned_le32(val32, piv);
++
++			pattrib->pktlen += 4;
+ 
+ 			pattrib->iv_len = IEEE80211_WEP_IV_LEN;
+-		}
++		} else
++			iv_mgmt = mgmt;
+ 
+-		pframe = rtw_set_fixed_ie23a(pframe, _AUTH_ALGM_NUM_,
+-					     (unsigned char *)&val16,
+-					     &pattrib->pktlen);
++		iv_mgmt->u.auth.auth_alg = cpu_to_le16(auth_algo);
+ 
+ 		/*  setting auth seq number */
+-		val16 = pmlmeinfo->auth_seq;
+-		val16 = cpu_to_le16(val16);
+-		pframe = rtw_set_fixed_ie23a(pframe, _AUTH_SEQ_NUM_,
+-					     (unsigned char *)&val16,
+-					     &pattrib->pktlen);
++		iv_mgmt->u.auth.auth_transaction =
++			cpu_to_le16(pmlmeinfo->auth_seq);
+ 
+ 		/*  setting status code... */
+-		val16 = status;
+-		val16 = cpu_to_le16(val16);
+-		pframe = rtw_set_fixed_ie23a(pframe, _STATUS_CODE_,
+-					     (unsigned char *)&val16,
+-					     &pattrib->pktlen);
++		iv_mgmt->u.auth.status_code = cpu_to_le16(status);
++
++		pframe = iv_mgmt->u.auth.variable;
+ 
+ 		/*  then checking to see if sending challenging text... */
+ 		if ((pmlmeinfo->auth_seq == 3) &&
+@@ -3168,7 +3155,7 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta,
+ 					       pmlmeinfo->chg_txt,
+ 					       &pattrib->pktlen);
+ 
+-			pwlanhdr->frame_control |=
++			mgmt->frame_control |=
+ 				cpu_to_le16(IEEE80211_FCTL_PROTECTED);
+ 
+ 			pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0033-staging-rtl8723au-issue_assocrsp-Use-struct-ieee8021.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0033-staging-rtl8723au-issue_assocrsp-Use-struct-ieee8021.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,75 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:10 +0200
+Subject: [033/249] staging: rtl8723au: issue_assocrsp(): Use struct
+ ieee80211_mgmt instead of rtw_set_fixed_ie23a()
+Origin: https://git.kernel.org/linus/c144c3bbd50b0a900d7f952333e5cf76377d0109
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 33 +++++++++++----------------
+ 1 file changed, 13 insertions(+), 20 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 616bb7c..e5df86a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -3182,7 +3182,7 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status,
+ 			   struct sta_info *pstat, u16 pkt_type)
+ {
+ 	struct xmit_frame *pmgntframe;
+-	struct ieee80211_hdr *pwlanhdr;
++	struct ieee80211_mgmt *mgmt;
+ 	struct pkt_attrib *pattrib;
+ 	unsigned char *pframe;
+ 	unsigned short val;
+@@ -3207,37 +3207,30 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status,
+ 	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
+ 
+ 	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
+-	pwlanhdr = (struct ieee80211_hdr *)pframe;
++	mgmt = (struct ieee80211_mgmt *)pframe;
+ 
+-	pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | pkt_type);
++	mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | pkt_type);
+ 
+-	ether_addr_copy(pwlanhdr->addr1, pstat->hwaddr);
+-	ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
+-	ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network));
++	ether_addr_copy(mgmt->da, pstat->hwaddr);
++	ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv));
++	ether_addr_copy(mgmt->bssid, get_my_bssid23a(&pmlmeinfo->network));
+ 
+-	pwlanhdr->seq_ctrl =
+-		cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
++	mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
+ 
+ 	pmlmeext->mgnt_seq++;
+ 
+ 	pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr);
+-	pattrib->pktlen += pattrib->hdrlen;
+-	pframe += pattrib->hdrlen;
++	pattrib->pktlen =
++		offsetof(struct ieee80211_mgmt, u.assoc_resp.variable);
+ 
+ 	/* capability */
+ 	val = *(unsigned short *)rtw_get_capability23a_from_ie(ie);
+ 
+-	pframe = rtw_set_fixed_ie23a(pframe, _CAPABILITY_,
+-				     (unsigned char *)&val, &pattrib->pktlen);
++	mgmt->u.assoc_resp.capab_info = val;
++	mgmt->u.assoc_resp.status_code = cpu_to_le16(status);
++	mgmt->u.assoc_resp.aid = cpu_to_le16(pstat->aid | BIT(14) | BIT(15));
+ 
+-	status = cpu_to_le16(status);
+-	pframe = rtw_set_fixed_ie23a(pframe, _STATUS_CODE_,
+-				     (unsigned char *)&status,
+-				     &pattrib->pktlen);
+-
+-	val = cpu_to_le16(pstat->aid | BIT(14) | BIT(15));
+-	pframe = rtw_set_fixed_ie23a(pframe, _ASOC_ID_, (unsigned char *)&val,
+-				     &pattrib->pktlen);
++	pframe = mgmt->u.assoc_resp.variable;
+ 
+ 	if (pstat->bssratelen <= 8) {
+ 		pframe = rtw_set_ie23a(pframe, WLAN_EID_SUPP_RATES,

Added: dists/sid/linux/debian/patches/features/all/r8723au/0034-staging-rtl8723au-_issue_deauth-Use-struct-ieee80211.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0034-staging-rtl8723au-_issue_deauth-Use-struct-ieee80211.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,63 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:13 +0200
+Subject: [034/249] staging: rtl8723au: _issue_deauth(): Use struct
+ ieee80211_mgmt to build frame
+Origin: https://git.kernel.org/linus/f89547b651d842035c982f43d4303c0e7b890191
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 27 ++++++++++-----------------
+ 1 file changed, 10 insertions(+), 17 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index e5df86a..d109256 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -3840,8 +3840,7 @@ static int _issue_deauth(struct rtw_adapter *padapter, unsigned char *da,
+ {
+ 	struct xmit_frame *pmgntframe;
+ 	struct pkt_attrib *pattrib;
+-	unsigned char *pframe;
+-	struct ieee80211_hdr *pwlanhdr;
++	struct ieee80211_mgmt *mgmt;
+ 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+@@ -3860,27 +3859,21 @@ static int _issue_deauth(struct rtw_adapter *padapter, unsigned char *da,
+ 
+ 	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
+ 
+-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
+-	pwlanhdr = (struct ieee80211_hdr *)pframe;
++	mgmt = (struct ieee80211_mgmt *)(pmgntframe->buf_addr + TXDESC_OFFSET);
+ 
+-	pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+-					      IEEE80211_STYPE_DEAUTH);
++	mgmt->frame_control =
++		cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_DEAUTH);
+ 
+-	ether_addr_copy(pwlanhdr->addr1, da);
+-	ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
+-	ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network));
++	ether_addr_copy(mgmt->da, da);
++	ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv));
++	ether_addr_copy(mgmt->bssid, get_my_bssid23a(&pmlmeinfo->network));
+ 
+-	pwlanhdr->seq_ctrl =
+-		cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
++	mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
+ 	pmlmeext->mgnt_seq++;
+ 
+-	pframe += sizeof(struct ieee80211_hdr_3addr);
+-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
++	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr) + 2;
+ 
+-	reason = cpu_to_le16(reason);
+-	pframe = rtw_set_fixed_ie23a(pframe, WLAN_REASON_PREV_AUTH_NOT_VALID,
+-				     (unsigned char *)&reason,
+-				     &pattrib->pktlen);
++	mgmt->u.deauth.reason_code = cpu_to_le16(reason);
+ 
+ 	pattrib->last_txcmdsz = pattrib->pktlen;
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0035-staging-rtl8723au-issue_action_spct_ch_switch23a-Use.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0035-staging-rtl8723au-issue_action_spct_ch_switch23a-Use.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,70 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:14 +0200
+Subject: [035/249] staging: rtl8723au: issue_action_spct_ch_switch23a(): Use
+ struct ieee80211_mgmt
+Origin: https://git.kernel.org/linus/7ed61b5b305d107ccb627d7c285a240574b86864
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 32 +++++++++++----------------
+ 1 file changed, 13 insertions(+), 19 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index d109256..b397029 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -3946,10 +3946,9 @@ void issue_action_spct_ch_switch23a(struct rtw_adapter *padapter,
+ 	struct xmit_frame *pmgntframe;
+ 	struct pkt_attrib *pattrib;
+ 	unsigned char *pframe;
+-	struct ieee80211_hdr *pwlanhdr;
++	struct ieee80211_mgmt *mgmt;
+ 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+-	u8 category, action;
+ 
+ 	DBG_8723A("%s(%s): ra ="MAC_FMT", ch:%u, offset:%u\n", __func__,
+ 		  padapter->pnetdev->name, MAC_ARG(ra), new_ch, ch_offset);
+@@ -3964,29 +3963,24 @@ void issue_action_spct_ch_switch23a(struct rtw_adapter *padapter,
+ 
+ 	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
+ 
+-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
+-	pwlanhdr = (struct ieee80211_hdr *)pframe;
++	mgmt = (struct ieee80211_mgmt *)(pmgntframe->buf_addr + TXDESC_OFFSET);
+ 
+-	pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+-					      IEEE80211_STYPE_ACTION);
++	mgmt->frame_control =
++		cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION);
+ 
+-	ether_addr_copy(pwlanhdr->addr1, ra); /* RA */
+-	ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); /* TA */
+-	ether_addr_copy(pwlanhdr->addr3, ra); /* DA = RA */
++	ether_addr_copy(mgmt->da, ra); /* RA */
++	ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv)); /* TA */
++	ether_addr_copy(mgmt->bssid, ra); /* DA = RA */
+ 
+-	pwlanhdr->seq_ctrl =
+-		cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
++	mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
+ 	pmlmeext->mgnt_seq++;
+ 
+-	pframe += sizeof(struct ieee80211_hdr_3addr);
+-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
+-
+-	/* category, action */
+-	category = WLAN_CATEGORY_SPECTRUM_MGMT;
+-	action = WLAN_ACTION_SPCT_CHL_SWITCH;
++	mgmt->u.action.category = WLAN_CATEGORY_SPECTRUM_MGMT;
++	mgmt->u.action.u.chan_switch.action_code = WLAN_ACTION_SPCT_CHL_SWITCH;
+ 
+-	pframe = rtw_set_fixed_ie23a(pframe, 1, &category, &pattrib->pktlen);
+-	pframe = rtw_set_fixed_ie23a(pframe, 1, &action, &pattrib->pktlen);
++	pframe = mgmt->u.action.u.chan_switch.variable;
++	pattrib->pktlen = offsetof(struct ieee80211_mgmt,
++				   u.action.u.chan_switch.variable);
+ 
+ 	pframe = rtw_set_ie23a_ch_switch (pframe, &pattrib->pktlen, 0,
+ 					  new_ch, 0);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0036-staging-rtl8723au-issue_action_BSSCoexistPacket-Use-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0036-staging-rtl8723au-issue_action_BSSCoexistPacket-Use-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,88 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:15 +0200
+Subject: [036/249] staging: rtl8723au: issue_action_BSSCoexistPacket(): Use
+ struct ieee80211_mgmt
+Origin: https://git.kernel.org/linus/85d5120d5234f5655662b4eda697c0b1af72bca4
+
+This gets rid of the rtw_set_fixed_ie23a() usage here. Note that this
+abuses ieee80211_mgmt.u.action.u.chan_switch for now, since the
+correct defines are currently missing, and this one matches.
+
+Need to fix up the definitions in ieee80211.h and afterwards fix it up
+here.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 35 ++++++++++++++-------------
+ 1 file changed, 18 insertions(+), 17 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index b397029..eedac9a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4177,11 +4177,10 @@ out:
+ static void issue_action_BSSCoexistPacket(struct rtw_adapter *padapter)
+ {
+ 	struct list_head *plist, *phead, *ptmp;
+-	unsigned char category, action;
+ 	struct xmit_frame *pmgntframe;
+ 	struct pkt_attrib *pattrib;
+ 	u8 *pframe;
+-	struct ieee80211_hdr *pwlanhdr;
++	struct ieee80211_mgmt *mgmt;
+ 	struct wlan_network *pnetwork;
+ 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+@@ -4201,9 +4200,6 @@ static void issue_action_BSSCoexistPacket(struct rtw_adapter *padapter)
+ 
+ 	DBG_8723A("%s\n", __func__);
+ 
+-	category = WLAN_CATEGORY_PUBLIC;
+-	action = ACT_PUBLIC_BSSCOEXIST;
+-
+ 	pmgntframe = alloc_mgtxmitframe23a(pxmitpriv);
+ 	if (!pmgntframe)
+ 		return;
+@@ -4215,24 +4211,29 @@ static void issue_action_BSSCoexistPacket(struct rtw_adapter *padapter)
+ 	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
+ 
+ 	pframe = (u8 *)pmgntframe->buf_addr + TXDESC_OFFSET;
+-	pwlanhdr = (struct ieee80211_hdr *)pframe;
++	mgmt = (struct ieee80211_mgmt *)pframe;
+ 
+-	pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+-					      IEEE80211_STYPE_ACTION);
++	mgmt->frame_control =
++		cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION);
+ 
+-	ether_addr_copy(pwlanhdr->addr1, get_my_bssid23a(&pmlmeinfo->network));
+-	ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
+-	ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network));
++	ether_addr_copy(mgmt->da, get_my_bssid23a(&pmlmeinfo->network));
++	ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv));
++	ether_addr_copy(mgmt->bssid, get_my_bssid23a(&pmlmeinfo->network));
+ 
+-	pwlanhdr->seq_ctrl =
+-		cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
++	mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
+ 	pmlmeext->mgnt_seq++;
+ 
+-	pframe += sizeof(struct ieee80211_hdr_3addr);
+-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
++	mgmt->u.action.category = WLAN_CATEGORY_PUBLIC;
++	/*
++	 * This is cheating, but as there is currently no coexist_action
++	 * defined in struct struct ieee80211_mgmt, abuse chan_switch
++	 * for now, since it matches.
++	 */
++	mgmt->u.action.u.chan_switch.action_code = ACT_PUBLIC_BSSCOEXIST;
+ 
+-	pframe = rtw_set_fixed_ie23a(pframe, 1, &category, &pattrib->pktlen);
+-	pframe = rtw_set_fixed_ie23a(pframe, 1, &action, &pattrib->pktlen);
++	pframe = mgmt->u.action.u.chan_switch.variable;
++	pattrib->pktlen = offsetof(struct ieee80211_mgmt,
++				   u.action.u.chan_switch.variable);
+ 
+ 	if (pmlmepriv->num_FortyMHzIntolerant > 0) {
+ 		u8 iedata = BIT(2);/* 20 MHz BSS Width Request */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0037-staging-rtl8723au-Do-not-xmit-BSS-Coexistence-manage.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0037-staging-rtl8723au-Do-not-xmit-BSS-Coexistence-manage.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,174 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:16 +0200
+Subject: [037/249] staging: rtl8723au: Do not xmit BSS Coexistence management
+ action frames
+Origin: https://git.kernel.org/linus/372713a942c7eee27fe67a661902c6e30c014930
+
+The driver should not be issuing BSS Coexistence management action
+frames when scanning. This isn't required by the spec, and if needed,
+these should come from wpa_s instead.
+
+Recommended by Johannes Berg.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 138 --------------------------
+ 1 file changed, 138 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index eedac9a..051ea49 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4174,140 +4174,6 @@ out:
+ 	dump_mgntframe23a(padapter, pmgntframe);
+ }
+ 
+-static void issue_action_BSSCoexistPacket(struct rtw_adapter *padapter)
+-{
+-	struct list_head *plist, *phead, *ptmp;
+-	struct xmit_frame *pmgntframe;
+-	struct pkt_attrib *pattrib;
+-	u8 *pframe;
+-	struct ieee80211_mgmt *mgmt;
+-	struct wlan_network *pnetwork;
+-	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
+-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+-	struct rtw_queue *queue	= &pmlmepriv->scanned_queue;
+-	u8 InfoContent[16] = {0};
+-	u8 ICS[8][15];
+-	int i;
+-
+-	if (pmlmepriv->num_FortyMHzIntolerant == 0 ||
+-	    pmlmepriv->num_sta_no_ht == 0)
+-		return;
+-
+-	if (pmlmeinfo->bwmode_updated)
+-		return;
+-
+-	DBG_8723A("%s\n", __func__);
+-
+-	pmgntframe = alloc_mgtxmitframe23a(pxmitpriv);
+-	if (!pmgntframe)
+-		return;
+-
+-	/* update attribute */
+-	pattrib = &pmgntframe->attrib;
+-	update_mgntframe_attrib23a(padapter, pattrib);
+-
+-	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
+-
+-	pframe = (u8 *)pmgntframe->buf_addr + TXDESC_OFFSET;
+-	mgmt = (struct ieee80211_mgmt *)pframe;
+-
+-	mgmt->frame_control =
+-		cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION);
+-
+-	ether_addr_copy(mgmt->da, get_my_bssid23a(&pmlmeinfo->network));
+-	ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv));
+-	ether_addr_copy(mgmt->bssid, get_my_bssid23a(&pmlmeinfo->network));
+-
+-	mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
+-	pmlmeext->mgnt_seq++;
+-
+-	mgmt->u.action.category = WLAN_CATEGORY_PUBLIC;
+-	/*
+-	 * This is cheating, but as there is currently no coexist_action
+-	 * defined in struct struct ieee80211_mgmt, abuse chan_switch
+-	 * for now, since it matches.
+-	 */
+-	mgmt->u.action.u.chan_switch.action_code = ACT_PUBLIC_BSSCOEXIST;
+-
+-	pframe = mgmt->u.action.u.chan_switch.variable;
+-	pattrib->pktlen = offsetof(struct ieee80211_mgmt,
+-				   u.action.u.chan_switch.variable);
+-
+-	if (pmlmepriv->num_FortyMHzIntolerant > 0) {
+-		u8 iedata = BIT(2);/* 20 MHz BSS Width Request */
+-
+-		pframe = rtw_set_ie23a(pframe, WLAN_EID_BSS_COEX_2040, 1,
+-				       &iedata, &pattrib->pktlen);
+-	}
+-
+-	if (pmlmepriv->num_sta_no_ht <= 0)
+-		goto out;
+-
+-	memset(ICS, 0, sizeof(ICS));
+-
+-	spin_lock_bh(&pmlmepriv->scanned_queue.lock);
+-
+-	phead = get_list_head(queue);
+-	plist = phead->next;
+-
+-	list_for_each_safe(plist, ptmp, phead) {
+-		const u8 *p;
+-		struct wlan_bssid_ex *pbss_network;
+-
+-		pnetwork = container_of(plist, struct wlan_network, list);
+-
+-		pbss_network = &pnetwork->network;
+-
+-		p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY,
+-				     pbss_network->IEs + _FIXED_IE_LENGTH_,
+-				     pbss_network->IELength -_FIXED_IE_LENGTH_);
+-		if (!p || !p[1]) { /* non-HT */
+-			if (pbss_network->DSConfig <= 0 ||
+-			    pbss_network->DSConfig > 14)
+-				continue;
+-
+-			ICS[0][pbss_network->DSConfig] = 1;
+-
+-			if (ICS[0][0] == 0)
+-				ICS[0][0] = 1;
+-		}
+-
+-	}
+-
+-	spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
+-
+-	for (i = 0; i < 8;i++) {
+-		if (ICS[i][0] == 1) {
+-			int j, k = 0;
+-
+-			InfoContent[k] = i;
+-			/* SET_BSS_INTOLERANT_ELE_REG_CLASS(InfoContent, i); */
+-			k++;
+-
+-			for (j = 1; j <= 14; j++) {
+-				if (ICS[i][j] == 1) {
+-					if (k < 16) {
+-						/* channel number */
+-						InfoContent[k] = j;
+-						k++;
+-					}
+-				}
+-			}
+-
+-			pframe = rtw_set_ie23a(pframe,
+-					       EID_BSSIntolerantChlReport, k,
+-					       InfoContent, &pattrib->pktlen);
+-		}
+-	}
+-
+-out:
+-	pattrib->last_txcmdsz = pattrib->pktlen;
+-
+-	dump_mgntframe23a(padapter, pmgntframe);
+-}
+-
+ int send_delba23a(struct rtw_adapter *padapter, u8 initiator, u8 *addr)
+ {
+ 	struct sta_priv *pstapriv = &padapter->stapriv;
+@@ -4485,10 +4351,6 @@ static void rtw_site_survey(struct rtw_adapter *padapter)
+ 
+ 		pmlmeext->chan_scan_time = SURVEY_TO;
+ 		pmlmeext->sitesurvey_res.state = SCAN_DISABLE;
+-
+-		issue_action_BSSCoexistPacket(padapter);
+-		issue_action_BSSCoexistPacket(padapter);
+-		issue_action_BSSCoexistPacket(padapter);
+ 	}
+ 
+ 	return;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0038-staging-rtl8723au-Let-cfg80211-handle-public-action-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0038-staging-rtl8723au-Let-cfg80211-handle-public-action-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,357 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:17 +0200
+Subject: [038/249] staging: rtl8723au: Let cfg80211 handle public action
+ management frames
+Origin: https://git.kernel.org/linus/2e74d336edb945b4a1f851e821001093e4094729
+
+The driver shouldn't be dealing with public action management frames.
+Let these go directly to the cfg80211 layer which can defer them to
+userland if needed.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c     |  26 ----
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c      | 132 +++------------------
+ drivers/staging/rtl8723au/include/ieee80211.h      |  23 +---
+ drivers/staging/rtl8723au/include/ioctl_cfg80211.h |   3 -
+ drivers/staging/rtl8723au/include/wifi.h           |   1 -
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c  |  43 +------
+ 6 files changed, 18 insertions(+), 210 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index fa3ca9e..9f6dd77 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -894,29 +894,3 @@ u16 rtw_mcs_rate23a(u8 rf_type, u8 bw_40MHz, u8 short_GI_20, u8 short_GI_40,
+ 	}
+ 	return max_rate;
+ }
+-
+-static const char *_action_public_str23a[] = {
+-	"ACT_PUB_BSSCOEXIST",
+-	"ACT_PUB_DSE_ENABLE",
+-	"ACT_PUB_DSE_DEENABLE",
+-	"ACT_PUB_DSE_REG_LOCATION",
+-	"ACT_PUB_EXT_CHL_SWITCH",
+-	"ACT_PUB_DSE_MSR_REQ",
+-	"ACT_PUB_DSE_MSR_RPRT",
+-	"ACT_PUB_MP",
+-	"ACT_PUB_DSE_PWR_CONSTRAINT",
+-	"ACT_PUB_VENDOR",
+-	"ACT_PUB_GAS_INITIAL_REQ",
+-	"ACT_PUB_GAS_INITIAL_RSP",
+-	"ACT_PUB_GAS_COMEBACK_REQ",
+-	"ACT_PUB_GAS_COMEBACK_RSP",
+-	"ACT_PUB_TDLS_DISCOVERY_RSP",
+-	"ACT_PUB_LOCATION_TRACK",
+-	"ACT_PUB_RSVD",
+-};
+-
+-const char *action_public_str23a(u8 action)
+-{
+-	action = (action >= ACT_PUBLIC_MAX) ? ACT_PUBLIC_MAX : action;
+-	return _action_public_str23a[action];
+-}
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 051ea49..80a822c 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2135,136 +2135,32 @@ static int OnAction23a_back23a(struct rtw_adapter *padapter,
+ 	return _SUCCESS;
+ }
+ 
+-static int rtw_action_public_decache(struct recv_frame *recv_frame, s32 token)
+-{
+-	struct rtw_adapter *adapter = recv_frame->adapter;
+-	struct mlme_ext_priv *mlmeext = &adapter->mlmeextpriv;
+-	struct sk_buff *skb = recv_frame->pkt;
+-	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
+-	u16 seq_ctrl;
+-
+-	seq_ctrl = ((recv_frame->attrib.seq_num&0xffff) << 4) |
+-		(recv_frame->attrib.frag_num & 0xf);
+-
+-	if (ieee80211_has_retry(hdr->frame_control)) {
+-		if (token >= 0) {
+-			if ((seq_ctrl == mlmeext->action_public_rxseq) &&
+-			    (token == mlmeext->action_public_dialog_token)) {
+-				DBG_8723A("%s(%s): seq_ctrl = 0x%x, "
+-					  "rxseq = 0x%x, token:%d\n", __func__,
+-					  adapter->pnetdev->name, seq_ctrl,
+-					  mlmeext->action_public_rxseq, token);
+-				return _FAIL;
+-			}
+-		} else {
+-			if (seq_ctrl == mlmeext->action_public_rxseq) {
+-				DBG_8723A("%s(%s): seq_ctrl = 0x%x, "
+-					  "rxseq = 0x%x\n", __func__,
+-					  adapter->pnetdev->name, seq_ctrl,
+-					  mlmeext->action_public_rxseq);
+-				return _FAIL;
+-			}
+-		}
+-	}
+-
+-	mlmeext->action_public_rxseq = seq_ctrl;
+-
+-	if (token >= 0)
+-		mlmeext->action_public_dialog_token = token;
+-
+-	return _SUCCESS;
+-}
+-
+-static int on_action_public23a_p2p(struct recv_frame *precv_frame)
+-{
+-	struct sk_buff *skb = precv_frame->pkt;
+-	u8 *pframe = skb->data;
+-	u8 *frame_body;
+-	u8 dialogToken = 0;
+-
+-	frame_body = (unsigned char *)
+-		(pframe + sizeof(struct ieee80211_hdr_3addr));
+-
+-	dialogToken = frame_body[7];
+-
+-	if (rtw_action_public_decache(precv_frame, dialogToken) == _FAIL)
+-		return _FAIL;
+-
+-	return _SUCCESS;
+-}
+-
+-static int on_action_public23a_vendor(struct recv_frame *precv_frame)
+-{
+-	unsigned int ret = _FAIL;
+-	struct sk_buff *skb = precv_frame->pkt;
+-	u8 *pframe = skb->data;
+-	u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr);
+-
+-	if (!memcmp(frame_body + 2, P2P_OUI23A, 4)) {
+-		ret = on_action_public23a_p2p(precv_frame);
+-	}
+-
+-	return ret;
+-}
+-
+-static unsigned int
+-on_action_public23a_default(struct recv_frame *precv_frame, u8 action)
+-{
+-	unsigned int ret = _FAIL;
+-	struct sk_buff *skb = precv_frame->pkt;
+-	u8 *pframe = skb->data;
+-	uint frame_len = skb->len;
+-	u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr);
+-	u8 token;
+-	struct rtw_adapter *adapter = precv_frame->adapter;
+-	int cnt = 0;
+-	char msg[64];
+-
+-	token = frame_body[2];
+-
+-	if (rtw_action_public_decache(precv_frame, token) == _FAIL)
+-		goto exit;
+-
+-	cnt += sprintf((msg+cnt), "%s(token:%u)",
+-		       action_public_str23a(action), token);
+-	rtw_cfg80211_rx_action(adapter, pframe, frame_len, msg);
+-
+-	ret = _SUCCESS;
+-
+-exit:
+-	return ret;
+-}
+-
+ static int on_action_public23a(struct rtw_adapter *padapter,
+ 			       struct recv_frame *precv_frame)
+ {
+-	int ret = _FAIL;
+ 	struct sk_buff *skb = precv_frame->pkt;
+ 	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
+ 	u8 *pframe = skb->data;
+-	u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr);
+-	u8 category, action;
++	int freq, channel;
+ 
+ 	/* check RA matches or not */
+ 	if (!ether_addr_equal(myid(&padapter->eeprompriv), hdr->addr1))
+-		goto exit;
++		return _FAIL;
+ 
+-	category = frame_body[0];
+-	if (category != WLAN_CATEGORY_PUBLIC)
+-		goto exit;
++	channel = rtw_get_oper_ch23a(padapter);
+ 
+-	action = frame_body[1];
+-	switch (action) {
+-	case ACT_PUBLIC_VENDOR:
+-		ret = on_action_public23a_vendor(precv_frame);
+-		break;
+-	default:
+-		ret = on_action_public23a_default(precv_frame, action);
+-		break;
+-	}
++	if (channel <= RTW_CH_MAX_2G_CHANNEL)
++		freq = ieee80211_channel_to_frequency(channel,
++						      IEEE80211_BAND_2GHZ);
++	else
++		freq = ieee80211_channel_to_frequency(channel,
++						      IEEE80211_BAND_5GHZ);
+ 
+-exit:
+-	return ret;
++	if (cfg80211_rx_mgmt(padapter->rtw_wdev, freq, 0, pframe,
++			     skb->len, 0, GFP_ATOMIC))
++		return _SUCCESS;
++
++	return _FAIL;
+ }
+ 
+ static int
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index 0ef6e79..f6e982e 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -315,6 +315,7 @@ struct ieee80211_snap_hdr {
+ #define MAX_RATES_LENGTH	12
+ #define MAX_RATES_EX_LENGTH	16
+ #define MAX_CHANNEL_NUMBER	161
++#define RTW_CH_MAX_2G_CHANNEL	14	/* Max channel in 2G band */
+ 
+ #define MAX_WPA_IE_LEN		256
+ #define MAX_WPS_IE_LEN		256
+@@ -335,26 +336,6 @@ join_res:
+ 
+ #define MAXTID	16
+ 
+-enum _PUBLIC_ACTION{
+-	ACT_PUBLIC_BSSCOEXIST = 0, /*  20/40 BSS Coexistence */
+-	ACT_PUBLIC_DSE_ENABLE = 1,
+-	ACT_PUBLIC_DSE_DEENABLE = 2,
+-	ACT_PUBLIC_DSE_REG_LOCATION = 3,
+-	ACT_PUBLIC_EXT_CHL_SWITCH = 4,
+-	ACT_PUBLIC_DSE_MSR_REQ = 5,
+-	ACT_PUBLIC_DSE_MSR_RPRT = 6,
+-	ACT_PUBLIC_MP = 7, /*  Measurement Pilot */
+-	ACT_PUBLIC_DSE_PWR_CONSTRAINT = 8,
+-	ACT_PUBLIC_VENDOR = 9, /*  for WIFI_DIRECT */
+-	ACT_PUBLIC_GAS_INITIAL_REQ = 10,
+-	ACT_PUBLIC_GAS_INITIAL_RSP = 11,
+-	ACT_PUBLIC_GAS_COMEBACK_REQ = 12,
+-	ACT_PUBLIC_GAS_COMEBACK_RSP = 13,
+-	ACT_PUBLIC_TDLS_DISCOVERY_RSP = 14,
+-	ACT_PUBLIC_LOCATION_TRACK = 15,
+-	ACT_PUBLIC_MAX
+-};
+-
+ #define WME_OUI_TYPE 2
+ #define WME_OUI_SUBTYPE_INFORMATION_ELEMENT 0
+ #define WME_OUI_SUBTYPE_PARAMETER_ELEMENT 1
+@@ -446,6 +427,4 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork);
+ u16 rtw_mcs_rate23a(u8 rf_type, u8 bw_40MHz, u8 short_GI_20, u8 short_GI_40,
+ 		    struct ieee80211_mcs_info *mcs);
+ 
+-const char *action_public_str23a(u8 action);
+-
+ #endif /* IEEE80211_H */
+diff --git a/drivers/staging/rtl8723au/include/ioctl_cfg80211.h b/drivers/staging/rtl8723au/include/ioctl_cfg80211.h
+index 63e921f..3a4ead5 100644
+--- a/drivers/staging/rtl8723au/include/ioctl_cfg80211.h
++++ b/drivers/staging/rtl8723au/include/ioctl_cfg80211.h
+@@ -61,9 +61,6 @@ void rtw_cfg80211_indicate_sta_disassoc(struct rtw_adapter *padapter,
+ 					unsigned char *da, unsigned short reason);
+ #endif /* CONFIG_8723AU_AP_MODE */
+ 
+-void rtw_cfg80211_rx_action(struct rtw_adapter *adapter, u8 *frame,
+-			    uint frame_len, const char*msg);
+-
+ bool rtw_cfg80211_pwr_mgmt(struct rtw_adapter *adapter);
+ 
+ #endif /* __IOCTL_CFG80211_H__ */
+diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h
+index 07ea4c6..3f64546 100644
+--- a/drivers/staging/rtl8723au/include/wifi.h
++++ b/drivers/staging/rtl8723au/include/wifi.h
+@@ -32,7 +32,6 @@
+ #define _AUTH_IE_OFFSET_		6
+ #define _DEAUTH_IE_OFFSET_		0
+ #define _BEACON_IE_OFFSET_		12
+-#define _PUBLIC_ACTION_IE_OFFSET_	8
+ 
+ #define _FIXED_IE_LENGTH_		_BEACON_IE_OFFSET_
+ 
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index d2fa9b20..0d581c8 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -26,8 +26,6 @@
+ #define RTW_MAX_REMAIN_ON_CHANNEL_DURATION 65535	/* ms */
+ #define RTW_MAX_NUM_PMKIDS 4
+ 
+-#define RTW_CH_MAX_2G_CHANNEL               14	/* Max channel in 2G band */
+-
+ static const u32 rtw_cipher_suites[] = {
+ 	WLAN_CIPHER_SUITE_WEP40,
+ 	WLAN_CIPHER_SUITE_WEP104,
+@@ -2593,11 +2591,8 @@ static int rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb,
+ 			  MAC_ARG(mgmt->da), __func__, ndev->name);
+ 		category = mgmt->u.action.category;
+ 		action = mgmt->u.action.u.wme_action.action_code;
+-		if (mgmt->u.action.category == WLAN_CATEGORY_PUBLIC)
+-			DBG_8723A("RTW_Tx:%s\n", action_public_str23a(action));
+-		else
+-			DBG_8723A("RTW_Tx:category(%u), action(%u)\n", category,
+-				  action);
++		DBG_8723A("RTW_Tx:category(%u), action(%u)\n",
++			  category, action);
+ 
+ 		/* starting alloc mgmt frame to dump it */
+ 		pmgntframe = alloc_mgtxmitframe23a(pxmitpriv);
+@@ -3011,34 +3006,6 @@ static int cfg80211_rtw_change_bss(struct wiphy *wiphy, struct net_device *ndev,
+ }
+ #endif /* CONFIG_8723AU_AP_MODE */
+ 
+-void rtw_cfg80211_rx_action(struct rtw_adapter *adapter, u8 *frame,
+-			    uint frame_len, const char *msg)
+-{
+-	struct ieee80211_mgmt *hdr = (struct ieee80211_mgmt *)frame;
+-	s32 freq;
+-	int channel;
+-
+-	channel = rtw_get_oper_ch23a(adapter);
+-
+-	DBG_8723A("RTW_Rx:cur_ch =%d\n", channel);
+-	if (msg)
+-		DBG_8723A("RTW_Rx:%s\n", msg);
+-	else
+-		DBG_8723A("RTW_Rx:category(%u), action(%u)\n",
+-			  hdr->u.action.category,
+-			  hdr->u.action.u.wme_action.action_code);
+-
+-	if (channel <= RTW_CH_MAX_2G_CHANNEL)
+-		freq = ieee80211_channel_to_frequency(channel,
+-						      IEEE80211_BAND_2GHZ);
+-	else
+-		freq = ieee80211_channel_to_frequency(channel,
+-						      IEEE80211_BAND_5GHZ);
+-
+-	cfg80211_rx_mgmt(adapter->rtw_wdev, freq, 0, frame, frame_len,
+-			 0, GFP_ATOMIC);
+-}
+-
+ static int _cfg80211_rtw_mgmt_tx(struct rtw_adapter *padapter, u8 tx_ch,
+ 				 const u8 *buf, size_t len)
+ {
+@@ -3145,11 +3112,7 @@ static int cfg80211_rtw_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
+ 		  MAC_ARG(hdr->da));
+ 	category = hdr->u.action.category;
+ 	action = hdr->u.action.u.wme_action.action_code;
+-	if (category == WLAN_CATEGORY_PUBLIC)
+-		DBG_8723A("RTW_Tx:%s\n", action_public_str23a(action));
+-	else
+-		DBG_8723A("RTW_Tx:category(%u), action(%u)\n",
+-			  category, action);
++	DBG_8723A("RTW_Tx:category(%u), action(%u)\n", category, action);
+ 
+ 	do {
+ 		dump_cnt++;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0039-staging-rtl8723au-ioctl_cfg80211.c-Use-struct-ieee80.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0039-staging-rtl8723au-ioctl_cfg80211.c-Use-struct-ieee80.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,74 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:18 +0200
+Subject: [039/249] staging: rtl8723au: ioctl_cfg80211.c: Use struct
+ ieee80211_mgmt to build mgmt frame
+Origin: https://git.kernel.org/linus/cc531f6154167893f1cf8ab084871fe06b38fb2b
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 30 ++++++++---------------
+ 1 file changed, 10 insertions(+), 20 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 0d581c8..2fdc2b5 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -2437,17 +2437,15 @@ void rtw_cfg80211_indicate_sta_disassoc(struct rtw_adapter *padapter,
+ {
+ 	s32 freq;
+ 	int channel;
+-	u8 *pmgmt_frame;
+ 	uint frame_len;
+-	struct ieee80211_hdr *pwlanhdr;
+-	u8 mgmt_buf[128];
++	struct ieee80211_mgmt mgmt;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct net_device *ndev = padapter->pnetdev;
+ 
+ 	DBG_8723A("%s(padapter =%p,%s)\n", __func__, padapter, ndev->name);
+ 
+-	memset(mgmt_buf, 0, 128);
++	memset(&mgmt, 0, sizeof(struct ieee80211_mgmt));
+ 
+ #if defined(RTW_USE_CFG80211_STA_EVENT)
+ 	cfg80211_del_sta(ndev, da, GFP_ATOMIC);
+@@ -2460,29 +2458,21 @@ void rtw_cfg80211_indicate_sta_disassoc(struct rtw_adapter *padapter,
+ 		freq = ieee80211_channel_to_frequency(channel,
+ 						      IEEE80211_BAND_5GHZ);
+ 
+-	pmgmt_frame = mgmt_buf;
+-	pwlanhdr = (struct ieee80211_hdr *)pmgmt_frame;
+-
+-	pwlanhdr->frame_control =
++	mgmt.frame_control =
+ 		cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_DEAUTH);
+ 
+-	ether_addr_copy(pwlanhdr->addr1, myid(&padapter->eeprompriv));
+-	ether_addr_copy(pwlanhdr->addr2, da);
+-	ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network));
++	ether_addr_copy(mgmt.da, myid(&padapter->eeprompriv));
++	ether_addr_copy(mgmt.sa, da);
++	ether_addr_copy(mgmt.bssid, get_my_bssid23a(&pmlmeinfo->network));
+ 
+-	pwlanhdr->seq_ctrl =
+-		cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
++	mgmt.seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
+ 	pmlmeext->mgnt_seq++;
+ 
+-	pmgmt_frame += sizeof(struct ieee80211_hdr_3addr);
+-	frame_len = sizeof(struct ieee80211_hdr_3addr);
++	mgmt.u.disassoc.reason_code = cpu_to_le16(reason);
+ 
+-	reason = cpu_to_le16(reason);
+-	pmgmt_frame = rtw_set_fixed_ie23a(pmgmt_frame,
+-				       WLAN_REASON_PREV_AUTH_NOT_VALID,
+-				       (unsigned char *)&reason, &frame_len);
++	frame_len = sizeof(struct ieee80211_hdr_3addr) + 2;
+ 
+-	cfg80211_rx_mgmt(padapter->rtw_wdev, freq, 0, mgmt_buf, frame_len,
++	cfg80211_rx_mgmt(padapter->rtw_wdev, freq, 0, (u8 *)&mgmt, frame_len,
+ 			 0, GFP_ATOMIC);
+ #endif /* defined(RTW_USE_CFG80211_STA_EVENT) */
+ }

Added: dists/sid/linux/debian/patches/features/all/r8723au/0040-staging-rtl8723au-issue_action_BA23a-Use-struct-ieee.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0040-staging-rtl8723au-issue_action_BA23a-Use-struct-ieee.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,247 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:19 +0200
+Subject: [040/249] staging: rtl8723au: issue_action_BA23a(): Use struct
+ ieee80211_mgmt to build action frames
+Origin: https://git.kernel.org/linus/a491548d6641f2dc4a83bb6ab337cccfdd53afe4
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 149 +++++++++++++-------------
+ 1 file changed, 74 insertions(+), 75 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 80a822c..ff0800e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -3892,17 +3892,15 @@ void issue_action_BA23a(struct rtw_adapter *padapter,
+ 			const unsigned char *raddr,
+ 			unsigned char action, unsigned short status)
+ {
+-	u8 category = WLAN_CATEGORY_BACK;
+ 	u16 start_seq;
+ 	u16 BA_para_set;
+-	u16 reason_code;
+ 	u16 BA_timeout_value;
+ 	u16 BA_starting_seqctrl;
++	u16 BA_para;
+ 	int max_rx_ampdu_factor;
+ 	struct xmit_frame *pmgntframe;
+ 	struct pkt_attrib *pattrib;
+-	u8 *pframe;
+-	struct ieee80211_hdr *pwlanhdr;
++	struct ieee80211_mgmt *mgmt;
+ 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+@@ -3911,8 +3909,7 @@ void issue_action_BA23a(struct rtw_adapter *padapter,
+ 	struct registry_priv *pregpriv = &padapter->registrypriv;
+ 	u8 tendaAPMac[] = {0xC8, 0x3A, 0x35};
+ 
+-	DBG_8723A("%s, category =%d, action =%d, status =%d\n",
+-		  __func__, category, action, status);
++	DBG_8723A("%s, action =%d, status =%d\n", __func__, action, status);
+ 
+ 	pmgntframe = alloc_mgtxmitframe23a(pxmitpriv);
+ 	if (!pmgntframe)
+@@ -3924,40 +3921,36 @@ void issue_action_BA23a(struct rtw_adapter *padapter,
+ 
+ 	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
+ 
+-	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
+-	pwlanhdr = (struct ieee80211_hdr *)pframe;
++	mgmt = (struct ieee80211_mgmt *)(pmgntframe->buf_addr + TXDESC_OFFSET);
+ 
+-	pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+-					      IEEE80211_STYPE_ACTION);
++	mgmt->frame_control =
++		cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION);
+ 
+-	/* memcpy(pwlanhdr->addr1, get_my_bssid23a(&pmlmeinfo->network), ETH_ALEN); */
+-	ether_addr_copy(pwlanhdr->addr1, raddr);
+-	ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
+-	ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network));
++	ether_addr_copy(mgmt->da, raddr);
++	ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv));
++	ether_addr_copy(mgmt->bssid, get_my_bssid23a(&pmlmeinfo->network));
+ 
+-	pwlanhdr->seq_ctrl =
+-		cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
++	mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
+ 	pmlmeext->mgnt_seq++;
+ 
+-	pframe += sizeof(struct ieee80211_hdr_3addr);
+-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
++	mgmt->u.action.category = WLAN_CATEGORY_BACK;
+ 
+-	pframe = rtw_set_fixed_ie23a(pframe, 1, &category, &pattrib->pktlen);
+-	pframe = rtw_set_fixed_ie23a(pframe, 1, &action, &pattrib->pktlen);
++	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr) + 1;
+ 
+ 	status = cpu_to_le16(status);
+ 
+-	if (category != 3)
+-		goto out;
++	switch (action) {
++	case WLAN_ACTION_ADDBA_REQ:
++		pattrib->pktlen += sizeof(mgmt->u.action.u.addba_req);
++
++		mgmt->u.action.u.addba_req.action_code = action;
+ 
+-	switch (action)
+-	{
+-	case 0: /* ADDBA req */
+ 		do {
+ 			pmlmeinfo->dialogToken++;
+ 		} while (pmlmeinfo->dialogToken == 0);
+-		pframe = rtw_set_fixed_ie23a(pframe, 1, &pmlmeinfo->dialogToken,
+-					     &pattrib->pktlen);
++
++		mgmt->u.action.u.addba_req.dialog_token =
++			pmlmeinfo->dialogToken;
+ 
+ 		if (rtl8723a_BT_coexist(padapter) &&
+ 		    rtl8723a_BT_using_antenna_1(padapter) &&
+@@ -3978,51 +3971,60 @@ void issue_action_BA23a(struct rtw_adapter *padapter,
+ 			/* immediate ack & 64 buffer size */
+ 			BA_para_set = (0x1002 | ((status & 0xf) << 2));
+ 		}
+-		BA_para_set = cpu_to_le16(BA_para_set);
+-		pframe = rtw_set_fixed_ie23a(pframe, 2,
+-					     (unsigned char *)&BA_para_set,
+-					     &pattrib->pktlen);
++
++		put_unaligned_le16(BA_para_set,
++				   &mgmt->u.action.u.addba_req.capab);
+ 
+ 		BA_timeout_value = 5000;/*  5ms */
+ 		BA_timeout_value = cpu_to_le16(BA_timeout_value);
+-		pframe = rtw_set_fixed_ie23a(pframe, 2, (unsigned char *)
+-					     &BA_timeout_value,
+-					     &pattrib->pktlen);
++		put_unaligned_le16(BA_timeout_value,
++				   &mgmt->u.action.u.addba_req.timeout);
++
++		psta = rtw_get_stainfo23a(pstapriv, raddr);
++		if (psta) {
++			int idx;
+ 
+-		/* if ((psta = rtw_get_stainfo23a(pstapriv,
+-		   pmlmeinfo->network.MacAddress)) != NULL) */
+-		if ((psta = rtw_get_stainfo23a(pstapriv, raddr))) {
+-			start_seq = (psta->sta_xmitpriv.txseq_tid[status & 0x07]&0xfff) + 1;
++			idx = status & 0x07;
++			start_seq =
++				(psta->sta_xmitpriv.txseq_tid[idx] & 0xfff) + 1;
+ 
+ 			DBG_8723A("BA_starting_seqctrl = %d for TID =%d\n",
+-				  start_seq, status & 0x07);
++				  start_seq, idx);
+ 
+-			psta->BA_starting_seqctrl[status & 0x07] = start_seq;
++			psta->BA_starting_seqctrl[idx] = start_seq;
+ 
+ 			BA_starting_seqctrl = start_seq << 4;
+-		}
++		} else
++			BA_starting_seqctrl = 0;
++
++		put_unaligned_le16(BA_starting_seqctrl,
++				   &mgmt->u.action.u.addba_req.start_seq_num);
+ 
+-		BA_starting_seqctrl = cpu_to_le16(BA_starting_seqctrl);
+-		pframe = rtw_set_fixed_ie23a(pframe, 2, (unsigned char *)&BA_starting_seqctrl, &pattrib->pktlen);
+ 		break;
+ 
+-	case 1: /* ADDBA rsp */
+-		pframe = rtw_set_fixed_ie23a(pframe, 1, &pmlmeinfo->ADDBA_req.dialog_token, &pattrib->pktlen);
+-		pframe = rtw_set_fixed_ie23a(pframe, 2,
+-					     (unsigned char *)&status,
+-					     &pattrib->pktlen);
++	case WLAN_ACTION_ADDBA_RESP:
++		pattrib->pktlen += sizeof(mgmt->u.action.u.addba_resp);
++
++		mgmt->u.action.u.addba_resp.action_code = action;
++		mgmt->u.action.u.addba_resp.dialog_token =
++			pmlmeinfo->ADDBA_req.dialog_token;
++		put_unaligned_le16(status,
++				   &mgmt->u.action.u.addba_resp.status);
++
+ 		GetHalDefVar8192CUsb(padapter, HW_VAR_MAX_RX_AMPDU_FACTOR,
+ 				     &max_rx_ampdu_factor);
++
++		BA_para = le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f;
+ 		if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_64K)
+-			BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x1000); /* 64 buffer size */
++			BA_para_set = BA_para | 0x1000; /* 64 buffer size */
+ 		else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_32K)
+-			BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x0800); /* 32 buffer size */
++			BA_para_set = BA_para | 0x0800; /* 32 buffer size */
+ 		else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_16K)
+-			BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x0400); /* 16 buffer size */
++			BA_para_set = BA_para | 0x0400; /* 16 buffer size */
+ 		else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_8K)
+-			BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x0200); /* 8 buffer size */
++			BA_para_set = BA_para | 0x0200; /* 8 buffer size */
+ 		else
+-			BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x1000); /* 64 buffer size */
++			BA_para_set = BA_para | 0x1000; /* 64 buffer size */
+ 
+ 		if (rtl8723a_BT_coexist(padapter) &&
+ 		    rtl8723a_BT_using_antenna_1(padapter) &&
+@@ -4035,36 +4037,33 @@ void issue_action_BA23a(struct rtw_adapter *padapter,
+ 		}
+ 
+ 		if (pregpriv->ampdu_amsdu == 0)/* disabled */
+-			BA_para_set = cpu_to_le16(BA_para_set & ~BIT(0));
++			BA_para_set &= ~BIT(0);
+ 		else if (pregpriv->ampdu_amsdu == 1)/* enabled */
+-			BA_para_set = cpu_to_le16(BA_para_set | BIT(0));
+-		else /* auto */
+-			BA_para_set = cpu_to_le16(BA_para_set);
+-
+-		pframe = rtw_set_fixed_ie23a(pframe, 2,
+-					     (unsigned char *)&BA_para_set,
+-					     &pattrib->pktlen);
+-		pframe = rtw_set_fixed_ie23a(pframe, 2, (unsigned char *)&pmlmeinfo->ADDBA_req.BA_timeout_value, &pattrib->pktlen);
++			BA_para_set |= BIT(0);
++
++		put_unaligned_le16(BA_para_set,
++				   &mgmt->u.action.u.addba_resp.capab);
++
++		put_unaligned_le16(pmlmeinfo->ADDBA_req.BA_timeout_value,
++				   &mgmt->u.action.u.addba_resp.timeout);
++
++		pattrib->pktlen += 8;
+ 		break;
+-	case 2:/* DELBA */
++	case WLAN_ACTION_DELBA:
++		pattrib->pktlen += sizeof(mgmt->u.action.u.delba);
++
++		mgmt->u.action.u.delba.action_code = action;
+ 		BA_para_set = (status & 0x1F) << 3;
+-		BA_para_set = cpu_to_le16(BA_para_set);
+-		pframe = rtw_set_fixed_ie23a(pframe, 2,
+-					     (unsigned char *)&BA_para_set,
+-					     &pattrib->pktlen);
+-
+-		reason_code = 37;/* Requested from peer STA as it does not
+-				    want to use the mechanism */
+-		reason_code = cpu_to_le16(reason_code);
+-		pframe = rtw_set_fixed_ie23a(pframe, 2,
+-					     (unsigned char *)&reason_code,
+-					     &pattrib->pktlen);
++		mgmt->u.action.u.delba.params = cpu_to_le16(BA_para_set);
++		mgmt->u.action.u.delba.reason_code =
++			cpu_to_le16(WLAN_REASON_QSTA_NOT_USE);
++
++		pattrib->pktlen += 5;
+ 		break;
+ 	default:
+ 		break;
+ 	}
+ 
+-out:
+ 	pattrib->last_txcmdsz = pattrib->pktlen;
+ 
+ 	dump_mgntframe23a(padapter, pmgntframe);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0041-staging-rtl8723au-Remove-obsolete-rtw_set_fixed_ie23.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0041-staging-rtl8723au-Remove-obsolete-rtw_set_fixed_ie23.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,43 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:20 +0200
+Subject: [041/249] staging: rtl8723au: Remove obsolete rtw_set_fixed_ie23a()
+Origin: https://git.kernel.org/linus/2a907fe46b861f16135c58580ce222c7abb02c2d
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 8 --------
+ drivers/staging/rtl8723au/include/ieee80211.h  | 1 -
+ 2 files changed, 9 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index 9f6dd77..922b45e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -124,14 +124,6 @@ int rtw_check_network_type23a(unsigned char *rate, int ratelen, int channel)
+ 	}
+ }
+ 
+-u8 *rtw_set_fixed_ie23a(unsigned char *pbuf, unsigned int len,
+-		     unsigned char *source, unsigned int *frlen)
+-{
+-	memcpy((void *)pbuf, (void *)source, len);
+-	*frlen = *frlen + len;
+-	return pbuf + len;
+-}
+-
+ /*  rtw_set_ie23a will update frame length */
+ u8 *rtw_set_ie23a(u8 *pbuf, int index, uint len, const u8 *source, uint *frlen)
+ {
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index f6e982e..9e03d41 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -388,7 +388,6 @@ struct rtw_ieee80211_channel {
+ 	/*, (channel)->orig_mag*/ \
+ 	/*, (channel)->orig_mpwr*/ \
+ 
+-u8 *rtw_set_fixed_ie23a(unsigned char *pbuf, unsigned int len, unsigned char *source, unsigned int *frlen);
+ u8 *rtw_set_ie23a(u8 *pbuf, int index, uint len, const u8 *source, uint *frlen);
+ 
+ enum secondary_ch_offset {

Added: dists/sid/linux/debian/patches/features/all/r8723au/0042-staging-rtl8723au-Remove-duplicate-defines-of-IEEE80.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0042-staging-rtl8723au-Remove-duplicate-defines-of-IEEE80.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,52 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:21 +0200
+Subject: [042/249] staging: rtl8723au: Remove duplicate defines of
+ IEEE80211_HT_PARAM_CHA_SEC_*
+Origin: https://git.kernel.org/linus/bf51cb6780a17b2ab64b6e6c0eacfc1b882a5d54
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 10 ++++------
+ drivers/staging/rtl8723au/include/ieee80211.h  |  5 -----
+ 2 files changed, 4 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index 922b45e..9d0662c 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -153,14 +153,12 @@ inline u8 *rtw_set_ie23a_ch_switch (u8 *buf, u32 *buf_len, u8 ch_switch_mode,
+ 
+ inline u8 hal_ch_offset_to_secondary_ch_offset23a(u8 ch_offset)
+ {
+-	if (ch_offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE)
+-		return SCN;
+-	else if (ch_offset == HAL_PRIME_CHNL_OFFSET_LOWER)
+-		return SCB;
++	if (ch_offset == HAL_PRIME_CHNL_OFFSET_LOWER)
++		return IEEE80211_HT_PARAM_CHA_SEC_BELOW;
+ 	else if (ch_offset == HAL_PRIME_CHNL_OFFSET_UPPER)
+-		return SCA;
++		return IEEE80211_HT_PARAM_CHA_SEC_ABOVE;
+ 
+-	return SCN;
++	return IEEE80211_HT_PARAM_CHA_SEC_NONE;
+ }
+ 
+ inline u8 *rtw_set_ie23a_secondary_ch_offset(u8 *buf, u32 *buf_len,
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index 9e03d41..cb3f4fa 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -390,11 +390,6 @@ struct rtw_ieee80211_channel {
+ 
+ u8 *rtw_set_ie23a(u8 *pbuf, int index, uint len, const u8 *source, uint *frlen);
+ 
+-enum secondary_ch_offset {
+-	SCN = 0, /* no secondary channel */
+-	SCA = 1, /* secondary channel above */
+-	SCB = 3,  /* secondary channel below */
+-};
+ u8 hal_ch_offset_to_secondary_ch_offset23a(u8 ch_offset);
+ u8 *rtw_set_ie23a_ch_switch(u8 *buf, u32 *buf_len, u8 ch_switch_mode, u8 new_ch, u8 ch_switch_cnt);
+ u8 *rtw_set_ie23a_secondary_ch_offset(u8 *buf, u32 *buf_len, u8 secondary_ch_offset);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0043-staging-rtl8723au-Remove-unused-defines-WEP_KEY_LEN-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0043-staging-rtl8723au-Remove-unused-defines-WEP_KEY_LEN-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,33 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:22 +0200
+Subject: [043/249] staging: rtl8723au: Remove unused #defines WEP_KEY_LEN and
+ MGMT_QUEUE_NUM
+Origin: https://git.kernel.org/linus/e0ea5c8e665f14b1d018bc3f6e8f2f2f1d8a4b1d
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/ieee80211.h | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index cb3f4fa..7d22825 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -27,8 +27,6 @@
+ #endif
+ 
+ 
+-#define MGMT_QUEUE_NUM 5
+-
+ #ifdef CONFIG_8723AU_AP_MODE
+ 
+ /* STA flags */
+@@ -305,7 +303,6 @@ struct ieee80211_snap_hdr {
+ #define IEEE80211_OFDM_SHIFT_MASK_A         4
+ 
+ #define WEP_KEYS 4
+-#define WEP_KEY_LEN 13
+ 
+ 
+ /* MAX_RATES_LENGTH needs to be 12.  The spec says 8, and many APs

Added: dists/sid/linux/debian/patches/features/all/r8723au/0044-staging-rtl8723au-Remove-some-unused-80211-header-pa.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0044-staging-rtl8723au-Remove-some-unused-80211-header-pa.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,37 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:23 +0200
+Subject: [044/249] staging: rtl8723au: Remove some unused 80211 header parsing
+ macros
+Origin: https://git.kernel.org/linus/51dacaa7baa95b00f7369a687295f59d4e963d64
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/ieee80211.h | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index 7d22825..c2c57c7 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -219,20 +219,10 @@ struct ieee80211_snap_hdr {
+ 
+ #define SNAP_SIZE sizeof(struct ieee80211_snap_hdr)
+ 
+-#define WLAN_FC_GET_TYPE(fc)		(fc & IEEE80211_FCTL_FTYPE)
+-#define WLAN_FC_GET_STYPE(fc)		(fc & IEEE80211_FCTL_STYPE)
+-
+-#define WLAN_QC_GET_TID(qc)		(qc & 0x0f)
+-
+-#define WLAN_GET_SEQ_FRAG(seq)		(seq & RTW_IEEE80211_SCTL_FRAG)
+-#define WLAN_GET_SEQ_SEQ(seq)		(seq & RTW_IEEE80211_SCTL_SEQ)
+-
+-
+ #define WLAN_REASON_JOIN_WRONG_CHANNEL       65534
+ #define WLAN_REASON_EXPIRATION_CHK 65535
+ 
+ 
+-
+ #define IEEE80211_STATMASK_SIGNAL (1<<0)
+ #define IEEE80211_STATMASK_RSSI (1<<1)
+ #define IEEE80211_STATMASK_NOISE (1<<2)

Added: dists/sid/linux/debian/patches/features/all/r8723au/0045-staging-rtl8723au-rtw_check_bcn_info23a-Use-ether_ad.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0045-staging-rtl8723au-rtw_check_bcn_info23a-Use-ether_ad.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,30 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:24 +0200
+Subject: [045/249] staging: rtl8723au: rtw_check_bcn_info23a(): Use
+ ether_addr_equal() to check BSSID
+Origin: https://git.kernel.org/linus/0c45e6170d65332e9f314dbc36468884a650b412
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 3195b44..a2c249f 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -910,10 +910,9 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 		return _FAIL;
+ 	}
+ 
+-	if (memcmp(cur_network->network.MacAddress, mgmt->bssid, 6)) {
+-		DBG_8723A("Oops: rtw_check_network_encrypt linked but recv "
+-			  "other bssid bcn\n" MAC_FMT MAC_FMT,
+-			  MAC_ARG(mgmt->bssid),
++	if (!ether_addr_equal(cur_network->network.MacAddress, mgmt->bssid)) {
++		DBG_8723A("%s: linked but recv other bssid bcn"
++			  MAC_FMT MAC_FMT "\n", __func__, MAC_ARG(mgmt->bssid),
+ 			  MAC_ARG(cur_network->network.MacAddress));
+ 		return true;
+ 	}

Added: dists/sid/linux/debian/patches/features/all/r8723au/0046-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-make-a.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0046-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-make-a.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,218 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:25 +0200
+Subject: [046/249] staging: rtl8723au: rtw_check_bcn_info23a(): Don't make a
+ local copy of beacon just to parse it
+Origin: https://git.kernel.org/linus/17b19396a675659e04eac6dbdbe57b2a9e462950
+
+In addition be consistent with return values and parsing them.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c  |  2 +-
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c | 88 +++++++++-----------------
+ 2 files changed, 32 insertions(+), 58 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index ff0800e..693a1a4 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -857,7 +857,7 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 		psta = rtw_get_stainfo23a(pstapriv, mgmt->sa);
+ 		if (psta) {
+ 			ret = rtw_check_bcn_info23a(padapter, mgmt, pkt_len);
+-			if (!ret) {
++			if (ret != _SUCCESS) {
+ 				DBG_8723A_LEVEL(_drv_always_, "ap has changed, "
+ 						"disconnect now\n");
+ 				receive_disconnect23a(padapter, pmlmeinfo->network.MacAddress, 65535);
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index a2c249f..17b04c2 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -885,28 +885,19 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ {
+ 	struct wlan_network *cur_network = &Adapter->mlmepriv.cur_network;
+ 	struct ieee80211_ht_operation *pht_info;
+-	struct wlan_bssid_ex *bssid;
+ 	unsigned short val16;
+ 	u8 encryp_protocol;
+ 	int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0, r;
+ 	u32 bcn_channel;
+-	int len, pie_len, ie_offset;
+-	const u8 *p;
+-	u8 *pie;
++	int pie_len, ie_offset, ssid_len, privacy;
++	const u8 *p, *ssid;
+ 
+ 	if (is_client_associated_to_ap23a(Adapter) == false)
+-		return true;
++		return _SUCCESS;
+ 
+ 	if (unlikely(!ieee80211_is_beacon(mgmt->frame_control))) {
+ 		printk(KERN_WARNING "%s: received a non beacon frame!\n",
+ 		       __func__);
+-		return false;
+-	}
+-
+-	len = pkt_len - sizeof(struct ieee80211_hdr_3addr);
+-
+-	if (len > MAX_IE_SZ) {
+-		DBG_8723A("%s IE too long for survey event\n", __func__);
+ 		return _FAIL;
+ 	}
+ 
+@@ -914,36 +905,25 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 		DBG_8723A("%s: linked but recv other bssid bcn"
+ 			  MAC_FMT MAC_FMT "\n", __func__, MAC_ARG(mgmt->bssid),
+ 			  MAC_ARG(cur_network->network.MacAddress));
+-		return true;
+-	}
+-
+-	bssid = kzalloc(sizeof(struct wlan_bssid_ex), GFP_ATOMIC);
+-	if (!bssid)
+ 		return _FAIL;
+-
+-	bssid->reserved = 1;
+-
+-	bssid->Length = offsetof(struct wlan_bssid_ex, IEs) + len;
+-
+-	/* below is to copy the information element */
+-	bssid->IELength = len;
+-	memcpy(bssid->IEs, &mgmt->u, len);
++	}
+ 
+ 	/* check bw and channel offset */
+ 	/* parsing HT_CAP_IE */
+ 	ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+ 		offsetof(struct ieee80211_mgmt, u);
+-	pie = bssid->IEs + ie_offset;
+-	pie_len = pkt_len - ie_offset;
++	pie_len = pkt_len - offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 
+ 	/* Checking for channel */
+-	p = cfg80211_find_ie(WLAN_EID_DS_PARAMS, pie, pie_len);
++	p = cfg80211_find_ie(WLAN_EID_DS_PARAMS, mgmt->u.beacon.variable,
++			     pie_len);
+ 	if (p)
+ 		bcn_channel = p[2];
+ 	else {
+ 		/* In 5G, some ap do not have DSSET IE checking HT
+ 		   info for channel */
+-		p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pie, pie_len);
++		p = cfg80211_find_ie(WLAN_EID_HT_OPERATION,
++				     mgmt->u.beacon.variable, pie_len);
+ 
+ 		if (p && p[1] > 0) {
+ 			pht_info = (struct ieee80211_ht_operation *)(p + 2);
+@@ -962,60 +942,55 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 	}
+ 
+ 	/* checking SSID */
+-	p = cfg80211_find_ie(WLAN_EID_SSID, pie, pie_len);
++	p = cfg80211_find_ie(WLAN_EID_SSID, mgmt->u.beacon.variable, pie_len);
+ 	if (p && p[1]) {
+-		memcpy(bssid->Ssid.ssid, p + 2, p[1]);
+-		bssid->Ssid.ssid_len = p[1];
++		ssid = p + 2;
++		ssid_len = p[1];
+ 	} else {
+ 		DBG_8723A("%s marc: cannot find SSID for survey event\n",
+ 			  __func__);
+-		bssid->Ssid.ssid_len = 0;
+-		bssid->Ssid.ssid[0] = '\0';
++		ssid = NULL;
++		ssid_len = 0;
+ 	}
+ 
+ 	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
+ 		 ("%s bssid.Ssid.Ssid:%s bssid.Ssid.SsidLength:%d "
+ 		  "cur_network->network.Ssid.Ssid:%s len:%d\n", __func__,
+-		  bssid->Ssid.ssid, bssid->Ssid.ssid_len,
+-		  cur_network->network.Ssid.ssid,
++		  ssid, ssid_len, cur_network->network.Ssid.ssid,
+ 		  cur_network->network.Ssid.ssid_len));
+ 
+-	if (memcmp(bssid->Ssid.ssid, cur_network->network.Ssid.ssid, 32) ||
+-	    bssid->Ssid.ssid_len != cur_network->network.Ssid.ssid_len) {
+-		if (bssid->Ssid.ssid[0] != '\0' &&
+-		    bssid->Ssid.ssid_len != 0) { /* not hidden ssid */
+-			DBG_8723A("%s(), SSID is not match return FAIL\n",
+-				  __func__);
+-			goto _mismatch;
+-		}
++	if (ssid_len != cur_network->network.Ssid.ssid_len || ssid_len > 32 ||
++	    (ssid_len &&
++	     memcmp(ssid, cur_network->network.Ssid.ssid, ssid_len))) {
++		DBG_8723A("%s(), SSID is not match return FAIL\n", __func__);
++		goto _mismatch;
+ 	}
+ 
+ 	/* check encryption info */
+-	val16 = rtw_get_capability23a(bssid);
++	val16 = le16_to_cpu(mgmt->u.beacon.capab_info);
+ 
+ 	if (val16 & WLAN_CAPABILITY_PRIVACY)
+-		bssid->Privacy = 1;
++		privacy = 1;
+ 	else
+-		bssid->Privacy = 0;
++		privacy = 0;
+ 
+ 	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
+ 		 ("%s(): cur_network->network.Privacy is %d, bssid.Privacy "
+-		  "is %d\n", __func__, cur_network->network.Privacy,
+-		  bssid->Privacy));
+-	if (cur_network->network.Privacy != bssid->Privacy) {
++		  "is %d\n", __func__, cur_network->network.Privacy, privacy));
++	if (cur_network->network.Privacy != privacy) {
+ 		DBG_8723A("%s(), privacy is not match return FAIL\n", __func__);
+ 		goto _mismatch;
+ 	}
+ 
+-	p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len);
++	p = cfg80211_find_ie(WLAN_EID_RSN, mgmt->u.beacon.variable, pie_len);
+ 	if (p && p[1]) {
+ 		encryp_protocol = ENCRYP_PROTOCOL_WPA2;
+ 	} else if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+ 					   WLAN_OUI_TYPE_MICROSOFT_WPA,
+-					   pie, pie_len)) {
++					   mgmt->u.beacon.variable, pie_len)) {
+ 		encryp_protocol = ENCRYP_PROTOCOL_WPA;
+ 	} else {
+-		if (bssid->Privacy)
++		if (privacy)
+ 			encryp_protocol = ENCRYP_PROTOCOL_WEP;
+ 		else
+ 			encryp_protocol = ENCRYP_PROTOCOL_OPENSYS;
+@@ -1030,7 +1005,7 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 	    encryp_protocol == ENCRYP_PROTOCOL_WPA2) {
+ 		p = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+ 					    WLAN_OUI_TYPE_MICROSOFT_WPA,
+-					    pie, pie_len);
++					    mgmt->u.beacon.variable, pie_len);
+ 		if (p && p[1] > 0) {
+ 			r = rtw_parse_wpa_ie23a(p, p[1] + 2, &group_cipher,
+ 						&pairwise_cipher, &is_8021x);
+@@ -1041,7 +1016,8 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 					  "%d\n", __func__, pairwise_cipher,
+ 					  group_cipher, is_8021x));
+ 		} else {
+-			p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len);
++			p = cfg80211_find_ie(WLAN_EID_RSN,
++					     mgmt->u.beacon.variable, pie_len);
+ 
+ 			if (p && p[1] > 0) {
+ 				r = rtw_parse_wpa2_ie23a(p, p[1] + 2,
+@@ -1080,11 +1056,9 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 		}
+ 	}
+ 
+-	kfree(bssid);
+ 	return _SUCCESS;
+ 
+ _mismatch:
+-	kfree(bssid);
+ 
+ 	return _FAIL;
+ }

Added: dists/sid/linux/debian/patches/features/all/r8723au/0047-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-search.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0047-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-search.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,107 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:26 +0200
+Subject: [047/249] staging: rtl8723au: rtw_check_bcn_info23a(): Don't search
+ for WPA/WPA2 info twice
+Origin: https://git.kernel.org/linus/bbf5fdbd56f8a97ccfe25621057771742725c3b0
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c | 63 ++++++++++----------------
+ 1 file changed, 25 insertions(+), 38 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 17b04c2..5aaff13 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -886,9 +886,8 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 	struct wlan_network *cur_network = &Adapter->mlmepriv.cur_network;
+ 	struct ieee80211_ht_operation *pht_info;
+ 	unsigned short val16;
+-	u8 encryp_protocol;
++	u8 crypto, bcn_channel;
+ 	int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0, r;
+-	u32 bcn_channel;
+ 	int pie_len, ie_offset, ssid_len, privacy;
+ 	const u8 *p, *ssid;
+ 
+@@ -984,29 +983,23 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 
+ 	p = cfg80211_find_ie(WLAN_EID_RSN, mgmt->u.beacon.variable, pie_len);
+ 	if (p && p[1]) {
+-		encryp_protocol = ENCRYP_PROTOCOL_WPA2;
+-	} else if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+-					   WLAN_OUI_TYPE_MICROSOFT_WPA,
+-					   mgmt->u.beacon.variable, pie_len)) {
+-		encryp_protocol = ENCRYP_PROTOCOL_WPA;
++		crypto = ENCRYP_PROTOCOL_WPA2;
++		if (p && p[1]) {
++			r = rtw_parse_wpa2_ie23a(p, p[1] + 2, &group_cipher,
++						 &pairwise_cipher, &is_8021x);
++			if (r == _SUCCESS)
++				RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
++					 ("%s pnetwork->pairwise_cipher: %d, "
++					  "pnetwork->group_cipher: %d, is_802x "
++					  ": %d\n", __func__, pairwise_cipher,
++					  group_cipher, is_8021x));
++			}
+ 	} else {
+-		if (privacy)
+-			encryp_protocol = ENCRYP_PROTOCOL_WEP;
+-		else
+-			encryp_protocol = ENCRYP_PROTOCOL_OPENSYS;
+-	}
+-
+-	if (cur_network->BcnInfo.encryp_protocol != encryp_protocol) {
+-		DBG_8723A("%s(): enctyp is not match, return FAIL\n", __func__);
+-		goto _mismatch;
+-	}
+-
+-	if (encryp_protocol == ENCRYP_PROTOCOL_WPA ||
+-	    encryp_protocol == ENCRYP_PROTOCOL_WPA2) {
+ 		p = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+ 					    WLAN_OUI_TYPE_MICROSOFT_WPA,
+ 					    mgmt->u.beacon.variable, pie_len);
+-		if (p && p[1] > 0) {
++		if (p && p[1]) {
++			crypto = ENCRYP_PROTOCOL_WPA;
+ 			r = rtw_parse_wpa_ie23a(p, p[1] + 2, &group_cipher,
+ 						&pairwise_cipher, &is_8021x);
+ 			if (r == _SUCCESS)
+@@ -1016,25 +1009,19 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 					  "%d\n", __func__, pairwise_cipher,
+ 					  group_cipher, is_8021x));
+ 		} else {
+-			p = cfg80211_find_ie(WLAN_EID_RSN,
+-					     mgmt->u.beacon.variable, pie_len);
+-
+-			if (p && p[1] > 0) {
+-				r = rtw_parse_wpa2_ie23a(p, p[1] + 2,
+-							 &group_cipher,
+-							 &pairwise_cipher,
+-							 &is_8021x);
+-				if (r == _SUCCESS)
+-					RT_TRACE(_module_rtl871x_mlme_c_,
+-						 _drv_info_,
+-						 ("%s pnetwork->pairwise_cipher"
+-						  ": %d, pnetwork->group_cipher"
+-						  " is %d, is_802x is %d\n",
+-						  __func__, pairwise_cipher,
+-						  group_cipher, is_8021x));
+-			}
++			if (privacy)
++				crypto = ENCRYP_PROTOCOL_WEP;
++			else
++				crypto = ENCRYP_PROTOCOL_OPENSYS;
+ 		}
++	}
++
++	if (cur_network->BcnInfo.encryp_protocol != crypto) {
++		DBG_8723A("%s(): encryption mismatch, return FAIL\n", __func__);
++		goto _mismatch;
++	}
+ 
++	if (crypto == ENCRYP_PROTOCOL_WPA || crypto == ENCRYP_PROTOCOL_WPA2) {
+ 		RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
+ 			 ("%s cur_network->group_cipher is %d: %d\n", __func__,
+ 			  cur_network->BcnInfo.group_cipher, group_cipher));

Added: dists/sid/linux/debian/patches/features/all/r8723au/0048-staging-rtl8723au-Declare-rtw_update_scanned_network.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0048-staging-rtl8723au-Declare-rtw_update_scanned_network.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,50 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:27 +0200
+Subject: [048/249] staging: rtl8723au: Declare rtw_update_scanned_network()
+ static
+Origin: https://git.kernel.org/linus/8ab7bdba0ddb0f6a9ca93562f2d6065b1350802e
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c    | 6 +++---
+ drivers/staging/rtl8723au/include/rtw_mlme.h | 2 --
+ 2 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 4a33e7d..44a5249 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -487,8 +487,8 @@ static void update_current_network(struct rtw_adapter *adapter,
+ Caller must hold pmlmepriv->lock first.
+ 
+ */
+-void rtw_update_scanned_network23a(struct rtw_adapter *adapter,
+-				   struct wlan_bssid_ex *target)
++static void rtw_update_scanned_network(struct rtw_adapter *adapter,
++				       struct wlan_bssid_ex *target)
+ {
+ 	struct list_head *plist, *phead;
+ 	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+@@ -571,7 +571,7 @@ static void rtw_add_network(struct rtw_adapter *adapter,
+ 			    struct wlan_bssid_ex *pnetwork)
+ {
+ 	update_current_network(adapter, pnetwork);
+-	rtw_update_scanned_network23a(adapter, pnetwork);
++	rtw_update_scanned_network(adapter, pnetwork);
+ }
+ 
+ /* select the desired network based on the capability of the (i)bss. */
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index a11b5bd..baac8da 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -308,8 +308,6 @@ static inline void clr_fwstate_ex(struct mlme_priv *pmlmepriv, int state)
+ }
+ 
+ u16 rtw_get_capability23a(struct wlan_bssid_ex *bss);
+-void rtw_update_scanned_network23a(struct rtw_adapter *adapter,
+-				struct wlan_bssid_ex *target);
+ void rtw_disconnect_hdl23a_under_linked(struct rtw_adapter *adapter,
+ 				     struct sta_info *psta, u8 free_assoc);
+ void rtw_generate_random_ibss23a(u8 *pibss);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0049-staging-rtl8723au-rtw_survey_event_cb23a-Use-the-cor.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0049-staging-rtl8723au-rtw_survey_event_cb23a-Use-the-cor.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,27 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:28 +0200
+Subject: [049/249] staging: rtl8723au: rtw_survey_event_cb23a(): Use the
+ correct types for the received arguments
+Origin: https://git.kernel.org/linus/7195dc0e1a9982eb950b614e07abc5ba3068e95d
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 44a5249..639dfca 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -638,8 +638,9 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 	u32 len;
+ 	struct wlan_bssid_ex *pnetwork;
+ 	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
++	struct survey_event *survey = (struct survey_event *)pbuf;
+ 
+-	pnetwork = (struct wlan_bssid_ex *)pbuf;
++	pnetwork = &survey->bss;
+ 
+ 	RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,
+ 		 ("rtw_survey_event_cb23a, ssid=%s\n", pnetwork->Ssid.ssid));

Added: dists/sid/linux/debian/patches/features/all/r8723au/0050-staging-rtl8723au-Do-not-embed-struct-wlan_bssid_ex-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0050-staging-rtl8723au-Do-not-embed-struct-wlan_bssid_ex-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,79 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:29 +0200
+Subject: [050/249] staging: rtl8723au: Do not embed struct wlan_bssid_ex in
+ struct survey_event
+Origin: https://git.kernel.org/linus/246879640e636256326221e70df8e1c3ef84ece0
+
+Instead allocate it separately and reference it from survey_event.
+This will allow for us to pass it on later without having to copy it.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c     | 5 ++++-
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 9 +++++++--
+ drivers/staging/rtl8723au/include/rtw_event.h | 2 +-
+ 3 files changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 639dfca..71ff753 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -640,7 +640,7 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+ 	struct survey_event *survey = (struct survey_event *)pbuf;
+ 
+-	pnetwork = &survey->bss;
++	pnetwork = survey->bss;
+ 
+ 	RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,
+ 		 ("rtw_survey_event_cb23a, ssid=%s\n", pnetwork->Ssid.ssid));
+@@ -691,6 +691,9 @@ exit:
+ 
+ 	spin_unlock_bh(&pmlmepriv->lock);
+ 
++	kfree(survey->bss);
++	survey->bss = NULL;
++
+ 	return;
+ }
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 693a1a4..9b6d918 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4898,14 +4898,19 @@ void report_survey_event23a(struct rtw_adapter *padapter,
+ 	pc2h_evt_hdr->seq = atomic_inc_return(&pmlmeext->event_seq);
+ 
+ 	psurvey_evt = (struct survey_event*)(pevtcmd + sizeof(struct C2HEvent_Header));
++	psurvey_evt->bss = kzalloc(sizeof(struct wlan_bssid_ex), GFP_ATOMIC);
++	if (!psurvey_evt->bss) {
++		kfree(pcmd_obj);
++		kfree(pevtcmd);
++	}
+ 
+-	if (collect_bss_info23a(padapter, precv_frame, &psurvey_evt->bss) == _FAIL) {
++	if (collect_bss_info23a(padapter, precv_frame, psurvey_evt->bss) == _FAIL) {
+ 		kfree(pcmd_obj);
+ 		kfree(pevtcmd);
+ 		return;
+ 	}
+ 
+-	process_80211d(padapter, &psurvey_evt->bss);
++	process_80211d(padapter, psurvey_evt->bss);
+ 
+ 	rtw_enqueue_cmd23a(pcmdpriv, pcmd_obj);
+ 
+diff --git a/drivers/staging/rtl8723au/include/rtw_event.h b/drivers/staging/rtl8723au/include/rtw_event.h
+index 807cc83..4557aec 100644
+--- a/drivers/staging/rtl8723au/include/rtw_event.h
++++ b/drivers/staging/rtl8723au/include/rtw_event.h
+@@ -22,7 +22,7 @@
+ Used to report a bss has been scanned
+ */
+ struct survey_event {
+-	struct wlan_bssid_ex bss;
++	struct wlan_bssid_ex *bss;
+ };
+ 
+ /*

Added: dists/sid/linux/debian/patches/features/all/r8723au/0051-staging-rtl8723au-Allocate-struct-wlan_bssid_ex-in-c.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0051-staging-rtl8723au-Allocate-struct-wlan_bssid_ex-in-c.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,173 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:30 +0200
+Subject: [051/249] staging: rtl8723au: Allocate struct wlan_bssid_ex in
+ collect_bss_info()
+Origin: https://git.kernel.org/linus/1bebe756269a020add3e128c93b2edf1ef66362f
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c    | 52 ++++++++++++------------
+ drivers/staging/rtl8723au/include/rtw_mlme_ext.h |  3 --
+ 2 files changed, 25 insertions(+), 30 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 9b6d918..02180fc 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -61,6 +61,8 @@ static void start_clnt_assoc(struct rtw_adapter *padapter);
+ static void start_clnt_auth(struct rtw_adapter *padapter);
+ static void start_clnt_join(struct rtw_adapter *padapter);
+ static void start_create_ibss(struct rtw_adapter *padapter);
++static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
++					      struct recv_frame *precv_frame);
+ 
+ #ifdef CONFIG_8723AU_AP_MODE
+ static int OnAuth23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame);
+@@ -825,16 +827,11 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 	if (pmlmeinfo->state & WIFI_FW_AUTH_NULL) {
+ 		/* we should update current network before auth,
+ 		   or some IE is wrong */
+-		pbss = (struct wlan_bssid_ex *)
+-			kmalloc(sizeof(struct wlan_bssid_ex), GFP_ATOMIC);
++		pbss = collect_bss_info(padapter, precv_frame);
+ 		if (pbss) {
+-			if (collect_bss_info23a(padapter, precv_frame, pbss) ==
+-			    _SUCCESS) {
+-				update_network23a(
+-					&pmlmepriv->cur_network.network, pbss,
+-					padapter, true);
+-				rtw_get_bcn_info23a(&pmlmepriv->cur_network);
+-			}
++			update_network23a(&pmlmepriv->cur_network.network, pbss,
++					  padapter, true);
++			rtw_get_bcn_info23a(&pmlmepriv->cur_network);
+ 			kfree(pbss);
+ 		}
+ 
+@@ -4252,9 +4249,8 @@ static void rtw_site_survey(struct rtw_adapter *padapter)
+ }
+ 
+ /* collect bss info from Beacon and Probe request/response frames. */
+-int collect_bss_info23a(struct rtw_adapter *padapter,
+-			struct recv_frame *precv_frame,
+-			struct wlan_bssid_ex *bssid)
++static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
++					      struct recv_frame *precv_frame)
+ {
+ 	int i;
+ 	const u8 *p;
+@@ -4265,16 +4261,19 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 	struct registry_priv *pregistrypriv = &padapter->registrypriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
++	struct wlan_bssid_ex *bssid;
+ 	u16 capab_info;
+ 
+ 	length = skb->len - sizeof(struct ieee80211_hdr_3addr);
+ 
+ 	if (length > MAX_IE_SZ) {
+ 		/* DBG_8723A("IE too long for survey event\n"); */
+-		return _FAIL;
++		return NULL;
+ 	}
+ 
+-	memset(bssid, 0, sizeof(struct wlan_bssid_ex));
++	bssid = kzalloc(sizeof(struct wlan_bssid_ex), GFP_ATOMIC);
++	if (!bssid)
++		return NULL;
+ 
+ 	if (ieee80211_is_beacon(mgmt->frame_control)) {
+ 		bssid->reserved = 1;
+@@ -4325,13 +4324,13 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 
+ 	if (!p) {
+ 		DBG_8723A("marc: cannot find SSID for survey event\n");
+-		return _FAIL;
++		goto fail;
+ 	}
+ 
+ 	if (p[1] > IEEE80211_MAX_SSID_LEN) {
+ 		DBG_8723A("%s()-%d: IE too long (%d) for survey "
+ 			  "event\n", __func__, __LINE__, p[1]);
+-		return _FAIL;
++		goto fail;
+ 	}
+ 	memcpy(bssid->Ssid.ssid, p + 2, p[1]);
+ 	bssid->Ssid.ssid_len = p[1];
+@@ -4346,7 +4345,7 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 		if (p[1] > NDIS_802_11_LENGTH_RATES_EX) {
+ 			DBG_8723A("%s()-%d: IE too long (%d) for survey "
+ 				  "event\n", __func__, __LINE__, p[1]);
+-			return _FAIL;
++			goto fail;
+ 		}
+ 		memcpy(bssid->SupportedRates, p + 2, p[1]);
+ 		i = p[1];
+@@ -4358,13 +4357,13 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 		if (p[1] > (NDIS_802_11_LENGTH_RATES_EX-i)) {
+ 			DBG_8723A("%s()-%d: IE too long (%d) for survey "
+ 				  "event\n", __func__, __LINE__, p[1]);
+-			return _FAIL;
++			goto fail;
+ 		}
+ 		memcpy(bssid->SupportedRates + i, p + 2, p[1]);
+ 	}
+ 
+ 	if (bssid->IELength < 12)
+-		return _FAIL;
++		goto fail;
+ 
+ 	/*  Checking for DSConfig */
+ 	p = cfg80211_find_ie(WLAN_EID_DS_PARAMS, bssid->IEs + ie_offset,
+@@ -4392,7 +4391,7 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 		bssid->ifmode = NL80211_IFTYPE_STATION;
+ 		ether_addr_copy(bssid->MacAddress, mgmt->sa);
+ 		bssid->Privacy = 1;
+-		return _SUCCESS;
++		return bssid;
+ 	}
+ 
+ 	if (capab_info & WLAN_CAPABILITY_ESS) {
+@@ -4434,7 +4433,10 @@ int collect_bss_info23a(struct rtw_adapter *padapter,
+ 	if (bssid->DSConfig != rtw_get_oper_ch23a(padapter))
+ 		bssid->PhyInfo.SignalQuality = 101;
+ 
+-	return _SUCCESS;
++	return bssid;
++fail:
++	kfree (bssid);
++	return NULL;
+ }
+ 
+ static void start_create_ibss(struct rtw_adapter* padapter)
+@@ -4898,13 +4900,9 @@ void report_survey_event23a(struct rtw_adapter *padapter,
+ 	pc2h_evt_hdr->seq = atomic_inc_return(&pmlmeext->event_seq);
+ 
+ 	psurvey_evt = (struct survey_event*)(pevtcmd + sizeof(struct C2HEvent_Header));
+-	psurvey_evt->bss = kzalloc(sizeof(struct wlan_bssid_ex), GFP_ATOMIC);
+-	if (!psurvey_evt->bss) {
+-		kfree(pcmd_obj);
+-		kfree(pevtcmd);
+-	}
+ 
+-	if (collect_bss_info23a(padapter, precv_frame, psurvey_evt->bss) == _FAIL) {
++	psurvey_evt->bss = collect_bss_info(padapter, precv_frame);
++	if (!psurvey_evt->bss) {
+ 		kfree(pcmd_obj);
+ 		kfree(pevtcmd);
+ 		return;
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+index eb61012..0219aa1 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+@@ -495,9 +495,6 @@ void flush_all_cam_entry23a(struct rtw_adapter *padapter);
+ 
+ bool IsLegal5GChannel(struct rtw_adapter *Adapter, u8 channel);
+ 
+-int collect_bss_info23a(struct rtw_adapter *padapter,
+-			struct recv_frame *precv_frame,
+-			struct wlan_bssid_ex *bssid);
+ void update_network23a(struct wlan_bssid_ex *dst, struct wlan_bssid_ex *src,
+ 		    struct rtw_adapter *padapter, bool update_ie);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0052-staging-rtl8723au-collect_bss_info-Don-t-memset-what.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0052-staging-rtl8723au-collect_bss_info-Don-t-memset-what.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,25 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:31 +0200
+Subject: [052/249] staging: rtl8723au: collect_bss_info(): Don't memset() what
+ we just kzalloc()'d
+Origin: https://git.kernel.org/linus/8d7fb1b874988b663d796f5b3b328cc50e99c1e2
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 02180fc..14193b4 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4335,8 +4335,6 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 	memcpy(bssid->Ssid.ssid, p + 2, p[1]);
+ 	bssid->Ssid.ssid_len = p[1];
+ 
+-	memset(bssid->SupportedRates, 0, NDIS_802_11_LENGTH_RATES_EX);
+-
+ 	/* checking rate info... */
+ 	i = 0;
+ 	p = cfg80211_find_ie(WLAN_EID_SUPP_RATES, bssid->IEs + ie_offset,

Added: dists/sid/linux/debian/patches/features/all/r8723au/0053-staging-rtl8723au-free_scanqueue-Use-_rtw_free_netwo.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0053-staging-rtl8723au-free_scanqueue-Use-_rtw_free_netwo.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,30 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:32 +0200
+Subject: [053/249] staging: rtl8723au: free_scanqueue(): Use
+ _rtw_free_network23a()
+Origin: https://git.kernel.org/linus/46805acb89edec720493e5779459ae8d0ccc680d
+
+Use _rtw_free_network23() so elements are freed in one place.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 71ff753..7c99c37 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -831,9 +831,9 @@ static void free_scanqueue(struct mlme_priv *pmlmepriv)
+ 	phead = get_list_head(scan_queue);
+ 
+ 	list_for_each_safe(plist, ptemp, phead) {
+-		list_del_init(plist);
+ 		pnetwork = container_of(plist, struct wlan_network, list);
+-		kfree(pnetwork);
++		pnetwork->fixed = false;
++		_rtw_free_network23a(pmlmepriv, pnetwork);
+         }
+ 
+ 	spin_unlock_bh(&scan_queue->lock);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0054-staging-rtl8723au-rtw_stadel_event_callback23a-Remov.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0054-staging-rtl8723au-rtw_stadel_event_callback23a-Remov.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,25 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:33 +0200
+Subject: [054/249] staging: rtl8723au: rtw_stadel_event_callback23a(): Remove
+ superfluous memset()
+Origin: https://git.kernel.org/linus/1ae17bf1690d6781d260db96952b8a937a204570
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 7c99c37..bcc6893 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -1506,8 +1506,6 @@ void rtw_stadel_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 			memcpy(pdev_network, &tgt_network->network,
+ 			       get_wlan_bssid_ex_sz(&tgt_network->network));
+ 
+-			memset(&pdev_network->Ssid, 0,
+-			       sizeof(struct cfg80211_ssid));
+ 			memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid,
+ 			       sizeof(struct cfg80211_ssid));
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0055-staging-rtl8723au-OnAuth23a-Use-ether_addr_copy.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0055-staging-rtl8723au-OnAuth23a-Use-ether_addr_copy.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,24 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:34 +0200
+Subject: [055/249] staging: rtl8723au: OnAuth23a(): Use ether_addr_copy()
+Origin: https://git.kernel.org/linus/ded7a20f827164bb7efc602f6f11e70cfa3e73e4
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 14193b4..bed7eb7 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -1087,7 +1087,7 @@ auth_fail:
+ 	pstat = &stat;
+ 	memset((char *)pstat, '\0', sizeof(stat));
+ 	pstat->auth_seq = 2;
+-	memcpy(pstat->hwaddr, sa, 6);
++	ether_addr_copy(pstat->hwaddr, sa);
+ 
+ 	issue_auth(padapter, pstat, (unsigned short)status);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0056-staging-rtl8723au-Get-rid-of-IW_ESSID_MAX_SIZE.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0056-staging-rtl8723au-Get-rid-of-IW_ESSID_MAX_SIZE.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,53 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:35 +0200
+Subject: [056/249] staging: rtl8723au: Get rid of IW_ESSID_MAX_SIZE
+Origin: https://git.kernel.org/linus/7b2e06a159a2398c6b03d38d5e023f98da8c53c6
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c     | 3 ++-
+ drivers/staging/rtl8723au/include/ieee80211.h     | 2 --
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 2 +-
+ 3 files changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index bed7eb7..59047ad 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -5945,7 +5945,8 @@ int sitesurvey_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 		for (i = 0; i < RTW_SSID_SCAN_AMOUNT; i++) {
+ 			if (pparm->ssid[i].ssid_len) {
+ 				memcpy(pmlmeext->sitesurvey_res.ssid[i].ssid,
+-				       pparm->ssid[i].ssid, IW_ESSID_MAX_SIZE);
++				       pparm->ssid[i].ssid,
++				       IEEE80211_MAX_SSID_LEN);
+ 				pmlmeext->sitesurvey_res.ssid[i].ssid_len =
+ 					pparm->ssid[i].ssid_len;
+ 			} else {
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index c2c57c7..43f002d 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -309,8 +309,6 @@ struct ieee80211_snap_hdr {
+ #define MAX_P2P_IE_LEN		256
+ #define MAX_WFD_IE_LEN		128
+ 
+-#define IW_ESSID_MAX_SIZE	32
+-
+ /*
+ join_res:
+ -1: authentication fail
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 2fdc2b5..5e05134 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -2020,7 +2020,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 		goto exit;
+ 	}
+ 
+-	if (sme->ssid_len > IW_ESSID_MAX_SIZE) {
++	if (sme->ssid_len > IEEE80211_MAX_SSID_LEN) {
+ 		ret = -E2BIG;
+ 		goto exit;
+ 	}

Added: dists/sid/linux/debian/patches/features/all/r8723au/0057-staging-rtl8723au-Make-rtw_is_same_ibss23a-return-bo.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0057-staging-rtl8723au-Make-rtw_is_same_ibss23a-return-bo.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,105 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:36 +0200
+Subject: [057/249] staging: rtl8723au: Make rtw_is_same_ibss23a() return bool
+Origin: https://git.kernel.org/linus/ec36ce29ca8e935d747ec0eddfa813da9324ee6d
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 44 ++++++++++++++++----------
+ drivers/staging/rtl8723au/core/rtw_mlme.c      |  6 ++--
+ drivers/staging/rtl8723au/include/rtw_mlme.h   |  4 +--
+ 3 files changed, 33 insertions(+), 21 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index 1d2ea4e..8d76748 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -188,26 +188,38 @@ int rtw_set_802_11_ssid23a(struct rtw_adapter* padapter,
+ 		    !memcmp(&pmlmepriv->assoc_ssid.ssid, ssid->ssid,
+ 			    ssid->ssid_len)) {
+ 			if (!check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
+-				RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+-					 ("Set SSID is the same ssid, fw_state = 0x%08x\n",
+-					  get_fwstate(pmlmepriv)));
++				RT_TRACE(_module_rtl871x_ioctl_set_c_,
++					 _drv_err_, ("New SSID is same SSID, "
++						     "fw_state = 0x%08x\n",
++						     get_fwstate(pmlmepriv)));
++
++				if (rtw_is_same_ibss23a(padapter, pnetwork)) {
++					/*
++					 * it means driver is in
++					 * WIFI_ADHOC_MASTER_STATE, we needn't
++					 * create bss again.
++					 */
++					goto release_mlme_lock;
++				}
+ 
+-				if (rtw_is_same_ibss23a(padapter, pnetwork) == false)
+-				{
+-					/* if in WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE, create bss or rejoin again */
+-					rtw_disassoc_cmd23a(padapter, 0, true);
++				/*
++				 * if in WIFI_ADHOC_MASTER_STATE |
++				 * WIFI_ADHOC_STATE, create bss or
++				 * rejoin again
++				 */
++				rtw_disassoc_cmd23a(padapter, 0, true);
+ 
+-					if (check_fwstate(pmlmepriv, _FW_LINKED))
+-						rtw_indicate_disconnect23a(padapter);
++				if (check_fwstate(pmlmepriv, _FW_LINKED))
++					rtw_indicate_disconnect23a(padapter);
+ 
+-					rtw_free_assoc_resources23a(padapter, 1);
++				rtw_free_assoc_resources23a(padapter, 1);
+ 
+-					if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
+-						_clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE);
+-						set_fwstate(pmlmepriv, WIFI_ADHOC_STATE);
+-					}
+-				} else {
+-					goto release_mlme_lock;/* it means driver is in WIFI_ADHOC_MASTER_STATE, we needn't create bss again. */
++				if (check_fwstate(pmlmepriv,
++						  WIFI_ADHOC_MASTER_STATE)) {
++					_clr_fwstate_(pmlmepriv,
++						      WIFI_ADHOC_MASTER_STATE);
++					set_fwstate(pmlmepriv,
++						    WIFI_ADHOC_STATE);
+ 				}
+ 			} else {
+ 				rtw_lps_ctrl_wk_cmd23a(padapter, LPS_CTRL_JOINBSS, 1);
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index bcc6893..2a0c43a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -334,10 +334,10 @@ static void rtw_free_network_nolock(struct mlme_priv *pmlmepriv,
+ 	_rtw_free_network23a(pmlmepriv, pnetwork);
+ }
+ 
+-int rtw_is_same_ibss23a(struct rtw_adapter *adapter,
+-			struct wlan_network *pnetwork)
++bool rtw_is_same_ibss23a(struct rtw_adapter *adapter,
++			 struct wlan_network *pnetwork)
+ {
+-	int ret = true;
++	int ret;
+ 	struct security_priv *psecuritypriv = &adapter->securitypriv;
+ 
+ 	if (psecuritypriv->dot11PrivacyAlgrthm != 0 &&
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index baac8da..c8e82bf 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -361,8 +361,8 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter,
+ void rtw_issue_addbareq_cmd23a(struct rtw_adapter *padapter,
+ 			    struct xmit_frame *pxmitframe);
+ 
+-int rtw_is_same_ibss23a(struct rtw_adapter *adapter,
+-		     struct wlan_network *pnetwork);
++bool rtw_is_same_ibss23a(struct rtw_adapter *adapter,
++			 struct wlan_network *pnetwork);
+ int is_same_network23a(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst);
+ 
+ void rtw23a_roaming(struct rtw_adapter *adapter,

Added: dists/sid/linux/debian/patches/features/all/r8723au/0058-staging-rtl8723au-cfg80211_rtw_connect-Check-correct.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0058-staging-rtl8723au-cfg80211_rtw_connect-Check-correct.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,25 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:37 +0200
+Subject: [058/249] staging: rtl8723au: cfg80211_rtw_connect(): Check correct
+ return value from rtw_set_802_11_ssid23a()
+Origin: https://git.kernel.org/linus/7c0e0636753ed98941eb4f904a03b2c6b5e5614d
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 5e05134..c116b21 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -2204,7 +2204,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 	/* rtw_set_802_11_encryption_mode(padapter,
+ 	   padapter->securitypriv.ndisencryptstatus); */
+ 
+-	if (rtw_set_802_11_ssid23a(padapter, &ndis_ssid) == false) {
++	if (rtw_set_802_11_ssid23a(padapter, &ndis_ssid) != _SUCCESS) {
+ 		ret = -1;
+ 		goto exit;
+ 	}

Added: dists/sid/linux/debian/patches/features/all/r8723au/0059-staging-rtl8723au-Fold-rtw_set_802_11_authentication.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0059-staging-rtl8723au-Fold-rtw_set_802_11_authentication.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,90 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:38 +0200
+Subject: [059/249] staging: rtl8723au: Fold
+ rtw_set_802_11_authentication_mode23a() into cfg80211_rtw_connect()
+Origin: https://git.kernel.org/linus/39dbc446a7168e4d7542d6523132ee44189d0ba2
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c    | 24 -----------------------
+ drivers/staging/rtl8723au/include/rtw_ioctl_set.h |  2 --
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 10 +++++++---
+ 3 files changed, 7 insertions(+), 29 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index 8d76748..5c3b561 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -343,30 +343,6 @@ exit:
+ 	return res;
+ }
+ 
+-int rtw_set_802_11_authentication_mode23a(struct rtw_adapter* padapter,
+-					  enum ndis_802_11_auth_mode authmode)
+-{
+-	struct security_priv *psecuritypriv = &padapter->securitypriv;
+-	int res;
+-
+-	RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+-		 ("set_802_11_auth.mode(): mode =%x\n", authmode));
+-
+-	psecuritypriv->ndisauthtype = authmode;
+-
+-	RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+-		 ("rtw_set_802_11_authentication_mode23a:"
+-		  "psecuritypriv->ndisauthtype =%d",
+-		  psecuritypriv->ndisauthtype));
+-
+-	if (psecuritypriv->ndisauthtype > 3)
+-		psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_8021X;
+-
+-	res = rtw_set_auth23a(padapter, psecuritypriv);
+-
+-	return res;
+-}
+-
+ /*
+ * rtw_get_cur_max_rate23a -
+ * @adapter: pointer to _adapter structure
+diff --git a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
+index 040543b..bc5805a 100644
+--- a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
++++ b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
+@@ -17,8 +17,6 @@
+ 
+ #include <drv_types.h>
+ 
+-int rtw_set_802_11_authentication_mode23a(struct rtw_adapter *pdapter,
+-					  enum ndis_802_11_auth_mode authmode);
+ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter,
+ 				      struct cfg80211_ssid *pssid,
+ 				      int ssid_max_num);
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index c116b21..0628416 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -1987,7 +1987,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 	int ret = 0;
+ 	struct list_head *phead, *plist, *ptmp;
+ 	struct wlan_network *pnetwork = NULL;
+-	enum ndis_802_11_auth_mode authmode;
+ 	struct cfg80211_ssid ndis_ssid;
+ 	u8 *dst_ssid;
+ 	u8 *src_ssid;
+@@ -2198,8 +2197,13 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 			goto exit;
+ 	}
+ 
+-	authmode = psecuritypriv->ndisauthtype;
+-	rtw_set_802_11_authentication_mode23a(padapter, authmode);
++	if (psecuritypriv->ndisauthtype > 3)
++		psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_8021X;
++
++	if (rtw_set_auth23a(padapter, psecuritypriv) != _SUCCESS) {
++		ret = -EBUSY;
++		goto exit;
++	}
+ 
+ 	/* rtw_set_802_11_encryption_mode(padapter,
+ 	   padapter->securitypriv.ndisencryptstatus); */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0060-staging-rtl8723au-Move-rtw_set_802_11_ssid23a-to-ioc.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0060-staging-rtl8723au-Move-rtw_set_802_11_ssid23a-to-ioc.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,325 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:39 +0200
+Subject: [060/249] staging: rtl8723au: Move rtw_set_802_11_ssid23a() to
+ ioctl_cfg80211.c
+Origin: https://git.kernel.org/linus/97c4361d50e833a0c178cf425590a15e9663f3d0
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c    | 135 ----------------------
+ drivers/staging/rtl8723au/include/rtw_ioctl_set.h |   2 -
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 134 ++++++++++++++++++++-
+ 3 files changed, 132 insertions(+), 139 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index 5c3b561..7b0d3db 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -151,141 +151,6 @@ exit:
+ 	return ret;
+ }
+ 
+-int rtw_set_802_11_ssid23a(struct rtw_adapter* padapter,
+-			   struct cfg80211_ssid *ssid)
+-{
+-	int status = _SUCCESS;
+-	u32 cur_time = 0;
+-
+-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+-	struct wlan_network *pnetwork = &pmlmepriv->cur_network;
+-
+-
+-
+-	DBG_8723A_LEVEL(_drv_always_, "set ssid [%s] fw_state = 0x%08x\n",
+-			ssid->ssid, get_fwstate(pmlmepriv));
+-
+-	if (padapter->hw_init_completed == false) {
+-		RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+-			 ("set_ssid: hw_init_completed == false =>exit!!!\n"));
+-		status = _FAIL;
+-		goto exit;
+-	}
+-
+-	spin_lock_bh(&pmlmepriv->lock);
+-
+-	DBG_8723A("Set SSID under fw_state = 0x%08x\n", get_fwstate(pmlmepriv));
+-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
+-		goto handle_tkip_countermeasure;
+-	else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING))
+-		goto release_mlme_lock;
+-
+-	if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE)) {
+-		RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+-			 ("set_ssid: _FW_LINKED||WIFI_ADHOC_MASTER_STATE\n"));
+-
+-		if ((pmlmepriv->assoc_ssid.ssid_len == ssid->ssid_len) &&
+-		    !memcmp(&pmlmepriv->assoc_ssid.ssid, ssid->ssid,
+-			    ssid->ssid_len)) {
+-			if (!check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
+-				RT_TRACE(_module_rtl871x_ioctl_set_c_,
+-					 _drv_err_, ("New SSID is same SSID, "
+-						     "fw_state = 0x%08x\n",
+-						     get_fwstate(pmlmepriv)));
+-
+-				if (rtw_is_same_ibss23a(padapter, pnetwork)) {
+-					/*
+-					 * it means driver is in
+-					 * WIFI_ADHOC_MASTER_STATE, we needn't
+-					 * create bss again.
+-					 */
+-					goto release_mlme_lock;
+-				}
+-
+-				/*
+-				 * if in WIFI_ADHOC_MASTER_STATE |
+-				 * WIFI_ADHOC_STATE, create bss or
+-				 * rejoin again
+-				 */
+-				rtw_disassoc_cmd23a(padapter, 0, true);
+-
+-				if (check_fwstate(pmlmepriv, _FW_LINKED))
+-					rtw_indicate_disconnect23a(padapter);
+-
+-				rtw_free_assoc_resources23a(padapter, 1);
+-
+-				if (check_fwstate(pmlmepriv,
+-						  WIFI_ADHOC_MASTER_STATE)) {
+-					_clr_fwstate_(pmlmepriv,
+-						      WIFI_ADHOC_MASTER_STATE);
+-					set_fwstate(pmlmepriv,
+-						    WIFI_ADHOC_STATE);
+-				}
+-			} else {
+-				rtw_lps_ctrl_wk_cmd23a(padapter, LPS_CTRL_JOINBSS, 1);
+-			}
+-		} else {
+-			RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+-				 ("Set SSID not the same ssid\n"));
+-			RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+-				 ("set_ssid =[%s] len = 0x%x\n", ssid->ssid,
+-				  (unsigned int)ssid->ssid_len));
+-			RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+-				 ("assoc_ssid =[%s] len = 0x%x\n",
+-				  pmlmepriv->assoc_ssid.ssid,
+-				  (unsigned int)pmlmepriv->assoc_ssid.ssid_len));
+-
+-			rtw_disassoc_cmd23a(padapter, 0, true);
+-
+-			if (check_fwstate(pmlmepriv, _FW_LINKED))
+-				rtw_indicate_disconnect23a(padapter);
+-
+-			rtw_free_assoc_resources23a(padapter, 1);
+-
+-			if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
+-				_clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE);
+-				set_fwstate(pmlmepriv, WIFI_ADHOC_STATE);
+-			}
+-		}
+-	}
+-
+-handle_tkip_countermeasure:
+-
+-	if (padapter->securitypriv.btkip_countermeasure == true) {
+-		cur_time = jiffies;
+-
+-		if ((cur_time - padapter->securitypriv.btkip_countermeasure_time) > 60 * HZ)
+-		{
+-			padapter->securitypriv.btkip_countermeasure = false;
+-			padapter->securitypriv.btkip_countermeasure_time = 0;
+-		}
+-		else
+-		{
+-			status = _FAIL;
+-			goto release_mlme_lock;
+-		}
+-	}
+-
+-	memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(struct cfg80211_ssid));
+-	pmlmepriv->assoc_by_bssid = false;
+-
+-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
+-		pmlmepriv->to_join = true;
+-	else
+-		status = rtw_do_join23a(padapter);
+-
+-release_mlme_lock:
+-	spin_unlock_bh(&pmlmepriv->lock);
+-
+-exit:
+-	RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+-		("-rtw_set_802_11_ssid23a: status =%d\n", status));
+-
+-
+-
+-	return status;
+-}
+-
+ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter,
+ 				      struct cfg80211_ssid *pssid,
+ 				      int ssid_max_num)
+diff --git a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
+index bc5805a..14a36f5 100644
+--- a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
++++ b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
+@@ -20,8 +20,6 @@
+ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter,
+ 				      struct cfg80211_ssid *pssid,
+ 				      int ssid_max_num);
+-int rtw_set_802_11_ssid23a(struct rtw_adapter * padapter,
+-			   struct cfg80211_ssid * ssid);
+ 
+ u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter);
+ s32 FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 0628416..30473d0 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -1981,6 +1981,136 @@ exit:
+ 	return res;
+ }
+ 
++static int rtw_set_ssid(struct rtw_adapter* padapter,
++			struct cfg80211_ssid *ssid)
++{
++	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
++	struct wlan_network *pnetwork = &pmlmepriv->cur_network;
++	int status = _SUCCESS;
++	u32 cur_time = 0;
++
++	DBG_8723A_LEVEL(_drv_always_, "set ssid [%s] fw_state = 0x%08x\n",
++			ssid->ssid, get_fwstate(pmlmepriv));
++
++	if (padapter->hw_init_completed == false) {
++		RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
++			 ("set_ssid: hw_init_completed == false =>exit!!!\n"));
++		status = _FAIL;
++		goto exit;
++	}
++
++	spin_lock_bh(&pmlmepriv->lock);
++
++	DBG_8723A("Set SSID under fw_state = 0x%08x\n", get_fwstate(pmlmepriv));
++	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
++		goto handle_tkip_countermeasure;
++	else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING))
++		goto release_mlme_lock;
++
++	if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE)) {
++		RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
++			 ("set_ssid: _FW_LINKED||WIFI_ADHOC_MASTER_STATE\n"));
++
++		if (pmlmepriv->assoc_ssid.ssid_len == ssid->ssid_len &&
++		    !memcmp(&pmlmepriv->assoc_ssid.ssid, ssid->ssid,
++			    ssid->ssid_len)) {
++			if (!check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
++				RT_TRACE(_module_rtl871x_ioctl_set_c_,
++					 _drv_err_, ("New SSID is same SSID, "
++						     "fw_state = 0x%08x\n",
++						     get_fwstate(pmlmepriv)));
++
++				if (rtw_is_same_ibss23a(padapter, pnetwork)) {
++					/*
++					 * it means driver is in
++					 * WIFI_ADHOC_MASTER_STATE, we needn't
++					 * create bss again.
++					 */
++					goto release_mlme_lock;
++				}
++
++				/*
++				 * if in WIFI_ADHOC_MASTER_STATE |
++				 * WIFI_ADHOC_STATE, create bss or
++				 * rejoin again
++				 */
++				rtw_disassoc_cmd23a(padapter, 0, true);
++
++				if (check_fwstate(pmlmepriv, _FW_LINKED))
++					rtw_indicate_disconnect23a(padapter);
++
++				rtw_free_assoc_resources23a(padapter, 1);
++
++				if (check_fwstate(pmlmepriv,
++						  WIFI_ADHOC_MASTER_STATE)) {
++					_clr_fwstate_(pmlmepriv,
++						      WIFI_ADHOC_MASTER_STATE);
++					set_fwstate(pmlmepriv,
++						    WIFI_ADHOC_STATE);
++				}
++			} else {
++				rtw_lps_ctrl_wk_cmd23a(padapter,
++						       LPS_CTRL_JOINBSS, 1);
++			}
++		} else {
++			RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
++				 ("Set SSID not the same ssid\n"));
++			RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
++				 ("set_ssid =[%s] len = 0x%x\n", ssid->ssid,
++				  ssid->ssid_len));
++			RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
++				 ("assoc_ssid =[%s] len = 0x%x\n",
++				  pmlmepriv->assoc_ssid.ssid,
++				  pmlmepriv->assoc_ssid.ssid_len));
++
++			rtw_disassoc_cmd23a(padapter, 0, true);
++
++			if (check_fwstate(pmlmepriv, _FW_LINKED))
++				rtw_indicate_disconnect23a(padapter);
++
++			rtw_free_assoc_resources23a(padapter, 1);
++
++			if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
++				_clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE);
++				set_fwstate(pmlmepriv, WIFI_ADHOC_STATE);
++			}
++		}
++	}
++
++handle_tkip_countermeasure:
++
++	if (padapter->securitypriv.btkip_countermeasure == true) {
++		cur_time = jiffies;
++
++		if ((cur_time -
++		     padapter->securitypriv.btkip_countermeasure_time) >
++		    60 * HZ) {
++			padapter->securitypriv.btkip_countermeasure = false;
++			padapter->securitypriv.btkip_countermeasure_time = 0;
++		} else {
++			status = _FAIL;
++			goto release_mlme_lock;
++		}
++	}
++
++	memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(struct cfg80211_ssid));
++	pmlmepriv->assoc_by_bssid = false;
++
++	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
++		pmlmepriv->to_join = true;
++	else
++		status = rtw_do_join23a(padapter);
++
++release_mlme_lock:
++	spin_unlock_bh(&pmlmepriv->lock);
++
++exit:
++	RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
++		 ("-%s: status =%d\n", __func__, status));
++
++	return status;
++}
++
+ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 				struct cfg80211_connect_params *sme)
+ {
+@@ -2208,8 +2338,8 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 	/* rtw_set_802_11_encryption_mode(padapter,
+ 	   padapter->securitypriv.ndisencryptstatus); */
+ 
+-	if (rtw_set_802_11_ssid23a(padapter, &ndis_ssid) != _SUCCESS) {
+-		ret = -1;
++	if (rtw_set_ssid(padapter, &ndis_ssid) != _SUCCESS) {
++		ret = -EBUSY;
+ 		goto exit;
+ 	}
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0061-staging-rtl8723au-cfg80211_rtw_connect-Clean-up-vari.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0061-staging-rtl8723au-cfg80211_rtw_connect-Clean-up-vari.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,140 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:40 +0200
+Subject: [061/249] staging: rtl8723au: cfg80211_rtw_connect(): Clean up
+ various bits
+Origin: https://git.kernel.org/linus/c5178b0bc2ea2e72d45a90ae346a9b2fda0b5f08
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 53 +++++++++--------------
+ 1 file changed, 20 insertions(+), 33 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 30473d0..b0d959e 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -2117,11 +2117,9 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 	int ret = 0;
+ 	struct list_head *phead, *plist, *ptmp;
+ 	struct wlan_network *pnetwork = NULL;
+-	struct cfg80211_ssid ndis_ssid;
++	struct cfg80211_ssid ssid;
+ 	u8 *dst_ssid;
+-	u8 *src_ssid;
+ 	u8 *dst_bssid;
+-	const u8 *src_bssid;
+ 	/* u8 matched_by_bssid = false; */
+ 	/* u8 matched_by_ssid = false; */
+ 	u8 matched = false;
+@@ -2144,21 +2142,13 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 		goto exit;
+ 	}
+ 
+-	if (!sme->ssid || !sme->ssid_len) {
++	if (!sme->ssid || !sme->ssid_len ||
++	    sme->ssid_len > IEEE80211_MAX_SSID_LEN) {
+ 		ret = -EINVAL;
+ 		goto exit;
+ 	}
+ 
+-	if (sme->ssid_len > IEEE80211_MAX_SSID_LEN) {
+-		ret = -E2BIG;
+-		goto exit;
+-	}
+-
+-	memset(&ndis_ssid, 0, sizeof(struct cfg80211_ssid));
+-	ndis_ssid.ssid_len = sme->ssid_len;
+-	memcpy(ndis_ssid.ssid, sme->ssid, sme->ssid_len);
+-
+-	DBG_8723A("ssid =%s, len =%zu\n", ndis_ssid.ssid, sme->ssid_len);
++	DBG_8723A("ssid =%s, len =%zu\n", sme->ssid, sme->ssid_len);
+ 
+ 	if (sme->bssid)
+ 		DBG_8723A("bssid =" MAC_FMT "\n", MAC_ARG(sme->bssid));
+@@ -2173,6 +2163,8 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 		rtw_scan_abort23a(padapter);
+ 	}
+ 
++	memset(ssid.ssid, 0, sizeof(struct cfg80211_ssid));
++
+ 	spin_lock_bh(&queue->lock);
+ 
+ 	phead = get_list_head(queue);
+@@ -2197,28 +2189,24 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 		}
+ 
+ 		if (sme->bssid) {
+-			src_bssid = sme->bssid;
+-
+-			if (ether_addr_equal(dst_bssid, src_bssid)) {
++			if (ether_addr_equal(dst_bssid, sme->bssid)) {
+ 				DBG_8723A("matched by bssid\n");
+ 
+-				ndis_ssid.ssid_len =
+-				    pnetwork->network.Ssid.ssid_len;
+-				memcpy(ndis_ssid.ssid,
+-				       pnetwork->network.Ssid.ssid,
++				memcpy(ssid.ssid, pnetwork->network.Ssid.ssid,
+ 				       pnetwork->network.Ssid.ssid_len);
++				ssid.ssid_len = pnetwork->network.Ssid.ssid_len;
+ 
+ 				matched = true;
+ 				break;
+ 			}
+-
+ 		} else if (sme->ssid && sme->ssid_len) {
+-			src_ssid = ndis_ssid.ssid;
+-
+-			if ((!memcmp(dst_ssid, src_ssid, ndis_ssid.ssid_len)) &&
+-			    (pnetwork->network.Ssid.ssid_len ==
+-			     ndis_ssid.ssid_len)) {
++			if (!memcmp(dst_ssid, sme->ssid, sme->ssid_len) &&
++			    pnetwork->network.Ssid.ssid_len == sme->ssid_len) {
+ 				DBG_8723A("matched by ssid\n");
++
++				memcpy(ssid.ssid, sme->ssid, sme->ssid_len);
++				ssid.ssid_len = sme->ssid_len;
++
+ 				matched = true;
+ 				break;
+ 			}
+@@ -2227,7 +2215,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 
+ 	spin_unlock_bh(&queue->lock);
+ 
+-	if (!matched || (pnetwork == NULL)) {
++	if (!matched || !pnetwork) {
+ 		ret = -ENOENT;
+ 		DBG_8723A("connect, matched == false, goto exit\n");
+ 		goto exit;
+@@ -2245,9 +2233,8 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 	psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Open;
+ 	psecuritypriv->ndisauthtype = Ndis802_11AuthModeOpen;
+ 
+-	ret =
+-	    rtw_cfg80211_set_wpa_version(psecuritypriv,
+-					 sme->crypto.wpa_versions);
++	ret = rtw_cfg80211_set_wpa_version(psecuritypriv,
++					   sme->crypto.wpa_versions);
+ 	if (ret < 0)
+ 		goto exit;
+ 
+@@ -2318,7 +2305,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 	ret = rtw_cfg80211_set_cipher(psecuritypriv,
+ 				      sme->crypto.cipher_group, false);
+ 	if (ret < 0)
+-		return ret;
++		goto exit;
+ 
+ 	if (sme->crypto.n_akm_suites) {
+ 		ret = rtw_cfg80211_set_key_mgt(psecuritypriv,
+@@ -2338,7 +2325,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 	/* rtw_set_802_11_encryption_mode(padapter,
+ 	   padapter->securitypriv.ndisencryptstatus); */
+ 
+-	if (rtw_set_ssid(padapter, &ndis_ssid) != _SUCCESS) {
++	if (rtw_set_ssid(padapter, &ssid) != _SUCCESS) {
+ 		ret = -EBUSY;
+ 		goto exit;
+ 	}

Added: dists/sid/linux/debian/patches/features/all/r8723au/0062-staging-rtl8723au-cfg80211_rtw_connect-Remove-obfusc.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0062-staging-rtl8723au-cfg80211_rtw_connect-Remove-obfusc.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,58 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:41 +0200
+Subject: [062/249] staging: rtl8723au: cfg80211_rtw_connect(): Remove
+ obfuscating pointers
+Origin: https://git.kernel.org/linus/9ab98d42401d50d6ab5f6ef59e1d63c486391f1c
+
+dst_ssid and dst_bssid were just obfuscating that we were in fact
+looking at pnetwork.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 11 ++++-------
+ 1 file changed, 4 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index b0d959e..281b48c 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -2118,8 +2118,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 	struct list_head *phead, *plist, *ptmp;
+ 	struct wlan_network *pnetwork = NULL;
+ 	struct cfg80211_ssid ssid;
+-	u8 *dst_ssid;
+-	u8 *dst_bssid;
+ 	/* u8 matched_by_bssid = false; */
+ 	/* u8 matched_by_ssid = false; */
+ 	u8 matched = false;
+@@ -2172,9 +2170,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 	list_for_each_safe(plist, ptmp, phead) {
+ 		pnetwork = container_of(plist, struct wlan_network, list);
+ 
+-		dst_ssid = pnetwork->network.Ssid.ssid;
+-		dst_bssid = pnetwork->network.MacAddress;
+-
+ 		if (sme->bssid) {
+ 			if (!ether_addr_equal(pnetwork->network.MacAddress,
+ 					      sme->bssid))
+@@ -2189,7 +2184,8 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 		}
+ 
+ 		if (sme->bssid) {
+-			if (ether_addr_equal(dst_bssid, sme->bssid)) {
++			if (ether_addr_equal(pnetwork->network.MacAddress,
++					     sme->bssid)) {
+ 				DBG_8723A("matched by bssid\n");
+ 
+ 				memcpy(ssid.ssid, pnetwork->network.Ssid.ssid,
+@@ -2200,7 +2196,8 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 				break;
+ 			}
+ 		} else if (sme->ssid && sme->ssid_len) {
+-			if (!memcmp(dst_ssid, sme->ssid, sme->ssid_len) &&
++			if (!memcmp(pnetwork->network.Ssid.ssid,
++				    sme->ssid, sme->ssid_len) &&
+ 			    pnetwork->network.Ssid.ssid_len == sme->ssid_len) {
+ 				DBG_8723A("matched by ssid\n");
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0063-staging-rtl8723au-cfg80211_rtw_connect-Simplify-ssid.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0063-staging-rtl8723au-cfg80211_rtw_connect-Simplify-ssid.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,52 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:42 +0200
+Subject: [063/249] staging: rtl8723au: cfg80211_rtw_connect(): Simplify ssid
+ preparation
+Origin: https://git.kernel.org/linus/9cb08ff32c386cda497f83635817cd328478a308
+
+Since we just matched sme->{ssid,ssid_len} to
+pnetwork->network.Ssid.{ssid,ssid_len} we can simplify the copy and
+move it to just before the call to rtw_set_ssid().
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 11 ++++-------
+ 1 file changed, 4 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 281b48c..0a6922d 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -2188,10 +2188,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 					     sme->bssid)) {
+ 				DBG_8723A("matched by bssid\n");
+ 
+-				memcpy(ssid.ssid, pnetwork->network.Ssid.ssid,
+-				       pnetwork->network.Ssid.ssid_len);
+-				ssid.ssid_len = pnetwork->network.Ssid.ssid_len;
+-
+ 				matched = true;
+ 				break;
+ 			}
+@@ -2201,9 +2197,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 			    pnetwork->network.Ssid.ssid_len == sme->ssid_len) {
+ 				DBG_8723A("matched by ssid\n");
+ 
+-				memcpy(ssid.ssid, sme->ssid, sme->ssid_len);
+-				ssid.ssid_len = sme->ssid_len;
+-
+ 				matched = true;
+ 				break;
+ 			}
+@@ -2322,6 +2315,10 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 	/* rtw_set_802_11_encryption_mode(padapter,
+ 	   padapter->securitypriv.ndisencryptstatus); */
+ 
++	memcpy(ssid.ssid, pnetwork->network.Ssid.ssid,
++	       pnetwork->network.Ssid.ssid_len);
++	ssid.ssid_len = pnetwork->network.Ssid.ssid_len;
++
+ 	if (rtw_set_ssid(padapter, &ssid) != _SUCCESS) {
+ 		ret = -EBUSY;
+ 		goto exit;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0064-staging-rtl8723au-Pass-a-struct-wlan_network-to-rtw_.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0064-staging-rtl8723au-Pass-a-struct-wlan_network-to-rtw_.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,107 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:43 +0200
+Subject: [064/249] staging: rtl8723au: Pass a struct wlan_network to
+ rtw_set_ssid()
+Origin: https://git.kernel.org/linus/e73d82efa4583e5ecaf598d85341403806a16e62
+
+There is no point copying the ssid out of struct wlan_network when we
+can just pass on the whole struct.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 32 +++++++++++------------
+ 1 file changed, 15 insertions(+), 17 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 0a6922d..c03181d 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -1981,8 +1981,8 @@ exit:
+ 	return res;
+ }
+ 
+-static int rtw_set_ssid(struct rtw_adapter* padapter,
+-			struct cfg80211_ssid *ssid)
++static int rtw_set_ssid(struct rtw_adapter *padapter,
++			struct wlan_network *newnetwork)
+ {
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct wlan_network *pnetwork = &pmlmepriv->cur_network;
+@@ -1990,7 +1990,7 @@ static int rtw_set_ssid(struct rtw_adapter* padapter,
+ 	u32 cur_time = 0;
+ 
+ 	DBG_8723A_LEVEL(_drv_always_, "set ssid [%s] fw_state = 0x%08x\n",
+-			ssid->ssid, get_fwstate(pmlmepriv));
++			newnetwork->network.Ssid.ssid, get_fwstate(pmlmepriv));
+ 
+ 	if (padapter->hw_init_completed == false) {
+ 		RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+@@ -2011,9 +2011,11 @@ static int rtw_set_ssid(struct rtw_adapter* padapter,
+ 		RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+ 			 ("set_ssid: _FW_LINKED||WIFI_ADHOC_MASTER_STATE\n"));
+ 
+-		if (pmlmepriv->assoc_ssid.ssid_len == ssid->ssid_len &&
+-		    !memcmp(&pmlmepriv->assoc_ssid.ssid, ssid->ssid,
+-			    ssid->ssid_len)) {
++		if (pmlmepriv->assoc_ssid.ssid_len ==
++		    newnetwork->network.Ssid.ssid_len &&
++		    !memcmp(&pmlmepriv->assoc_ssid.ssid,
++			    newnetwork->network.Ssid.ssid,
++			    newnetwork->network.Ssid.ssid_len)) {
+ 			if (!check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
+ 				RT_TRACE(_module_rtl871x_ioctl_set_c_,
+ 					 _drv_err_, ("New SSID is same SSID, "
+@@ -2056,8 +2058,9 @@ static int rtw_set_ssid(struct rtw_adapter* padapter,
+ 			RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+ 				 ("Set SSID not the same ssid\n"));
+ 			RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+-				 ("set_ssid =[%s] len = 0x%x\n", ssid->ssid,
+-				  ssid->ssid_len));
++				 ("set_ssid =[%s] len = 0x%x\n",
++				  newnetwork->network.Ssid.ssid,
++				  newnetwork->network.Ssid.ssid_len));
+ 			RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+ 				 ("assoc_ssid =[%s] len = 0x%x\n",
+ 				  pmlmepriv->assoc_ssid.ssid,
+@@ -2093,7 +2096,9 @@ handle_tkip_countermeasure:
+ 		}
+ 	}
+ 
+-	memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(struct cfg80211_ssid));
++	memcpy(&pmlmepriv->assoc_ssid, &newnetwork->network.Ssid,
++	       sizeof(struct cfg80211_ssid));
++
+ 	pmlmepriv->assoc_by_bssid = false;
+ 
+ 	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
+@@ -2117,7 +2122,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 	int ret = 0;
+ 	struct list_head *phead, *plist, *ptmp;
+ 	struct wlan_network *pnetwork = NULL;
+-	struct cfg80211_ssid ssid;
+ 	/* u8 matched_by_bssid = false; */
+ 	/* u8 matched_by_ssid = false; */
+ 	u8 matched = false;
+@@ -2161,8 +2165,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 		rtw_scan_abort23a(padapter);
+ 	}
+ 
+-	memset(ssid.ssid, 0, sizeof(struct cfg80211_ssid));
+-
+ 	spin_lock_bh(&queue->lock);
+ 
+ 	phead = get_list_head(queue);
+@@ -2315,11 +2317,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
+ 	/* rtw_set_802_11_encryption_mode(padapter,
+ 	   padapter->securitypriv.ndisencryptstatus); */
+ 
+-	memcpy(ssid.ssid, pnetwork->network.Ssid.ssid,
+-	       pnetwork->network.Ssid.ssid_len);
+-	ssid.ssid_len = pnetwork->network.Ssid.ssid_len;
+-
+-	if (rtw_set_ssid(padapter, &ssid) != _SUCCESS) {
++	if (rtw_set_ssid(padapter, pnetwork) != _SUCCESS) {
+ 		ret = -EBUSY;
+ 		goto exit;
+ 	}

Added: dists/sid/linux/debian/patches/features/all/r8723au/0065-staging-rtl8723au-rtw_set_ssid-This-is-never-called-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0065-staging-rtl8723au-rtw_set_ssid-This-is-never-called-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,25 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:44 +0200
+Subject: [065/249] staging: rtl8723au: rtw_set_ssid(): This is never called
+ with _FW_UNDER_LINKING
+Origin: https://git.kernel.org/linus/70fbc1a8a191bb97c4a38ea105a92dd6cd20a140
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index c03181d..5a8b88c 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -2004,8 +2004,6 @@ static int rtw_set_ssid(struct rtw_adapter *padapter,
+ 	DBG_8723A("Set SSID under fw_state = 0x%08x\n", get_fwstate(pmlmepriv));
+ 	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
+ 		goto handle_tkip_countermeasure;
+-	else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING))
+-		goto release_mlme_lock;
+ 
+ 	if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE)) {
+ 		RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,

Added: dists/sid/linux/debian/patches/features/all/r8723au/0066-staging-rtl8723au-rtw_cfg80211_add_wep-Use-WLAN_KEY_.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0066-staging-rtl8723au-rtw_cfg80211_add_wep-Use-WLAN_KEY_.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,31 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:45 +0200
+Subject: [066/249] staging: rtl8723au: rtw_cfg80211_add_wep(): Use
+ WLAN_KEY_LEN_*
+Origin: https://git.kernel.org/linus/4d9c63bbd207b20ae648bd6bd3ebcf6e52619616
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 5a8b88c..9c36f6c 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -1931,12 +1931,12 @@ static int rtw_cfg80211_add_wep(struct rtw_adapter *padapter,
+ 	}
+ 
+ 	switch (wep->keylen) {
+-	case 5:
++	case WLAN_KEY_LEN_WEP40:
+ 		psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP40;
+ 		RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+ 			 ("%s:wep->KeyLength = 5\n", __func__));
+ 		break;
+-	case 13:
++	case WLAN_KEY_LEN_WEP104:
+ 		psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP104;
+ 		RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+ 			 ("%s:wep->KeyLength = 13\n", __func__));

Added: dists/sid/linux/debian/patches/features/all/r8723au/0067-staging-rtl8723au-rtw_do_join23a-Use-correct-error-r.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0067-staging-rtl8723au-rtw_do_join23a-Use-correct-error-r.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,27 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:46 +0200
+Subject: [067/249] staging: rtl8723au: rtw_do_join23a(): Use correct error
+ return values
+Origin: https://git.kernel.org/linus/be82728e9c10542688dfc0810afa38fd47f4a06b
+
+Don't mix true/fail with _SUCCESS/_FAIL as return value
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index 7b0d3db..28cfea5 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -109,7 +109,7 @@ int rtw_do_join23a(struct rtw_adapter *padapter)
+ 						 _drv_err_,
+ 						 ("***Error =>do_goin: rtw_creat"
+ 						  "ebss_cmd status FAIL***\n"));
+-					ret =  false;
++					ret = _FAIL;
+ 					goto exit;
+ 				}
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0068-staging-rtl8723au-Minor-debug-message-fixup.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0068-staging-rtl8723au-Minor-debug-message-fixup.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,34 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:47 +0200
+Subject: [068/249] staging: rtl8723au: Minor debug message fixup
+Origin: https://git.kernel.org/linus/2febc8679edbe1f885bd2aedc548ff383853465b
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 2a0c43a..31cf1ac 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -1771,7 +1771,7 @@ int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv)
+ 		pnetwork = container_of(plist, struct wlan_network, list);
+ 		if (!pnetwork) {
+ 			RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
+-				 ("%s return _FAIL:(pnetwork == NULL)\n",
++				 ("%s: return _FAIL:(pnetwork == NULL)\n",
+ 				  __func__));
+ 			ret = _FAIL;
+ 			goto exit;
+@@ -1793,8 +1793,7 @@ int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv)
+ 
+ 	/*  check for situation of  _FW_LINKED */
+ 	if (check_fwstate(pmlmepriv, _FW_LINKED)) {
+-		DBG_8723A("%s: _FW_LINKED while ask_for_joinbss!!!\n",
+-			  __func__);
++		DBG_8723A("%s: _FW_LINKED while ask_for_joinbss!\n", __func__);
+ 
+ 		rtw_disassoc_cmd23a(adapter, 0, true);
+ 		rtw_indicate_disconnect23a(adapter);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0069-staging-rtl8723au-Don-t-prepend-debug-console-messag.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0069-staging-rtl8723au-Don-t-prepend-debug-console-messag.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,25 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:48 +0200
+Subject: [069/249] staging: rtl8723au: Don't prepend debug console messages
+ with 'ERROR '
+Origin: https://git.kernel.org/linus/fa862a7f799fcf60f9e0aed9c04fbfdeae518668
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/rtw_debug.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/include/rtw_debug.h b/drivers/staging/rtl8723au/include/rtw_debug.h
+index a69d6e2..b6b0173 100644
+--- a/drivers/staging/rtl8723au/include/rtw_debug.h
++++ b/drivers/staging/rtl8723au/include/rtw_debug.h
+@@ -146,7 +146,7 @@
+ #define DBG_8723A_LEVEL(_level, fmt, arg...)				\
+ 	do {								\
+ 		if (_level <= GlobalDebugLevel23A)				\
+-			pr_info(DRIVER_PREFIX"ERROR " fmt, ##arg);\
++			pr_info(DRIVER_PREFIX fmt, ##arg);\
+ 	} while (0)
+ 
+ #define DBG_8723A(...)							\

Added: dists/sid/linux/debian/patches/features/all/r8723au/0070-staging-rtl8723au-Introduce-rtw_select_candidate_fro.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0070-staging-rtl8723au-Introduce-rtw_select_candidate_fro.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,89 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:49 +0200
+Subject: [070/249] staging: rtl8723au: Introduce
+ rtw_select_candidate_from_queue()
+Origin: https://git.kernel.org/linus/0e634a029b4397c5a045f1d26fad6b7458386738
+
+This splits a portion of rtw_select_and_join_from_scanned_queue23a()
+into rtw_select_candidate_from_queue()
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 31 +++++++++++++++++++++----------
+ 1 file changed, 21 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 31cf1ac..9248f48 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -27,6 +27,9 @@
+ #include <rtw_ioctl_set.h>
+ #include <rtw_sreset.h>
+ 
++static struct wlan_network *
++rtw_select_candidate_from_queue(struct mlme_priv *pmlmepriv);
++
+ static void rtw_init_mlme_timer(struct rtw_adapter *padapter)
+ {
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+@@ -1754,18 +1757,15 @@ pmlmepriv->lock
+ 
+ */
+ 
+-int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv)
++static struct wlan_network *
++rtw_select_candidate_from_queue(struct mlme_priv *pmlmepriv)
+ {
+-	int ret;
+-	struct list_head *phead, *plist, *ptmp;
+-	struct rtw_adapter *adapter;
++	struct wlan_network *pnetwork, *candidate = NULL;
+ 	struct rtw_queue *queue = &pmlmepriv->scanned_queue;
+-	struct wlan_network *pnetwork;
+-	struct wlan_network *candidate = NULL;
++	struct list_head *phead, *plist, *ptmp;
+ 
+ 	spin_lock_bh(&pmlmepriv->scanned_queue.lock);
+ 	phead = get_list_head(queue);
+-	adapter = pmlmepriv->nic_hdl;
+ 
+ 	list_for_each_safe(plist, ptmp, phead) {
+ 		pnetwork = container_of(plist, struct wlan_network, list);
+@@ -1773,13 +1773,26 @@ int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv)
+ 			RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
+ 				 ("%s: return _FAIL:(pnetwork == NULL)\n",
+ 				  __func__));
+-			ret = _FAIL;
+ 			goto exit;
+ 		}
+ 
+ 		rtw_check_join_candidate(pmlmepriv, &candidate, pnetwork);
+ 	}
+ 
++exit:
++	spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
++	return candidate;
++}
++
++int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv)
++{
++	struct rtw_adapter *adapter;
++	struct wlan_network *candidate = NULL;
++	int ret;
++
++	adapter = pmlmepriv->nic_hdl;
++
++	candidate = rtw_select_candidate_from_queue(pmlmepriv);
+ 	if (!candidate) {
+ 		DBG_8723A("%s: return _FAIL(candidate == NULL)\n", __func__);
+ 		ret = _FAIL;
+@@ -1803,8 +1816,6 @@ int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv)
+ 	ret = rtw_joinbss_cmd23a(adapter, candidate);
+ 
+ exit:
+-	spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
+-
+ 	return ret;
+ }
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0071-staging-rtl8723au-Introduce-rtw_do_join_network.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0071-staging-rtl8723au-Introduce-rtw_do_join_network.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,119 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:50 +0200
+Subject: [071/249] staging: rtl8723au: Introduce rtw_do_join_network()
+Origin: https://git.kernel.org/linus/b66dad2d502080d05320b74f38d247bf1a9993fa
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c |  2 --
+ drivers/staging/rtl8723au/core/rtw_mlme.c      | 46 ++++++++++++++++----------
+ drivers/staging/rtl8723au/include/rtw_mlme.h   |  2 ++
+ 3 files changed, 30 insertions(+), 20 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index 28cfea5..d2ed9d1 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -79,8 +79,6 @@ int rtw_do_join23a(struct rtw_adapter *padapter)
+ 		select_ret = rtw_select_and_join_from_scanned_queue23a(pmlmepriv);
+ 		if (select_ret == _SUCCESS) {
+ 			pmlmepriv->to_join = false;
+-			mod_timer(&pmlmepriv->assoc_timer,
+-				  jiffies + msecs_to_jiffies(MAX_JOIN_TIMEOUT));
+ 		} else {
+ 			if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
+ 				struct wlan_bssid_ex *pdev_network;
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 9248f48..4a146fb 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -739,8 +739,6 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 
+ 				if (rtw_select_and_join_from_scanned_queue23a(
+ 					    pmlmepriv) == _SUCCESS) {
+-					mod_timer(&pmlmepriv->assoc_timer,
+-						  jiffies + msecs_to_jiffies(MAX_JOIN_TIMEOUT));
+ 				} else {
+ 					pdev_network = &adapter->registrypriv.dev_network;
+ 					pibss = adapter->registrypriv.dev_network.MacAddress;
+@@ -782,14 +780,10 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 			pmlmepriv->to_join = false;
+ 			ret = rtw_select_and_join_from_scanned_queue23a(
+ 				pmlmepriv);
+-			if (ret == _SUCCESS) {
+-				unsigned long e;
+-				e = msecs_to_jiffies(MAX_JOIN_TIMEOUT);
+-				mod_timer(&pmlmepriv->assoc_timer, jiffies + e);
+-			} else if (ret == 2) {/* there is no need to wait */
++			if (ret == 2) {/* there is no need to wait */
+ 				_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
+ 				rtw_indicate_connect23a(adapter);
+-			} else {
++			} else if (ret != _SUCCESS) {
+ 				DBG_8723A("try_to_join, but select scanning "
+ 					  "queue fail, to_roaming:%d\n",
+ 					  adapter->mlmepriv.to_roaming);
+@@ -1784,6 +1778,31 @@ exit:
+ 	return candidate;
+ }
+ 
++
++int rtw_do_join_network(struct rtw_adapter *adapter,
++			struct wlan_network *candidate)
++{
++	int ret;
++
++	/*  check for situation of  _FW_LINKED */
++	if (check_fwstate(&adapter->mlmepriv, _FW_LINKED)) {
++		DBG_8723A("%s: _FW_LINKED while ask_for_joinbss!\n", __func__);
++
++		rtw_disassoc_cmd23a(adapter, 0, true);
++		rtw_indicate_disconnect23a(adapter);
++		rtw_free_assoc_resources23a(adapter, 0);
++	}
++	set_fwstate(&adapter->mlmepriv, _FW_UNDER_LINKING);
++
++	ret = rtw_joinbss_cmd23a(adapter, candidate);
++
++	if (ret == _SUCCESS)
++		mod_timer(&adapter->mlmepriv.assoc_timer,
++			  jiffies + msecs_to_jiffies(MAX_JOIN_TIMEOUT));
++
++	return ret;
++}
++
+ int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv)
+ {
+ 	struct rtw_adapter *adapter;
+@@ -1804,16 +1823,7 @@ int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv)
+ 			  candidate->network.DSConfig);
+ 	}
+ 
+-	/*  check for situation of  _FW_LINKED */
+-	if (check_fwstate(pmlmepriv, _FW_LINKED)) {
+-		DBG_8723A("%s: _FW_LINKED while ask_for_joinbss!\n", __func__);
+-
+-		rtw_disassoc_cmd23a(adapter, 0, true);
+-		rtw_indicate_disconnect23a(adapter);
+-		rtw_free_assoc_resources23a(adapter, 0);
+-	}
+-	set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
+-	ret = rtw_joinbss_cmd23a(adapter, candidate);
++	ret = rtw_do_join_network(adapter, candidate);
+ 
+ exit:
+ 	return ret;
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index c8e82bf..e48518f 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -240,6 +240,8 @@ int rtw_init_mlme_priv23a(struct rtw_adapter *adapter);
+ 
+ void rtw_free_mlme_priv23a(struct mlme_priv *pmlmepriv);
+ 
++int rtw_do_join_network(struct rtw_adapter *adapter,
++			struct wlan_network *candidate);
+ int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv);
+ int rtw_set_key23a(struct rtw_adapter *adapter,
+ 		struct security_priv *psecuritypriv, int keyid, u8 set_tx);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0072-staging-rtl8723au-rtw_do_join23a-Use-__func__-to-get.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0072-staging-rtl8723au-rtw_do_join23a-Use-__func__-to-get.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,57 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:51 +0200
+Subject: [072/249] staging: rtl8723au: rtw_do_join23a(): Use __func__ to get
+ function name in debug messages
+Origin: https://git.kernel.org/linus/557f9a452df4e0388fa48402b0e2673c45a579f8
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 13 ++++++-------
+ 1 file changed, 6 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index d2ed9d1..f3dd995 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -35,8 +35,7 @@ int rtw_do_join23a(struct rtw_adapter *padapter)
+ 	plist = phead->next;
+ 
+ 	RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+-		 ("\n rtw_do_join23a: phead = %p; plist = %p\n\n\n",
+-		  phead, plist));
++		 ("%s: phead = %p; plist = %p\n\n\n", __func__, phead, plist));
+ 
+ 	pmlmepriv->cur_network.join_res = -2;
+ 
+@@ -55,8 +54,8 @@ int rtw_do_join23a(struct rtw_adapter *padapter)
+ 		if (pmlmepriv->LinkDetectInfo.bBusyTraffic == false ||
+ 		    padapter->mlmepriv.to_roaming > 0) {
+ 			RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+-				 ("rtw_do_join23a(): site survey if scanned_queue "
+-				  "is empty\n."));
++				 ("%s: site survey if scanned_queue is empty\n",
++					 __func__));
+ 			/*  submit site_survey23a_cmd */
+ 			ret = rtw_sitesurvey_cmd23a(padapter,
+ 						 &pmlmepriv->assoc_ssid, 1,
+@@ -64,8 +63,8 @@ int rtw_do_join23a(struct rtw_adapter *padapter)
+ 			if (ret != _SUCCESS) {
+ 				pmlmepriv->to_join = false;
+ 				RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+-					 ("rtw_do_join23a(): site survey return "
+-					  "error\n."));
++					 ("%s: site survey return error\n",
++						 __func__));
+ 			}
+ 		} else {
+ 			pmlmepriv->to_join = false;
+@@ -134,7 +133,7 @@ int rtw_do_join23a(struct rtw_adapter *padapter)
+ 					ret = rtw_sitesurvey_cmd23a(padapter, &pmlmepriv->assoc_ssid, 1, NULL, 0);
+ 					if (ret != _SUCCESS) {
+ 						pmlmepriv->to_join = false;
+-						RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("do_join(): site survey return error\n."));
++						RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("%s: site survey return error\n", __func__));
+ 					}
+ 				} else {
+ 					ret = _FAIL;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0073-staging-rtl8723au-rtw_surveydone_event_callback23a-R.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0073-staging-rtl8723au-rtw_surveydone_event_callback23a-R.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,25 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:52 +0200
+Subject: [073/249] staging: rtl8723au: rtw_surveydone_event_callback23a():
+ Remove superfluous memset()
+Origin: https://git.kernel.org/linus/ca3504be633315cb19b433bada574d109065e2fa
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 4a146fb..77a0a4a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -751,8 +751,6 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 						 ("switching to adhoc "
+ 						  "master\n"));
+ 
+-					memset(&pdev_network->Ssid, 0,
+-					       sizeof(struct cfg80211_ssid));
+ 					memcpy(&pdev_network->Ssid,
+ 					       &pmlmepriv->assoc_ssid,
+ 					       sizeof(struct cfg80211_ssid));

Added: dists/sid/linux/debian/patches/features/all/r8723au/0074-staging-rtl8723au-Consolidate-duplicate-adhoc-joinin.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0074-staging-rtl8723au-Consolidate-duplicate-adhoc-joinin.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,221 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:53 +0200
+Subject: [074/249] staging: rtl8723au: Consolidate duplicate adhoc joining
+ code into rtw_do_join_adhoc()
+Origin: https://git.kernel.org/linus/fcc6020ae8915eedf8f9bd584f32a6f731ff1d14
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 40 +----------
+ drivers/staging/rtl8723au/core/rtw_mlme.c      | 93 ++++++++++----------------
+ drivers/staging/rtl8723au/include/rtw_mlme.h   |  1 +
+ 3 files changed, 41 insertions(+), 93 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index f3dd995..a994893e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -25,7 +25,6 @@
+ int rtw_do_join23a(struct rtw_adapter *padapter)
+ {
+ 	struct list_head *plist, *phead;
+-	u8* pibss = NULL;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct rtw_queue *queue = &pmlmepriv->scanned_queue;
+ 	int ret = _SUCCESS;
+@@ -80,43 +79,10 @@ int rtw_do_join23a(struct rtw_adapter *padapter)
+ 			pmlmepriv->to_join = false;
+ 		} else {
+ 			if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
+-				struct wlan_bssid_ex *pdev_network;
+-				/*  submit createbss_cmd to change to a
+-				    ADHOC_MASTER */
+-
+-				/* pmlmepriv->lock has been acquired by
+-				   caller... */
+-				pdev_network =
+-					&padapter->registrypriv.dev_network;
+-
+-				pmlmepriv->fw_state = WIFI_ADHOC_MASTER_STATE;
+-
+-				pibss = padapter->registrypriv.dev_network.MacAddress;
+-
+-				memcpy(&pdev_network->Ssid,
+-				       &pmlmepriv->assoc_ssid,
+-				       sizeof(struct cfg80211_ssid));
+-
+-				rtw_update_registrypriv_dev_network23a(padapter);
+-
+-				rtw_generate_random_ibss23a(pibss);
+-
+-				if (rtw_createbss_cmd23a(padapter) != _SUCCESS) {
+-					RT_TRACE(_module_rtl871x_ioctl_set_c_,
+-						 _drv_err_,
+-						 ("***Error =>do_goin: rtw_creat"
+-						  "ebss_cmd status FAIL***\n"));
+-					ret = _FAIL;
++				/* switch to ADHOC_MASTER */
++				ret = rtw_do_join_adhoc(padapter);
++				if (ret != _SUCCESS)
+ 					goto exit;
+-				}
+-
+-				pmlmepriv->to_join = false;
+-
+-				RT_TRACE(_module_rtl871x_ioctl_set_c_,
+-					 _drv_info_,
+-					 ("***Error => rtw_select_and_join_from"
+-					  "_scanned_queue FAIL under STA_Mode"
+-					  "***\n "));
+ 			} else {
+ 				/*  can't associate ; reset under-linking */
+ 				_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 77a0a4a..81693c1 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -705,8 +705,6 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ {
+ 	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+ 	struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;
+-	struct wlan_bssid_ex *pdev_network;
+-	u8 *pibss;
+ 
+ 	spin_lock_bh(&pmlmepriv->lock);
+ 
+@@ -738,39 +736,8 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 				set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
+ 
+ 				if (rtw_select_and_join_from_scanned_queue23a(
+-					    pmlmepriv) == _SUCCESS) {
+-				} else {
+-					pdev_network = &adapter->registrypriv.dev_network;
+-					pibss = adapter->registrypriv.dev_network.MacAddress;
+-
+-					_clr_fwstate_(pmlmepriv,
+-						      _FW_UNDER_SURVEY);
+-
+-					RT_TRACE(_module_rtl871x_mlme_c_,
+-						 _drv_err_,
+-						 ("switching to adhoc "
+-						  "master\n"));
+-
+-					memcpy(&pdev_network->Ssid,
+-					       &pmlmepriv->assoc_ssid,
+-					       sizeof(struct cfg80211_ssid));
+-
+-					rtw_update_registrypriv_dev_network23a(
+-						adapter);
+-					rtw_generate_random_ibss23a(pibss);
+-
+-					pmlmepriv->fw_state =
+-						WIFI_ADHOC_MASTER_STATE;
+-
+-					if (rtw_createbss_cmd23a(adapter) !=
+-					    _SUCCESS)
+-					RT_TRACE(_module_rtl871x_mlme_c_,
+-						 _drv_err_,
+-						 ("Error =>rtw_createbss_cmd23a"
+-						  " status FAIL\n"));
+-
+-					pmlmepriv->to_join = false;
+-				}
++					    pmlmepriv) != _SUCCESS)
++					rtw_do_join_adhoc(adapter);
+ 			}
+ 		} else {
+ 			int ret;
+@@ -1425,7 +1392,6 @@ void rtw_stadel_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 	struct sta_info *psta;
+ 	struct wlan_network* pwlan;
+ 	struct wlan_bssid_ex *pdev_network;
+-	u8 *pibss;
+ 	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+ 	struct stadel_event *pstadel = (struct stadel_event *)pbuf;
+ 	struct sta_priv *pstapriv = &adapter->stapriv;
+@@ -1496,30 +1462,11 @@ void rtw_stadel_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 			spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
+ 			/* re-create ibss */
+ 			pdev_network = &adapter->registrypriv.dev_network;
+-			pibss = adapter->registrypriv.dev_network.MacAddress;
+ 
+ 			memcpy(pdev_network, &tgt_network->network,
+ 			       get_wlan_bssid_ex_sz(&tgt_network->network));
+ 
+-			memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid,
+-			       sizeof(struct cfg80211_ssid));
+-
+-			rtw_update_registrypriv_dev_network23a(adapter);
+-
+-			rtw_generate_random_ibss23a(pibss);
+-
+-			if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
+-				set_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE);
+-				_clr_fwstate_(pmlmepriv, WIFI_ADHOC_STATE);
+-			}
+-
+-			if (rtw_createbss_cmd23a(adapter) != _SUCCESS) {
+-				RT_TRACE(_module_rtl871x_ioctl_set_c_,
+-					 _drv_err_,
+-					 ("***Error =>stadel_event_callback: "
+-					  "rtw_createbss_cmd23a status "
+-					  "FAIL***\n"));
+-			}
++			rtw_do_join_adhoc(adapter);
+ 		}
+ 	}
+ 
+@@ -1777,6 +1724,40 @@ exit:
+ }
+ 
+ 
++int rtw_do_join_adhoc(struct rtw_adapter *adapter)
++{
++	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
++	struct wlan_bssid_ex *pdev_network;
++	u8 *ibss;
++	int ret;
++
++	pdev_network = &adapter->registrypriv.dev_network;
++	ibss = adapter->registrypriv.dev_network.MacAddress;
++
++	_clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY);
++
++	RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
++		 ("switching to adhoc master\n"));
++
++	memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid,
++	       sizeof(struct cfg80211_ssid));
++
++	rtw_update_registrypriv_dev_network23a(adapter);
++	rtw_generate_random_ibss23a(ibss);
++
++	pmlmepriv->fw_state = WIFI_ADHOC_MASTER_STATE;
++
++	ret = rtw_createbss_cmd23a(adapter);
++	if (ret != _SUCCESS) {
++		RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
++			 ("Error =>rtw_createbss_cmd23a status FAIL\n"));
++	} else  {
++		pmlmepriv->to_join = false;
++	}
++
++	return ret;
++}
++
+ int rtw_do_join_network(struct rtw_adapter *adapter,
+ 			struct wlan_network *candidate)
+ {
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index e48518f..79c3b3d 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -240,6 +240,7 @@ int rtw_init_mlme_priv23a(struct rtw_adapter *adapter);
+ 
+ void rtw_free_mlme_priv23a(struct mlme_priv *pmlmepriv);
+ 
++int rtw_do_join_adhoc(struct rtw_adapter *adapter);
+ int rtw_do_join_network(struct rtw_adapter *adapter,
+ 			struct wlan_network *candidate);
+ int rtw_select_and_join_from_scanned_queue23a(struct mlme_priv *pmlmepriv);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0075-staging-rtl8723au-Remove-no-op-rtw_get_encrypt_decry.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0075-staging-rtl8723au-Remove-no-op-rtw_get_encrypt_decry.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,51 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:54 +0200
+Subject: [075/249] staging: rtl8723au: Remove no-op
+ rtw_get_encrypt_decrypt_from_registrypriv23a()
+Origin: https://git.kernel.org/linus/3221bb536d92967ac204424140699a4fc23e0ac5
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c    | 7 -------
+ drivers/staging/rtl8723au/include/rtw_mlme.h | 2 --
+ 2 files changed, 9 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 81693c1..efb2161 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -1151,8 +1151,6 @@ void rtw_joinbss_event_prehandle23a(struct rtw_adapter *adapter, u8 *pbuf)
+ 		 ("joinbss event call back received with res=%d\n",
+ 		  pnetwork->join_res));
+ 
+-	rtw_get_encrypt_decrypt_from_registrypriv23a(adapter);
+-
+ 	if (pmlmepriv->assoc_ssid.ssid_len == 0) {
+ 		RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,
+ 			 ("@@@@@   joinbss event call back  for Any SSid\n"));
+@@ -2155,11 +2153,6 @@ void rtw_update_registrypriv_dev_network23a(struct rtw_adapter* adapter)
+ 	/* pdev_network->IELength = cpu_to_le32(sz); */
+ }
+ 
+-void rtw_get_encrypt_decrypt_from_registrypriv23a(struct rtw_adapter* adapter)
+-{
+-
+-}
+-
+ /* the fucntion is at passive_level */
+ void rtw_joinbss_reset23a(struct rtw_adapter *padapter)
+ {
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index 79c3b3d..bc420ec 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -331,8 +331,6 @@ void rtw_init_registrypriv_dev_network23a(struct rtw_adapter *adapter);
+ 
+ void rtw_update_registrypriv_dev_network23a(struct rtw_adapter *adapter);
+ 
+-void rtw_get_encrypt_decrypt_from_registrypriv23a(struct rtw_adapter *adapter);
+-
+ void rtw_scan_timeout_handler23a(unsigned long data);
+ 
+ void rtw_dynamic_check_timer_handler(unsigned long data);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0076-staging-rtl8723au-to_join-will-no-be-true-if-_FW_LIN.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0076-staging-rtl8723au-to_join-will-no-be-true-if-_FW_LIN.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,45 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:55 +0200
+Subject: [076/249] staging: rtl8723au: to_join will no be true if _FW_LINKED
+ is set
+Origin: https://git.kernel.org/linus/e5c4db0959fd604baf95508e5ac6c62b72bf2c7a
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 13 ++++++-------
+ 1 file changed, 6 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index efb2161..06dc897 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -705,6 +705,7 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ {
+ 	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+ 	struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;
++	int ret;
+ 
+ 	spin_lock_bh(&pmlmepriv->lock);
+ 
+@@ -732,15 +733,13 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 
+ 	if (pmlmepriv->to_join == true) {
+ 		if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
+-			if (!check_fwstate(pmlmepriv, _FW_LINKED)) {
+-				set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
++			set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
+ 
+-				if (rtw_select_and_join_from_scanned_queue23a(
+-					    pmlmepriv) != _SUCCESS)
+-					rtw_do_join_adhoc(adapter);
+-			}
++			ret = rtw_select_and_join_from_scanned_queue23a(
++				pmlmepriv);
++			if (ret != _SUCCESS)
++				rtw_do_join_adhoc(adapter);
+ 		} else {
+-			int ret;
+ 			set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
+ 			pmlmepriv->to_join = false;
+ 			ret = rtw_select_and_join_from_scanned_queue23a(

Added: dists/sid/linux/debian/patches/features/all/r8723au/0077-staging-rtl8723au-rtw_surveydone_event_callback23a-W.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0077-staging-rtl8723au-rtw_surveydone_event_callback23a-W.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,33 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:56 +0200
+Subject: [077/249] staging: rtl8723au: rtw_surveydone_event_callback23a(): We
+ always set _FW_UNDER_LINKING
+Origin: https://git.kernel.org/linus/66ed1bc999eaa4357bd2d7098386e2284439098c
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 06dc897..d2b38f7 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -732,15 +732,13 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 	rtw_set_signal_stat_timer(&adapter->recvpriv);
+ 
+ 	if (pmlmepriv->to_join == true) {
++		set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
+ 		if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
+-			set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
+-
+ 			ret = rtw_select_and_join_from_scanned_queue23a(
+ 				pmlmepriv);
+ 			if (ret != _SUCCESS)
+ 				rtw_do_join_adhoc(adapter);
+ 		} else {
+-			set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
+ 			pmlmepriv->to_join = false;
+ 			ret = rtw_select_and_join_from_scanned_queue23a(
+ 				pmlmepriv);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0078-staging-rtl8723au-rtw_select_and_join_from_scanned_q.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0078-staging-rtl8723au-rtw_select_and_join_from_scanned_q.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,28 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:57 +0200
+Subject: [078/249] staging: rtl8723au:
+ rtw_select_and_join_from_scanned_queue23a() never returns 2
+Origin: https://git.kernel.org/linus/85b3c5e48e6bd5e29272f9b1a4c1e2fd03eb21ab
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index d2b38f7..1557088 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -742,10 +742,7 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 			pmlmepriv->to_join = false;
+ 			ret = rtw_select_and_join_from_scanned_queue23a(
+ 				pmlmepriv);
+-			if (ret == 2) {/* there is no need to wait */
+-				_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
+-				rtw_indicate_connect23a(adapter);
+-			} else if (ret != _SUCCESS) {
++			if (ret != _SUCCESS) {
+ 				DBG_8723A("try_to_join, but select scanning "
+ 					  "queue fail, to_roaming:%d\n",
+ 					  adapter->mlmepriv.to_roaming);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0079-staging-rtl8723au-rtw_set_ssid-Use-rtw_do_join_netwo.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0079-staging-rtl8723au-rtw_set_ssid-Use-rtw_do_join_netwo.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,53 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:58 +0200
+Subject: [079/249] staging: rtl8723au: rtw_set_ssid(): Use
+ rtw_do_join_network()
+Origin: https://git.kernel.org/linus/72795e9de7deae0952d1174cfb37cb869b582d29
+
+We already have the wlan_network we wish to join, hence it's pointless
+to go back to the scanned_queue and pull it out of there, before
+running the join logic.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 25 +++++++++++++++++++----
+ 1 file changed, 21 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 9c36f6c..e75e078 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -2099,11 +2099,28 @@ handle_tkip_countermeasure:
+ 
+ 	pmlmepriv->assoc_by_bssid = false;
+ 
+-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
+-		pmlmepriv->to_join = true;
+-	else
+-		status = rtw_do_join23a(padapter);
++	pmlmepriv->to_join = true;
++
++	if (!check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) {
++		pmlmepriv->cur_network.join_res = -2;
+ 
++		status = rtw_do_join_network(padapter, newnetwork);
++		if (status == _SUCCESS) {
++			pmlmepriv->to_join = false;
++		} else {
++			if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
++				/* switch to ADHOC_MASTER */
++				status = rtw_do_join_adhoc(padapter);
++				if (status != _SUCCESS)
++					goto release_mlme_lock;
++			} else {
++				/* can't associate ; reset under-linking */
++				_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
++				status = _FAIL;
++				pmlmepriv->to_join = false;
++			}
++		}
++	}
+ release_mlme_lock:
+ 	spin_unlock_bh(&pmlmepriv->lock);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0080-staging-rtl8723au-rtw_do_join23a-Don-t-start-scannin.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0080-staging-rtl8723au-rtw_do_join23a-Don-t-start-scannin.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,126 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:16:59 +0200
+Subject: [080/249] staging: rtl8723au: rtw_do_join23a(): Don't start scanning
+ if network isn't found
+Origin: https://git.kernel.org/linus/e89c05505ff6f2796a044931d622b6565f416e18
+
+Don't start running network scans if trying to connect to a network
+not in our cache. Let the 802.11 stack do it's job instead.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 85 ++++----------------------
+ 1 file changed, 13 insertions(+), 72 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index a994893e..4f6d7f5 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -24,17 +24,8 @@
+ 
+ int rtw_do_join23a(struct rtw_adapter *padapter)
+ {
+-	struct list_head *plist, *phead;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+-	struct rtw_queue *queue = &pmlmepriv->scanned_queue;
+-	int ret = _SUCCESS;
+-
+-	spin_lock_bh(&pmlmepriv->scanned_queue.lock);
+-	phead = get_list_head(queue);
+-	plist = phead->next;
+-
+-	RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+-		 ("%s: phead = %p; plist = %p\n\n\n", __func__, phead, plist));
++	int ret;
+ 
+ 	pmlmepriv->cur_network.join_res = -2;
+ 
+@@ -42,75 +33,25 @@ int rtw_do_join23a(struct rtw_adapter *padapter)
+ 
+ 	pmlmepriv->to_join = true;
+ 
+-	if (list_empty(&queue->queue)) {
+-		spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
+-		_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
+-
+-		/* when set_ssid/set_bssid for rtw_do_join23a(), but
+-		   scanning queue is empty */
+-		/* we try to issue sitesurvey firstly */
+-
+-		if (pmlmepriv->LinkDetectInfo.bBusyTraffic == false ||
+-		    padapter->mlmepriv.to_roaming > 0) {
+-			RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_,
+-				 ("%s: site survey if scanned_queue is empty\n",
+-					 __func__));
+-			/*  submit site_survey23a_cmd */
+-			ret = rtw_sitesurvey_cmd23a(padapter,
+-						 &pmlmepriv->assoc_ssid, 1,
+-						 NULL, 0);
+-			if (ret != _SUCCESS) {
+-				pmlmepriv->to_join = false;
+-				RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+-					 ("%s: site survey return error\n",
+-						 __func__));
+-			}
++	ret = rtw_select_and_join_from_scanned_queue23a(pmlmepriv);
++	if (ret == _SUCCESS) {
++		pmlmepriv->to_join = false;
++	} else {
++		if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
++			/* switch to ADHOC_MASTER */
++			ret = rtw_do_join_adhoc(padapter);
++			if (ret != _SUCCESS)
++				goto exit;
+ 		} else {
+-			pmlmepriv->to_join = false;
+-			ret = _FAIL;
+-		}
++			/*  can't associate ; reset under-linking */
++			_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
+ 
+-		goto exit;
+-	} else {
+-		int select_ret;
+-		spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
+-		select_ret = rtw_select_and_join_from_scanned_queue23a(pmlmepriv);
+-		if (select_ret == _SUCCESS) {
++			ret = _FAIL;
+ 			pmlmepriv->to_join = false;
+-		} else {
+-			if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
+-				/* switch to ADHOC_MASTER */
+-				ret = rtw_do_join_adhoc(padapter);
+-				if (ret != _SUCCESS)
+-					goto exit;
+-			} else {
+-				/*  can't associate ; reset under-linking */
+-				_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
+-
+-				/* when set_ssid/set_bssid for rtw_do_join23a(),
+-				   but there are no desired bss in scanning
+-				   queue */
+-				/* we try to issue sitesurvey firstly */
+-				if (pmlmepriv->LinkDetectInfo.bBusyTraffic ==
+-				    false || padapter->mlmepriv.to_roaming > 0){
+-					/* DBG_8723A("rtw_do_join23a() when   no "
+-					   "desired bss in scanning queue\n");
+-					*/
+-					ret = rtw_sitesurvey_cmd23a(padapter, &pmlmepriv->assoc_ssid, 1, NULL, 0);
+-					if (ret != _SUCCESS) {
+-						pmlmepriv->to_join = false;
+-						RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("%s: site survey return error\n", __func__));
+-					}
+-				} else {
+-					ret = _FAIL;
+-					pmlmepriv->to_join = false;
+-				}
+-			}
+ 		}
+ 	}
+ 
+ exit:
+-
+ 	return ret;
+ }
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0081-staging-rtl8723au-Move-rtw_do_join23a-to-rtw_mlme.c-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0081-staging-rtl8723au-Move-rtw_do_join23a-to-rtw_mlme.c-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,139 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:17:00 +0200
+Subject: [081/249] staging: rtl8723au: Move rtw_do_join23a() to rtw_mlme.c and
+ declare it static
+Origin: https://git.kernel.org/linus/e007b4c77cd70c087929c1493cc4207dd5163748
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c    | 33 --------------------
+ drivers/staging/rtl8723au/core/rtw_mlme.c         | 38 +++++++++++++++++++++--
+ drivers/staging/rtl8723au/include/rtw_ioctl_set.h |  1 -
+ 3 files changed, 36 insertions(+), 36 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index 4f6d7f5..77835fc 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -22,39 +22,6 @@
+ #include <usb_ops.h>
+ #include <linux/ieee80211.h>
+ 
+-int rtw_do_join23a(struct rtw_adapter *padapter)
+-{
+-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+-	int ret;
+-
+-	pmlmepriv->cur_network.join_res = -2;
+-
+-	set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
+-
+-	pmlmepriv->to_join = true;
+-
+-	ret = rtw_select_and_join_from_scanned_queue23a(pmlmepriv);
+-	if (ret == _SUCCESS) {
+-		pmlmepriv->to_join = false;
+-	} else {
+-		if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
+-			/* switch to ADHOC_MASTER */
+-			ret = rtw_do_join_adhoc(padapter);
+-			if (ret != _SUCCESS)
+-				goto exit;
+-		} else {
+-			/*  can't associate ; reset under-linking */
+-			_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
+-
+-			ret = _FAIL;
+-			pmlmepriv->to_join = false;
+-		}
+-	}
+-
+-exit:
+-	return ret;
+-}
+-
+ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter,
+ 				      struct cfg80211_ssid *pssid,
+ 				      int ssid_max_num)
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 1557088..bdebde7 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -29,6 +29,7 @@
+ 
+ static struct wlan_network *
+ rtw_select_candidate_from_queue(struct mlme_priv *pmlmepriv);
++static int rtw_do_join(struct rtw_adapter *padapter);
+ 
+ static void rtw_init_mlme_timer(struct rtw_adapter *padapter)
+ {
+@@ -280,7 +281,7 @@ static void _rtw_roaming(struct rtw_adapter *padapter,
+ 		pmlmepriv->assoc_by_bssid = false;
+ 
+ 		while (1) {
+-			do_join_r = rtw_do_join23a(padapter);
++			do_join_r = rtw_do_join(padapter);
+ 			if (do_join_r == _SUCCESS)
+ 				break;
+ 			else {
+@@ -1489,7 +1490,7 @@ void rtw23a_join_to_handler (unsigned long data)
+ 			if (adapter->mlmepriv.to_roaming != 0) {
+ 				/* try another */
+ 				DBG_8723A("%s try another roaming\n", __func__);
+-				do_join_r = rtw_do_join23a(adapter);
++				do_join_r = rtw_do_join(adapter);
+ 				if (do_join_r != _SUCCESS) {
+ 					DBG_8723A("%s roaming do_join return "
+ 						  "%d\n", __func__ , do_join_r);
+@@ -1688,6 +1689,39 @@ pmlmepriv->lock
+ 
+ */
+ 
++static int rtw_do_join(struct rtw_adapter *padapter)
++{
++	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
++	int ret;
++
++	pmlmepriv->cur_network.join_res = -2;
++
++	set_fwstate(pmlmepriv, _FW_UNDER_LINKING);
++
++	pmlmepriv->to_join = true;
++
++	ret = rtw_select_and_join_from_scanned_queue23a(pmlmepriv);
++	if (ret == _SUCCESS) {
++		pmlmepriv->to_join = false;
++	} else {
++		if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
++			/* switch to ADHOC_MASTER */
++			ret = rtw_do_join_adhoc(padapter);
++			if (ret != _SUCCESS)
++				goto exit;
++		} else {
++			/*  can't associate ; reset under-linking */
++			_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
++
++			ret = _FAIL;
++			pmlmepriv->to_join = false;
++		}
++	}
++
++exit:
++	return ret;
++}
++
+ static struct wlan_network *
+ rtw_select_candidate_from_queue(struct mlme_priv *pmlmepriv)
+ {
+diff --git a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
+index 14a36f5..e84a422 100644
+--- a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
++++ b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
+@@ -23,6 +23,5 @@ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter,
+ 
+ u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter);
+ s32 FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
+-int rtw_do_join23a(struct rtw_adapter *padapter);
+ 
+ #endif

Added: dists/sid/linux/debian/patches/features/all/r8723au/0082-staging-rtl8723au-rtw_get_cur_max_rate23a-Remove-dup.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0082-staging-rtl8723au-rtw_get_cur_max_rate23a-Remove-dup.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,27 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:17:01 +0200
+Subject: [082/249] staging: rtl8723au: rtw_get_cur_max_rate23a(): Remove
+ duplicate fwstate checks
+Origin: https://git.kernel.org/linus/8f9558b906bed222231fcfaed89cca36d0b56f01
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index 77835fc..481f94c 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -100,10 +100,6 @@ u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter)
+ 	u8 bw_40MHz = 0, short_GI_20 = 0, short_GI_40 = 0;
+ 	u16 mcs_rate = 0;
+ 
+-	if (!check_fwstate(pmlmepriv, _FW_LINKED) &&
+-	    !check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE))
+-		return 0;
+-
+ 	if (pmlmeext->cur_wireless_mode & (WIRELESS_11_24N|WIRELESS_11_5N)) {
+ 		p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY,
+ 				     &pcur_bss->IEs[12],

Added: dists/sid/linux/debian/patches/features/all/r8723au/0083-staging-rtl8723au-rtw_get_cur_max_rate23a-We-are-in-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0083-staging-rtl8723au-rtw_get_cur_max_rate23a-We-are-in-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,87 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:17:02 +0200
+Subject: [083/249] staging: rtl8723au: rtw_get_cur_max_rate23a(): We are in N
+ mode if WLAN_EID_HT_CAPABILITY is present
+Origin: https://git.kernel.org/linus/023b40d882d7bfee65612115fd736bafd285e8dc
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 63 ++++++++++++--------------
+ 1 file changed, 29 insertions(+), 34 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index 481f94c..e2c40a6 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -100,41 +100,36 @@ u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter)
+ 	u8 bw_40MHz = 0, short_GI_20 = 0, short_GI_40 = 0;
+ 	u16 mcs_rate = 0;
+ 
+-	if (pmlmeext->cur_wireless_mode & (WIRELESS_11_24N|WIRELESS_11_5N)) {
+-		p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY,
+-				     &pcur_bss->IEs[12],
+-				     pcur_bss->IELength - 12);
+-		if (p && p[1] > 0) {
+-			pht_capie = (struct ieee80211_ht_cap *)(p + 2);
+-
+-			memcpy(&mcs_rate, &pht_capie->mcs, 2);
+-
+-			/* bw_40MHz = (pht_capie->cap_info&
+-			   IEEE80211_HT_CAP_SUP_WIDTH_20_40) ? 1:0; */
+-			/* cur_bwmod is updated by beacon, pmlmeinfo is
+-			   updated by association response */
+-			bw_40MHz = (pmlmeext->cur_bwmode &&
+-				    (pmlmeinfo->HT_info.ht_param &
+-				     IEEE80211_HT_PARAM_CHAN_WIDTH_ANY)) ? 1:0;
+-
+-			/* short_GI = (pht_capie->cap_info & (IEEE80211_HT_CAP
+-			   _SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1 : 0; */
+-			short_GI_20 =
+-				(pmlmeinfo->ht_cap.cap_info &
+-				 cpu_to_le16(IEEE80211_HT_CAP_SGI_20)) ? 1:0;
+-			short_GI_40 =
+-				(pmlmeinfo->ht_cap.cap_info &
+-				 cpu_to_le16(IEEE80211_HT_CAP_SGI_40)) ? 1:0;
+-
+-			rf_type = rtl8723a_get_rf_type(adapter);
+-			max_rate = rtw_mcs_rate23a(rf_type, bw_40MHz &
+-						pregistrypriv->cbw40_enable,
+-						short_GI_20, short_GI_40,
+-						&pmlmeinfo->ht_cap.mcs);
+-		}
++	p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, &pcur_bss->IEs[12],
++			     pcur_bss->IELength - 12);
++	if (p && p[1] > 0) {
++		pht_capie = (struct ieee80211_ht_cap *)(p + 2);
++
++		memcpy(&mcs_rate, &pht_capie->mcs, 2);
++
++		/* bw_40MHz = (pht_capie->cap_info&
++		   IEEE80211_HT_CAP_SUP_WIDTH_20_40) ? 1:0; */
++		/* cur_bwmod is updated by beacon, pmlmeinfo is
++		   updated by association response */
++		bw_40MHz = (pmlmeext->cur_bwmode &&
++			    (pmlmeinfo->HT_info.ht_param &
++			     IEEE80211_HT_PARAM_CHAN_WIDTH_ANY)) ? 1:0;
++
++		/* short_GI = (pht_capie->cap_info & (IEEE80211_HT_CAP
++		   _SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1 : 0; */
++		short_GI_20 = (pmlmeinfo->ht_cap.cap_info &
++			       cpu_to_le16(IEEE80211_HT_CAP_SGI_20)) ? 1:0;
++		short_GI_40 = (pmlmeinfo->ht_cap.cap_info &
++			       cpu_to_le16(IEEE80211_HT_CAP_SGI_40)) ? 1:0;
++
++		rf_type = rtl8723a_get_rf_type(adapter);
++		max_rate = rtw_mcs_rate23a(rf_type, bw_40MHz &
++					   pregistrypriv->cbw40_enable,
++					   short_GI_20, short_GI_40,
++					   &pmlmeinfo->ht_cap.mcs);
+ 	} else {
+-		while ((pcur_bss->SupportedRates[i] != 0) &&
+-		       (pcur_bss->SupportedRates[i] != 0xFF)) {
++		while (pcur_bss->SupportedRates[i] != 0 &&
++		       pcur_bss->SupportedRates[i] != 0xFF) {
+ 			rate = pcur_bss->SupportedRates[i] & 0x7F;
+ 			if (rate>max_rate)
+ 				max_rate = rate;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0084-staging-rtl8723au-Move-rtw_get_cur_max_rate23a-to-io.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0084-staging-rtl8723au-Move-rtw_get_cur_max_rate23a-to-io.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,176 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:17:03 +0200
+Subject: [084/249] staging: rtl8723au: Move rtw_get_cur_max_rate23a() to
+ ioctl_cfg80211.c
+Origin: https://git.kernel.org/linus/27fd731ece203c37f0a3708cafc95e9cead8cd2d
+
+This function has only one caller, so move it home and declare it static
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c    | 63 -----------------------
+ drivers/staging/rtl8723au/include/rtw_ioctl_set.h |  1 -
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 59 ++++++++++++++++++++-
+ 3 files changed, 58 insertions(+), 65 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index e2c40a6..b58cd9e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -78,66 +78,3 @@ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter,
+ exit:
+ 	return res;
+ }
+-
+-/*
+-* rtw_get_cur_max_rate23a -
+-* @adapter: pointer to _adapter structure
+-*
+-* Return 0 or 100Kbps
+-*/
+-u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter)
+-{
+-	int i = 0;
+-	const u8 *p;
+-	u16 rate = 0, max_rate = 0;
+-	struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;
+-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+-	struct registry_priv *pregistrypriv = &adapter->registrypriv;
+-	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+-	struct wlan_bssid_ex  *pcur_bss = &pmlmepriv->cur_network.network;
+-	struct ieee80211_ht_cap *pht_capie;
+-	u8 rf_type = 0;
+-	u8 bw_40MHz = 0, short_GI_20 = 0, short_GI_40 = 0;
+-	u16 mcs_rate = 0;
+-
+-	p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, &pcur_bss->IEs[12],
+-			     pcur_bss->IELength - 12);
+-	if (p && p[1] > 0) {
+-		pht_capie = (struct ieee80211_ht_cap *)(p + 2);
+-
+-		memcpy(&mcs_rate, &pht_capie->mcs, 2);
+-
+-		/* bw_40MHz = (pht_capie->cap_info&
+-		   IEEE80211_HT_CAP_SUP_WIDTH_20_40) ? 1:0; */
+-		/* cur_bwmod is updated by beacon, pmlmeinfo is
+-		   updated by association response */
+-		bw_40MHz = (pmlmeext->cur_bwmode &&
+-			    (pmlmeinfo->HT_info.ht_param &
+-			     IEEE80211_HT_PARAM_CHAN_WIDTH_ANY)) ? 1:0;
+-
+-		/* short_GI = (pht_capie->cap_info & (IEEE80211_HT_CAP
+-		   _SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1 : 0; */
+-		short_GI_20 = (pmlmeinfo->ht_cap.cap_info &
+-			       cpu_to_le16(IEEE80211_HT_CAP_SGI_20)) ? 1:0;
+-		short_GI_40 = (pmlmeinfo->ht_cap.cap_info &
+-			       cpu_to_le16(IEEE80211_HT_CAP_SGI_40)) ? 1:0;
+-
+-		rf_type = rtl8723a_get_rf_type(adapter);
+-		max_rate = rtw_mcs_rate23a(rf_type, bw_40MHz &
+-					   pregistrypriv->cbw40_enable,
+-					   short_GI_20, short_GI_40,
+-					   &pmlmeinfo->ht_cap.mcs);
+-	} else {
+-		while (pcur_bss->SupportedRates[i] != 0 &&
+-		       pcur_bss->SupportedRates[i] != 0xFF) {
+-			rate = pcur_bss->SupportedRates[i] & 0x7F;
+-			if (rate>max_rate)
+-				max_rate = rate;
+-			i++;
+-		}
+-
+-		max_rate = max_rate * 10 / 2;
+-	}
+-
+-	return max_rate;
+-}
+diff --git a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
+index e84a422..855fc40 100644
+--- a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
++++ b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
+@@ -21,7 +21,6 @@ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter,
+ 				      struct cfg80211_ssid *pssid,
+ 				      int ssid_max_num);
+ 
+-u16 rtw_get_cur_max_rate23a(struct rtw_adapter *adapter);
+ s32 FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
+ 
+ #endif
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index e75e078..a29718d 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -1223,6 +1223,63 @@ static int cfg80211_rtw_set_default_key(struct wiphy *wiphy,
+ 	return 0;
+ }
+ 
++static u16 rtw_get_cur_max_rate(struct rtw_adapter *adapter)
++{
++	int i = 0;
++	const u8 *p;
++	u16 rate = 0, max_rate = 0;
++	struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;
++	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
++	struct registry_priv *pregistrypriv = &adapter->registrypriv;
++	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
++	struct wlan_bssid_ex  *pcur_bss = &pmlmepriv->cur_network.network;
++	struct ieee80211_ht_cap *pht_capie;
++	u8 rf_type = 0;
++	u8 bw_40MHz = 0, short_GI_20 = 0, short_GI_40 = 0;
++	u16 mcs_rate = 0;
++
++	p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, &pcur_bss->IEs[12],
++			     pcur_bss->IELength - 12);
++	if (p && p[1] > 0) {
++		pht_capie = (struct ieee80211_ht_cap *)(p + 2);
++
++		memcpy(&mcs_rate, &pht_capie->mcs, 2);
++
++		/* bw_40MHz = (pht_capie->cap_info&
++		   IEEE80211_HT_CAP_SUP_WIDTH_20_40) ? 1:0; */
++		/* cur_bwmod is updated by beacon, pmlmeinfo is
++		   updated by association response */
++		bw_40MHz = (pmlmeext->cur_bwmode &&
++			    (pmlmeinfo->HT_info.ht_param &
++			     IEEE80211_HT_PARAM_CHAN_WIDTH_ANY)) ? 1:0;
++
++		/* short_GI = (pht_capie->cap_info & (IEEE80211_HT_CAP
++		   _SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1 : 0; */
++		short_GI_20 = (pmlmeinfo->ht_cap.cap_info &
++			       cpu_to_le16(IEEE80211_HT_CAP_SGI_20)) ? 1:0;
++		short_GI_40 = (pmlmeinfo->ht_cap.cap_info &
++			       cpu_to_le16(IEEE80211_HT_CAP_SGI_40)) ? 1:0;
++
++		rf_type = rtl8723a_get_rf_type(adapter);
++		max_rate = rtw_mcs_rate23a(rf_type, bw_40MHz &
++					   pregistrypriv->cbw40_enable,
++					   short_GI_20, short_GI_40,
++					   &pmlmeinfo->ht_cap.mcs);
++	} else {
++		while (pcur_bss->SupportedRates[i] != 0 &&
++		       pcur_bss->SupportedRates[i] != 0xFF) {
++			rate = pcur_bss->SupportedRates[i] & 0x7F;
++			if (rate>max_rate)
++				max_rate = rate;
++			i++;
++		}
++
++		max_rate = max_rate * 10 / 2;
++	}
++
++	return max_rate;
++}
++
+ static int cfg80211_rtw_get_station(struct wiphy *wiphy,
+ 				    struct net_device *ndev,
+ 				    const u8 *mac, struct station_info *sinfo)
+@@ -1267,7 +1324,7 @@ static int cfg80211_rtw_get_station(struct wiphy *wiphy,
+ 							    signal_strength);
+ 
+ 		sinfo->filled |= STATION_INFO_TX_BITRATE;
+-		sinfo->txrate.legacy = rtw_get_cur_max_rate23a(padapter);
++		sinfo->txrate.legacy = rtw_get_cur_max_rate(padapter);
+ 
+ 		sinfo->filled |= STATION_INFO_RX_PACKETS;
+ 		sinfo->rx_packets = sta_rx_data_pkts(psta);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0085-staging-rtl8723au-rtw_set_802_11_bssid23a_list_scan-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0085-staging-rtl8723au-rtw_set_802_11_bssid23a_list_scan-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,47 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:17:04 +0200
+Subject: [085/249] staging: rtl8723au: rtw_set_802_11_bssid23a_list_scan():
+ Use __func__ to print function name
+Origin: https://git.kernel.org/linus/e9bb5ad46d85aa81036913b938d2f4410beceb85
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+index b58cd9e..30287af 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+@@ -30,8 +30,7 @@ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter,
+ 	int res = _SUCCESS;
+ 
+ 	RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+-		 ("+rtw_set_802_11_bssid23a_list_scan(), fw_state =%x\n",
+-		  get_fwstate(pmlmepriv)));
++		 ("+%s: fw_state =%x\n", __func__, get_fwstate(pmlmepriv)));
+ 
+ 	if (!padapter) {
+ 		res = _FAIL;
+@@ -40,8 +39,7 @@ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter,
+ 	if (padapter->hw_init_completed == false) {
+ 		res = _FAIL;
+ 		RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+-			 ("\n === rtw_set_802_11_bssid23a_list_scan:"
+-			  "hw_init_completed == false ===\n"));
++			 ("%s: hw_init_completed == false ===\n", __func__));
+ 		goto exit;
+ 	}
+ 
+@@ -49,8 +47,8 @@ int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter,
+ 	    (pmlmepriv->LinkDetectInfo.bBusyTraffic == true)) {
+ 		/*  Scan or linking is in progress, do nothing. */
+ 		RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+-			 ("rtw_set_802_11_bssid23a_list_scan fail since fw_state "
+-			  "= %x\n", get_fwstate(pmlmepriv)));
++			 ("%s fail since fw_state = %x\n", __func__,
++			  get_fwstate(pmlmepriv)));
+ 
+ 		if (check_fwstate(pmlmepriv,
+ 				  (_FW_UNDER_SURVEY|_FW_UNDER_LINKING))) {

Added: dists/sid/linux/debian/patches/features/all/r8723au/0086-staging-rtl8723au-Don-t-run-regular-scans-in-the-dri.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0086-staging-rtl8723au-Don-t-run-regular-scans-in-the-dri.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,169 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:17:05 +0200
+Subject: [086/249] staging: rtl8723au: Don't run regular scans in the driver,
+ the stack handles that
+Origin: https://git.kernel.org/linus/073c9d47c33e549bfad1935d986710f1d1e57279
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/Makefile                |  1 -
+ drivers/staging/rtl8723au/core/rtw_ioctl_set.c    | 78 -----------------------
+ drivers/staging/rtl8723au/core/rtw_mlme.c         | 21 ------
+ drivers/staging/rtl8723au/include/rtw_ioctl_set.h |  4 --
+ 4 files changed, 104 deletions(-)
+ delete mode 100644 drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+
+diff --git a/drivers/staging/rtl8723au/Makefile b/drivers/staging/rtl8723au/Makefile
+index a6316af..6f76c7b 100644
+--- a/drivers/staging/rtl8723au/Makefile
++++ b/drivers/staging/rtl8723au/Makefile
+@@ -1,7 +1,6 @@
+ r8723au-y :=				\
+ 		core/rtw_cmd.o		\
+ 		core/rtw_efuse.o	\
+-		core/rtw_ioctl_set.o	\
+ 		core/rtw_ieee80211.o	\
+ 		core/rtw_led.o		\
+ 		core/rtw_mlme.o		\
+diff --git a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c b/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
+deleted file mode 100644
+index 30287af..0000000
+--- a/drivers/staging/rtl8723au/core/rtw_ioctl_set.c
++++ /dev/null
+@@ -1,78 +0,0 @@
+-/******************************************************************************
+- *
+- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
+- *
+- * 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
+- * published by the Free Software Foundation.
+- *
+- * This program is distributed in the hope that it will be useful, but WITHOUT
+- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+- * more details.
+- *
+- ******************************************************************************/
+-#define _RTW_IOCTL_SET_C_
+-
+-#include <osdep_service.h>
+-#include <drv_types.h>
+-#include <rtw_ioctl_set.h>
+-#include <hal_intf.h>
+-
+-#include <usb_ops.h>
+-#include <linux/ieee80211.h>
+-
+-int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter,
+-				      struct cfg80211_ssid *pssid,
+-				      int ssid_max_num)
+-{
+-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+-	int res = _SUCCESS;
+-
+-	RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+-		 ("+%s: fw_state =%x\n", __func__, get_fwstate(pmlmepriv)));
+-
+-	if (!padapter) {
+-		res = _FAIL;
+-		goto exit;
+-	}
+-	if (padapter->hw_init_completed == false) {
+-		res = _FAIL;
+-		RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+-			 ("%s: hw_init_completed == false ===\n", __func__));
+-		goto exit;
+-	}
+-
+-	if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY | _FW_UNDER_LINKING) ||
+-	    (pmlmepriv->LinkDetectInfo.bBusyTraffic == true)) {
+-		/*  Scan or linking is in progress, do nothing. */
+-		RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+-			 ("%s fail since fw_state = %x\n", __func__,
+-			  get_fwstate(pmlmepriv)));
+-
+-		if (check_fwstate(pmlmepriv,
+-				  (_FW_UNDER_SURVEY|_FW_UNDER_LINKING))) {
+-			RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+-				 ("\n###_FW_UNDER_SURVEY|_FW_UNDER_LINKING\n"));
+-		} else {
+-			RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
+-				 ("\n###pmlmepriv->sitesurveyctrl.traffic_"
+-				  "busy == true\n"));
+-		}
+-	} else {
+-		if (rtw_is_scan_deny(padapter)) {
+-			DBG_8723A("%s(%s): scan deny\n",
+-				  __func__, padapter->pnetdev->name);
+-			return _SUCCESS;
+-		}
+-
+-		spin_lock_bh(&pmlmepriv->lock);
+-
+-		res = rtw_sitesurvey_cmd23a(padapter, pssid, ssid_max_num,
+-					 NULL, 0);
+-
+-		spin_unlock_bh(&pmlmepriv->lock);
+-	}
+-exit:
+-	return res;
+-}
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index bdebde7..e89d019 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -1538,26 +1538,9 @@ void rtw_scan_timeout_handler23a(unsigned long data)
+ 	rtw_cfg80211_indicate_scan_done(wdev_to_priv(adapter->rtw_wdev), true);
+ }
+ 
+-static void rtw_auto_scan_handler(struct rtw_adapter *padapter)
+-{
+-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+-
+-	/* auto site survey per 60sec */
+-	if (pmlmepriv->scan_interval > 0) {
+-		pmlmepriv->scan_interval--;
+-		if (pmlmepriv->scan_interval == 0) {
+-			DBG_8723A("%s\n", __func__);
+-			rtw_set_802_11_bssid23a_list_scan(padapter, NULL, 0);
+-			/*  30*2 sec = 60sec */
+-			pmlmepriv->scan_interval = SCAN_INTERVAL;
+-		}
+-	}
+-}
+-
+ void rtw_dynamic_check_timer_handler(unsigned long data)
+ {
+ 	struct rtw_adapter *adapter = (struct rtw_adapter *)data;
+-	struct registry_priv *pregistrypriv = &adapter->registrypriv;
+ 
+ 	if (adapter->hw_init_completed == false)
+ 		goto out;
+@@ -1571,10 +1554,6 @@ void rtw_dynamic_check_timer_handler(unsigned long data)
+ 
+ 	rtw_dynamic_chk_wk_cmd23a(adapter);
+ 
+-	if (pregistrypriv->wifi_spec == 1) {
+-		/* auto site survey */
+-		rtw_auto_scan_handler(adapter);
+-	}
+ out:
+ 	mod_timer(&adapter->mlmepriv.dynamic_chk_timer,
+ 		  jiffies + msecs_to_jiffies(2000));
+diff --git a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
+index 855fc40..6c102dc 100644
+--- a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
++++ b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
+@@ -17,10 +17,6 @@
+ 
+ #include <drv_types.h>
+ 
+-int rtw_set_802_11_bssid23a_list_scan(struct rtw_adapter *padapter,
+-				      struct cfg80211_ssid *pssid,
+-				      int ssid_max_num);
+-
+ s32 FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
+ 
+ #endif

Added: dists/sid/linux/debian/patches/features/all/r8723au/0087-staging-rtl8723au-Quiet-unused-variable-warning-when.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0087-staging-rtl8723au-Quiet-unused-variable-warning-when.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,32 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:17:06 +0200
+Subject: [087/249] staging: rtl8723au: Quiet unused variable warning when
+ building with CONFIG_8723AU_AP_MODE=n
+Origin: https://git.kernel.org/linus/da23732c6320dd1dfe802191532072da8e967833
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 59047ad..0d52699 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2931,7 +2931,6 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta,
+ 	unsigned char *pframe;
+ 	struct ieee80211_mgmt *mgmt;
+ 	unsigned int val32;
+-	unsigned short val16;
+ 	u16 auth_algo;
+ 	int use_shared_key = 0;
+ 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
+@@ -2960,6 +2959,7 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta,
+ 
+ 	if (psta) { /*  for AP mode */
+ #ifdef CONFIG_8723AU_AP_MODE
++		unsigned short val16;
+ 		ether_addr_copy(mgmt->da, psta->hwaddr);
+ 		ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv));
+ 		ether_addr_copy(mgmt->bssid, myid(&padapter->eeprompriv));

Added: dists/sid/linux/debian/patches/features/all/r8723au/0088-staging-rtl8723au-Move-FillH2CCmd-prototype-to-rtl87.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0088-staging-rtl8723au-Move-FillH2CCmd-prototype-to-rtl87.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,120 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:17:07 +0200
+Subject: [088/249] staging: rtl8723au: Move FillH2CCmd() prototype to
+ rtl8723a_cmd.h where it really belongs
+Origin: https://git.kernel.org/linus/379878662637a1247f19caf938a22918d702b14b
+
+As an added bonus, remove the now obsolete rtw_ioctl_set.h
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c          |  1 -
+ .../staging/rtl8723au/hal/rtl8723a_bt-coexist.c    |  1 -
+ drivers/staging/rtl8723au/hal/rtl8723a_cmd.c       |  1 -
+ drivers/staging/rtl8723au/include/rtl8723a_cmd.h   |  2 ++
+ drivers/staging/rtl8723au/include/rtw_ioctl_set.h  | 22 ----------------------
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c  |  1 -
+ drivers/staging/rtl8723au/os_dep/mlme_linux.c      |  1 -
+ 7 files changed, 2 insertions(+), 27 deletions(-)
+ delete mode 100644 drivers/staging/rtl8723au/include/rtw_ioctl_set.h
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index e89d019..ab95ef0 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -24,7 +24,6 @@
+ #include <linux/ieee80211.h>
+ #include <wifi.h>
+ #include <wlan_bssdef.h>
+-#include <rtw_ioctl_set.h>
+ #include <rtw_sreset.h>
+ 
+ static struct wlan_network *
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c b/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c
+index bb86986..9054a98 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_bt-coexist.c
+@@ -14,7 +14,6 @@
+  ******************************************************************************/
+ #include <drv_types.h>
+ #include <rtl8723a_hal.h>
+-#include <rtw_ioctl_set.h>
+ #include <usb_ops_linux.h>
+ 
+ #define DIS_PS_RX_BCN
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+index e873791..6e1fed2 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+@@ -18,7 +18,6 @@
+ #include <drv_types.h>
+ #include <recv_osdep.h>
+ #include <mlme_osdep.h>
+-#include <rtw_ioctl_set.h>
+ #include <rtl8723a_hal.h>
+ #include <usb_ops_linux.h>
+ 
+diff --git a/drivers/staging/rtl8723au/include/rtl8723a_cmd.h b/drivers/staging/rtl8723au/include/rtl8723a_cmd.h
+index 900bacc..e1ecbd0 100644
+--- a/drivers/staging/rtl8723au/include/rtl8723a_cmd.h
++++ b/drivers/staging/rtl8723au/include/rtl8723a_cmd.h
+@@ -155,4 +155,6 @@ void rtl8723a_add_rateatid(struct rtw_adapter *padapter, u32 bitmap, u8 arg, u8
+ 
+ void CheckFwRsvdPageContent23a(struct rtw_adapter *padapter);
+ 
++int FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
++
+ #endif
+diff --git a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h b/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
+deleted file mode 100644
+index 6c102dc..0000000
+--- a/drivers/staging/rtl8723au/include/rtw_ioctl_set.h
++++ /dev/null
+@@ -1,22 +0,0 @@
+-/******************************************************************************
+- *
+- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+- *
+- * 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
+- * published by the Free Software Foundation.
+- *
+- * This program is distributed in the hope that it will be useful, but WITHOUT
+- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+- * more details.
+- *
+- ******************************************************************************/
+-#ifndef __RTW_IOCTL_SET_H_
+-#define __RTW_IOCTL_SET_H_
+-
+-#include <drv_types.h>
+-
+-s32 FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
+-
+-#endif
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index a29718d..5f0a6c7 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -16,7 +16,6 @@
+ 
+ #include <osdep_service.h>
+ #include <drv_types.h>
+-#include <rtw_ioctl_set.h>
+ #include <xmit_osdep.h>
+ 
+ #include "ioctl_cfg80211.h"
+diff --git a/drivers/staging/rtl8723au/os_dep/mlme_linux.c b/drivers/staging/rtl8723au/os_dep/mlme_linux.c
+index ac618fb..ca24369 100644
+--- a/drivers/staging/rtl8723au/os_dep/mlme_linux.c
++++ b/drivers/staging/rtl8723au/os_dep/mlme_linux.c
+@@ -18,7 +18,6 @@
+ #include <osdep_service.h>
+ #include <drv_types.h>
+ #include <mlme_osdep.h>
+-#include <rtw_ioctl_set.h>
+ 
+ static struct rt_pmkid_list backupPMKIDList[NUM_PMKID_CACHE];
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0089-staging-rtl8723au-rtw_cfg80211_set_wpa_ie-Avoid-poin.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0089-staging-rtl8723au-rtw_cfg80211_set_wpa_ie-Avoid-poin.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,86 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 9 Jun 2014 15:17:08 +0200
+Subject: [089/249] staging: rtl8723au: rtw_cfg80211_set_wpa_ie(): Avoid
+ pointless memcpy
+Origin: https://git.kernel.org/linus/7579a7e47d6572455c48f822dd47bd1993ec9d95
+
+There is no point copying a buffer, just to scan it and then free it
+again.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 21 +++++++--------------
+ 1 file changed, 7 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 5f0a6c7..9ad049c 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -1806,7 +1806,6 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie,
+ 				   size_t ielen)
+ {
+ 	const u8 *wps_ie;
+-	u8 *buf = NULL;
+ 	int group_cipher = 0, pairwise_cipher = 0;
+ 	int ret = 0;
+ 	const u8 *pwpa, *pwpa2;
+@@ -1822,19 +1821,14 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie,
+ 		ret = -EINVAL;
+ 		goto exit;
+ 	}
+-	buf = kmemdup(pie, ielen, GFP_KERNEL);
+-	if (buf == NULL) {
+-		ret = -ENOMEM;
+-		goto exit;
+-	}
+ 
+ 	/* dump */
+ 	DBG_8723A("set wpa_ie(length:%zu):\n", ielen);
+ 	for (i = 0; i < ielen; i = i + 8)
+-		DBG_8723A("0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x\n",
+-			  buf[i], buf[i + 1],
+-			  buf[i + 2], buf[i + 3], buf[i + 4],
+-			  buf[i + 5], buf[i + 6], buf[i + 7]);
++		DBG_8723A("0x%.2x 0x%.2x 0x%.2x 0x%.2x "
++			  "0x%.2x 0x%.2x 0x%.2x 0x%.2x\n",
++			  pie[i], pie[i + 1], pie[i + 2], pie[i + 3],
++			  pie[i + 4], pie[i + 5], pie[i + 6], pie[i + 7]);
+ 	if (ielen < RSN_HEADER_LEN) {
+ 		RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_err_,
+ 			 ("Ie len too short %d\n", (int)ielen));
+@@ -1844,7 +1838,7 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie,
+ 
+ 	pwpa = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+ 				       WLAN_OUI_TYPE_MICROSOFT_WPA,
+-				       buf, ielen);
++				       pie, ielen);
+ 	if (pwpa && pwpa[1] > 0) {
+ 		if (rtw_parse_wpa_ie23a(pwpa, pwpa[1] + 2, &group_cipher,
+ 					&pairwise_cipher, NULL) == _SUCCESS) {
+@@ -1859,7 +1853,7 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie,
+ 		}
+ 	}
+ 
+-	pwpa2 = cfg80211_find_ie(WLAN_EID_RSN, buf, ielen);
++	pwpa2 = cfg80211_find_ie(WLAN_EID_RSN, pie, ielen);
+ 	if (pwpa2 && pwpa2[1] > 0) {
+ 		if (rtw_parse_wpa2_ie23a (pwpa2, pwpa2[1] + 2, &group_cipher,
+ 					  &pairwise_cipher, NULL) == _SUCCESS) {
+@@ -1939,7 +1933,7 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie,
+ 
+ 	wps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+ 					 WLAN_OUI_TYPE_MICROSOFT_WPS,
+-					 buf, ielen);
++					 pie, ielen);
+ 	if (wps_ie && wps_ie[1] > 0) {
+ 		DBG_8723A("got wps_ie, wps_ielen:%u\n", wps_ie[1]);
+ 		padapter->securitypriv.wps_ie_len = wps_ie[1];
+@@ -1967,7 +1961,6 @@ static int rtw_cfg80211_set_wpa_ie(struct rtw_adapter *padapter, const u8 *pie,
+ 		  padapter->securitypriv.ndisauthtype));
+ 
+ exit:
+-	kfree(buf);
+ 	if (ret)
+ 		_clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS);
+ 	return ret;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0090-staging-rtl8723au-Add-compiler-check-for-Wtype-limit.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0090-staging-rtl8723au-Add-compiler-check-for-Wtype-limit.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,27 @@
+From: Geert Uytterhoeven <geert at linux-m68k.org>
+Date: Wed, 11 Jun 2014 16:57:46 +0200
+Subject: [090/249] staging: rtl8723au: Add compiler check for -Wtype-limits
+Origin: https://git.kernel.org/linus/ee264346fa08395aa6e846b72e7b3987e959f053
+
+Gcc versions before 4.3 do not support -Wtype-limits:
+
+cc1: error: unrecognized command line option "-Wtype-limits"
+
+Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
+Acked-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/Makefile | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/Makefile b/drivers/staging/rtl8723au/Makefile
+index 6f76c7b..a9aae21 100644
+--- a/drivers/staging/rtl8723au/Makefile
++++ b/drivers/staging/rtl8723au/Makefile
+@@ -52,4 +52,5 @@ r8723au-$(CONFIG_8723AU_AP_MODE) += core/rtw_ap.o
+ 
+ obj-$(CONFIG_R8723AU)	:= r8723au.o
+ 
+-ccflags-y += -Wtype-limits -D__CHECK_ENDIAN__ -I$(src)/include
++ccflags-y += $(call cc-option,-Wtype-limits,)
++ccflags-y += -D__CHECK_ENDIAN__ -I$(src)/include

Added: dists/sid/linux/debian/patches/features/all/r8723au/0091-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0091-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,102 @@
+From: Sachin Kamat <sachin.kamat at linaro.org>
+Date: Thu, 29 May 2014 17:05:18 +0530
+Subject: [091/249] staging: rtl8723au: Remove redundant casting in
+ rtw_mlme_ext.c
+Origin: https://git.kernel.org/linus/248c95915277edbe632ab171b0b082c2ba1af935
+
+Casting value returned by kzalloc is useless.
+
+Signed-off-by: Sachin Kamat <sachin.kamat at linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 27 ++++++++++-----------------
+ 1 file changed, 10 insertions(+), 17 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 0d52699..84ca06b 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4873,8 +4873,7 @@ void report_survey_event23a(struct rtw_adapter *padapter,
+ 	pmlmeext = &padapter->mlmeextpriv;
+ 	pcmdpriv = &padapter->cmdpriv;
+ 
+-	pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj),
+-					     GFP_ATOMIC);
++	pcmd_obj = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC);
+ 	if (!pcmd_obj)
+ 		return;
+ 
+@@ -4925,8 +4924,7 @@ void report_surveydone_event23a(struct rtw_adapter *padapter)
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
+ 
+-	pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj),
+-					     GFP_ATOMIC);
++	pcmd_obj = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC);
+ 	if (!pcmd_obj)
+ 		return;
+ 
+@@ -4970,8 +4968,7 @@ void report_join_res23a(struct rtw_adapter *padapter, int res)
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
+ 
+-	pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj),
+-					     GFP_ATOMIC);
++	pcmd_obj = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC);
+ 	if (!pcmd_obj)
+ 		return;
+ 
+@@ -5021,8 +5018,7 @@ void report_del_sta_event23a(struct rtw_adapter *padapter,
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
+ 
+-	pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj),
+-					     GFP_ATOMIC);
++	pcmd_obj = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC);
+ 	if (!pcmd_obj)
+ 		return;
+ 
+@@ -5076,8 +5072,7 @@ void report_add_sta_event23a(struct rtw_adapter *padapter,
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
+ 
+-	pcmd_obj = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj),
+-					     GFP_ATOMIC);
++	pcmd_obj = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC);
+ 	if (!pcmd_obj)
+ 		return;
+ 
+@@ -5493,13 +5488,12 @@ static void survey_timer_hdl(unsigned long data)
+ 			pmlmeext->scan_abort = false;/* reset */
+ 		}
+ 
+-		ph2c = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj),
+-			GFP_ATOMIC);
++		ph2c = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC);
+ 		if (!ph2c)
+ 			goto exit_survey_timer_hdl;
+ 
+-		psurveyPara = (struct sitesurvey_parm*)
+-			kzalloc(sizeof(struct sitesurvey_parm), GFP_ATOMIC);
++		psurveyPara = kzalloc(sizeof(struct sitesurvey_parm),
++					GFP_ATOMIC);
+ 		if (!psurveyPara) {
+ 			kfree(ph2c);
+ 			goto exit_survey_timer_hdl;
+@@ -6173,14 +6167,13 @@ int set_tx_beacon_cmd23a(struct rtw_adapter* padapter)
+ 	u8 res = _SUCCESS;
+ 	int len_diff = 0;
+ 
+-	ph2c = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC);
++	ph2c = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC);
+ 	if (!ph2c) {
+ 		res = _FAIL;
+ 		goto exit;
+ 	}
+ 
+-	ptxBeacon_parm = (struct Tx_Beacon_param *)
+-		kzalloc(sizeof(struct Tx_Beacon_param), GFP_ATOMIC);
++	ptxBeacon_parm = kzalloc(sizeof(struct Tx_Beacon_param), GFP_ATOMIC);
+ 	if (!ptxBeacon_parm) {
+ 		kfree(ph2c);
+ 		res = _FAIL;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0092-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0092-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,26 @@
+From: Sachin Kamat <sachin.kamat at linaro.org>
+Date: Thu, 29 May 2014 17:05:19 +0530
+Subject: [092/249] staging: rtl8723au: Remove redundant casting in rtw_mlme.c
+Origin: https://git.kernel.org/linus/db5767a3f9715540411d9c1cf2dfb4aeec366893
+
+Casting value returned by kzalloc is useless.
+
+Signed-off-by: Sachin Kamat <sachin.kamat at linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index ab95ef0..799338b 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -1820,7 +1820,7 @@ int rtw_set_auth23a(struct rtw_adapter * adapter,
+ 	struct cmd_priv *pcmdpriv = &adapter->cmdpriv;
+ 	int res = _SUCCESS;
+ 
+-	pcmd = (struct cmd_obj *)kzalloc(sizeof(struct cmd_obj), GFP_KERNEL);
++	pcmd = kzalloc(sizeof(struct cmd_obj), GFP_KERNEL);
+ 	if (!pcmd) {
+ 		res = _FAIL;  /* try again */
+ 		goto exit;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0093-staging-rtl8723au-rtw_cfg80211_inform_bss-timestamp-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0093-staging-rtl8723au-rtw_cfg80211_inform_bss-timestamp-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,33 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:16 +0200
+Subject: [093/249] staging: rtl8723au: rtw_cfg80211_inform_bss(): timestamp
+ isn't used
+Origin: https://git.kernel.org/linus/8a3adc24806060b4ade2bc6bd172077a57455f98
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 9ad049c..f102e03 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -249,7 +249,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 	/* struct ieee80211_supported_band *band; */
+ 	u16 channel;
+ 	u32 freq;
+-	u64 notify_timestamp;
+ 	u16 notify_capability;
+ 	u16 notify_interval;
+ 	u8 *notify_ie;
+@@ -280,8 +279,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 
+ 	notify_channel = ieee80211_get_channel(wiphy, freq);
+ 
+-	notify_timestamp = jiffies_to_msecs(jiffies) * 1000;	/* uSec */
+-
+ 	notify_interval =
+ 		get_unaligned_le16(
+ 			rtw_get_beacon_interval23a_from_ie(pnetwork->network.IEs));

Added: dists/sid/linux/debian/patches/features/all/r8723au/0094-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-cfg802.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0094-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-cfg802.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,107 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:17 +0200
+Subject: [094/249] staging: rtl8723au: rtw_cfg80211_inform_bss(): Use
+ cfg80211_inform_bss()
+Origin: https://git.kernel.org/linus/4062f7aa8f867e515267aeec62a152d2cf763a1c
+
+There is no point in creating a fake beacon frame to call
+cfg80211_inform_bss_frame() when we can just call
+cfg80211_inform_bss() with the parameters we were sticking into the
+fake frame.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 47 +++--------------------
+ 1 file changed, 5 insertions(+), 42 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index f102e03..0a0c58d 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -239,14 +239,12 @@ rtw_cfg80211_default_mgmt_stypes[NUM_NL80211_IFTYPES] = {
+ 	},
+ };
+ 
+-#define MAX_BSSINFO_LEN 1000
+ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 				   struct wlan_network *pnetwork)
+ {
+ 	int ret = 0;
+ 	struct ieee80211_channel *notify_channel;
+ 	struct cfg80211_bss *bss;
+-	/* struct ieee80211_supported_band *band; */
+ 	u16 channel;
+ 	u32 freq;
+ 	u16 notify_capability;
+@@ -254,21 +252,10 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 	u8 *notify_ie;
+ 	size_t notify_ielen;
+ 	s32 notify_signal;
+-	u8 buf[MAX_BSSINFO_LEN], *pbuf;
+-	size_t len;
+-	struct ieee80211_hdr *pwlanhdr;
+ 	struct wireless_dev *wdev = padapter->rtw_wdev;
+ 	struct wiphy *wiphy = wdev->wiphy;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 
+-	/* DBG_8723A("%s\n", __func__); */
+-
+-	if (pnetwork->network.IELength > MAX_IE_SZ) {
+-		DBG_8723A("%s IE Length too long > %d byte\n", __func__,
+-			  MAX_IE_SZ);
+-		goto exit;
+-	}
+-
+ 	channel = pnetwork->network.DSConfig;
+ 	if (channel <= RTW_CH_MAX_2G_CHANNEL)
+ 		freq = ieee80211_channel_to_frequency(channel,
+@@ -299,35 +286,12 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 	} else {
+ 		notify_signal = 100 * translate_percentage_to_dbm(pnetwork->network.PhyInfo.SignalStrength);	/* dbm */
+ 	}
+-	pbuf = buf;
+-
+-	pwlanhdr = (struct ieee80211_hdr *)pbuf;
+-
+-	pwlanhdr->seq_ctrl = 0;
+-
+-	if (pnetwork->network.reserved == 1) {	/*  WIFI_BEACON */
+-		eth_broadcast_addr(pwlanhdr->addr1);
+-		pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+-						      IEEE80211_STYPE_BEACON);
+-	} else {
+-		ether_addr_copy(pwlanhdr->addr1, myid(&padapter->eeprompriv));
+-		pwlanhdr->frame_control =
+-			cpu_to_le16(IEEE80211_FTYPE_MGMT |
+-				    IEEE80211_STYPE_PROBE_RESP);
+-	}
+-
+-	ether_addr_copy(pwlanhdr->addr2, pnetwork->network.MacAddress);
+-	ether_addr_copy(pwlanhdr->addr3, pnetwork->network.MacAddress);
+ 
+-	pbuf += sizeof(struct ieee80211_hdr_3addr);
+-	len = sizeof(struct ieee80211_hdr_3addr);
+-
+-	memcpy(pbuf, pnetwork->network.IEs, pnetwork->network.IELength);
+-	len += pnetwork->network.IELength;
+-
+-	bss = cfg80211_inform_bss_frame(wiphy, notify_channel,
+-					(struct ieee80211_mgmt *)buf, len,
+-					notify_signal, GFP_ATOMIC);
++	bss = cfg80211_inform_bss(wiphy, notify_channel,
++				  pnetwork->network.MacAddress, 0,
++				  notify_capability, notify_interval,
++				  notify_ie, notify_ielen,
++				  notify_signal, GFP_ATOMIC);
+ 
+ 	if (unlikely(!bss)) {
+ 		DBG_8723A("rtw_cfg80211_inform_bss error\n");
+@@ -336,7 +300,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 
+ 	cfg80211_put_bss(wiphy, bss);
+ 
+-exit:
+ 	return ret;
+ }
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0095-staging-rtl8723au-Save-timestamp-for-network-in-coll.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0095-staging-rtl8723au-Save-timestamp-for-network-in-coll.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,75 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:18 +0200
+Subject: [095/249] staging: rtl8723au: Save timestamp for network in
+ collect_bss_info() and report it to the stack
+Origin: https://git.kernel.org/linus/993c52ba61a72a8c669c8091fa75c9514776b3f7
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c     | 4 ++++
+ drivers/staging/rtl8723au/include/wlan_bssdef.h   | 1 +
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 3 ++-
+ 3 files changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 84ca06b..823489b 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4281,6 +4281,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info);
+ 		bssid->BeaconPeriod =
+ 			get_unaligned_le16(&mgmt->u.beacon.beacon_int);
++		bssid->tsf = get_unaligned_le64(&mgmt->u.beacon.timestamp);
+ 	} else  if (ieee80211_is_probe_req(mgmt->frame_control)) {
+ 		ie_offset = offsetof(struct ieee80211_mgmt,
+ 				     u.probe_req.variable);
+@@ -4288,6 +4289,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		capab_info = 0;
+ 		bssid->BeaconPeriod =
+ 			padapter->registrypriv.dev_network.BeaconPeriod;
++		bssid->tsf = 0;
+ 	} else if (ieee80211_is_probe_resp(mgmt->frame_control)) {
+ 		ie_offset = offsetof(struct ieee80211_mgmt,
+ 				     u.probe_resp.variable);
+@@ -4295,12 +4297,14 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		capab_info = get_unaligned_le16(&mgmt->u.probe_resp.capab_info);
+ 		bssid->BeaconPeriod =
+ 			get_unaligned_le16(&mgmt->u.probe_resp.beacon_int);
++		bssid->tsf = get_unaligned_le64(&mgmt->u.probe_resp.timestamp);
+ 	} else {
+ 		bssid->reserved = 0;
+ 		ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 		capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info);
+ 		bssid->BeaconPeriod =
+ 			padapter->registrypriv.dev_network.BeaconPeriod;
++		bssid->tsf = 0;
+ 	}
+ 	ie_offset -= offsetof(struct ieee80211_mgmt, u);
+ 
+diff --git a/drivers/staging/rtl8723au/include/wlan_bssdef.h b/drivers/staging/rtl8723au/include/wlan_bssdef.h
+index b717687..60455e6 100644
+--- a/drivers/staging/rtl8723au/include/wlan_bssdef.h
++++ b/drivers/staging/rtl8723au/include/wlan_bssdef.h
+@@ -93,6 +93,7 @@ struct wlan_bssid_ex {
+ 	u32  Privacy;
+ 	long  Rssi;/* in dBM, raw data , get from PHY) */
+ 	u16 BeaconPeriod;       /*  units are Kusec */
++	u64 tsf;
+ 	u32 ATIMWindow;         /*  units are Kusec */
+ 	u32 DSConfig;           /*  Frequency, units are kHz */
+ 	enum nl80211_iftype ifmode;
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 0a0c58d..2621a0e 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -288,7 +288,8 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 	}
+ 
+ 	bss = cfg80211_inform_bss(wiphy, notify_channel,
+-				  pnetwork->network.MacAddress, 0,
++				  pnetwork->network.MacAddress,
++				  pnetwork->network.tsf,
+ 				  notify_capability, notify_interval,
+ 				  notify_ie, notify_ielen,
+ 				  notify_signal, GFP_ATOMIC);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0096-staging-rtl8723au-rtw_cfg80211_inform_bss-Report-the.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0096-staging-rtl8723au-rtw_cfg80211_inform_bss-Report-the.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,47 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:19 +0200
+Subject: [096/249] staging: rtl8723au: rtw_cfg80211_inform_bss(): Report the
+ beacon interval already retrieved
+Origin: https://git.kernel.org/linus/2620e339e84320814eb9b4c46d9295703ada1010
+
+Use the beacon interval we already retreived in collect_bss_info()
+instead of pulling it out of the saved IE array again.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 2621a0e..ff838fc 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -248,7 +248,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 	u16 channel;
+ 	u32 freq;
+ 	u16 notify_capability;
+-	u16 notify_interval;
+ 	u8 *notify_ie;
+ 	size_t notify_ielen;
+ 	s32 notify_signal;
+@@ -266,9 +265,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 
+ 	notify_channel = ieee80211_get_channel(wiphy, freq);
+ 
+-	notify_interval =
+-		get_unaligned_le16(
+-			rtw_get_beacon_interval23a_from_ie(pnetwork->network.IEs));
+ 	notify_capability =
+ 		get_unaligned_le16(
+ 			rtw_get_capability23a_from_ie(pnetwork->network.IEs));
+@@ -290,7 +286,8 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 	bss = cfg80211_inform_bss(wiphy, notify_channel,
+ 				  pnetwork->network.MacAddress,
+ 				  pnetwork->network.tsf,
+-				  notify_capability, notify_interval,
++				  notify_capability,
++				  pnetwork->network.BeaconPeriod,
+ 				  notify_ie, notify_ielen,
+ 				  notify_signal, GFP_ATOMIC);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0097-staging-rtl8723au-collect_bss_info-Save-capability-i.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0097-staging-rtl8723au-collect_bss_info-Save-capability-i.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,93 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:20 +0200
+Subject: [097/249] staging: rtl8723au: collect_bss_info(): Save capability in
+ struct wlan_bssid_ex
+Origin: https://git.kernel.org/linus/53c660006766aef0c4d423cd0990ead2537bed6a
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c   | 16 +++++++++-------
+ drivers/staging/rtl8723au/include/wlan_bssdef.h |  1 +
+ 2 files changed, 10 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 823489b..a91198f 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4262,7 +4262,6 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *bssid;
+-	u16 capab_info;
+ 
+ 	length = skb->len - sizeof(struct ieee80211_hdr_3addr);
+ 
+@@ -4278,7 +4277,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 	if (ieee80211_is_beacon(mgmt->frame_control)) {
+ 		bssid->reserved = 1;
+ 		ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+-		capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info);
++		bssid->capability =
++			get_unaligned_le16(&mgmt->u.beacon.capab_info);
+ 		bssid->BeaconPeriod =
+ 			get_unaligned_le16(&mgmt->u.beacon.beacon_int);
+ 		bssid->tsf = get_unaligned_le64(&mgmt->u.beacon.timestamp);
+@@ -4286,7 +4286,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		ie_offset = offsetof(struct ieee80211_mgmt,
+ 				     u.probe_req.variable);
+ 		bssid->reserved = 2;
+-		capab_info = 0;
++		bssid->capability = 0;
+ 		bssid->BeaconPeriod =
+ 			padapter->registrypriv.dev_network.BeaconPeriod;
+ 		bssid->tsf = 0;
+@@ -4294,14 +4294,16 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		ie_offset = offsetof(struct ieee80211_mgmt,
+ 				     u.probe_resp.variable);
+ 		bssid->reserved = 3;
+-		capab_info = get_unaligned_le16(&mgmt->u.probe_resp.capab_info);
++		bssid->capability =
++			get_unaligned_le16(&mgmt->u.probe_resp.capab_info);
+ 		bssid->BeaconPeriod =
+ 			get_unaligned_le16(&mgmt->u.probe_resp.beacon_int);
+ 		bssid->tsf = get_unaligned_le64(&mgmt->u.probe_resp.timestamp);
+ 	} else {
+ 		bssid->reserved = 0;
+ 		ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+-		capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info);
++		bssid->capability =
++			get_unaligned_le16(&mgmt->u.beacon.capab_info);
+ 		bssid->BeaconPeriod =
+ 			padapter->registrypriv.dev_network.BeaconPeriod;
+ 		bssid->tsf = 0;
+@@ -4396,7 +4398,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		return bssid;
+ 	}
+ 
+-	if (capab_info & WLAN_CAPABILITY_ESS) {
++	if (bssid->capability & WLAN_CAPABILITY_ESS) {
+ 		bssid->ifmode = NL80211_IFTYPE_STATION;
+ 		ether_addr_copy(bssid->MacAddress, mgmt->sa);
+ 	} else {
+@@ -4404,7 +4406,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		ether_addr_copy(bssid->MacAddress, mgmt->bssid);
+ 	}
+ 
+-	if (capab_info & WLAN_CAPABILITY_PRIVACY)
++	if (bssid->capability & WLAN_CAPABILITY_PRIVACY)
+ 		bssid->Privacy = 1;
+ 	else
+ 		bssid->Privacy = 0;
+diff --git a/drivers/staging/rtl8723au/include/wlan_bssdef.h b/drivers/staging/rtl8723au/include/wlan_bssdef.h
+index 60455e6..c43c855 100644
+--- a/drivers/staging/rtl8723au/include/wlan_bssdef.h
++++ b/drivers/staging/rtl8723au/include/wlan_bssdef.h
+@@ -93,6 +93,7 @@ struct wlan_bssid_ex {
+ 	u32  Privacy;
+ 	long  Rssi;/* in dBM, raw data , get from PHY) */
+ 	u16 BeaconPeriod;       /*  units are Kusec */
++	u16 capability;
+ 	u64 tsf;
+ 	u32 ATIMWindow;         /*  units are Kusec */
+ 	u32 DSConfig;           /*  Frequency, units are kHz */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0098-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-the-ca.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0098-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-the-ca.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,47 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:21 +0200
+Subject: [098/249] staging: rtl8723au: rtw_cfg80211_inform_bss(): Use the
+ capability info we already saved
+Origin: https://git.kernel.org/linus/11a80e8877bf2db8a13b68018049b48e367bd76e
+
+No point in pulling capability info out of the IE array when it's
+already stored in struct wlan_bssid_ex
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index ff838fc..4eef408 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -247,7 +247,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 	struct cfg80211_bss *bss;
+ 	u16 channel;
+ 	u32 freq;
+-	u16 notify_capability;
+ 	u8 *notify_ie;
+ 	size_t notify_ielen;
+ 	s32 notify_signal;
+@@ -265,10 +264,6 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 
+ 	notify_channel = ieee80211_get_channel(wiphy, freq);
+ 
+-	notify_capability =
+-		get_unaligned_le16(
+-			rtw_get_capability23a_from_ie(pnetwork->network.IEs));
+-
+ 	notify_ie = pnetwork->network.IEs + _FIXED_IE_LENGTH_;
+ 	notify_ielen = pnetwork->network.IELength - _FIXED_IE_LENGTH_;
+ 
+@@ -286,7 +281,7 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 	bss = cfg80211_inform_bss(wiphy, notify_channel,
+ 				  pnetwork->network.MacAddress,
+ 				  pnetwork->network.tsf,
+-				  notify_capability,
++				  pnetwork->network.capability,
+ 				  pnetwork->network.BeaconPeriod,
+ 				  notify_ie, notify_ielen,
+ 				  notify_signal, GFP_ATOMIC);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0099-staging-rtl8723au-struct-wlan_bssid_ex-Rename-Beacon.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0099-staging-rtl8723au-struct-wlan_bssid_ex-Rename-Beacon.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,138 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:22 +0200
+Subject: [099/249] staging: rtl8723au: struct wlan_bssid_ex: Rename
+ BeaconPeriod to beacon_interval
+Origin: https://git.kernel.org/linus/143ced27acaa948cbcf34cafe0bca3c926fd35fc
+
+This is to be more consistent mapping the names in wlan_bssid_ex to
+those in struct ieee80211_mgmt.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c           |  4 ++--
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c    |  2 +-
+ drivers/staging/rtl8723au/core/rtw_mlme.c         |  2 +-
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c     | 12 ++++++------
+ drivers/staging/rtl8723au/include/wlan_bssdef.h   |  2 +-
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c |  2 +-
+ 6 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index a52662e..73161b9 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -655,7 +655,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
+ 	struct ieee80211_ht_operation *pht_info = NULL;
+ 	int bcn_fixed_size;
+ 
+-	bcn_interval = (u16)pnetwork->BeaconPeriod;
++	bcn_interval = (u16)pnetwork->beacon_interval;
+ 	cur_channel = pnetwork->DSConfig;
+ 	cur_bwmode = HT_CHANNEL_WIDTH_20;;
+ 	cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
+@@ -847,7 +847,7 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, u8 *pbuf,
+ 	/* beacon interval */
+ 	/* ie + 8;  8: TimeStamp, 2: Beacon Interval 2:Capability */
+ 	pbeacon = rtw_get_beacon_interval23a_from_ie(ie);
+-	pbss_network->BeaconPeriod = get_unaligned_le16(pbeacon);
++	pbss_network->beacon_interval = get_unaligned_le16(pbeacon);
+ 
+ 	/* capability */
+ 	cap = get_unaligned_le16(ie);
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index 9d0662c..442bdef 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -360,7 +360,7 @@ int rtw_generate_ie23a(struct registry_priv *pregistrypriv)
+ 
+ 	/* beacon interval : 2bytes */
+ 	/* BCN_INTERVAL; */
+-	*(u16*)ie = cpu_to_le16(pdev_network->BeaconPeriod);
++	*(u16*)ie = cpu_to_le16(pdev_network->beacon_interval);
+ 	sz += 2;
+ 	ie += 2;
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 799338b..567be5e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -2117,7 +2117,7 @@ void rtw_init_registrypriv_dev_network23a(struct rtw_adapter* adapter)
+ 	memcpy(&pdev_network->Ssid, &pregistrypriv->ssid,
+ 	       sizeof(struct cfg80211_ssid));
+ 
+-	pdev_network->BeaconPeriod = 100;
++	pdev_network->beacon_interval = 100;
+ }
+ 
+ void rtw_update_registrypriv_dev_network23a(struct rtw_adapter* adapter)
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index a91198f..f40b733 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4279,7 +4279,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 		bssid->capability =
+ 			get_unaligned_le16(&mgmt->u.beacon.capab_info);
+-		bssid->BeaconPeriod =
++		bssid->beacon_interval =
+ 			get_unaligned_le16(&mgmt->u.beacon.beacon_int);
+ 		bssid->tsf = get_unaligned_le64(&mgmt->u.beacon.timestamp);
+ 	} else  if (ieee80211_is_probe_req(mgmt->frame_control)) {
+@@ -4287,8 +4287,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 				     u.probe_req.variable);
+ 		bssid->reserved = 2;
+ 		bssid->capability = 0;
+-		bssid->BeaconPeriod =
+-			padapter->registrypriv.dev_network.BeaconPeriod;
++		bssid->beacon_interval =
++			padapter->registrypriv.dev_network.beacon_interval;
+ 		bssid->tsf = 0;
+ 	} else if (ieee80211_is_probe_resp(mgmt->frame_control)) {
+ 		ie_offset = offsetof(struct ieee80211_mgmt,
+@@ -4296,7 +4296,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		bssid->reserved = 3;
+ 		bssid->capability =
+ 			get_unaligned_le16(&mgmt->u.probe_resp.capab_info);
+-		bssid->BeaconPeriod =
++		bssid->beacon_interval =
+ 			get_unaligned_le16(&mgmt->u.probe_resp.beacon_int);
+ 		bssid->tsf = get_unaligned_le64(&mgmt->u.probe_resp.timestamp);
+ 	} else {
+@@ -4304,8 +4304,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 		bssid->capability =
+ 			get_unaligned_le16(&mgmt->u.beacon.capab_info);
+-		bssid->BeaconPeriod =
+-			padapter->registrypriv.dev_network.BeaconPeriod;
++		bssid->beacon_interval =
++			padapter->registrypriv.dev_network.beacon_interval;
+ 		bssid->tsf = 0;
+ 	}
+ 	ie_offset -= offsetof(struct ieee80211_mgmt, u);
+diff --git a/drivers/staging/rtl8723au/include/wlan_bssdef.h b/drivers/staging/rtl8723au/include/wlan_bssdef.h
+index c43c855..96e8074 100644
+--- a/drivers/staging/rtl8723au/include/wlan_bssdef.h
++++ b/drivers/staging/rtl8723au/include/wlan_bssdef.h
+@@ -92,7 +92,7 @@ struct wlan_bssid_ex {
+ 	struct cfg80211_ssid Ssid;
+ 	u32  Privacy;
+ 	long  Rssi;/* in dBM, raw data , get from PHY) */
+-	u16 BeaconPeriod;       /*  units are Kusec */
++	u16 beacon_interval;
+ 	u16 capability;
+ 	u64 tsf;
+ 	u32 ATIMWindow;         /*  units are Kusec */
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 4eef408..638e833 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -282,7 +282,7 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 				  pnetwork->network.MacAddress,
+ 				  pnetwork->network.tsf,
+ 				  pnetwork->network.capability,
+-				  pnetwork->network.BeaconPeriod,
++				  pnetwork->network.beacon_interval,
+ 				  notify_ie, notify_ielen,
+ 				  notify_signal, GFP_ATOMIC);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0100-staging-rtl8723au-rtw_add_beacon-Replace-magic-const.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0100-staging-rtl8723au-rtw_add_beacon-Replace-magic-const.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,49 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:23 +0200
+Subject: [100/249] staging: rtl8723au: rtw_add_beacon(): Replace magic
+ constant with appropriate struct size
+Origin: https://git.kernel.org/linus/db97812c2c5e8a18d7cf3eb679a4cfdd6125f748
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 638e833..80d5fe7 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -2912,7 +2912,7 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head,
+ 			  size_t head_len, const u8 *tail, size_t tail_len)
+ {
+ 	int ret = 0;
+-	u8 *pbuf = NULL;
++	u8 *pbuf;
+ 	uint len, wps_ielen = 0;
+ 	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+ 	/* struct sta_priv *pstapriv = &padapter->stapriv; */
+@@ -2923,17 +2923,19 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head,
+ 	if (check_fwstate(pmlmepriv, WIFI_AP_STATE) != true)
+ 		return -EINVAL;
+ 
+-	if (head_len < 24)
++	if (head_len < sizeof(struct ieee80211_hdr_3addr))
+ 		return -EINVAL;
+ 
+ 	pbuf = kzalloc(head_len + tail_len, GFP_KERNEL);
+ 	if (!pbuf)
+ 		return -ENOMEM;
+ 	/*  24 = beacon header len. */
+-	memcpy(pbuf, (void *)head + 24, head_len - 24);
+-	memcpy(pbuf + head_len - 24, (void *)tail, tail_len);
++	memcpy(pbuf, (void *)head + sizeof(struct ieee80211_hdr_3addr),
++	       head_len - sizeof(struct ieee80211_hdr_3addr));
++	memcpy(pbuf + head_len - sizeof(struct ieee80211_hdr_3addr),
++	       (void *)tail, tail_len);
+ 
+-	len = head_len + tail_len - 24;
++	len = head_len + tail_len - sizeof(struct ieee80211_hdr_3addr);
+ 
+ 	/* check wps ie if inclued */
+ 	if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,

Added: dists/sid/linux/debian/patches/features/all/r8723au/0101-staging-rtl8723au-Update-bss-beacon-info-in-rtw_add_.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0101-staging-rtl8723au-Update-bss-beacon-info-in-rtw_add_.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,76 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:24 +0200
+Subject: [101/249] staging: rtl8723au: Update bss beacon info in
+ rtw_add_beacon()
+Origin: https://git.kernel.org/linus/ddf5c2bd1044d923ad82f519c68cdf12a055a568
+
+Pull out the core info beacon_interval, capability, and tsf and update
+cur_network.network with the info in rtw_add_beacon() instead of
+relying on it being in ->IEs.
+
+This will help later when getting rid of the beacon struct info from
+->IEs and only carrying the actual IEs there.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c           | 6 ------
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 9 ++++++++-
+ 2 files changed, 8 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index 73161b9..e943b6b 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -798,7 +798,6 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, u8 *pbuf,
+ 	u8 *pHT_caps_ie = NULL;
+ 	u8 *pHT_info_ie = NULL;
+ 	struct sta_info *psta = NULL;
+-	__le16 *pbeacon;
+ 	u16 cap, ht_cap = false;
+ 	uint ie_len = 0;
+ 	int group_cipher, pairwise_cipher;
+@@ -844,11 +843,6 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, u8 *pbuf,
+ 
+ 	memcpy(pbss_network->MacAddress, myid(&padapter->eeprompriv), ETH_ALEN);
+ 
+-	/* beacon interval */
+-	/* ie + 8;  8: TimeStamp, 2: Beacon Interval 2:Capability */
+-	pbeacon = rtw_get_beacon_interval23a_from_ie(ie);
+-	pbss_network->beacon_interval = get_unaligned_le16(pbeacon);
+-
+ 	/* capability */
+ 	cap = get_unaligned_le16(ie);
+ 
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 80d5fe7..6c06d57 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -2915,6 +2915,8 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head,
+ 	u8 *pbuf;
+ 	uint len, wps_ielen = 0;
+ 	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
++	struct wlan_bssid_ex *bss = &pmlmepriv->cur_network.network;
++	const struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)head;
+ 	/* struct sta_priv *pstapriv = &padapter->stapriv; */
+ 
+ 	DBG_8723A("%s beacon_head_len =%zu, beacon_tail_len =%zu\n",
+@@ -2923,12 +2925,17 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head,
+ 	if (check_fwstate(pmlmepriv, WIFI_AP_STATE) != true)
+ 		return -EINVAL;
+ 
+-	if (head_len < sizeof(struct ieee80211_hdr_3addr))
++	if (head_len < offsetof(struct ieee80211_mgmt, u.beacon.variable))
+ 		return -EINVAL;
+ 
+ 	pbuf = kzalloc(head_len + tail_len, GFP_KERNEL);
+ 	if (!pbuf)
+ 		return -ENOMEM;
++
++	bss->beacon_interval = get_unaligned_le16(&mgmt->u.beacon.beacon_int);
++	bss->capability = get_unaligned_le16(&mgmt->u.beacon.capab_info);
++	bss->tsf = get_unaligned_le64(&mgmt->u.beacon.timestamp);
++
+ 	/*  24 = beacon header len. */
+ 	memcpy(pbuf, (void *)head + sizeof(struct ieee80211_hdr_3addr),
+ 	       head_len - sizeof(struct ieee80211_hdr_3addr));

Added: dists/sid/linux/debian/patches/features/all/r8723au/0102-staging-rtl8723au-is_same_network23a-Use-the-capabil.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0102-staging-rtl8723au-is_same_network23a-Use-the-capabil.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,30 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:25 +0200
+Subject: [102/249] staging: rtl8723au: is_same_network23a(): Use the
+ capability info from wlan_bssid_ex
+Origin: https://git.kernel.org/linus/ccb1bdcb485864dde708b059a9437f2a481a8282
+
+We already have the capability info in struct wlan_bssid_ex, no point
+in searching for it once again.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 567be5e..2119dfb 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -366,8 +366,8 @@ int is_same_network23a(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst)
+ {
+ 	u16 s_cap, d_cap;
+ 
+-	s_cap = get_unaligned_le16(rtw_get_capability23a_from_ie(src->IEs));
+-	d_cap = get_unaligned_le16(rtw_get_capability23a_from_ie(dst->IEs));
++	s_cap = src->capability;
++	d_cap = dst->capability;
+ 
+ 	return ((src->Ssid.ssid_len == dst->Ssid.ssid_len) &&
+ 		/*	(src->DSConfig == dst->DSConfig) && */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0103-staging-rtl8723au-ConstructBeacon-Use-struct-ieee802.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0103-staging-rtl8723au-ConstructBeacon-Use-struct-ieee802.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,81 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:26 +0200
+Subject: [103/249] staging: rtl8723au: ConstructBeacon(): Use struct
+ ieee80211_mgmt to build beacon
+Origin: https://git.kernel.org/linus/0b46cfdd0320534b0064529c242c4ba324b21dc1
+
+This gets rid of a bunch of hard coded offsets and reduces the
+dependency of the ugly rtw_get_*_from_ie() functions.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_cmd.c | 37 +++++++++++-----------------
+ 1 file changed, 15 insertions(+), 22 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+index 6e1fed2..ae15624 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+@@ -200,9 +200,10 @@ void rtl8723a_set_FwPwrMode_cmd(struct rtw_adapter *padapter, u8 Mode)
+ 
+ }
+ 
+-static void ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength)
++static void
++ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength)
+ {
+-	struct ieee80211_hdr *pwlanhdr;
++	struct ieee80211_mgmt *mgmt;
+ 	u32 rate_len, pktlen;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+@@ -212,36 +213,28 @@ static void ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLeng
+ 
+ 	/* DBG_8723A("%s\n", __func__); */
+ 
+-	pwlanhdr = (struct ieee80211_hdr *)pframe;
++	mgmt = (struct ieee80211_mgmt *)pframe;
+ 
+-	pwlanhdr->frame_control =
++	mgmt->frame_control =
+ 		cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_BEACON);
+ 
+-	memcpy(pwlanhdr->addr1, bc_addr, ETH_ALEN);
+-	memcpy(pwlanhdr->addr2, myid(&padapter->eeprompriv), ETH_ALEN);
+-	memcpy(pwlanhdr->addr3, get_my_bssid23a(cur_network), ETH_ALEN);
++	ether_addr_copy(mgmt->da, bc_addr);
++	ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv));
++	ether_addr_copy(mgmt->bssid, get_my_bssid23a(cur_network));
+ 
+ 	/* A Beacon frame shouldn't have fragment bits set */
+-	pwlanhdr->seq_ctrl = 0;
+-
+-	pframe += sizeof(struct ieee80211_hdr_3addr);
+-	pktlen = sizeof (struct ieee80211_hdr_3addr);
++	mgmt->seq_ctrl = 0;
+ 
+ 	/* timestamp will be inserted by hardware */
+-	pframe += 8;
+-	pktlen += 8;
+-
+-	/*  beacon interval: 2 bytes */
+-	memcpy(pframe, (unsigned char *)(rtw_get_beacon_interval23a_from_ie(cur_network->IEs)), 2);
+ 
+-	pframe += 2;
+-	pktlen += 2;
++	put_unaligned_le16(cur_network->beacon_interval,
++			   &mgmt->u.beacon.beacon_int);
+ 
+-	/*  capability info: 2 bytes */
+-	memcpy(pframe, (unsigned char *)(rtw_get_capability23a_from_ie(cur_network->IEs)), 2);
++	put_unaligned_le16(cur_network->capability,
++			   &mgmt->u.beacon.capab_info);
+ 
+-	pframe += 2;
+-	pktlen += 2;
++	pframe = mgmt->u.beacon.variable;
++	pktlen = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 
+ 	if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) {
+ 		bcn_fixed_size =

Added: dists/sid/linux/debian/patches/features/all/r8723au/0104-staging-rtl8723au-issue_beacon23a-Do-not-copy-IEs-in.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0104-staging-rtl8723au-issue_beacon23a-Do-not-copy-IEs-in.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,80 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:27 +0200
+Subject: [104/249] staging: rtl8723au: issue_beacon23a(): Do not copy IEs in
+ front of beacon data
+Origin: https://git.kernel.org/linus/b81d36cbee8650d42cc30cdf390d7ef28faae83d
+
+Not sure how this happened, but one should never copy the IEs in front
+of the beacon frame info. This could lead to some nasty corrupted
+beacon frames hitting the wire if running AP mode - ouf!
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 46 +++++++++++++--------------
+ 1 file changed, 23 insertions(+), 23 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index f40b733..265fd2a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2434,7 +2434,29 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 	pframe += sizeof(struct ieee80211_hdr_3addr);
+ 	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
+ 
+-	if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) {
++	/* below for ad-hoc mode */
++
++	/* timestamp will be inserted by hardware */
++	pframe += 8;
++	pattrib->pktlen += 8;
++
++	/*  beacon interval: 2 bytes */
++
++	memcpy(pframe, (unsigned char *)
++	       rtw_get_beacon_interval23a_from_ie(cur_network->IEs), 2);
++
++	pframe += 2;
++	pattrib->pktlen += 2;
++
++	/*  capability info: 2 bytes */
++
++	memcpy(pframe, (unsigned char *)
++	       rtw_get_capability23a_from_ie(cur_network->IEs), 2);
++
++	pframe += 2;
++	pattrib->pktlen += 2;
++
++	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
+ 		u8 *iebuf;
+ 		int buflen;
+ 		/* DBG_8723A("ie len =%d\n", cur_network->IELength); */
+@@ -2468,28 +2490,6 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 		goto _issue_bcn;
+ 	}
+ 
+-	/* below for ad-hoc mode */
+-
+-	/* timestamp will be inserted by hardware */
+-	pframe += 8;
+-	pattrib->pktlen += 8;
+-
+-	/*  beacon interval: 2 bytes */
+-
+-	memcpy(pframe, (unsigned char *)
+-	       rtw_get_beacon_interval23a_from_ie(cur_network->IEs), 2);
+-
+-	pframe += 2;
+-	pattrib->pktlen += 2;
+-
+-	/*  capability info: 2 bytes */
+-
+-	memcpy(pframe, (unsigned char *)
+-	       rtw_get_capability23a_from_ie(cur_network->IEs), 2);
+-
+-	pframe += 2;
+-	pattrib->pktlen += 2;
+-
+ 	/*  SSID */
+ 	pframe = rtw_set_ie23a(pframe, WLAN_EID_SSID,
+ 			       cur_network->Ssid.ssid_len,

Added: dists/sid/linux/debian/patches/features/all/r8723au/0105-staging-rtl8723au-issue_beacon23a-Use-struct-ieee802.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0105-staging-rtl8723au-issue_beacon23a-Use-struct-ieee802.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,82 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:28 +0200
+Subject: [105/249] staging: rtl8723au: issue_beacon23a(): Use struct
+ ieee80211_mgmt to build beacon
+Origin: https://git.kernel.org/linus/5d43182bc35c055408fac06dc31da88f8ce33886
+
+Why on Earth we have two functions in the driver constructing beacon
+frames is beyond me ... but one step at a time
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 42 +++++++++------------------
+ 1 file changed, 14 insertions(+), 28 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 265fd2a..9b83a701 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2390,7 +2390,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 	struct xmit_frame *pmgntframe;
+ 	struct pkt_attrib *pattrib;
+ 	unsigned char *pframe;
+-	struct ieee80211_hdr *pwlanhdr;
++	struct ieee80211_mgmt *mgmt;
+ 	unsigned int rate_len;
+ 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+@@ -2421,40 +2421,26 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
+ 
+ 	pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
+-	pwlanhdr = (struct ieee80211_hdr *)pframe;
+-
+-	pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+-					      IEEE80211_STYPE_BEACON);
+-	pwlanhdr->seq_ctrl = 0;
+-
+-	ether_addr_copy(pwlanhdr->addr1, bc_addr);
+-	ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
+-	ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(cur_network));
++	mgmt = (struct ieee80211_mgmt *)pframe;
+ 
+-	pframe += sizeof(struct ieee80211_hdr_3addr);
+-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
++	mgmt->frame_control =
++		cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_BEACON);
++	mgmt->seq_ctrl = 0;
+ 
+-	/* below for ad-hoc mode */
++	ether_addr_copy(mgmt->da, bc_addr);
++	ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv));
++	ether_addr_copy(mgmt->bssid, get_my_bssid23a(cur_network));
+ 
+ 	/* timestamp will be inserted by hardware */
+-	pframe += 8;
+-	pattrib->pktlen += 8;
+-
+-	/*  beacon interval: 2 bytes */
+ 
+-	memcpy(pframe, (unsigned char *)
+-	       rtw_get_beacon_interval23a_from_ie(cur_network->IEs), 2);
++	put_unaligned_le16(cur_network->beacon_interval,
++			   &mgmt->u.beacon.beacon_int);
+ 
+-	pframe += 2;
+-	pattrib->pktlen += 2;
++	put_unaligned_le16(cur_network->capability,
++			   &mgmt->u.beacon.capab_info);
+ 
+-	/*  capability info: 2 bytes */
+-
+-	memcpy(pframe, (unsigned char *)
+-	       rtw_get_capability23a_from_ie(cur_network->IEs), 2);
+-
+-	pframe += 2;
+-	pattrib->pktlen += 2;
++	pframe = mgmt->u.beacon.variable;
++	pattrib->pktlen = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 
+ 	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
+ 		u8 *iebuf;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0106-staging-rtl8723au-issue_probersp-Do-not-copy-the-IEs.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0106-staging-rtl8723au-issue_probersp-Do-not-copy-the-IEs.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,117 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:29 +0200
+Subject: [106/249] staging: rtl8723au: issue_probersp(): Do not copy the IEs
+ in front of probe_resp data
+Origin: https://git.kernel.org/linus/08519034b3f75e030582724b9f1a280a5b0cfb73
+
+Another case where the driver was copying IEs in front of the
+probe_resp data in the management frame, when running in AP mode. This
+would result in badly corrupted frames hitting the wire - ouf ouf ouf!
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 59 +++++++++++----------------
+ 1 file changed, 23 insertions(+), 36 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 9b83a701..d2a09c6 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2544,7 +2544,7 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 	struct xmit_frame *pmgntframe;
+ 	struct pkt_attrib *pattrib;
+ 	unsigned char *pframe;
+-	struct ieee80211_hdr *pwlanhdr;
++	struct ieee80211_mgmt *mgmt;
+ 	unsigned char *mac, *bssid;
+ 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
+ #ifdef CONFIG_8723AU_AP_MODE
+@@ -2564,6 +2564,9 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 
+ 	/* DBG_8723A("%s\n", __func__); */
+ 
++	if (cur_network->IELength > MAX_IE_SZ)
++		return;
++
+ 	pmgntframe = alloc_mgtxmitframe23a(pxmitpriv);
+ 	if (!pmgntframe) {
+ 		DBG_8723A("%s, alloc mgnt frame fail\n", __func__);
+@@ -2577,28 +2580,35 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
+ 
+ 	pframe = (u8 *)pmgntframe->buf_addr + TXDESC_OFFSET;
+-	pwlanhdr = (struct ieee80211_hdr *)pframe;
++	mgmt = (struct ieee80211_mgmt *)pframe;
+ 
+ 	mac = myid(&padapter->eeprompriv);
+ 	bssid = cur_network->MacAddress;
+ 
+-	pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+-					      IEEE80211_STYPE_PROBE_RESP);
++	mgmt->frame_control =
++		cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_RESP);
+ 
+-	ether_addr_copy(pwlanhdr->addr1, da);
+-	ether_addr_copy(pwlanhdr->addr2, mac);
+-	ether_addr_copy(pwlanhdr->addr3, bssid);
++	ether_addr_copy(mgmt->da, da);
++	ether_addr_copy(mgmt->sa, mac);
++	ether_addr_copy(mgmt->bssid, bssid);
+ 
+-	pwlanhdr->seq_ctrl =
+-		cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
++	mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
+ 	pmlmeext->mgnt_seq++;
+ 
+ 	pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr);
+-	pattrib->pktlen = pattrib->hdrlen;
+-	pframe += pattrib->hdrlen;
+ 
+-	if (cur_network->IELength > MAX_IE_SZ)
+-		return;
++	/* timestamp will be inserted by hardware */
++	put_unaligned_le16(cur_network->beacon_interval,
++			   &mgmt->u.probe_resp.beacon_int);
++
++	put_unaligned_le16(cur_network->capability,
++			   &mgmt->u.probe_resp.capab_info);
++
++	pframe = mgmt->u.probe_resp.variable;
++	pattrib->pktlen =
++		offsetof(struct ieee80211_mgmt, u.probe_resp.variable);
++
++	/* below for ad-hoc mode */
+ 
+ #ifdef CONFIG_8723AU_AP_MODE
+ 	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
+@@ -2682,29 +2692,6 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 	} else
+ #endif
+ 	{
+-
+-		/* timestamp will be inserted by hardware */
+-		pframe += 8;
+-		pattrib->pktlen += 8;
+-
+-		/*  beacon interval: 2 bytes */
+-
+-		memcpy(pframe, (unsigned char *)
+-		       rtw_get_beacon_interval23a_from_ie(cur_network->IEs), 2);
+-
+-		pframe += 2;
+-		pattrib->pktlen += 2;
+-
+-		/*  capability info: 2 bytes */
+-
+-		memcpy(pframe, (unsigned char *)
+-		       rtw_get_capability23a_from_ie(cur_network->IEs), 2);
+-
+-		pframe += 2;
+-		pattrib->pktlen += 2;
+-
+-		/* below for ad-hoc mode */
+-
+ 		/*  SSID */
+ 		pframe = rtw_set_ie23a(pframe, WLAN_EID_SSID,
+ 				       cur_network->Ssid.ssid_len,

Added: dists/sid/linux/debian/patches/features/all/r8723au/0107-staging-rtl8723au-issue_assocrsp-Use-capability-from.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0107-staging-rtl8723au-issue_assocrsp-Use-capability-from.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,36 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:30 +0200
+Subject: [107/249] staging: rtl8723au: issue_assocrsp(): Use capability from
+ struct wlan_bssid_ex
+Origin: https://git.kernel.org/linus/5376badca02fabc7ca3ffa9e7dd5e795a4250486
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index d2a09c6..a8bc12c 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -3051,7 +3051,6 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status,
+ 	struct ieee80211_mgmt *mgmt;
+ 	struct pkt_attrib *pattrib;
+ 	unsigned char *pframe;
+-	unsigned short val;
+ 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+@@ -3089,10 +3088,7 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status,
+ 	pattrib->pktlen =
+ 		offsetof(struct ieee80211_mgmt, u.assoc_resp.variable);
+ 
+-	/* capability */
+-	val = *(unsigned short *)rtw_get_capability23a_from_ie(ie);
+-
+-	mgmt->u.assoc_resp.capab_info = val;
++	mgmt->u.assoc_resp.capab_info = cpu_to_le16(pnetwork->capability);
+ 	mgmt->u.assoc_resp.status_code = cpu_to_le16(status);
+ 	mgmt->u.assoc_resp.aid = cpu_to_le16(pstat->aid | BIT(14) | BIT(15));
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0108-staging-rtl8723au-issue_assocreq-Use-struct-ieee8021.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0108-staging-rtl8723au-issue_assocreq-Use-struct-ieee8021.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,82 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:31 +0200
+Subject: [108/249] staging: rtl8723au: issue_assocreq(): Use struct
+ ieee80211_mgmt to build assoc_req frame
+Origin: https://git.kernel.org/linus/92af4499c69e57827bee8dfcdf6c65d4c5394179
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 38 +++++++++++----------------
+ 1 file changed, 15 insertions(+), 23 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index a8bc12c..f7ddd6a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -3185,7 +3185,7 @@ static void issue_assocreq(struct rtw_adapter *padapter)
+ 	struct pkt_attrib *pattrib;
+ 	unsigned char *pframe;
+ 	const u8 *p;
+-	struct ieee80211_hdr *pwlanhdr;
++	struct ieee80211_mgmt *mgmt;
+ 	unsigned int i, j, index = 0;
+ 	unsigned char rf_type, bssrate[NumRates], sta_bssrate[NumRates];
+ 	struct registry_priv *pregpriv = &padapter->registrypriv;
+@@ -3207,34 +3207,26 @@ static void issue_assocreq(struct rtw_adapter *padapter)
+ 	memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
+ 
+ 	pframe = (u8 *)pmgntframe->buf_addr + TXDESC_OFFSET;
+-	pwlanhdr = (struct ieee80211_hdr *)pframe;
++	mgmt = (struct ieee80211_mgmt *)pframe;
+ 
+-	pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+-					      IEEE80211_STYPE_ASSOC_REQ);
++	mgmt->frame_control =
++		cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ASSOC_REQ);
+ 
+-	ether_addr_copy(pwlanhdr->addr1, get_my_bssid23a(&pmlmeinfo->network));
+-	ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
+-	ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network));
++	ether_addr_copy(mgmt->da, get_my_bssid23a(&pmlmeinfo->network));
++	ether_addr_copy(mgmt->sa, myid(&padapter->eeprompriv));
++	ether_addr_copy(mgmt->bssid, get_my_bssid23a(&pmlmeinfo->network));
+ 
+-	pwlanhdr->seq_ctrl =
+-		cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
++	mgmt->seq_ctrl = cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
+ 	pmlmeext->mgnt_seq++;
+ 
+-	pframe += sizeof(struct ieee80211_hdr_3addr);
+-	pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
+-
+ 	/* caps */
+-	memcpy(pframe,
+-	       rtw_get_capability23a_from_ie(pmlmeinfo->network.IEs), 2);
+-
+-	pframe += 2;
+-	pattrib->pktlen += 2;
+-
+-	/* listen interval */
++	put_unaligned_le16(pmlmeinfo->network.capability,
++			   &mgmt->u.assoc_req.capab_info);
+ 	/* todo: listen interval for power saving */
+-	put_unaligned_le16(3, pframe);
+-	pframe += 2;
+-	pattrib->pktlen += 2;
++	put_unaligned_le16(3, &mgmt->u.assoc_req.listen_interval);
++
++	pframe = mgmt->u.assoc_req.variable;
++	pattrib->pktlen = offsetof(struct ieee80211_mgmt, u.assoc_req.variable);
+ 
+ 	/* SSID */
+ 	pframe = rtw_set_ie23a(pframe, WLAN_EID_SSID,
+@@ -3437,7 +3429,7 @@ exit:
+ 		kfree(pmlmepriv->assoc_req);
+ 		pmlmepriv->assoc_req = kmalloc(pattrib->pktlen, GFP_ATOMIC);
+ 		if (pmlmepriv->assoc_req) {
+-			memcpy(pmlmepriv->assoc_req, pwlanhdr, pattrib->pktlen);
++			memcpy(pmlmepriv->assoc_req, mgmt, pattrib->pktlen);
+ 			pmlmepriv->assoc_req_len = pattrib->pktlen;
+ 		}
+ 	} else

Added: dists/sid/linux/debian/patches/features/all/r8723au/0109-staging-rtl8723au-rtw_get_bcn_info23a-Use-capability.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0109-staging-rtl8723au-rtw_get_bcn_info23a-Use-capability.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,35 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:32 +0200
+Subject: [109/249] staging: rtl8723au: rtw_get_bcn_info23a(): Use capability
+ from wlan_bssid_ex
+Origin: https://git.kernel.org/linus/9ce73e2e6aafde2915d2210e644de94203212a04
+
+This eliminates yet another user of rtw_get_capability23a_from_ie()
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index 442bdef..d60fb3c 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -770,15 +770,12 @@ static int rtw_get_cipher_info(struct wlan_network *pnetwork)
+ 
+ void rtw_get_bcn_info23a(struct wlan_network *pnetwork)
+ {
+-	unsigned short cap;
+ 	u8 bencrypt = 0;
+ 	int pie_len, ie_offset;
+ 	u8 *pie;
+ 	const u8 *p;
+ 
+-	cap = get_unaligned_le16(
+-		rtw_get_capability23a_from_ie(pnetwork->network.IEs));
+-	if (cap & WLAN_CAPABILITY_PRIVACY) {
++	if (pnetwork->network.capability & WLAN_CAPABILITY_PRIVACY) {
+ 		bencrypt = 1;
+ 		pnetwork->network.Privacy = 1;
+ 	} else

Added: dists/sid/linux/debian/patches/features/all/r8723au/0110-staging-rtl8723au-rtw_get_bcn_info23a-Use-__func__-i.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0110-staging-rtl8723au-rtw_get_bcn_info23a-Use-__func__-i.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,38 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:33 +0200
+Subject: [110/249] staging: rtl8723au: rtw_get_bcn_info23a(): Use __func__ in
+ debug prints
+Origin: https://git.kernel.org/linus/0396416f541075315c67fe8817105122b75b5317
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index d60fb3c..f2c4a0e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -782,7 +782,7 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork)
+ 		pnetwork->BcnInfo.encryp_protocol = ENCRYP_PROTOCOL_OPENSYS;
+ 
+ 	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
+-		 ("rtw_get_bcn_info23a: ssid =%s\n", pnetwork->network.Ssid.ssid));
++		 ("%s: ssid =%s\n", __func__, pnetwork->network.Ssid.ssid));
+ 
+ 	ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+ 		offsetof(struct ieee80211_mgmt, u);
+@@ -801,10 +801,10 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork)
+ 			pnetwork->BcnInfo.encryp_protocol = ENCRYP_PROTOCOL_WEP;
+ 	}
+ 	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
+-		 ("rtw_get_bcn_info23a: pnetwork->encryp_protocol is %x\n",
++		 ("%s: pnetwork->encryp_protocol is %x\n", __func__,
+ 		  pnetwork->BcnInfo.encryp_protocol));
+ 	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
+-		 ("rtw_get_bcn_info23a: pnetwork->encryp_protocol is %x\n",
++		 ("%s: pnetwork->encryp_protocol is %x\n", __func__,
+ 		  pnetwork->BcnInfo.encryp_protocol));
+ 	rtw_get_cipher_info(pnetwork);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0111-staging-rtl8723au-Remove-last-users-of-rtw_get_capab.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0111-staging-rtl8723au-Remove-last-users-of-rtw_get_capab.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,127 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:34 +0200
+Subject: [111/249] staging: rtl8723au: Remove last users of
+ rtw_get_capability*() functions
+Origin: https://git.kernel.org/linus/a94e12b18331194d2ac9fe37da9da6c5c3b244d4
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c        |  2 +-
+ drivers/staging/rtl8723au/core/rtw_mlme.c      | 14 --------------
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c  |  4 ++--
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c |  6 +++---
+ drivers/staging/rtl8723au/include/rtw_mlme.h   |  2 --
+ 5 files changed, 6 insertions(+), 22 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index e943b6b..2a960b1 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -773,7 +773,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
+ 	update_wireless_mode23a(padapter);
+ 
+ 	/* udpate capability after cur_wireless_mode updated */
+-	update_capinfo23a(padapter, rtw_get_capability23a(pnetwork));
++	update_capinfo23a(padapter, pnetwork->capability);
+ 
+ 	/* let pnetwork_mlmeext == pnetwork_mlme. */
+ 	memcpy(pnetwork_mlmeext, pnetwork, pnetwork->Length);
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 2119dfb..776068d 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -312,20 +312,6 @@ void rtw23a_roaming(struct rtw_adapter *padapter,
+ 	spin_unlock_bh(&pmlmepriv->lock);
+ }
+ 
+-__le16 *rtw_get_capability23a_from_ie(u8 *ie)
+-{
+-	return (__le16 *)(ie + 8 + 2);
+-}
+-
+-u16 rtw_get_capability23a(struct wlan_bssid_ex *bss)
+-{
+-	u16 val;
+-
+-	memcpy(&val, rtw_get_capability23a_from_ie(bss->IEs), 2);
+-
+-	return le16_to_cpu(val);
+-}
+-
+ __le16 *rtw_get_beacon_interval23a_from_ie(u8 *ie)
+ {
+ 	return (__le16 *)(ie + 8);
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index f7ddd6a..d058178 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4417,7 +4417,7 @@ static void start_create_ibss(struct rtw_adapter* padapter)
+ 	update_wireless_mode23a(padapter);
+ 
+ 	/* udpate capability */
+-	caps = rtw_get_capability23a(pnetwork);
++	caps = pnetwork->capability;
+ 	update_capinfo23a(padapter, caps);
+ 	if (caps & WLAN_CAPABILITY_IBSS) {	/* adhoc master */
+ 		rtl8723a_set_sec_cfg(padapter, 0xcf);
+@@ -4472,7 +4472,7 @@ static void start_clnt_join(struct rtw_adapter* padapter)
+ 	update_wireless_mode23a(padapter);
+ 
+ 	/* udpate capability */
+-	caps = rtw_get_capability23a(pnetwork);
++	caps = pnetwork->capability;
+ 	update_capinfo23a(padapter, caps);
+ 	if (caps & WLAN_CAPABILITY_ESS) {
+ 		/* switch channel */
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 5aaff13..b07c13b 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -1083,7 +1083,7 @@ bool is_ap_in_tkip23a(struct rtw_adapter *padapter)
+ 	bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+ 		offsetof(struct ieee80211_mgmt, u.beacon);
+ 
+-	if (rtw_get_capability23a(cur_network) & WLAN_CAPABILITY_PRIVACY) {
++	if (cur_network->capability & WLAN_CAPABILITY_PRIVACY) {
+ 		for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) {
+ 			p = pmlmeinfo->network.IEs + i;
+ 
+@@ -1118,7 +1118,7 @@ bool should_forbid_n_rate23a(struct rtw_adapter * padapter)
+ 	bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+ 		offsetof(struct ieee80211_mgmt, u.beacon);
+ 
+-	if (rtw_get_capability23a(cur_network) & WLAN_CAPABILITY_PRIVACY) {
++	if (cur_network->capability & WLAN_CAPABILITY_PRIVACY) {
+ 		for (i = bcn_fixed_size; i < cur_network->IELength;) {
+ 			p = cur_network->IEs + i;
+ 
+@@ -1161,7 +1161,7 @@ bool is_ap_in_wep23a(struct rtw_adapter *padapter)
+ 	bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+ 		offsetof(struct ieee80211_mgmt, u.beacon);
+ 
+-	if (rtw_get_capability23a(cur_network) & WLAN_CAPABILITY_PRIVACY) {
++	if (cur_network->capability & WLAN_CAPABILITY_PRIVACY) {
+ 		for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) {
+ 			p = pmlmeinfo->network.IEs + i;
+ 
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index bc420ec..039e697 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -310,7 +310,6 @@ static inline void clr_fwstate_ex(struct mlme_priv *pmlmepriv, int state)
+ 	spin_unlock_bh(&pmlmepriv->lock);
+ }
+ 
+-u16 rtw_get_capability23a(struct wlan_bssid_ex *bss);
+ void rtw_disconnect_hdl23a_under_linked(struct rtw_adapter *adapter,
+ 				     struct sta_info *psta, u8 free_assoc);
+ void rtw_generate_random_ibss23a(u8 *pibss);
+@@ -349,7 +348,6 @@ int rtw_if_up23a(struct rtw_adapter *padapter);
+ 
+ int rtw_linked_check(struct rtw_adapter *padapter);
+ 
+-__le16 *rtw_get_capability23a_from_ie(u8 *ie);
+ __le16 *rtw_get_beacon_interval23a_from_ie(u8 *ie);
+ 
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0112-staging-rtl8723au-Eliminate-last-rtw_get_beacon_inte.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0112-staging-rtl8723au-Eliminate-last-rtw_get_beacon_inte.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,99 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 19 Jun 2014 11:37:35 +0200
+Subject: [112/249] staging: rtl8723au: Eliminate last
+ rtw_get_beacon_interval*() usage
+Origin: https://git.kernel.org/linus/0fd90b74cb270d03d5d651a921092e12c9e2b87e
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c        | 5 -----
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c    | 4 ++--
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c   | 8 --------
+ drivers/staging/rtl8723au/include/rtw_mlme.h     | 3 ---
+ drivers/staging/rtl8723au/include/rtw_mlme_ext.h | 1 -
+ 5 files changed, 2 insertions(+), 19 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 776068d..9a8c9ff 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -312,11 +312,6 @@ void rtw23a_roaming(struct rtw_adapter *padapter,
+ 	spin_unlock_bh(&pmlmepriv->lock);
+ }
+ 
+-__le16 *rtw_get_beacon_interval23a_from_ie(u8 *ie)
+-{
+-	return (__le16 *)(ie + 8);
+-}
+-
+ static void rtw_free_network_nolock(struct mlme_priv *pmlmepriv,
+ 				    struct wlan_network *pnetwork)
+ {
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index d058178..4047f6d 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4411,7 +4411,7 @@ static void start_create_ibss(struct rtw_adapter* padapter)
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network;
+ 	pmlmeext->cur_channel = (u8)pnetwork->DSConfig;
+-	pmlmeinfo->bcn_interval = get_beacon_interval23a(pnetwork);
++	pmlmeinfo->bcn_interval = pnetwork->beacon_interval;
+ 
+ 	/* update wireless mode */
+ 	update_wireless_mode23a(padapter);
+@@ -4466,7 +4466,7 @@ static void start_clnt_join(struct rtw_adapter* padapter)
+ 	int beacon_timeout;
+ 
+ 	pmlmeext->cur_channel = (u8)pnetwork->DSConfig;
+-	pmlmeinfo->bcn_interval = get_beacon_interval23a(pnetwork);
++	pmlmeinfo->bcn_interval = pnetwork->beacon_interval;
+ 
+ 	/* update wireless mode */
+ 	update_wireless_mode23a(padapter);
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index b07c13b..dbca440 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -399,14 +399,6 @@ inline u8 *get_my_bssid23a(struct wlan_bssid_ex *pnetwork)
+ 	return pnetwork->MacAddress;
+ }
+ 
+-u16 get_beacon_interval23a(struct wlan_bssid_ex *bss)
+-{
+-	unsigned short val;
+-	memcpy(&val, rtw_get_beacon_interval23a_from_ie(bss->IEs), 2);
+-
+-	return le16_to_cpu(val);
+-}
+-
+ bool is_client_associated_to_ap23a(struct rtw_adapter *padapter)
+ {
+ 	struct mlme_ext_priv *pmlmeext;
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index 039e697..a679545 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -348,9 +348,6 @@ int rtw_if_up23a(struct rtw_adapter *padapter);
+ 
+ int rtw_linked_check(struct rtw_adapter *padapter);
+ 
+-__le16 *rtw_get_beacon_interval23a_from_ie(u8 *ie);
+-
+-
+ void rtw_joinbss_reset23a(struct rtw_adapter *padapter);
+ 
+ bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+index 0219aa1..7fd249f 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+@@ -499,7 +499,6 @@ void update_network23a(struct wlan_bssid_ex *dst, struct wlan_bssid_ex *src,
+ 		    struct rtw_adapter *padapter, bool update_ie);
+ 
+ u8 *get_my_bssid23a(struct wlan_bssid_ex *pnetwork);
+-u16 get_beacon_interval23a(struct wlan_bssid_ex *bss);
+ 
+ bool is_client_associated_to_ap23a(struct rtw_adapter *padapter);
+ bool is_client_associated_to_ibss23a(struct rtw_adapter *padapter);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0113-staging-rtl8723au-struct-mlme_priv-wps_beacon_ie-is-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0113-staging-rtl8723au-struct-mlme_priv-wps_beacon_ie-is-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,153 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 21 Jun 2014 16:50:09 +0200
+Subject: [113/249] staging: rtl8723au: struct mlme_priv->wps_beacon_ie is
+ never set
+Origin: https://git.kernel.org/linus/2331ef89ef249b3e07594252eaec1bf1a483c1f1
+
+Remove all code trying to use it
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c       | 54 +--------------------------
+ drivers/staging/rtl8723au/core/rtw_mlme.c     |  2 -
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 25 -------------
+ drivers/staging/rtl8723au/include/rtw_mlme.h  |  2 -
+ 4 files changed, 1 insertion(+), 82 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index 2a960b1..8ba346f 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -1227,60 +1227,9 @@ static void update_bcn_wmm_ie(struct rtw_adapter *padapter)
+ 
+ static void update_bcn_wps_ie(struct rtw_adapter *padapter)
+ {
+-	const u8 *pwps_ie, *premainder_ie;
+-	u8 *pwps_ie_src, *pbackup_remainder_ie = NULL;
+-	uint wps_ielen = 0, wps_offset, remainder_ielen;
+-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+-	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+-	struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network;
+-	unsigned char *ie = pnetwork->IEs;
+-	u32 ielen = pnetwork->IELength;
+-
+ 	DBG_8723A("%s\n", __func__);
+ 
+-	pwps_ie_src = pmlmepriv->wps_beacon_ie;
+-	if (pwps_ie_src == NULL)
+-		return;
+-
+-	pwps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+-					  WLAN_OUI_TYPE_MICROSOFT_WPS,
+-					  ie + _FIXED_IE_LENGTH_,
+-					  ielen - _FIXED_IE_LENGTH_);
+-
+-	if (pwps_ie == NULL || pwps_ie[1] == 0)
+-		return;
+-
+-	wps_ielen = pwps_ie[1];
+-	wps_offset = (uint)(pwps_ie-ie);
+-
+-	premainder_ie = pwps_ie + wps_ielen;
+-
+-	remainder_ielen = ielen - wps_offset - wps_ielen;
+-
+-	if (remainder_ielen > 0) {
+-		pbackup_remainder_ie = kmalloc(remainder_ielen, GFP_ATOMIC);
+-		if (pbackup_remainder_ie)
+-			memcpy(pbackup_remainder_ie, premainder_ie,
+-			       remainder_ielen);
+-	}
+-
+-	wps_ielen = (uint)pwps_ie_src[1];/* to get ie data len */
+-	if ((wps_offset+wps_ielen+2+remainder_ielen)<= MAX_IE_SZ)
+-	{
+-		memcpy(ie + wps_offset, pwps_ie_src, wps_ielen + 2);
+-		pwps_ie += (wps_ielen+2);
+-
+-		if (pbackup_remainder_ie)
+-			memcpy(ie + wps_offset + wps_ielen + 2,
+-			       pbackup_remainder_ie, remainder_ielen);
+-
+-		/* update IELength */
+-		pnetwork->IELength = wps_offset + (wps_ielen+2) + remainder_ielen;
+-	}
+-
+-	if (pbackup_remainder_ie)
+-		kfree(pbackup_remainder_ie);
++	return;
+ }
+ 
+ static void update_bcn_p2p_ie(struct rtw_adapter *padapter)
+@@ -1966,7 +1915,6 @@ void start_ap_mode23a(struct rtw_adapter *padapter)
+ 	for (i = 0; i<NUM_STA; i++)
+ 		pstapriv->sta_aid[i] = NULL;
+ 
+-	pmlmepriv->wps_beacon_ie = NULL;
+ 	pmlmepriv->wps_probe_resp_ie = NULL;
+ 	pmlmepriv->wps_assoc_resp_ie = NULL;
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 9a8c9ff..eefe40a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -87,8 +87,6 @@ void rtw23a_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
+ #ifdef CONFIG_8723AU_AP_MODE
+ 	kfree(pmlmepriv->assoc_req);
+ 	kfree(pmlmepriv->assoc_rsp);
+-	rtw_free_mlme_ie_data(&pmlmepriv->wps_beacon_ie,
+-			      &pmlmepriv->wps_beacon_ie_len);
+ 	rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_req_ie,
+ 			      &pmlmepriv->wps_probe_req_ie_len);
+ 	rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_resp_ie,
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 4047f6d..8590faa 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -1534,31 +1534,6 @@ OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 				   "Association Request - possible WPS use\n");
+ 			pstat->flags |= WLAN_STA_MAYBE_WPS;
+ 		}
+-
+-		/*  AP support WPA/RSN, and sta is going to do WPS, but AP
+-		    is not ready */
+-		/*  that the selected registrar of AP is _FLASE */
+-		if (psecuritypriv->wpa_psk > 0 &&
+-		    pstat->flags & (WLAN_STA_WPS|WLAN_STA_MAYBE_WPS)) {
+-			if (pmlmepriv->wps_beacon_ie) {
+-				u8 selected_registrar = 0;
+-
+-				rtw_get_wps_attr_content23a(
+-					pmlmepriv->wps_beacon_ie,
+-					pmlmepriv->wps_beacon_ie_len,
+-					WPS_ATTR_SELECTED_REGISTRAR,
+-					&selected_registrar, NULL);
+-
+-				if (!selected_registrar) {
+-					DBG_8723A("selected_registrar is false,"
+-						  "or AP is not ready to do "
+-						  "WPS\n");
+-
+-					status = WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
+-					goto OnAssocReq23aFail;
+-				}
+-			}
+-		}
+ 	} else {
+ 		int copy_len;
+ 
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index a679545..6dccfb0 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -167,8 +167,6 @@ struct mlme_priv {
+ 	u8 *wps_assoc_resp_ie;
+ 	u8 *wps_probe_resp_ie;
+ 	u32 wps_probe_resp_ie_len;
+-	u8 *wps_beacon_ie;
+-	u32 wps_beacon_ie_len;
+ 	u32 p2p_go_probe_resp_ie_len; /* for GO */
+ 	u32 p2p_assoc_req_ie_len;
+ 	u8 *p2p_beacon_ie;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0114-staging-rtl8723au-Remove-unused-mlme_priv-wps_assoc_.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0114-staging-rtl8723au-Remove-unused-mlme_priv-wps_assoc_.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,74 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 21 Jun 2014 16:50:10 +0200
+Subject: [114/249] staging: rtl8723au: Remove unused
+ mlme_priv->wps_assoc_resp_ie and friends
+Origin: https://git.kernel.org/linus/302b1cd631cf495731194d15d69d670b5843ea20
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c       |  1 -
+ drivers/staging/rtl8723au/core/rtw_mlme.c     |  2 --
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 10 ----------
+ drivers/staging/rtl8723au/include/rtw_mlme.h  |  2 --
+ 4 files changed, 15 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index 8ba346f..76e2357 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -1916,7 +1916,6 @@ void start_ap_mode23a(struct rtw_adapter *padapter)
+ 		pstapriv->sta_aid[i] = NULL;
+ 
+ 	pmlmepriv->wps_probe_resp_ie = NULL;
+-	pmlmepriv->wps_assoc_resp_ie = NULL;
+ 
+ 	pmlmepriv->p2p_beacon_ie = NULL;
+ 	pmlmepriv->p2p_probe_resp_ie = NULL;
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index eefe40a..c873cb3 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -91,8 +91,6 @@ void rtw23a_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
+ 			      &pmlmepriv->wps_probe_req_ie_len);
+ 	rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_resp_ie,
+ 			      &pmlmepriv->wps_probe_resp_ie_len);
+-	rtw_free_mlme_ie_data(&pmlmepriv->wps_assoc_resp_ie,
+-			      &pmlmepriv->wps_assoc_resp_ie_len);
+ 
+ 	rtw_free_mlme_ie_data(&pmlmepriv->p2p_beacon_ie,
+ 			      &pmlmepriv->p2p_beacon_ie_len);
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 8590faa..d995bec 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -3137,16 +3137,6 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status,
+ 				       REALTEK_96B_IE, &pattrib->pktlen);
+ 	}
+ 
+-	/* add WPS IE ie for wps 2.0 */
+-	if (pmlmepriv->wps_assoc_resp_ie &&
+-	    pmlmepriv->wps_assoc_resp_ie_len > 0) {
+-		memcpy(pframe, pmlmepriv->wps_assoc_resp_ie,
+-		       pmlmepriv->wps_assoc_resp_ie_len);
+-
+-		pframe += pmlmepriv->wps_assoc_resp_ie_len;
+-		pattrib->pktlen += pmlmepriv->wps_assoc_resp_ie_len;
+-	}
+-
+ 	pattrib->last_txcmdsz = pattrib->pktlen;
+ 
+ 	dump_mgntframe23a(padapter, pmgntframe);
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index 6dccfb0..c45a9f0 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -163,8 +163,6 @@ struct mlme_priv {
+ 	u32 assoc_req_len;
+ 	u32 assoc_rsp_len;
+ 	u8 *assoc_rsp;
+-	u32 wps_assoc_resp_ie_len;
+-	u8 *wps_assoc_resp_ie;
+ 	u8 *wps_probe_resp_ie;
+ 	u32 wps_probe_resp_ie_len;
+ 	u32 p2p_go_probe_resp_ie_len; /* for GO */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0115-staging-rtl8723au-Remove-unused-struct-mlme_priv-wps.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0115-staging-rtl8723au-Remove-unused-struct-mlme_priv-wps.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,119 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 21 Jun 2014 16:50:11 +0200
+Subject: [115/249] staging: rtl8723au: Remove unused struct
+ mlme_priv->wps_probe_resp_ie
+Origin: https://git.kernel.org/linus/86bbac609dc6ebf51982506ac14aab091456b92d
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c       |  2 --
+ drivers/staging/rtl8723au/core/rtw_mlme.c     |  2 --
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 42 ++-------------------------
+ drivers/staging/rtl8723au/include/rtw_mlme.h  |  2 --
+ 4 files changed, 3 insertions(+), 45 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index 76e2357..753a0fe 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -1915,8 +1915,6 @@ void start_ap_mode23a(struct rtw_adapter *padapter)
+ 	for (i = 0; i<NUM_STA; i++)
+ 		pstapriv->sta_aid[i] = NULL;
+ 
+-	pmlmepriv->wps_probe_resp_ie = NULL;
+-
+ 	pmlmepriv->p2p_beacon_ie = NULL;
+ 	pmlmepriv->p2p_probe_resp_ie = NULL;
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index c873cb3..0653f95 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -89,8 +89,6 @@ void rtw23a_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
+ 	kfree(pmlmepriv->assoc_rsp);
+ 	rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_req_ie,
+ 			      &pmlmepriv->wps_probe_req_ie_len);
+-	rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_resp_ie,
+-			      &pmlmepriv->wps_probe_resp_ie_len);
+ 
+ 	rtw_free_mlme_ie_data(&pmlmepriv->p2p_beacon_ie,
+ 			      &pmlmepriv->p2p_beacon_ie_len);
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index d995bec..d1c40ae 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2524,13 +2524,11 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
+ #ifdef CONFIG_8723AU_AP_MODE
+ 	const u8 *pwps_ie;
+-	uint wps_ielen;
+ 	u8 *ssid_ie;
+ 	int ssid_ielen;
+ 	int ssid_ielen_diff;
+ 	u8 buf[MAX_IE_SZ];
+ 	u8 *ies;
+-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ #endif
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+@@ -2594,43 +2592,9 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 						  cur_network->IELength -
+ 						  _FIXED_IE_LENGTH_);
+ 
+-		/* inerset & update wps_probe_resp_ie */
+-		if (pmlmepriv->wps_probe_resp_ie && pwps_ie && pwps_ie[1] > 0) {
+-			uint wps_offset, remainder_ielen;
+-			const u8 *premainder_ie;
+-
+-			wps_ielen = pwps_ie[1];
+-			wps_offset = (uint)(pwps_ie - cur_network->IEs);
+-
+-			premainder_ie = pwps_ie + wps_ielen;
+-
+-			remainder_ielen = cur_network->IELength - wps_offset -
+-				wps_ielen;
+-
+-			memcpy(pframe, cur_network->IEs, wps_offset);
+-			pframe += wps_offset;
+-			pattrib->pktlen += wps_offset;
+-
+-			/* to get ie data len */
+-			wps_ielen = (uint)pmlmepriv->wps_probe_resp_ie[1];
+-			if (wps_offset + wps_ielen + 2 <= MAX_IE_SZ) {
+-				memcpy(pframe, pmlmepriv->wps_probe_resp_ie,
+-				       wps_ielen+2);
+-				pframe += wps_ielen+2;
+-				pattrib->pktlen += wps_ielen+2;
+-			}
+-
+-			if (wps_offset + wps_ielen + 2 + remainder_ielen <=
+-			    MAX_IE_SZ) {
+-				memcpy(pframe, premainder_ie, remainder_ielen);
+-				pframe += remainder_ielen;
+-				pattrib->pktlen += remainder_ielen;
+-			}
+-		} else {
+-			memcpy(pframe, cur_network->IEs, cur_network->IELength);
+-			pframe += cur_network->IELength;
+-			pattrib->pktlen += cur_network->IELength;
+-		}
++		memcpy(pframe, cur_network->IEs, cur_network->IELength);
++		pframe += cur_network->IELength;
++		pattrib->pktlen += cur_network->IELength;
+ 
+ 		/* retrieve SSID IE from cur_network->Ssid */
+ 		ies = pmgntframe->buf_addr + TXDESC_OFFSET +
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index c45a9f0..ef70e4a 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -163,8 +163,6 @@ struct mlme_priv {
+ 	u32 assoc_req_len;
+ 	u32 assoc_rsp_len;
+ 	u8 *assoc_rsp;
+-	u8 *wps_probe_resp_ie;
+-	u32 wps_probe_resp_ie_len;
+ 	u32 p2p_go_probe_resp_ie_len; /* for GO */
+ 	u32 p2p_assoc_req_ie_len;
+ 	u8 *p2p_beacon_ie;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0116-staging-rtl8723au-Remove-obsolete-mlme_priv-p2p_-ent.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0116-staging-rtl8723au-Remove-obsolete-mlme_priv-p2p_-ent.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,71 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 21 Jun 2014 16:50:12 +0200
+Subject: [116/249] staging: rtl8723au: Remove obsolete mlme_priv->p2p_*
+ entries
+Origin: https://git.kernel.org/linus/a8607ffcf2783662eb757477d3a7493d0f087ed2
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c      |  3 ---
+ drivers/staging/rtl8723au/core/rtw_mlme.c    | 11 -----------
+ drivers/staging/rtl8723au/include/rtw_mlme.h | 10 ----------
+ 3 files changed, 24 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index 753a0fe..7f1c687 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -1915,9 +1915,6 @@ void start_ap_mode23a(struct rtw_adapter *padapter)
+ 	for (i = 0; i<NUM_STA; i++)
+ 		pstapriv->sta_aid[i] = NULL;
+ 
+-	pmlmepriv->p2p_beacon_ie = NULL;
+-	pmlmepriv->p2p_probe_resp_ie = NULL;
+-
+ 	/* for ACL */
+ 	INIT_LIST_HEAD(&pacl_list->acl_node_q.queue);
+ 	pacl_list->num = 0;
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 0653f95..f9ead3e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -90,17 +90,6 @@ void rtw23a_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
+ 	rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_req_ie,
+ 			      &pmlmepriv->wps_probe_req_ie_len);
+ 
+-	rtw_free_mlme_ie_data(&pmlmepriv->p2p_beacon_ie,
+-			      &pmlmepriv->p2p_beacon_ie_len);
+-	rtw_free_mlme_ie_data(&pmlmepriv->p2p_probe_req_ie,
+-			      &pmlmepriv->p2p_probe_req_ie_len);
+-	rtw_free_mlme_ie_data(&pmlmepriv->p2p_probe_resp_ie,
+-			      &pmlmepriv->p2p_probe_resp_ie_len);
+-	rtw_free_mlme_ie_data(&pmlmepriv->p2p_go_probe_resp_ie,
+-			      &pmlmepriv->p2p_go_probe_resp_ie_len);
+-	rtw_free_mlme_ie_data(&pmlmepriv->p2p_assoc_req_ie,
+-			      &pmlmepriv->p2p_assoc_req_ie_len);
+-
+ 	rtw_free_mlme_ie_data(&pmlmepriv->wfd_beacon_ie,
+ 			      &pmlmepriv->wfd_beacon_ie_len);
+ 	rtw_free_mlme_ie_data(&pmlmepriv->wfd_probe_req_ie,
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index ef70e4a..be60998 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -163,16 +163,6 @@ struct mlme_priv {
+ 	u32 assoc_req_len;
+ 	u32 assoc_rsp_len;
+ 	u8 *assoc_rsp;
+-	u32 p2p_go_probe_resp_ie_len; /* for GO */
+-	u32 p2p_assoc_req_ie_len;
+-	u8 *p2p_beacon_ie;
+-	u8 *p2p_probe_req_ie;
+-	u8 *p2p_probe_resp_ie;
+-	u8 *p2p_go_probe_resp_ie; /* for GO */
+-	u8 *p2p_assoc_req_ie;
+-	u32 p2p_beacon_ie_len;
+-	u32 p2p_probe_req_ie_len;
+-	u32 p2p_probe_resp_ie_len;
+ 	u8 *wfd_assoc_req_ie;
+ 	u32 wfd_assoc_req_ie_len;
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0117-staging-rtl8723au-Remove-unused-struct-mlme_priv-wfd.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0117-staging-rtl8723au-Remove-unused-struct-mlme_priv-wfd.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,78 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 21 Jun 2014 16:50:13 +0200
+Subject: [117/249] staging: rtl8723au: Remove unused struct mlme_priv->wfd_*
+ entries
+Origin: https://git.kernel.org/linus/d4fc0213dd9a72611af586d2d6134807951111b2
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c      |  1 -
+ drivers/staging/rtl8723au/core/rtw_mlme.c    | 11 -----------
+ drivers/staging/rtl8723au/include/rtw_mlme.h | 12 ------------
+ 3 files changed, 24 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index 7f1c687..18c9b30 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -24,7 +24,6 @@
+ extern unsigned char WMM_OUI23A[];
+ extern unsigned char WPS_OUI23A[];
+ extern unsigned char P2P_OUI23A[];
+-extern unsigned char WFD_OUI23A[];
+ 
+ void init_mlme_ap_info23a(struct rtw_adapter *padapter)
+ {
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index f9ead3e..77714fe 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -89,17 +89,6 @@ void rtw23a_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
+ 	kfree(pmlmepriv->assoc_rsp);
+ 	rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_req_ie,
+ 			      &pmlmepriv->wps_probe_req_ie_len);
+-
+-	rtw_free_mlme_ie_data(&pmlmepriv->wfd_beacon_ie,
+-			      &pmlmepriv->wfd_beacon_ie_len);
+-	rtw_free_mlme_ie_data(&pmlmepriv->wfd_probe_req_ie,
+-			      &pmlmepriv->wfd_probe_req_ie_len);
+-	rtw_free_mlme_ie_data(&pmlmepriv->wfd_probe_resp_ie,
+-			      &pmlmepriv->wfd_probe_resp_ie_len);
+-	rtw_free_mlme_ie_data(&pmlmepriv->wfd_go_probe_resp_ie,
+-			      &pmlmepriv->wfd_go_probe_resp_ie_len);
+-	rtw_free_mlme_ie_data(&pmlmepriv->wfd_assoc_req_ie,
+-			      &pmlmepriv->wfd_assoc_req_ie_len);
+ #endif
+ }
+ 
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index be60998..277d90b 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -163,8 +163,6 @@ struct mlme_priv {
+ 	u32 assoc_req_len;
+ 	u32 assoc_rsp_len;
+ 	u8 *assoc_rsp;
+-	u8 *wfd_assoc_req_ie;
+-	u32 wfd_assoc_req_ie_len;
+ 
+ #ifdef CONFIG_8723AU_AP_MODE
+ 	/* Number of associated Non-ERP stations (i.e., stations using 802.11b
+@@ -197,16 +195,6 @@ struct mlme_priv {
+ 	u8		update_bcn;
+ 
+ #endif /* ifdef CONFIG_8723AU_AP_MODE */
+-
+-	u8 *wfd_beacon_ie;
+-	u8 *wfd_probe_req_ie;
+-	u8 *wfd_probe_resp_ie;
+-	u8 *wfd_go_probe_resp_ie; /* for GO */
+-
+-	u32 wfd_beacon_ie_len;
+-	u32 wfd_probe_req_ie_len;
+-	u32 wfd_probe_resp_ie_len;
+-	u32 wfd_go_probe_resp_ie_len; /* for GO */
+ };
+ 
+ void rtw_joinbss_event_prehandle23a(struct rtw_adapter *adapter, u8 *pbuf);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0118-staging-rtl8723au-Remove-write-only-struct-security_.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0118-staging-rtl8723au-Remove-write-only-struct-security_.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,56 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 21 Jun 2014 16:50:14 +0200
+Subject: [118/249] staging: rtl8723au: Remove write-only struct
+ security_priv->authenticator_ie
+Origin: https://git.kernel.org/linus/2bd3b4fb370be0ad529975273399ccb60968a266
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_cmd.c         | 13 -------------
+ drivers/staging/rtl8723au/include/rtw_security.h |  1 -
+ 2 files changed, 14 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_cmd.c b/drivers/staging/rtl8723au/core/rtw_cmd.c
+index 1696cb8..35f879e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_cmd.c
++++ b/drivers/staging/rtl8723au/core/rtw_cmd.c
+@@ -464,7 +464,6 @@ exit:
+ int rtw_joinbss_cmd23a(struct rtw_adapter *padapter,
+ 		       struct wlan_network *pnetwork)
+ {
+-	u8 *auth;
+ 	int res = _SUCCESS;
+ 	struct wlan_bssid_ex *psecnetwork;
+ 	struct cmd_obj *pcmd;
+@@ -532,18 +531,6 @@ int rtw_joinbss_cmd23a(struct rtw_adapter *padapter,
+ 	memcpy(psecnetwork, &pnetwork->network,
+ 	       get_wlan_bssid_ex_sz(&pnetwork->network));
+ 
+-	auth = &psecuritypriv->authenticator_ie[0];
+-	psecuritypriv->authenticator_ie[0] =
+-		(unsigned char)psecnetwork->IELength;
+-
+-	if ((psecnetwork->IELength-12) < (256-1)) {
+-		memcpy(&psecuritypriv->authenticator_ie[1],
+-		       &psecnetwork->IEs[12], psecnetwork->IELength - 12);
+-	} else {
+-		memcpy(&psecuritypriv->authenticator_ie[1],
+-		       &psecnetwork->IEs[12], 256 - 1);
+-	}
+-
+ 	psecnetwork->IELength = 0;
+ 	/*  Added by Albert 2009/02/18 */
+ 	/*  If the the driver wants to use the bssid to create the
+diff --git a/drivers/staging/rtl8723au/include/rtw_security.h b/drivers/staging/rtl8723au/include/rtw_security.h
+index 8b84333..8ed7b2f 100644
+--- a/drivers/staging/rtl8723au/include/rtw_security.h
++++ b/drivers/staging/rtl8723au/include/rtw_security.h
+@@ -145,7 +145,6 @@ struct security_priv {
+ 	u8 assoc_info[600];
+ 	u8 szofcapability[256]; /* for wpa2 usage */
+ 	u8 oidassociation[512]; /* for wpa/wpa2 usage */
+-	u8 authenticator_ie[256];  /* store ap security information element */
+ 	u8 supplicant_ie[256];  /* store sta security information element */
+ 
+ 	/* for tkip countermeasure */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0119-staging-rtl8723au-Remove-hopefully-last-duplicate-de.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0119-staging-rtl8723au-Remove-hopefully-last-duplicate-de.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,74 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 21 Jun 2014 16:50:15 +0200
+Subject: [119/249] staging: rtl8723au: Remove (hopefully) last duplicate
+ define of WLAN_EID_RSN
+Origin: https://git.kernel.org/linus/a131aac3b67df908f185402cabbfcb38b891df43
+
+So much for thinking the removal of the previous 217 duplicate copies
+would suffice ....
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c   | 2 +-
+ drivers/staging/rtl8723au/core/rtw_mlme.c        | 6 +++---
+ drivers/staging/rtl8723au/include/rtw_security.h | 2 --
+ 3 files changed, 4 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index f2c4a0e..efad6f8 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -547,7 +547,7 @@ int rtw_parse_wpa2_ie23a(const u8* rsn_ie, int rsn_ie_len, int *group_cipher,
+ 		return _FAIL;
+ 	}
+ 
+-	if (*rsn_ie != _WPA2_IE_ID_ || *(rsn_ie+1) != (u8)(rsn_ie_len - 2)) {
++	if (*rsn_ie != WLAN_EID_RSN || *(rsn_ie+1) != (u8)(rsn_ie_len - 2)) {
+ 		return _FAIL;
+ 	}
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 77714fe..fc84831 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -2031,7 +2031,7 @@ int rtw_restruct_sec_ie23a(struct rtw_adapter *adapter, u8 *in_ie, u8 *out_ie,
+ 		authmode = WLAN_EID_VENDOR_SPECIFIC;
+ 	if (ndisauthmode == Ndis802_11AuthModeWPA2 ||
+ 	    ndisauthmode == Ndis802_11AuthModeWPA2PSK)
+-		authmode = _WPA2_IE_ID_;
++		authmode = WLAN_EID_RSN;
+ 
+ 	if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) {
+ 		memcpy(out_ie + ielength, psecuritypriv->wps_ie,
+@@ -2039,7 +2039,7 @@ int rtw_restruct_sec_ie23a(struct rtw_adapter *adapter, u8 *in_ie, u8 *out_ie,
+ 
+ 		ielength += psecuritypriv->wps_ie_len;
+ 	} else if (authmode == WLAN_EID_VENDOR_SPECIFIC ||
+-		   authmode == _WPA2_IE_ID_) {
++		   authmode == WLAN_EID_RSN) {
+ 		/* copy RSN or SSN */
+ 		memcpy(&out_ie[ielength], &psecuritypriv->supplicant_ie[0],
+ 		       psecuritypriv->supplicant_ie[1] + 2);
+@@ -2050,7 +2050,7 @@ int rtw_restruct_sec_ie23a(struct rtw_adapter *adapter, u8 *in_ie, u8 *out_ie,
+ 	if (iEntry < 0)
+ 		return ielength;
+ 	else {
+-		if (authmode == _WPA2_IE_ID_)
++		if (authmode == WLAN_EID_RSN)
+ 			ielength = rtw_append_pmkid(adapter, iEntry,
+ 						    out_ie, ielength);
+ 	}
+diff --git a/drivers/staging/rtl8723au/include/rtw_security.h b/drivers/staging/rtl8723au/include/rtw_security.h
+index 8ed7b2f..624a9d7 100644
+--- a/drivers/staging/rtl8723au/include/rtw_security.h
++++ b/drivers/staging/rtl8723au/include/rtw_security.h
+@@ -23,8 +23,6 @@
+ #define is_wep_enc(alg) (alg == WLAN_CIPHER_SUITE_WEP40 || \
+ 			 alg == WLAN_CIPHER_SUITE_WEP104)
+ 
+-#define _WPA2_IE_ID_	0x30
+-
+ #define SHA256_MAC_LEN 32
+ #define AES_BLOCK_SIZE 16
+ #define AES_PRIV_SIZE (4 * 44)

Added: dists/sid/linux/debian/patches/features/all/r8723au/0120-staging-rtl8723au-rtw_survey_event_cb23a-Remember-to.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0120-staging-rtl8723au-rtw_survey_event_cb23a-Remember-to.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,45 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 21 Jun 2014 16:50:16 +0200
+Subject: [120/249] staging: rtl8723au: rtw_survey_event_cb23a(): Remember to
+ clone beacon data
+Origin: https://git.kernel.org/linus/eb4f07bf859d412bf4662e65d4ed2fc06994f87b
+
+We need to clone all the beacon information, not just the IE data, in
+particular as the long term goal is to stop carrying this information
+in the IE data.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index fc84831..c91ea8c 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -621,6 +621,11 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 
+ 			memcpy(pmlmepriv->cur_network.network.IEs,
+ 			       pnetwork->IEs, 8);
++			pmlmepriv->cur_network.network.beacon_interval =
++				pnetwork->beacon_interval;
++			pmlmepriv->cur_network.network.capability =
++				pnetwork->capability;
++			pmlmepriv->cur_network.network.tsf = pnetwork->tsf;
+ 			spin_lock_bh(&pmlmepriv->scanned_queue.lock);
+ 			ibss_wlan = rtw_find_network23a(
+ 				&pmlmepriv->scanned_queue,
+@@ -628,6 +633,12 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 			if (ibss_wlan) {
+ 				memcpy(ibss_wlan->network.IEs,
+ 				       pnetwork->IEs, 8);
++				pmlmepriv->cur_network.network.beacon_interval =
++					ibss_wlan->network.beacon_interval;
++				pmlmepriv->cur_network.network.capability =
++					ibss_wlan->network.capability;
++				pmlmepriv->cur_network.network.tsf =
++					ibss_wlan->network.tsf;
+ 				spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
+ 				goto exit;
+ 			}

Added: dists/sid/linux/debian/patches/features/all/r8723au/0121-staging-rtl8723au-rtw_joinbss_update_network23a-upda.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0121-staging-rtl8723au-rtw_joinbss_update_network23a-upda.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,30 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 21 Jun 2014 16:50:17 +0200
+Subject: [121/249] staging: rtl8723au: rtw_joinbss_update_network23a(): update
+ beacon info as well
+Origin: https://git.kernel.org/linus/2bde0527538802d38b1bed939aefde999600c1ca
+
+We need to copy over the beacon info (interval, capability, tsf) as
+well as the IE data.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index c91ea8c..b7a3528 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -1035,6 +1035,10 @@ rtw_joinbss_update_network23a(struct rtw_adapter *padapter,
+ 	memcpy(&cur_network->network.IEs[0], &ptarget_wlan->network.IEs[0],
+ 	       MAX_IE_SZ);
+ 
++	cur_network->network.capability = ptarget_wlan->network.capability;
++	cur_network->network.beacon_interval =
++		ptarget_wlan->network.beacon_interval;
++	cur_network->network.tsf = ptarget_wlan->network.tsf;
+ 	cur_network->aid = pnetwork->join_res;
+ 
+ 	rtw_set_signal_stat_timer(&padapter->recvpriv);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0122-staging-rtl8723au-issue_probersp-Don-t-insert-beacon.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0122-staging-rtl8723au-issue_probersp-Don-t-insert-beacon.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,29 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 21 Jun 2014 16:50:18 +0200
+Subject: [122/249] staging: rtl8723au: issue_probersp(): Don't insert beacon
+ data twice
+Origin: https://git.kernel.org/linus/d642a0a0b91d220f3c44bba84e54f8983b781fde
+
+In case of AP mode, we were inserting the beacon data twice in the
+probe_resp frame, leading to a corrupted on the wire frame.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index d1c40ae..4f9e5a9 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2592,7 +2592,8 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 						  cur_network->IELength -
+ 						  _FIXED_IE_LENGTH_);
+ 
+-		memcpy(pframe, cur_network->IEs, cur_network->IELength);
++		memcpy(pframe, cur_network->IEs + _FIXED_IE_LENGTH_,
++		       cur_network->IELength - _FIXED_IE_LENGTH_);
+ 		pframe += cur_network->IELength;
+ 		pattrib->pktlen += cur_network->IELength;
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0123-staging-rtl8723au-issue_probersp-No-need-to-calculat.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0123-staging-rtl8723au-issue_probersp-No-need-to-calculat.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,40 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sat, 21 Jun 2014 16:50:19 +0200
+Subject: [123/249] staging: rtl8723au: issue_probersp(): No need to calculate
+ location of IEs, we know where they are
+Origin: https://git.kernel.org/linus/ad8686bc05adc2b8301d749f5958bd904f3a46ee
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 4f9e5a9..03ced01 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2528,7 +2528,6 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 	int ssid_ielen;
+ 	int ssid_ielen_diff;
+ 	u8 buf[MAX_IE_SZ];
+-	u8 *ies;
+ #endif
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+@@ -2598,12 +2597,10 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 		pattrib->pktlen += cur_network->IELength;
+ 
+ 		/* retrieve SSID IE from cur_network->Ssid */
+-		ies = pmgntframe->buf_addr + TXDESC_OFFSET +
+-			sizeof(struct ieee80211_hdr_3addr);
+ 
+-		ssid_ie = rtw_get_ie23a(ies + _FIXED_IE_LENGTH_, WLAN_EID_SSID,
+-					&ssid_ielen,
+-					pframe - ies - _FIXED_IE_LENGTH_);
++		ssid_ie = rtw_get_ie23a(mgmt->u.probe_resp.variable,
++					WLAN_EID_SSID, &ssid_ielen,
++					pframe - mgmt->u.probe_resp.variable);
+ 
+ 		ssid_ielen_diff = cur_network->Ssid.ssid_len - ssid_ielen;
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0124-staging-rtl8723au-Remove-unused-size-defines-for-mgm.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0124-staging-rtl8723au-Remove-unused-size-defines-for-mgm.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,36 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:16 +0200
+Subject: [124/249] staging: rtl8723au: Remove unused size defines for mgmt
+ frame elements
+Origin: https://git.kernel.org/linus/40954b63859f373ad83454a2598bc8d251973a34
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/wifi.h | 13 -------------
+ 1 file changed, 13 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h
+index 3f64546..bd581ec 100644
+--- a/drivers/staging/rtl8723au/include/wifi.h
++++ b/drivers/staging/rtl8723au/include/wifi.h
+@@ -38,19 +38,6 @@
+ 
+ #define	EID_BSSIntolerantChlReport	73
+ 
+-/* ---------------------------------------------------------------------------
+-					Below is the fixed elements...
+------------------------------------------------------------------------------*/
+-#define _AUTH_ALGM_NUM_		2
+-#define _AUTH_SEQ_NUM_		2
+-#define _BEACON_ITERVAL_	2
+-#define _CAPABILITY_		2
+-#define _CURRENT_APADDR_	6
+-#define _LISTEN_INTERVAL_	2
+-#define _ASOC_ID_		2
+-#define _STATUS_CODE_		2
+-#define _TIMESTAMP_		8
+-
+ /*-----------------------------------------------------------------------------
+ 				Below is the definition for 802.11n
+ ------------------------------------------------------------------------------*/

Added: dists/sid/linux/debian/patches/features/all/r8723au/0125-staging-rtl8723au-Remove-usage-of-_-RE-ASOCREQ_IE_OF.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0125-staging-rtl8723au-Remove-usage-of-_-RE-ASOCREQ_IE_OF.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,40 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:17 +0200
+Subject: [125/249] staging: rtl8723au: Remove usage of _{RE,
+ }ASOCREQ_IE_OFFSET_
+Origin: https://git.kernel.org/linus/60e78f3df4f5b9bc3fd61755fd00e69c4923ac1d
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 6c06d57..ebb98a0 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -2535,16 +2535,18 @@ void rtw_cfg80211_indicate_sta_assoc(struct rtw_adapter *padapter,
+ 	{
+ 		struct station_info sinfo;
+ 		u8 ie_offset;
++
+ 		if (ieee80211_is_assoc_req(hdr->frame_control))
+-			ie_offset = _ASOCREQ_IE_OFFSET_;
++			ie_offset = offsetof(struct ieee80211_mgmt,
++					     u.assoc_req.variable);
+ 		else		/*  WIFI_REASSOCREQ */
+-			ie_offset = _REASOCREQ_IE_OFFSET_;
++			ie_offset = offsetof(struct ieee80211_mgmt,
++					     u.reassoc_req.variable);
+ 
+ 		sinfo.filled = 0;
+ 		sinfo.filled = STATION_INFO_ASSOC_REQ_IES;
+-		sinfo.assoc_req_ies = pmgmt_frame + WLAN_HDR_A3_LEN + ie_offset;
+-		sinfo.assoc_req_ies_len =
+-			frame_len - WLAN_HDR_A3_LEN - ie_offset;
++		sinfo.assoc_req_ies = pmgmt_frame + ie_offset;
++		sinfo.assoc_req_ies_len = frame_len - ie_offset;
+ 		cfg80211_new_sta(ndev, hdr->addr2, &sinfo, GFP_ATOMIC);
+ 	}
+ #else /* defined(RTW_USE_CFG80211_STA_EVENT) */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0126-staging-rtl8723au-Remove-unused-IE-offset-defines.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0126-staging-rtl8723au-Remove-unused-IE-offset-defines.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,30 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:18 +0200
+Subject: [126/249] staging: rtl8723au: Remove unused IE offset #defines
+Origin: https://git.kernel.org/linus/5b5cf9941fd01da487e3324668d2237226fdeb23
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/wifi.h | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h
+index bd581ec..d07fd12 100644
+--- a/drivers/staging/rtl8723au/include/wifi.h
++++ b/drivers/staging/rtl8723au/include/wifi.h
+@@ -23,14 +23,6 @@
+  */
+ #define	WiFiNavUpperUs		30000	/*  30 ms */
+ 
+-#define _ASOCREQ_IE_OFFSET_		4	/*  excluding wlan_hdr */
+-#define	_ASOCRSP_IE_OFFSET_		6
+-#define _REASOCREQ_IE_OFFSET_		10
+-#define _REASOCRSP_IE_OFFSET_		6
+-#define _PROBEREQ_IE_OFFSET_		0
+-#define	_PROBERSP_IE_OFFSET_		12
+-#define _AUTH_IE_OFFSET_		6
+-#define _DEAUTH_IE_OFFSET_		0
+ #define _BEACON_IE_OFFSET_		12
+ 
+ #define _FIXED_IE_LENGTH_		_BEACON_IE_OFFSET_

Added: dists/sid/linux/debian/patches/features/all/r8723au/0127-staging-rtl8723au-rtw_get_cur_max_rate-Use-_FIXED_IE.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0127-staging-rtl8723au-rtw_get_cur_max_rate-Use-_FIXED_IE.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,28 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:19 +0200
+Subject: [127/249] staging: rtl8723au: rtw_get_cur_max_rate(): Use
+ _FIXED_IE_LENGTH_ instead of hardcoded value
+Origin: https://git.kernel.org/linus/1d33b0766385957c0e70ff32ec501d1f775c8316
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index ebb98a0..9584688 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -1190,8 +1190,9 @@ static u16 rtw_get_cur_max_rate(struct rtw_adapter *adapter)
+ 	u8 bw_40MHz = 0, short_GI_20 = 0, short_GI_40 = 0;
+ 	u16 mcs_rate = 0;
+ 
+-	p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, &pcur_bss->IEs[12],
+-			     pcur_bss->IELength - 12);
++	p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY,
++			     &pcur_bss->IEs[_FIXED_IE_LENGTH_],
++			     pcur_bss->IELength - _FIXED_IE_LENGTH_);
+ 	if (p && p[1] > 0) {
+ 		pht_capie = (struct ieee80211_ht_cap *)(p + 2);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0128-staging-rtl8723au-rtw_add_beacon-Construct-a-full-be.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0128-staging-rtl8723au-rtw_add_beacon-Construct-a-full-be.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,121 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:20 +0200
+Subject: [128/249] staging: rtl8723au: rtw_add_beacon(): Construct a full
+ beacon frame for validation
+Origin: https://git.kernel.org/linus/fb5fd46dbdd32faecd5f826f2d47e798732b7b4d
+
+Clean up and correct the beacon frame validation using a full beacon
+frame, and pass that to rtw_check_beacon_data23a(). Previous we went
+through hoops to construct the frame, minus the ieee80211_3addr header
+which just made it more complicated, and resulted in inconsistencies
+and bugs.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c           |  8 +++++---
+ drivers/staging/rtl8723au/include/rtw_ap.h        |  3 ++-
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 24 +++++++++++------------
+ 3 files changed, 19 insertions(+), 16 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index 18c9b30..08e933a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -789,8 +789,8 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
+ 	update_bmc_sta(padapter);
+ }
+ 
+-int rtw_check_beacon_data23a(struct rtw_adapter *padapter, u8 *pbuf,
+-			     unsigned int len)
++int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
++			     struct ieee80211_mgmt *mgmt, unsigned int len)
+ {
+ 	int ret = _SUCCESS;
+ 	u8 *p;
+@@ -808,7 +808,9 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter, u8 *pbuf,
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct wlan_bssid_ex *pbss_network = &pmlmepriv->cur_network.network;
+ 	u8 *ie = pbss_network->IEs;
+-
++	u8 *pbuf = mgmt->u.beacon.variable - _FIXED_IE_LENGTH_;
++	len -= (offsetof(struct ieee80211_mgmt, u.beacon.variable) -
++		_FIXED_IE_LENGTH_);
+ 	/* SSID */
+ 	/* Supported rates */
+ 	/* DS Params */
+diff --git a/drivers/staging/rtl8723au/include/rtw_ap.h b/drivers/staging/rtl8723au/include/rtw_ap.h
+index 8d9be5a..9f8d235 100644
+--- a/drivers/staging/rtl8723au/include/rtw_ap.h
++++ b/drivers/staging/rtl8723au/include/rtw_ap.h
+@@ -32,7 +32,8 @@ void update_beacon23a(struct rtw_adapter *padapter, u8 ie_id, u8 *oui, u8 tx);
+ void add_RATid23a(struct rtw_adapter *padapter, struct sta_info *psta, u8 rssi_level);
+ void expire_timeout_chk23a(struct rtw_adapter *padapter);
+ void update_sta_info23a_apmode23a(struct rtw_adapter *padapter, struct sta_info *psta);
+-int rtw_check_beacon_data23a(struct rtw_adapter *padapter, u8 *pbuf, unsigned int len);
++int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
++			     struct ieee80211_mgmt *mgmt, unsigned int len);
+ void rtw_ap_restore_network(struct rtw_adapter *padapter);
+ void rtw_set_macaddr_acl23a(struct rtw_adapter *padapter, int mode);
+ int rtw_acl_add_sta23a(struct rtw_adapter *padapter, u8 *addr);
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 9584688..2a4a696 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -2916,10 +2916,11 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head,
+ {
+ 	int ret = 0;
+ 	u8 *pbuf;
+-	uint len, wps_ielen = 0;
++	uint len, ielen, wps_ielen = 0;
+ 	struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
+ 	struct wlan_bssid_ex *bss = &pmlmepriv->cur_network.network;
+ 	const struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)head;
++	struct ieee80211_mgmt *tmpmgmt;
+ 	/* struct sta_priv *pstapriv = &padapter->stapriv; */
+ 
+ 	DBG_8723A("%s beacon_head_len =%zu, beacon_tail_len =%zu\n",
+@@ -2934,33 +2935,32 @@ static int rtw_add_beacon(struct rtw_adapter *adapter, const u8 *head,
+ 	pbuf = kzalloc(head_len + tail_len, GFP_KERNEL);
+ 	if (!pbuf)
+ 		return -ENOMEM;
++	tmpmgmt = (struct ieee80211_mgmt *)pbuf;
+ 
+ 	bss->beacon_interval = get_unaligned_le16(&mgmt->u.beacon.beacon_int);
+ 	bss->capability = get_unaligned_le16(&mgmt->u.beacon.capab_info);
+ 	bss->tsf = get_unaligned_le64(&mgmt->u.beacon.timestamp);
+ 
+ 	/*  24 = beacon header len. */
+-	memcpy(pbuf, (void *)head + sizeof(struct ieee80211_hdr_3addr),
+-	       head_len - sizeof(struct ieee80211_hdr_3addr));
+-	memcpy(pbuf + head_len - sizeof(struct ieee80211_hdr_3addr),
+-	       (void *)tail, tail_len);
+-
+-	len = head_len + tail_len - sizeof(struct ieee80211_hdr_3addr);
++	memcpy(pbuf, (void *)head, head_len);
++	memcpy(pbuf + head_len, (void *)tail, tail_len);
+ 
++	len = head_len + tail_len;
++	ielen = len - offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 	/* check wps ie if inclued */
+ 	if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+ 				    WLAN_OUI_TYPE_MICROSOFT_WPS,
+-				    pbuf + _FIXED_IE_LENGTH_,
+-				    len - _FIXED_IE_LENGTH_))
++				    tmpmgmt->u.beacon.variable, ielen))
+ 		DBG_8723A("add bcn, wps_ielen =%d\n", wps_ielen);
+ 
+ 	/* pbss_network->IEs will not include p2p_ie, wfd ie */
+-	rtw_ies_remove_ie23a(pbuf, &len, _BEACON_IE_OFFSET_,
++	rtw_ies_remove_ie23a(tmpmgmt->u.beacon.variable, &ielen, 0,
+ 			     WLAN_EID_VENDOR_SPECIFIC, P2P_OUI23A, 4);
+-	rtw_ies_remove_ie23a(pbuf, &len, _BEACON_IE_OFFSET_,
++	rtw_ies_remove_ie23a(tmpmgmt->u.beacon.variable, &ielen, 0,
+ 			     WLAN_EID_VENDOR_SPECIFIC, WFD_OUI23A, 4);
+ 
+-	if (rtw_check_beacon_data23a(adapter, pbuf, len) == _SUCCESS) {
++	len = ielen + offsetof(struct ieee80211_mgmt, u.beacon.variable);
++	if (rtw_check_beacon_data23a(adapter, tmpmgmt, len) == _SUCCESS) {
+ 		ret = 0;
+ 	} else {
+ 		ret = -EINVAL;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0129-staging-rtl8723au-rtw_check_beacon_data23a-Capabilit.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0129-staging-rtl8723au-rtw_check_beacon_data23a-Capabilit.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,48 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:21 +0200
+Subject: [129/249] staging: rtl8723au: rtw_check_beacon_data23a(): Capability
+ is already uptodate in cur_network
+Origin: https://git.kernel.org/linus/51a26d26feec3e8d41092f33fde6b111961d59b2
+
+Beacon capability was already added to mlme_priv->cur_network before
+calling this function, so no need to retrieve it from the IE array
+again.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index 08e933a..c19ed95 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -797,7 +797,7 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 	u8 *pHT_caps_ie = NULL;
+ 	u8 *pHT_info_ie = NULL;
+ 	struct sta_info *psta = NULL;
+-	u16 cap, ht_cap = false;
++	u16 ht_cap = false;
+ 	uint ie_len = 0;
+ 	int group_cipher, pairwise_cipher;
+ 	u8 channel, network_type, supportRate[NDIS_802_11_LENGTH_RATES_EX];
+@@ -844,9 +844,6 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 
+ 	memcpy(pbss_network->MacAddress, myid(&padapter->eeprompriv), ETH_ALEN);
+ 
+-	/* capability */
+-	cap = get_unaligned_le16(ie);
+-
+ 	/* SSID */
+ 	p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_SSID, &ie_len,
+ 			  (pbss_network->IELength -_BEACON_IE_OFFSET_));
+@@ -894,7 +891,7 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 		ERP_IE_handler23a(padapter, p);
+ 
+ 	/* update privacy/security */
+-	if (cap & BIT(4))
++	if (pbss_network->capability & BIT(4))
+ 		pbss_network->Privacy = 1;
+ 	else
+ 		pbss_network->Privacy = 0;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0130-staging-rtl8723au-Use-_FIXED_IE_LEN_-instead-of-hard.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0130-staging-rtl8723au-Use-_FIXED_IE_LEN_-instead-of-hard.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,75 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:22 +0200
+Subject: [130/249] staging: rtl8723au: Use _FIXED_IE_LEN_ instead of hard
+ coded value
+Origin: https://git.kernel.org/linus/e61fc7cf90c9eb6af8380e2b02e28c60d4ee0ef5
+
+This should help catching all the users once we stop carrying the
+fixed beacon elements in the IE array.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c     | 14 ++++++++------
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c |  2 +-
+ 2 files changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index b7a3528..66f24dc 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -1929,7 +1929,7 @@ int rtw_restruct_wmm_ie23a(struct rtw_adapter *adapter, u8 *in_ie,
+ 	unsigned int ielength = 0;
+ 	unsigned int i, j;
+ 
+-	i = 12; /* after the fixed IE */
++	i = _FIXED_IE_LENGTH_; /* after the fixed IE */
+ 	while (i < in_len) {
+ 		ielength = initial_out_len;
+ 
+@@ -2039,8 +2039,8 @@ int rtw_restruct_sec_ie23a(struct rtw_adapter *adapter, u8 *in_ie, u8 *out_ie,
+ 		  "ndissecuritytype=%d\n", ndisauthmode, ndissecuritytype));
+ 
+ 	/* copy fixed ie only */
+-	memcpy(out_ie, in_ie, 12);
+-	ielength = 12;
++	memcpy(out_ie, in_ie, _FIXED_IE_LENGTH_);
++	ielength = _FIXED_IE_LENGTH_;
+ 	if (ndisauthmode == Ndis802_11AuthModeWPA ||
+ 	    ndisauthmode == Ndis802_11AuthModeWPAPSK)
+ 		authmode = WLAN_EID_VENDOR_SPECIFIC;
+@@ -2171,7 +2171,8 @@ bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
+ 
+ 	phtpriv->ht_option = false;
+ 
+-	p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, in_ie + 12, in_len -12);
++	p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, in_ie + _FIXED_IE_LENGTH_,
++			     in_len - _FIXED_IE_LENGTH_);
+ 
+ 	if (p && p[1] > 0) {
+ 		u32 rx_packet_offset, max_recvbuf_sz;
+@@ -2216,8 +2217,9 @@ bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
+ 
+ 		phtpriv->ht_option = true;
+ 
+-		p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, in_ie + 12,
+-				     in_len -12);
++		p = cfg80211_find_ie(WLAN_EID_HT_OPERATION,
++				     in_ie + _FIXED_IE_LENGTH_,
++				     in_len - _FIXED_IE_LENGTH_);
+ 		if (p && (p[1] == sizeof(struct ieee80211_ht_operation))) {
+ 			out_len = *pout_len;
+ 			pframe = rtw_set_ie23a(out_ie + out_len,
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 03ced01..6791ad7 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4254,7 +4254,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		memcpy(bssid->SupportedRates + i, p + 2, p[1]);
+ 	}
+ 
+-	if (bssid->IELength < 12)
++	if (bssid->IELength < _FIXED_IE_LENGTH_)
+ 		goto fail;
+ 
+ 	/*  Checking for DSConfig */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0131-staging-rtl8723au-ConstructProbeRsp-Use-struct-ieee8.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0131-staging-rtl8723au-ConstructProbeRsp-Use-struct-ieee8.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,76 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:23 +0200
+Subject: [131/249] staging: rtl8723au: ConstructProbeRsp(): Use struct
+ ieee80211_mgmt
+Origin: https://git.kernel.org/linus/a22301ec9600a5c1d6961b2e006c0b9d73975828
+
+Use ieee80211_mgmt to construct the frame instead of relying on hard
+coded offsets.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_cmd.c | 31 +++++++++++++++++-----------
+ 1 file changed, 19 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+index ae15624..ca1bea8 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+@@ -398,7 +398,7 @@ ConstructNullFunctionData(struct rtw_adapter *padapter, u8 *pframe,
+ static void ConstructProbeRsp(struct rtw_adapter *padapter, u8 *pframe,
+ 			      u32 *pLength, u8 *StaAddr, bool bHideSSID)
+ {
+-	struct ieee80211_hdr *pwlanhdr;
++	struct ieee80211_mgmt *mgmt;
+ 	u8 *mac, *bssid;
+ 	u32 pktlen;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+@@ -407,29 +407,36 @@ static void ConstructProbeRsp(struct rtw_adapter *padapter, u8 *pframe,
+ 
+ 	/* DBG_8723A("%s\n", __func__); */
+ 
+-	pwlanhdr = (struct ieee80211_hdr *)pframe;
++	mgmt = (struct ieee80211_mgmt *)pframe;
+ 
+ 	mac = myid(&padapter->eeprompriv);
+ 	bssid = cur_network->MacAddress;
+ 
+-	pwlanhdr->frame_control =
++	mgmt->frame_control =
+ 		cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_RESP);
+ 
+-	pwlanhdr->seq_ctrl = 0;
++	mgmt->seq_ctrl = 0;
++
++	memcpy(mgmt->da, StaAddr, ETH_ALEN);
++	memcpy(mgmt->sa, mac, ETH_ALEN);
++	memcpy(mgmt->bssid, bssid, ETH_ALEN);
+ 
+-	memcpy(pwlanhdr->addr1, StaAddr, ETH_ALEN);
+-	memcpy(pwlanhdr->addr2, mac, ETH_ALEN);
+-	memcpy(pwlanhdr->addr3, bssid, ETH_ALEN);
++	put_unaligned_le64(cur_network->tsf,
++			   &mgmt->u.probe_resp.timestamp);
++	put_unaligned_le16(cur_network->beacon_interval,
++			   &mgmt->u.probe_resp.beacon_int);
++	put_unaligned_le16(cur_network->capability,
++			   &mgmt->u.probe_resp.capab_info);
+ 
+-	pktlen = sizeof(struct ieee80211_hdr_3addr);
+-	pframe += pktlen;
++	pktlen = offsetof(struct ieee80211_mgmt, u.probe_resp.variable);
+ 
+ 	if (cur_network->IELength > MAX_IE_SZ)
+ 		return;
+ 
+-	memcpy(pframe, cur_network->IEs, cur_network->IELength);
+-	pframe += cur_network->IELength;
+-	pktlen += cur_network->IELength;
++	memcpy(mgmt->u.probe_resp.variable,
++	       cur_network->IEs + _FIXED_IE_LENGTH_,
++	       cur_network->IELength - _FIXED_IE_LENGTH_);
++	pktlen += (cur_network->IELength - _FIXED_IE_LENGTH_);
+ 
+ 	*pLength = pktlen;
+ }

Added: dists/sid/linux/debian/patches/features/all/r8723au/0132-staging-rtl8723au-Remove-no-op-CheckFwRsvdPageConten.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0132-staging-rtl8723au-Remove-no-op-CheckFwRsvdPageConten.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,56 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:24 +0200
+Subject: [132/249] staging: rtl8723au: Remove no-op
+ CheckFwRsvdPageContent23a()
+Origin: https://git.kernel.org/linus/559789d6cba66348072bbe2f372b6233945b011b
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_cmd.c      | 5 -----
+ drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c | 2 --
+ drivers/staging/rtl8723au/include/rtl8723a_cmd.h  | 2 --
+ 3 files changed, 9 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+index ca1bea8..2d67762 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+@@ -441,11 +441,6 @@ static void ConstructProbeRsp(struct rtw_adapter *padapter, u8 *pframe,
+ 	*pLength = pktlen;
+ }
+ 
+-/*  To check if reserved page content is destroyed by beacon beacuse beacon is too large. */
+-void CheckFwRsvdPageContent23a(struct rtw_adapter *Adapter)
+-{
+-}
+-
+ /*  */
+ /*  Description: Fill the reserved packets that FW will use to RSVD page. */
+ /*			Now we just send 4 types packet to rsvd page. */
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
+index 46f5abc..8b3473f 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
+@@ -1034,8 +1034,6 @@ static void StopTxBeacon(struct rtw_adapter *padapter)
+ 	rtl8723au_write8(padapter, REG_TBTT_PROHIBIT + 1, 0x64);
+ 	pHalData->RegReg542 &= ~BIT(0);
+ 	rtl8723au_write8(padapter, REG_TBTT_PROHIBIT + 2, pHalData->RegReg542);
+-
+-	CheckFwRsvdPageContent23a(padapter); /*  2010.06.23. Added by tynli. */
+ }
+ 
+ static void _BeaconFunctionEnable(struct rtw_adapter *padapter, u8 Enable,
+diff --git a/drivers/staging/rtl8723au/include/rtl8723a_cmd.h b/drivers/staging/rtl8723au/include/rtl8723a_cmd.h
+index e1ecbd0..014c02e 100644
+--- a/drivers/staging/rtl8723au/include/rtl8723a_cmd.h
++++ b/drivers/staging/rtl8723au/include/rtl8723a_cmd.h
+@@ -153,8 +153,6 @@ int rtl8723a_set_rssi_cmd(struct rtw_adapter *padapter, u8 *param);
+ int rtl8723a_set_raid_cmd(struct rtw_adapter *padapter, u32 mask, u8 arg);
+ void rtl8723a_add_rateatid(struct rtw_adapter *padapter, u32 bitmap, u8 arg, u8 rssi_level);
+ 
+-void CheckFwRsvdPageContent23a(struct rtw_adapter *padapter);
+-
+ int FillH2CCmd(struct rtw_adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
+ 
+ #endif

Added: dists/sid/linux/debian/patches/features/all/r8723au/0133-staging-rtl8723au-Remove-unused-dump_txrpt_ccx_8723a.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0133-staging-rtl8723au-Remove-unused-dump_txrpt_ccx_8723a.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,56 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:25 +0200
+Subject: [133/249] staging: rtl8723au: Remove unused dump_txrpt_ccx_8723a()
+Origin: https://git.kernel.org/linus/2131891c6ac7643859a01efe35f647835c003b00
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_xmit.c     | 21 ---------------------
+ drivers/staging/rtl8723au/include/rtl8723a_xmit.h |  1 -
+ 2 files changed, 22 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_xmit.c b/drivers/staging/rtl8723au/hal/rtl8723a_xmit.c
+index d7612cc..6ea2f9e 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_xmit.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_xmit.c
+@@ -18,27 +18,6 @@
+ #include <drv_types.h>
+ #include <rtl8723a_hal.h>
+ 
+-void dump_txrpt_ccx_8723a(void *buf)
+-{
+-	struct txrpt_ccx_8723a *txrpt_ccx = buf;
+-
+-	DBG_8723A("%s:\n"
+-		"tag1:%u, rsvd:%u, int_bt:%u, int_tri:%u, int_ccx:%u\n"
+-		"mac_id:%u, pkt_drop:%u, pkt_ok:%u, bmc:%u\n"
+-		"retry_cnt:%u, lifetime_over:%u, retry_over:%u\n"
+-		"ccx_qtime:%u\n"
+-		"final_data_rate:0x%02x\n"
+-		"qsel:%u, sw:0x%03x\n"
+-		, __func__
+-		, txrpt_ccx->tag1, txrpt_ccx->rsvd, txrpt_ccx->int_bt, txrpt_ccx->int_tri, txrpt_ccx->int_ccx
+-		, txrpt_ccx->mac_id, txrpt_ccx->pkt_drop, txrpt_ccx->pkt_ok, txrpt_ccx->bmc
+-		, txrpt_ccx->retry_cnt, txrpt_ccx->lifetime_over, txrpt_ccx->retry_over
+-		, txrpt_ccx_qtime_8723a(txrpt_ccx)
+-		, txrpt_ccx->final_data_rate
+-		, txrpt_ccx->qsel, txrpt_ccx_sw_8723a(txrpt_ccx)
+-	);
+-}
+-
+ void handle_txrpt_ccx_8723a(struct rtw_adapter *adapter, void *buf)
+ {
+ 	struct txrpt_ccx_8723a *txrpt_ccx = buf;
+diff --git a/drivers/staging/rtl8723au/include/rtl8723a_xmit.h b/drivers/staging/rtl8723au/include/rtl8723a_xmit.h
+index 79883d7..815560c 100644
+--- a/drivers/staging/rtl8723au/include/rtl8723a_xmit.h
++++ b/drivers/staging/rtl8723au/include/rtl8723a_xmit.h
+@@ -211,7 +211,6 @@ struct txrpt_ccx_8723a {
+ #define txrpt_ccx_sw_8723a(txrpt_ccx) ((txrpt_ccx)->sw0 + ((txrpt_ccx)->sw1<<8))
+ #define txrpt_ccx_qtime_8723a(txrpt_ccx) ((txrpt_ccx)->ccx_qtime0+((txrpt_ccx)->ccx_qtime1<<8))
+ 
+-void dump_txrpt_ccx_8723a(void *buf);
+ void handle_txrpt_ccx_8723a(struct rtw_adapter *adapter, void *buf);
+ void rtl8723a_update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem);
+ void rtl8723a_fill_fake_txdesc(struct rtw_adapter *padapter, u8 *pDesc, u32 BufferLen, u8 IsPsPoll, u8 IsBTQosNull);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0134-staging-rtl8723au-issue_beacon23a-Fix-another-case-i.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0134-staging-rtl8723au-issue_beacon23a-Fix-another-case-i.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,24 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:26 +0200
+Subject: [134/249] staging: rtl8723au: issue_beacon23a(): Fix another case
+ issuing a corrupted beacon
+Origin: https://git.kernel.org/linus/89060370dbc34cffcce925712eb5b796c6731744
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 6791ad7..cb882fb 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2420,6 +2420,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
+ 		u8 *iebuf;
+ 		int buflen;
++		pframe -= _BEACON_IE_OFFSET_;
+ 		/* DBG_8723A("ie len =%d\n", cur_network->IELength); */
+ 		memcpy(pframe, cur_network->IEs, cur_network->IELength);
+ 		len_diff = update_hidden_ssid(pframe + _BEACON_IE_OFFSET_,

Added: dists/sid/linux/debian/patches/features/all/r8723au/0135-staging-rtl8723au-issue_beacon23a-Determine-ie-buffe.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0135-staging-rtl8723au-issue_beacon23a-Determine-ie-buffe.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,31 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:27 +0200
+Subject: [135/249] staging: rtl8723au: issue_beacon23a(): Determine ie buffer
+ location using 80211_mgmt
+Origin: https://git.kernel.org/linus/0f728f10334f5ca6f9c28dffcfae96dcabd2a952
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index cb882fb..ebd3743 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2430,11 +2430,9 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 		pframe += (cur_network->IELength+len_diff);
+ 		pattrib->pktlen += (cur_network->IELength+len_diff);
+ 
+-		iebuf = pmgntframe->buf_addr + TXDESC_OFFSET +
+-			sizeof (struct ieee80211_hdr_3addr) +
+-			_BEACON_IE_OFFSET_;
+-		buflen = pattrib->pktlen - sizeof (struct ieee80211_hdr_3addr) -
+-			_BEACON_IE_OFFSET_;
++		iebuf = mgmt->u.beacon.variable;
++		buflen = pattrib->pktlen -
++			offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 		wps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+ 						 WLAN_OUI_TYPE_MICROSOFT_WPS,
+ 						 iebuf, buflen);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0136-staging-rtl8723au-rtw_generate_ie23a-update-network-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0136-staging-rtl8723au-rtw_generate_ie23a-update-network-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,53 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:28 +0200
+Subject: [136/249] staging: rtl8723au: rtw_generate_ie23a(): update network
+ info as well as IE
+Origin: https://git.kernel.org/linus/a4cf0d65e584329bd85beca84f04325870e2ea69
+
+We need to make sure to update the network info as well as the IE
+array.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index efad6f8..f235ae0 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -351,8 +351,9 @@ int rtw_generate_ie23a(struct registry_priv *pregistrypriv)
+ 	int	sz = 0, rateLen;
+ 	struct wlan_bssid_ex*	pdev_network = &pregistrypriv->dev_network;
+ 	u8*	ie = pdev_network->IEs;
++	u16 cap;
+ 
+-
++	pdev_network->tsf = 0;
+ 
+ 	/* timestamp will be inserted by hardware */
+ 	sz += 8;
+@@ -368,13 +369,20 @@ int rtw_generate_ie23a(struct registry_priv *pregistrypriv)
+ 	*(u16*)ie = 0;
+ 
+ 	*(u16*)ie |= cpu_to_le16(WLAN_CAPABILITY_IBSS);
++	cap = WLAN_CAPABILITY_IBSS;
+ 
+-	if (pregistrypriv->preamble == PREAMBLE_SHORT)
++	if (pregistrypriv->preamble == PREAMBLE_SHORT) {
+ 		*(u16*)ie |= cpu_to_le16(WLAN_CAPABILITY_SHORT_PREAMBLE);
++		cap |= WLAN_CAPABILITY_SHORT_PREAMBLE;
++	}
+ 
+-	if (pdev_network->Privacy)
++	if (pdev_network->Privacy) {
+ 		*(u16*)ie |= cpu_to_le16(WLAN_CAPABILITY_PRIVACY);
++		cap |= WLAN_CAPABILITY_PRIVACY;
++
++	}
+ 
++	pdev_network->capability = cap;
+ 	sz += 2;
+ 	ie += 2;
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0137-staging-rtl8723au-Stop-carrying-half-the-beacon-fram.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0137-staging-rtl8723au-Stop-carrying-half-the-beacon-fram.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,567 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:29 +0200
+Subject: [137/249] staging: rtl8723au: Stop carrying half the beacon frame
+ header in the stored IE array
+Origin: https://git.kernel.org/linus/68e6c79609fc2d2d1132fd293f4d9dd7bdd514b5
+
+This gets rid of the odd carrying of half the beacon frame in the IE
+array stored for the network. Instead we rely on the relevant fields
+(timestamp, beacon_interval, and capability) stored in struct
+wlan_bssid_ex.
+
+Carrying only half the ieee80211_mgmt header led to a number of bugs
+and simply obfuscated the code.
+
+I have tried catching all instances relying on these three elements in
+the IEs array, but missed cases may still need to be tracked down.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c        |  8 +--
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 41 +++----------
+ drivers/staging/rtl8723au/core/rtw_mlme.c      | 27 +--------
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c  | 83 +++++++++++---------------
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c | 29 ++-------
+ drivers/staging/rtl8723au/hal/rtl8723a_cmd.c   |  9 +--
+ drivers/staging/rtl8723au/include/wifi.h       |  2 +-
+ 7 files changed, 58 insertions(+), 141 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index c19ed95..5c30f7b 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -652,7 +652,6 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *pnetwork_mlmeext = &pmlmeinfo->network;
+ 	struct ieee80211_ht_operation *pht_info = NULL;
+-	int bcn_fixed_size;
+ 
+ 	bcn_interval = (u16)pnetwork->beacon_interval;
+ 	cur_channel = pnetwork->DSConfig;
+@@ -728,12 +727,9 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
+ 						 DYNAMIC_ALL_FUNC_ENABLE);
+ 	}
+ 	/* set channel, bwmode */
+-	bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-		offsetof(struct ieee80211_mgmt, u.beacon);
+ 
+-	p = cfg80211_find_ie(WLAN_EID_HT_OPERATION,
+-			     pnetwork->IEs + bcn_fixed_size,
+-			     pnetwork->IELength - bcn_fixed_size);
++	p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, pnetwork->IEs,
++			     pnetwork->IELength);
+ 	if (p && p[1]) {
+ 		pht_info = (struct ieee80211_ht_operation *)(p + 2);
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index f235ae0..2cb8eed 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -355,36 +355,15 @@ int rtw_generate_ie23a(struct registry_priv *pregistrypriv)
+ 
+ 	pdev_network->tsf = 0;
+ 
+-	/* timestamp will be inserted by hardware */
+-	sz += 8;
+-	ie += sz;
+-
+-	/* beacon interval : 2bytes */
+-	/* BCN_INTERVAL; */
+-	*(u16*)ie = cpu_to_le16(pdev_network->beacon_interval);
+-	sz += 2;
+-	ie += 2;
+-
+-	/* capability info */
+-	*(u16*)ie = 0;
+-
+-	*(u16*)ie |= cpu_to_le16(WLAN_CAPABILITY_IBSS);
+ 	cap = WLAN_CAPABILITY_IBSS;
+ 
+-	if (pregistrypriv->preamble == PREAMBLE_SHORT) {
+-		*(u16*)ie |= cpu_to_le16(WLAN_CAPABILITY_SHORT_PREAMBLE);
++	if (pregistrypriv->preamble == PREAMBLE_SHORT)
+ 		cap |= WLAN_CAPABILITY_SHORT_PREAMBLE;
+-	}
+ 
+-	if (pdev_network->Privacy) {
+-		*(u16*)ie |= cpu_to_le16(WLAN_CAPABILITY_PRIVACY);
++	if (pdev_network->Privacy)
+ 		cap |= WLAN_CAPABILITY_PRIVACY;
+ 
+-	}
+-
+ 	pdev_network->capability = cap;
+-	sz += 2;
+-	ie += 2;
+ 
+ 	/* SSID */
+ 	ie = rtw_set_ie23a(ie, WLAN_EID_SSID, pdev_network->Ssid.ssid_len,
+@@ -718,13 +697,11 @@ static int rtw_get_cipher_info(struct wlan_network *pnetwork)
+ 	const u8 *pbuf;
+ 	int group_cipher = 0, pairwise_cipher = 0, is8021x = 0;
+ 	int ret = _FAIL;
+-	int r, offset, plen;
++	int r, plen;
+ 	char *pie;
+ 
+-	offset = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-		offsetof(struct ieee80211_mgmt, u);
+-	pie = &pnetwork->network.IEs[offset];
+-	plen = pnetwork->network.IELength - offset;
++	pie = pnetwork->network.IEs;
++	plen = pnetwork->network.IELength;
+ 
+ 	pbuf = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+ 				       WLAN_OUI_TYPE_MICROSOFT_WPA, pie, plen);
+@@ -779,7 +756,7 @@ static int rtw_get_cipher_info(struct wlan_network *pnetwork)
+ void rtw_get_bcn_info23a(struct wlan_network *pnetwork)
+ {
+ 	u8 bencrypt = 0;
+-	int pie_len, ie_offset;
++	int pie_len;
+ 	u8 *pie;
+ 	const u8 *p;
+ 
+@@ -792,10 +769,8 @@ void rtw_get_bcn_info23a(struct wlan_network *pnetwork)
+ 	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
+ 		 ("%s: ssid =%s\n", __func__, pnetwork->network.Ssid.ssid));
+ 
+-	ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-		offsetof(struct ieee80211_mgmt, u);
+-	pie = pnetwork->network.IEs + ie_offset;
+-	pie_len = pnetwork->network.IELength - ie_offset;
++	pie = pnetwork->network.IEs;
++	pie_len = pnetwork->network.IELength;
+ 
+ 	p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len);
+ 	if (p && p[1]) {
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 66f24dc..1ccaa6f2 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -424,16 +424,11 @@ static void update_current_network(struct rtw_adapter *adapter,
+ 
+ 	if (check_fwstate(pmlmepriv, _FW_LINKED) &&
+ 	    is_same_network23a(&pmlmepriv->cur_network.network, pnetwork)) {
+-		int bcn_size;
+ 		update_network23a(&pmlmepriv->cur_network.network,
+ 				  pnetwork,adapter, true);
+ 
+-		bcn_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-			offsetof(struct ieee80211_mgmt, u.beacon);
+-
+ 		rtw_update_protection23a(adapter,
+-					 pmlmepriv->cur_network.network.IEs +
+-					 bcn_size,
++					 pmlmepriv->cur_network.network.IEs,
+ 					 pmlmepriv->cur_network.network.IELength);
+ 	}
+ }
+@@ -619,8 +614,6 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 				     pnetwork->MacAddress)) {
+ 			struct wlan_network* ibss_wlan;
+ 
+-			memcpy(pmlmepriv->cur_network.network.IEs,
+-			       pnetwork->IEs, 8);
+ 			pmlmepriv->cur_network.network.beacon_interval =
+ 				pnetwork->beacon_interval;
+ 			pmlmepriv->cur_network.network.capability =
+@@ -631,8 +624,6 @@ void rtw_survey_event_cb23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ 				&pmlmepriv->scanned_queue,
+ 				pnetwork->MacAddress);
+ 			if (ibss_wlan) {
+-				memcpy(ibss_wlan->network.IEs,
+-				       pnetwork->IEs, 8);
+ 				pmlmepriv->cur_network.network.beacon_interval =
+ 					ibss_wlan->network.beacon_interval;
+ 				pmlmepriv->cur_network.network.capability =
+@@ -1019,7 +1010,6 @@ rtw_joinbss_update_network23a(struct rtw_adapter *padapter,
+ {
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct wlan_network *cur_network = &pmlmepriv->cur_network;
+-	int bcn_size;
+ 
+ 	DBG_8723A("%s\n", __func__);
+ 
+@@ -1076,11 +1066,8 @@ rtw_joinbss_update_network23a(struct rtw_adapter *padapter,
+ 		break;
+ 	}
+ 
+-	bcn_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-		offsetof(struct ieee80211_mgmt, u.beacon);
+-
+-	rtw_update_protection23a(padapter, cur_network->network.IEs +
+-				 bcn_size, cur_network->network.IELength);
++	rtw_update_protection23a(padapter, cur_network->network.IEs,
++				 cur_network->network.IELength);
+ 
+ 	rtw_update_ht_cap23a(padapter, cur_network->network.IEs,
+ 			     cur_network->network.IELength);
+@@ -2243,7 +2230,6 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 	struct registry_priv *pregistrypriv = &padapter->registrypriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+-	int bcn_fixed_size;
+ 
+ 	if (!phtpriv->ht_option)
+ 		return;
+@@ -2253,13 +2239,6 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 
+ 	DBG_8723A("+rtw_update_ht_cap23a()\n");
+ 
+-	bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-		offsetof(struct ieee80211_mgmt, u.beacon);
+-
+-	/* Adjust pie + ie_len for our searches */
+-	pie += bcn_fixed_size;
+-	ie_len -= bcn_fixed_size;
+-
+ 	/* maybe needs check if ap supports rx ampdu. */
+ 	if (!phtpriv->ampdu_enable && pregistrypriv->ampdu_enable == 1) {
+ 		if (pregistrypriv->wifi_spec == 1)
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index ebd3743..c473e33 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -3119,7 +3119,7 @@ static void issue_assocreq(struct rtw_adapter *padapter)
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+-	int bssrate_len = 0, sta_bssrate_len = 0, pie_len, bcn_fixed_size;
++	int bssrate_len = 0, sta_bssrate_len = 0, pie_len;
+ 	u8 *pie;
+ 
+ 	pmgntframe = alloc_mgtxmitframe23a(pxmitpriv);
+@@ -3227,11 +3227,9 @@ static void issue_assocreq(struct rtw_adapter *padapter)
+ 				       bssrate_len, bssrate, &pattrib->pktlen);
+ 
+ 	/* RSN */
+-	bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-		offsetof(struct ieee80211_mgmt, u.beacon);
+ 
+-	pie = pmlmeinfo->network.IEs + bcn_fixed_size;
+-	pie_len = pmlmeinfo->network.IELength - bcn_fixed_size;
++	pie = pmlmeinfo->network.IEs;
++	pie_len = pmlmeinfo->network.IELength;
+ 
+ 	p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len);
+ 	if (p)
+@@ -3309,7 +3307,7 @@ static void issue_assocreq(struct rtw_adapter *padapter)
+ 	}
+ 
+ 	/* vendor specific IE, such as WPA, WMM, WPS */
+-	for (i = bcn_fixed_size;  i < pmlmeinfo->network.IELength;) {
++	for (i = 0;  i < pmlmeinfo->network.IELength;) {
+ 		p = pmlmeinfo->network.IEs + i;
+ 
+ 		switch (p[0]) {
+@@ -4139,47 +4137,44 @@ static void rtw_site_survey(struct rtw_adapter *padapter)
+ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 					      struct recv_frame *precv_frame)
+ {
+-	int i;
+-	const u8 *p;
+ 	struct sk_buff *skb = precv_frame->pkt;
+ 	struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *) skb->data;
+-	unsigned int length;
+-	u8 ie_offset;
+ 	struct registry_priv *pregistrypriv = &padapter->registrypriv;
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *bssid;
++	const u8 *p;
++	u8 *pie;
++	unsigned int length;
++	int i;
+ 
+-	length = skb->len - sizeof(struct ieee80211_hdr_3addr);
+-
+-	if (length > MAX_IE_SZ) {
+-		/* DBG_8723A("IE too long for survey event\n"); */
+-		return NULL;
+-	}
++	length = skb->len;
+ 
+ 	bssid = kzalloc(sizeof(struct wlan_bssid_ex), GFP_ATOMIC);
+ 	if (!bssid)
+ 		return NULL;
+ 
+ 	if (ieee80211_is_beacon(mgmt->frame_control)) {
++		length -= offsetof(struct ieee80211_mgmt, u.beacon.variable);
++		pie = mgmt->u.beacon.variable;
+ 		bssid->reserved = 1;
+-		ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 		bssid->capability =
+ 			get_unaligned_le16(&mgmt->u.beacon.capab_info);
+ 		bssid->beacon_interval =
+ 			get_unaligned_le16(&mgmt->u.beacon.beacon_int);
+ 		bssid->tsf = get_unaligned_le64(&mgmt->u.beacon.timestamp);
+-	} else  if (ieee80211_is_probe_req(mgmt->frame_control)) {
+-		ie_offset = offsetof(struct ieee80211_mgmt,
+-				     u.probe_req.variable);
++	} else if (ieee80211_is_probe_req(mgmt->frame_control)) {
++		length -= offsetof(struct ieee80211_mgmt, u.probe_req.variable);
++		pie = mgmt->u.probe_req.variable;
+ 		bssid->reserved = 2;
+ 		bssid->capability = 0;
+ 		bssid->beacon_interval =
+ 			padapter->registrypriv.dev_network.beacon_interval;
+ 		bssid->tsf = 0;
+ 	} else if (ieee80211_is_probe_resp(mgmt->frame_control)) {
+-		ie_offset = offsetof(struct ieee80211_mgmt,
+-				     u.probe_resp.variable);
++		length -=
++			offsetof(struct ieee80211_mgmt, u.probe_resp.variable);
++		pie = mgmt->u.probe_resp.variable;
+ 		bssid->reserved = 3;
+ 		bssid->capability =
+ 			get_unaligned_le16(&mgmt->u.probe_resp.capab_info);
+@@ -4187,21 +4182,27 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 			get_unaligned_le16(&mgmt->u.probe_resp.beacon_int);
+ 		bssid->tsf = get_unaligned_le64(&mgmt->u.probe_resp.timestamp);
+ 	} else {
++		length -= offsetof(struct ieee80211_mgmt, u.beacon.variable);
++		pie = mgmt->u.beacon.variable;
+ 		bssid->reserved = 0;
+-		ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 		bssid->capability =
+ 			get_unaligned_le16(&mgmt->u.beacon.capab_info);
+ 		bssid->beacon_interval =
+ 			padapter->registrypriv.dev_network.beacon_interval;
+ 		bssid->tsf = 0;
+ 	}
+-	ie_offset -= offsetof(struct ieee80211_mgmt, u);
++
++	if (length > MAX_IE_SZ) {
++		/* DBG_8723A("IE too long for survey event\n"); */
++		kfree(bssid);
++		return NULL;
++	}
+ 
+ 	bssid->Length = offsetof(struct wlan_bssid_ex, IEs) + length;
+ 
+ 	/* below is to copy the information element */
+ 	bssid->IELength = length;
+-	memcpy(bssid->IEs, &mgmt->u, bssid->IELength);
++	memcpy(bssid->IEs, pie, bssid->IELength);
+ 
+ 	/* get the signal strength */
+ 	/*  in dBM.raw data */
+@@ -4212,8 +4213,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		precv_frame->attrib.phy_info.SignalStrength;/* in percentage */
+ 
+ 	/*  checking SSID */
+-	p = cfg80211_find_ie(WLAN_EID_SSID, bssid->IEs + ie_offset,
+-			     bssid->IELength - ie_offset);
++	p = cfg80211_find_ie(WLAN_EID_SSID, bssid->IEs, bssid->IELength);
+ 
+ 	if (!p) {
+ 		DBG_8723A("marc: cannot find SSID for survey event\n");
+@@ -4230,8 +4230,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 
+ 	/* checking rate info... */
+ 	i = 0;
+-	p = cfg80211_find_ie(WLAN_EID_SUPP_RATES, bssid->IEs + ie_offset,
+-			     bssid->IELength - ie_offset);
++	p = cfg80211_find_ie(WLAN_EID_SUPP_RATES, bssid->IEs, bssid->IELength);
+ 	if (p) {
+ 		if (p[1] > NDIS_802_11_LENGTH_RATES_EX) {
+ 			DBG_8723A("%s()-%d: IE too long (%d) for survey "
+@@ -4242,8 +4241,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		i = p[1];
+ 	}
+ 
+-	p = cfg80211_find_ie(WLAN_EID_EXT_SUPP_RATES, bssid->IEs + ie_offset,
+-			     bssid->IELength - ie_offset);
++	p = cfg80211_find_ie(WLAN_EID_EXT_SUPP_RATES, bssid->IEs,
++			     bssid->IELength);
+ 	if (p) {
+ 		if (p[1] > (NDIS_802_11_LENGTH_RATES_EX-i)) {
+ 			DBG_8723A("%s()-%d: IE too long (%d) for survey "
+@@ -4253,12 +4252,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		memcpy(bssid->SupportedRates + i, p + 2, p[1]);
+ 	}
+ 
+-	if (bssid->IELength < _FIXED_IE_LENGTH_)
+-		goto fail;
+-
+ 	/*  Checking for DSConfig */
+-	p = cfg80211_find_ie(WLAN_EID_DS_PARAMS, bssid->IEs + ie_offset,
+-			     bssid->IELength - ie_offset);
++	p = cfg80211_find_ie(WLAN_EID_DS_PARAMS, bssid->IEs, bssid->IELength);
+ 
+ 	bssid->DSConfig = 0;
+ 
+@@ -4266,9 +4261,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 		bssid->DSConfig = p[2];
+ 	} else {/*  In 5G, some ap do not have DSSET IE */
+ 		/*  checking HT info for channel */
+-		p = cfg80211_find_ie(WLAN_EID_HT_OPERATION,
+-				     bssid->IEs + ie_offset,
+-				     bssid->IELength - ie_offset);
++		p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, bssid->IEs,
++				     bssid->IELength);
+ 		if (p) {
+ 			struct ieee80211_ht_operation *HT_info =
+ 				(struct ieee80211_ht_operation *)(p + 2);
+@@ -4305,9 +4299,8 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 	    pmlmeinfo->bwmode_updated == false) {
+ 		struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 
+-		p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY,
+-				     bssid->IEs + ie_offset,
+-				     bssid->IELength - ie_offset);
++		p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, bssid->IEs,
++				     bssid->IELength);
+ 		if (p && p[1] > 0) {
+ 			struct ieee80211_ht_cap *pHT_caps;
+ 			pHT_caps = (struct ieee80211_ht_cap *)(p + 2);
+@@ -5586,7 +5579,6 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 	const struct wlan_bssid_ex *pparm = (struct wlan_bssid_ex *)pbuf;
+ 	struct ieee80211_ht_operation *pht_info;
+ 	u32 i;
+-	int bcn_fixed_size;
+ 	u8 *p;
+         /* u32	initialgain; */
+ 	/* u32	acparm; */
+@@ -5632,10 +5624,7 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 	/* pmlmeinfo->assoc_AP_vendor = check_assoc_AP23a(pnetwork->IEs,
+ 	   pnetwork->IELength); */
+ 
+-	bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-		offsetof(struct ieee80211_mgmt, u.beacon);
+-
+-	for (i = bcn_fixed_size; i < pnetwork->IELength;) {
++	for (i = 0; i < pnetwork->IELength;) {
+ 		p = pnetwork->IEs + i;
+ 
+ 		switch (p[0]) {
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index dbca440..66e72e2 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -880,7 +880,7 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 	unsigned short val16;
+ 	u8 crypto, bcn_channel;
+ 	int group_cipher = 0, pairwise_cipher = 0, is_8021x = 0, r;
+-	int pie_len, ie_offset, ssid_len, privacy;
++	int pie_len, ssid_len, privacy;
+ 	const u8 *p, *ssid;
+ 
+ 	if (is_client_associated_to_ap23a(Adapter) == false)
+@@ -901,8 +901,6 @@ int rtw_check_bcn_info23a(struct rtw_adapter *Adapter,
+ 
+ 	/* check bw and channel offset */
+ 	/* parsing HT_CAP_IE */
+-	ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-		offsetof(struct ieee80211_mgmt, u);
+ 	pie_len = pkt_len - offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 
+ 	/* Checking for channel */
+@@ -1070,13 +1068,9 @@ bool is_ap_in_tkip23a(struct rtw_adapter *padapter)
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *cur_network = &pmlmeinfo->network;
+ 	const u8 *p;
+-	int bcn_fixed_size;
+-
+-	bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-		offsetof(struct ieee80211_mgmt, u.beacon);
+ 
+ 	if (cur_network->capability & WLAN_CAPABILITY_PRIVACY) {
+-		for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) {
++		for (i = 0; i < pmlmeinfo->network.IELength;) {
+ 			p = pmlmeinfo->network.IEs + i;
+ 
+ 			switch (p[0]) {
+@@ -1105,13 +1099,9 @@ bool should_forbid_n_rate23a(struct rtw_adapter * padapter)
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct wlan_bssid_ex  *cur_network = &pmlmepriv->cur_network.network;
+ 	const u8 *p;
+-	int bcn_fixed_size;
+-
+-	bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-		offsetof(struct ieee80211_mgmt, u.beacon);
+ 
+ 	if (cur_network->capability & WLAN_CAPABILITY_PRIVACY) {
+-		for (i = bcn_fixed_size; i < cur_network->IELength;) {
++		for (i = 0; i < cur_network->IELength;) {
+ 			p = cur_network->IEs + i;
+ 
+ 			switch (p[0]) {
+@@ -1148,13 +1138,9 @@ bool is_ap_in_wep23a(struct rtw_adapter *padapter)
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *cur_network = &pmlmeinfo->network;
+ 	const u8 *p;
+-	int bcn_fixed_size;
+-
+-	bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-		offsetof(struct ieee80211_mgmt, u.beacon);
+ 
+ 	if (cur_network->capability & WLAN_CAPABILITY_PRIVACY) {
+-		for (i = bcn_fixed_size; i < pmlmeinfo->network.IELength;) {
++		for (i = 0; i < pmlmeinfo->network.IELength;) {
+ 			p = pmlmeinfo->network.IEs + i;
+ 
+ 			switch (p[0]) {
+@@ -1334,17 +1320,14 @@ void update_tx_basic_rate23a(struct rtw_adapter *padapter, u8 wirelessmode)
+ 
+ unsigned char check_assoc_AP23a(u8 *pframe, uint len)
+ {
+-	int i, bcn_fixed_size;
++	int i;
+ 	u8 epigram_vendor_flag;
+ 	u8 ralink_vendor_flag;
+ 	const u8 *p;
+ 	epigram_vendor_flag = 0;
+ 	ralink_vendor_flag = 0;
+ 
+-	bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-		offsetof(struct ieee80211_mgmt, u.beacon);
+-
+-	for (i = bcn_fixed_size; i < len;) {
++	for (i = 0; i < len;) {
+ 		p = pframe + i;
+ 
+ 		switch (p[0]) {
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+index 2d67762..7a70e22 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+@@ -209,7 +209,6 @@ ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength)
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct wlan_bssid_ex *cur_network = &pmlmeinfo->network;
+ 	u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+-	int bcn_fixed_size;
+ 
+ 	/* DBG_8723A("%s\n", __func__); */
+ 
+@@ -237,13 +236,9 @@ ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength)
+ 	pktlen = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 
+ 	if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) {
+-		bcn_fixed_size =
+-			offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-			offsetof(struct ieee80211_mgmt, u.beacon);
+-
+ 		/* DBG_8723A("ie len =%d\n", cur_network->IELength); */
+-		pktlen += cur_network->IELength - bcn_fixed_size;
+-		memcpy(pframe, cur_network->IEs + bcn_fixed_size, pktlen);
++		pktlen += cur_network->IELength;
++		memcpy(pframe, cur_network->IEs, pktlen);
+ 
+ 		goto _ConstructBeacon;
+ 	}
+diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h
+index d07fd12..2508120 100644
+--- a/drivers/staging/rtl8723au/include/wifi.h
++++ b/drivers/staging/rtl8723au/include/wifi.h
+@@ -23,7 +23,7 @@
+  */
+ #define	WiFiNavUpperUs		30000	/*  30 ms */
+ 
+-#define _BEACON_IE_OFFSET_		12
++#define _BEACON_IE_OFFSET_		0
+ 
+ #define _FIXED_IE_LENGTH_		_BEACON_IE_OFFSET_
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0138-staging-rtl8723au-Get-rid-of-obsolete-_FIXED_IE_LENG.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0138-staging-rtl8723au-Get-rid-of-obsolete-_FIXED_IE_LENG.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,417 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:30 +0200
+Subject: [138/249] staging: rtl8723au: Get rid of obsolete _FIXED_IE_LENGTH_ +
+ _BEACON_IE_OFFSET
+Origin: https://git.kernel.org/linus/1de65ccb1f90be71cd7deb3c963f7440560e4325
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c           | 68 +++++++++++------------
+ drivers/staging/rtl8723au/core/rtw_mlme.c         | 19 ++-----
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c     | 41 +++++---------
+ drivers/staging/rtl8723au/hal/rtl8723a_cmd.c      |  7 +--
+ drivers/staging/rtl8723au/include/wifi.h          |  5 --
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c |  7 +--
+ 6 files changed, 58 insertions(+), 89 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index 5c30f7b..ab9a66e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -77,8 +77,8 @@ static void update_BCNTIM(struct rtw_adapter *padapter)
+ 
+ 	tim_bitmap_le = cpu_to_le16(pstapriv->tim_bitmap);
+ 
+-	p = rtw_get_ie23a(pie + _FIXED_IE_LENGTH_, WLAN_EID_TIM, &tim_ielen,
+-			  pnetwork_mlmeext->IELength - _FIXED_IE_LENGTH_);
++	p = rtw_get_ie23a(pie, WLAN_EID_TIM, &tim_ielen,
++			  pnetwork_mlmeext->IELength);
+ 	if (p != NULL && tim_ielen>0) {
+ 		tim_ielen += 2;
+ 
+@@ -94,19 +94,17 @@ static void update_BCNTIM(struct rtw_adapter *padapter)
+ 		tim_ielen = 0;
+ 
+ 		/* calulate head_len */
+-		offset = _FIXED_IE_LENGTH_;
++		offset = 0;
+ 
+ 		/* get ssid_ie len */
+-		p = rtw_get_ie23a(pie + _BEACON_IE_OFFSET_, WLAN_EID_SSID,
+-				  &tmp_len, (pnetwork_mlmeext->IELength -
+-					     _BEACON_IE_OFFSET_));
++		p = rtw_get_ie23a(pie, WLAN_EID_SSID,
++				  &tmp_len, pnetwork_mlmeext->IELength);
+ 		if (p != NULL)
+ 			offset += tmp_len+2;
+ 
+ 		/*  get supported rates len */
+-		p = rtw_get_ie23a(pie + _BEACON_IE_OFFSET_, WLAN_EID_SUPP_RATES,
+-				  &tmp_len, (pnetwork_mlmeext->IELength -
+-					     _BEACON_IE_OFFSET_));
++		p = rtw_get_ie23a(pie, WLAN_EID_SUPP_RATES,
++				  &tmp_len, pnetwork_mlmeext->IELength);
+ 		if (p !=  NULL)
+ 			offset += tmp_len+2;
+ 
+@@ -663,9 +661,8 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
+ 	/* and at first time the security ie (RSN/WPA IE) will not include in beacon. */
+ 	if (NULL == cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+ 					    WLAN_OUI_TYPE_MICROSOFT_WPS,
+-					    pnetwork->IEs + _FIXED_IE_LENGTH_,
+-					    pnetwork->IELength -
+-					    _FIXED_IE_LENGTH_))
++					    pnetwork->IEs,
++					    pnetwork->IELength))
+ 		pmlmeext->bstart_bss = true;
+ 
+ 	/* todo: update wmm, ht cap */
+@@ -804,9 +801,8 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct wlan_bssid_ex *pbss_network = &pmlmepriv->cur_network.network;
+ 	u8 *ie = pbss_network->IEs;
+-	u8 *pbuf = mgmt->u.beacon.variable - _FIXED_IE_LENGTH_;
+-	len -= (offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+-		_FIXED_IE_LENGTH_);
++	u8 *pbuf = mgmt->u.beacon.variable;
++	len -= offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 	/* SSID */
+ 	/* Supported rates */
+ 	/* DS Params */
+@@ -841,8 +837,7 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 	memcpy(pbss_network->MacAddress, myid(&padapter->eeprompriv), ETH_ALEN);
+ 
+ 	/* SSID */
+-	p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_SSID, &ie_len,
+-			  (pbss_network->IELength -_BEACON_IE_OFFSET_));
++	p = rtw_get_ie23a(ie, WLAN_EID_SSID, &ie_len, pbss_network->IELength);
+ 	if (p && ie_len > 0) {
+ 		memset(&pbss_network->Ssid, 0, sizeof(struct cfg80211_ssid));
+ 		memcpy(pbss_network->Ssid.ssid, (p + 2), ie_len);
+@@ -851,8 +846,8 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 
+ 	/* chnnel */
+ 	channel = 0;
+-	p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_DS_PARAMS, &ie_len,
+-			  (pbss_network->IELength - _BEACON_IE_OFFSET_));
++	p = rtw_get_ie23a(ie, WLAN_EID_DS_PARAMS, &ie_len,
++			  pbss_network->IELength);
+ 	if (p && ie_len > 0)
+ 		channel = *(p + 2);
+ 
+@@ -860,16 +855,16 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 
+ 	memset(supportRate, 0, NDIS_802_11_LENGTH_RATES_EX);
+ 	/*  get supported rates */
+-	p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_SUPP_RATES, &ie_len,
+-			  (pbss_network->IELength - _BEACON_IE_OFFSET_));
++	p = rtw_get_ie23a(ie, WLAN_EID_SUPP_RATES, &ie_len,
++			  pbss_network->IELength);
+ 	if (p) {
+ 		memcpy(supportRate, p+2, ie_len);
+ 		supportRateNum = ie_len;
+ 	}
+ 
+ 	/* get ext_supported rates */
+-	p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_EXT_SUPP_RATES,
+-			  &ie_len, pbss_network->IELength - _BEACON_IE_OFFSET_);
++	p = rtw_get_ie23a(ie, WLAN_EID_EXT_SUPP_RATES,
++			  &ie_len, pbss_network->IELength);
+ 	if (p) {
+ 		memcpy(supportRate+supportRateNum, p+2, ie_len);
+ 		supportRateNum += ie_len;
+@@ -881,8 +876,8 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 	rtw_set_supported_rate23a(pbss_network->SupportedRates, network_type);
+ 
+ 	/* parsing ERP_IE */
+-	p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_ERP_INFO, &ie_len,
+-			  (pbss_network->IELength - _BEACON_IE_OFFSET_));
++	p = rtw_get_ie23a(ie, WLAN_EID_ERP_INFO, &ie_len,
++			  pbss_network->IELength);
+ 	if (p && ie_len > 0)
+ 		ERP_IE_handler23a(padapter, p);
+ 
+@@ -898,8 +893,8 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 	group_cipher = 0; pairwise_cipher = 0;
+ 	psecuritypriv->wpa2_group_cipher = 0;
+ 	psecuritypriv->wpa2_pairwise_cipher = 0;
+-	p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_RSN, &ie_len,
+-			  (pbss_network->IELength - _BEACON_IE_OFFSET_));
++	p = rtw_get_ie23a(ie, WLAN_EID_RSN, &ie_len,
++			  pbss_network->IELength);
+ 	if (p && ie_len > 0) {
+ 		if (rtw_parse_wpa2_ie23a(p, ie_len+2, &group_cipher,
+ 					 &pairwise_cipher, NULL) == _SUCCESS) {
+@@ -919,10 +914,9 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 	pairwise_cipher = 0;
+ 	psecuritypriv->wpa_group_cipher = 0;
+ 	psecuritypriv->wpa_pairwise_cipher = 0;
+-	for (p = ie + _BEACON_IE_OFFSET_; ;p += (ie_len + 2)) {
++	for (p = ie; ;p += (ie_len + 2)) {
+ 		p = rtw_get_ie23a(p, WLAN_EID_VENDOR_SPECIFIC, &ie_len,
+-				  (pbss_network->IELength - _BEACON_IE_OFFSET_ -
+-				  (ie_len + 2)));
++				  pbss_network->IELength - (ie_len + 2));
+ 		if ((p) && (!memcmp(p+2, RTW_WPA_OUI23A_TYPE, 4))) {
+ 			if (rtw_parse_wpa_ie23a(p, ie_len+2, &group_cipher,
+ 						&pairwise_cipher, NULL) == _SUCCESS) {
+@@ -947,10 +941,10 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 	ie_len = 0;
+ 	pmlmepriv->qos_option = 0;
+ 	if (pregistrypriv->wmm_enable) {
+-		for (p = ie + _BEACON_IE_OFFSET_; ;p += (ie_len + 2)) {
++		for (p = ie; ;p += (ie_len + 2)) {
+ 			p = rtw_get_ie23a(p, WLAN_EID_VENDOR_SPECIFIC, &ie_len,
+ 					  (pbss_network->IELength -
+-					  _BEACON_IE_OFFSET_ - (ie_len + 2)));
++					   (ie_len + 2)));
+ 			if ((p) && !memcmp(p+2, WMM_PARA_IE, 6)) {
+ 				pmlmepriv->qos_option = 1;
+ 
+@@ -970,8 +964,8 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 		}
+ 	}
+ 	/* parsing HT_CAP_IE */
+-	p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_HT_CAPABILITY, &ie_len,
+-			  (pbss_network->IELength - _BEACON_IE_OFFSET_));
++	p = rtw_get_ie23a(ie, WLAN_EID_HT_CAPABILITY, &ie_len,
++			  pbss_network->IELength);
+ 	if (p && ie_len > 0) {
+ 		u8 rf_type;
+ 
+@@ -1002,8 +996,8 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 	}
+ 
+ 	/* parsing HT_INFO_IE */
+-	p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_HT_OPERATION, &ie_len,
+-			  (pbss_network->IELength - _BEACON_IE_OFFSET_));
++	p = rtw_get_ie23a(ie, WLAN_EID_HT_OPERATION, &ie_len,
++			  pbss_network->IELength);
+ 	if (p && ie_len > 0)
+ 		pHT_info_ie = p;
+ 
+@@ -1176,7 +1170,7 @@ static void update_bcn_erpinfo_ie(struct rtw_adapter *padapter)
+ 		return;
+ 
+ 	/* parsing ERP_IE */
+-	p = rtw_get_ie23a(ie + _BEACON_IE_OFFSET_, WLAN_EID_ERP_INFO, &len, (pnetwork->IELength - _BEACON_IE_OFFSET_));
++	p = rtw_get_ie23a(ie, WLAN_EID_ERP_INFO, &len, pnetwork->IELength);
+ 	if (p && len > 0) {
+ 		if (pmlmepriv->num_sta_non_erp == 1)
+ 			p[2] |= WLAN_ERP_NON_ERP_PRESENT |
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 1ccaa6f2..b3db56a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -546,10 +546,8 @@ static int rtw_is_desired_network(struct rtw_adapter *adapter,
+ 	if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) {
+ 		if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+ 					    WLAN_OUI_TYPE_MICROSOFT_WPA,
+-					    pnetwork->network.IEs +
+-					    _FIXED_IE_LENGTH_,
+-					    pnetwork->network.IELength -
+-					    _FIXED_IE_LENGTH_))
++					    pnetwork->network.IEs,
++					    pnetwork->network.IELength))
+ 			return true;
+ 		else
+ 			return false;
+@@ -1916,7 +1914,7 @@ int rtw_restruct_wmm_ie23a(struct rtw_adapter *adapter, u8 *in_ie,
+ 	unsigned int ielength = 0;
+ 	unsigned int i, j;
+ 
+-	i = _FIXED_IE_LENGTH_; /* after the fixed IE */
++	i = 0; /* after the fixed IE */
+ 	while (i < in_len) {
+ 		ielength = initial_out_len;
+ 
+@@ -2025,9 +2023,7 @@ int rtw_restruct_sec_ie23a(struct rtw_adapter *adapter, u8 *in_ie, u8 *out_ie,
+ 		 ("+rtw_restruct_sec_ie23a: ndisauthmode=%d "
+ 		  "ndissecuritytype=%d\n", ndisauthmode, ndissecuritytype));
+ 
+-	/* copy fixed ie only */
+-	memcpy(out_ie, in_ie, _FIXED_IE_LENGTH_);
+-	ielength = _FIXED_IE_LENGTH_;
++	ielength = 0;
+ 	if (ndisauthmode == Ndis802_11AuthModeWPA ||
+ 	    ndisauthmode == Ndis802_11AuthModeWPAPSK)
+ 		authmode = WLAN_EID_VENDOR_SPECIFIC;
+@@ -2158,8 +2154,7 @@ bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
+ 
+ 	phtpriv->ht_option = false;
+ 
+-	p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, in_ie + _FIXED_IE_LENGTH_,
+-			     in_len - _FIXED_IE_LENGTH_);
++	p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, in_ie, in_len);
+ 
+ 	if (p && p[1] > 0) {
+ 		u32 rx_packet_offset, max_recvbuf_sz;
+@@ -2204,9 +2199,7 @@ bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
+ 
+ 		phtpriv->ht_option = true;
+ 
+-		p = cfg80211_find_ie(WLAN_EID_HT_OPERATION,
+-				     in_ie + _FIXED_IE_LENGTH_,
+-				     in_len - _FIXED_IE_LENGTH_);
++		p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, in_ie, in_len);
+ 		if (p && (p[1] == sizeof(struct ieee80211_ht_operation))) {
+ 			out_len = *pout_len;
+ 			pframe = rtw_set_ie23a(out_ie + out_len,
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index c473e33..3a86b75 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2420,12 +2420,9 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
+ 		u8 *iebuf;
+ 		int buflen;
+-		pframe -= _BEACON_IE_OFFSET_;
+ 		/* DBG_8723A("ie len =%d\n", cur_network->IELength); */
+ 		memcpy(pframe, cur_network->IEs, cur_network->IELength);
+-		len_diff = update_hidden_ssid(pframe + _BEACON_IE_OFFSET_,
+-					      cur_network->IELength -
+-					      _BEACON_IE_OFFSET_,
++		len_diff = update_hidden_ssid(pframe, cur_network->IELength,
+ 					      pmlmeinfo->hidden_ssid_mode);
+ 		pframe += (cur_network->IELength+len_diff);
+ 		pattrib->pktlen += (cur_network->IELength+len_diff);
+@@ -2585,13 +2582,10 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
+ 		pwps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+ 						  WLAN_OUI_TYPE_MICROSOFT_WPS,
+-						  cur_network->IEs +
+-						  _FIXED_IE_LENGTH_,
+-						  cur_network->IELength -
+-						  _FIXED_IE_LENGTH_);
++						  cur_network->IEs,
++						  cur_network->IELength);
+ 
+-		memcpy(pframe, cur_network->IEs + _FIXED_IE_LENGTH_,
+-		       cur_network->IELength - _FIXED_IE_LENGTH_);
++		memcpy(pframe, cur_network->IEs, cur_network->IELength);
+ 		pframe += cur_network->IELength;
+ 		pattrib->pktlen += cur_network->IELength;
+ 
+@@ -3045,9 +3039,8 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status,
+ 	if (pstat->flags & WLAN_STA_HT && pmlmepriv->htpriv.ht_option) {
+ 		/* FILL HT CAP INFO IE */
+ 		/* p = hostapd_eid_ht_capabilities_info(hapd, p); */
+-		p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY,
+-				     ie + _BEACON_IE_OFFSET_,
+-				     pnetwork->IELength -_BEACON_IE_OFFSET_);
++		p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, ie,
++				     pnetwork->IELength);
+ 		if (p && p[1]) {
+ 			memcpy(pframe, p, p[1] + 2);
+ 			pframe += (p[1] + 2);
+@@ -3056,9 +3049,8 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status,
+ 
+ 		/* FILL HT ADD INFO IE */
+ 		/* p = hostapd_eid_ht_operation(hapd, p); */
+-		p = cfg80211_find_ie(WLAN_EID_HT_OPERATION,
+-				     ie + _BEACON_IE_OFFSET_,
+-				     pnetwork->IELength - _BEACON_IE_OFFSET_);
++		p = cfg80211_find_ie(WLAN_EID_HT_OPERATION, ie,
++				     pnetwork->IELength);
+ 		if (p && p[1] > 0) {
+ 			memcpy(pframe, p, p[1] + 2);
+ 			pframe += (p[1] + 2);
+@@ -3072,10 +3064,9 @@ static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status,
+ 					       0x01, 0x01};
+ 		int ie_len = 0;
+ 
+-		for (p = ie + _BEACON_IE_OFFSET_; ; p += (ie_len + 2)) {
++		for (p = ie; ; p += (ie_len + 2)) {
+ 			p = cfg80211_find_ie(WLAN_EID_VENDOR_SPECIFIC, p,
+-					     pnetwork->IELength -
+-					     _BEACON_IE_OFFSET_ - (ie_len + 2));
++					     pnetwork->IELength - (ie_len + 2));
+ 			if (p)
+ 				ie_len = p[1];
+ 			else
+@@ -4534,9 +4525,8 @@ static void process_80211d(struct rtw_adapter *padapter,
+ 		u8 noc; /*  number of channel */
+ 		u8 j, k;
+ 
+-		ie = cfg80211_find_ie(WLAN_EID_COUNTRY,
+-				      bssid->IEs + _FIXED_IE_LENGTH_,
+-				      bssid->IELength - _FIXED_IE_LENGTH_);
++		ie = cfg80211_find_ie(WLAN_EID_COUNTRY, bssid->IEs,
++				      bssid->IELength);
+ 		if (!ie || ie[1] < IEEE80211_COUNTRY_IE_MIN_LEN)
+ 			return;
+ 
+@@ -6065,10 +6055,9 @@ int set_tx_beacon_cmd23a(struct rtw_adapter* padapter)
+ 	memcpy(&ptxBeacon_parm->network, &pmlmeinfo->network,
+ 	       sizeof(struct wlan_bssid_ex));
+ 
+-	len_diff = update_hidden_ssid(
+-		ptxBeacon_parm->network.IEs+_BEACON_IE_OFFSET_,
+-		ptxBeacon_parm->network.IELength-_BEACON_IE_OFFSET_,
+-		pmlmeinfo->hidden_ssid_mode);
++	len_diff = update_hidden_ssid(ptxBeacon_parm->network.IEs,
++				      ptxBeacon_parm->network.IELength,
++				      pmlmeinfo->hidden_ssid_mode);
+ 	ptxBeacon_parm->network.IELength += len_diff;
+ 
+ 	init_h2fwcmd_w_parm_no_rsp(ph2c, ptxBeacon_parm,
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+index 7a70e22..66ece49 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+@@ -428,10 +428,9 @@ static void ConstructProbeRsp(struct rtw_adapter *padapter, u8 *pframe,
+ 	if (cur_network->IELength > MAX_IE_SZ)
+ 		return;
+ 
+-	memcpy(mgmt->u.probe_resp.variable,
+-	       cur_network->IEs + _FIXED_IE_LENGTH_,
+-	       cur_network->IELength - _FIXED_IE_LENGTH_);
+-	pktlen += (cur_network->IELength - _FIXED_IE_LENGTH_);
++	memcpy(mgmt->u.probe_resp.variable, cur_network->IEs,
++	       cur_network->IELength);
++	pktlen += (cur_network->IELength);
+ 
+ 	*pLength = pktlen;
+ }
+diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h
+index 2508120..23026e9 100644
+--- a/drivers/staging/rtl8723au/include/wifi.h
++++ b/drivers/staging/rtl8723au/include/wifi.h
+@@ -23,11 +23,6 @@
+  */
+ #define	WiFiNavUpperUs		30000	/*  30 ms */
+ 
+-#define _BEACON_IE_OFFSET_		0
+-
+-#define _FIXED_IE_LENGTH_		_BEACON_IE_OFFSET_
+-
+-
+ #define	EID_BSSIntolerantChlReport	73
+ 
+ /*-----------------------------------------------------------------------------
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 2a4a696..5e8f7b3 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -264,8 +264,8 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
+ 
+ 	notify_channel = ieee80211_get_channel(wiphy, freq);
+ 
+-	notify_ie = pnetwork->network.IEs + _FIXED_IE_LENGTH_;
+-	notify_ielen = pnetwork->network.IELength - _FIXED_IE_LENGTH_;
++	notify_ie = pnetwork->network.IEs;
++	notify_ielen = pnetwork->network.IELength;
+ 
+ 	/* We've set wiphy's signal_type as CFG80211_SIGNAL_TYPE_MBM:
+ 	 *  signal strength in mBm (100*dBm)
+@@ -1191,8 +1191,7 @@ static u16 rtw_get_cur_max_rate(struct rtw_adapter *adapter)
+ 	u16 mcs_rate = 0;
+ 
+ 	p = cfg80211_find_ie(WLAN_EID_HT_CAPABILITY,
+-			     &pcur_bss->IEs[_FIXED_IE_LENGTH_],
+-			     pcur_bss->IELength - _FIXED_IE_LENGTH_);
++			     pcur_bss->IEs, pcur_bss->IELength);
+ 	if (p && p[1] > 0) {
+ 		pht_capie = (struct ieee80211_ht_cap *)(p + 2);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0139-staging-rtl8723au-Remove-unused-define-EID_BSSIntole.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0139-staging-rtl8723au-Remove-unused-define-EID_BSSIntole.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,25 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:31 +0200
+Subject: [139/249] staging: rtl8723au: Remove unused #define
+ EID_BSSIntolerantChlReport
+Origin: https://git.kernel.org/linus/71b0956b16872c2ac93ab2d269e1af6685b78f8e
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/wifi.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h
+index 23026e9..b82b0d0 100644
+--- a/drivers/staging/rtl8723au/include/wifi.h
++++ b/drivers/staging/rtl8723au/include/wifi.h
+@@ -23,8 +23,6 @@
+  */
+ #define	WiFiNavUpperUs		30000	/*  30 ms */
+ 
+-#define	EID_BSSIntolerantChlReport	73
+-
+ /*-----------------------------------------------------------------------------
+ 				Below is the definition for 802.11n
+ ------------------------------------------------------------------------------*/

Added: dists/sid/linux/debian/patches/features/all/r8723au/0140-staging-rtl8723au-Remove-unused-define-P80211CAPTURE.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0140-staging-rtl8723au-Remove-unused-define-P80211CAPTURE.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,25 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:32 +0200
+Subject: [140/249] staging: rtl8723au: Remove unused #define
+ P80211CAPTURE_VERSION
+Origin: https://git.kernel.org/linus/7ef2a15a40aa87e0b0dab35044248c08df511044
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/wifi.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/include/wifi.h b/drivers/staging/rtl8723au/include/wifi.h
+index b82b0d0..fd3da3b 100644
+--- a/drivers/staging/rtl8723au/include/wifi.h
++++ b/drivers/staging/rtl8723au/include/wifi.h
+@@ -15,8 +15,6 @@
+ #ifndef _WIFI_H_
+ #define _WIFI_H_
+ 
+-#define P80211CAPTURE_VERSION	0x80211001
+-
+ /*  This value is tested by WiFi 11n Test Plan 5.2.3.
+  *  This test verifies the WLAN NIC can update the NAV through sending
+  *  the CTS with large duration.

Added: dists/sid/linux/debian/patches/features/all/r8723au/0141-staging-rtl8723au-rtw_get_wps_attr_content23a-Remove.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0141-staging-rtl8723au-rtw_get_wps_attr_content23a-Remove.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,71 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:33 +0200
+Subject: [141/249] staging: rtl8723au: rtw_get_wps_attr_content23a(): Remove
+ unused argument
+Origin: https://git.kernel.org/linus/c250e07e99ac8381e99a1a0c406a4342243df6ac
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 9 +--------
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c  | 2 +-
+ drivers/staging/rtl8723au/include/ieee80211.h  | 2 +-
+ 3 files changed, 3 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index 2cb8eed..1f28cca 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -667,15 +667,11 @@ const u8 *rtw_get_wps_attr23a(const u8 *wps_ie, uint wps_ielen,
+  * Returns: the address of the specific WPS attribute content found, or NULL
+  */
+ const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen,
+-				      u16 target_attr_id, u8 *buf_content,
+-				      uint *len_content)
++				      u16 target_attr_id, u8 *buf_content)
+ {
+ 	const u8 *attr_ptr;
+ 	u32 attr_len;
+ 
+-	if (len_content)
+-		*len_content = 0;
+-
+ 	attr_ptr = rtw_get_wps_attr23a(wps_ie, wps_ielen, target_attr_id,
+ 				    NULL, &attr_len);
+ 
+@@ -683,9 +679,6 @@ const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen,
+ 		if (buf_content)
+ 			memcpy(buf_content, attr_ptr + 4, attr_len - 4);
+ 
+-		if (len_content)
+-			*len_content = attr_len - 4;
+-
+ 		return attr_ptr + 4;
+ 	}
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 3a86b75..4b769d5 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2437,7 +2437,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 		if (wps_ie && wps_ie[1] > 0) {
+ 			rtw_get_wps_attr_content23a(wps_ie, wps_ie[1],
+ 						    WPS_ATTR_SELECTED_REGISTRAR,
+-						    (u8*)&sr, NULL);
++						    (u8*)&sr);
+ 		}
+ 		if (sr != 0)
+ 			set_fwstate(pmlmepriv, WIFI_UNDER_WPS);
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index 43f002d..89c23ae 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -389,7 +389,7 @@ int rtw_parse_wpa_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int
+ int rtw_parse_wpa2_ie23a(const u8* wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher, int *is_8021x);
+ 
+ const u8 *rtw_get_wps_attr23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_attr, u32 *len_attr);
+-const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content, uint *len_content);
++const u8 *rtw_get_wps_attr_content23a(const u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content);
+ 
+ uint	rtw_get_rateset_len23a(u8	*rateset);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0142-staging-rtl8723au-Remove-unused-RSN_VERSION_BSD23A.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0142-staging-rtl8723au-Remove-unused-RSN_VERSION_BSD23A.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,36 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:34 +0200
+Subject: [142/249] staging: rtl8723au: Remove unused RSN_VERSION_BSD23A
+Origin: https://git.kernel.org/linus/ef80f1f564e2337266f98c49646b55c54d95db98
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 1 -
+ drivers/staging/rtl8723au/include/ieee80211.h  | 1 -
+ 2 files changed, 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index 1f28cca..78a7b27 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -33,7 +33,6 @@ u8 WPA_CIPHER_SUITE_WRAP23A[] = { 0x00, 0x50, 0xf2, 3 };
+ u8 WPA_CIPHER_SUITE_CCMP23A[] = { 0x00, 0x50, 0xf2, 4 };
+ u8 WPA_CIPHER_SUITE_WEP10423A[] = { 0x00, 0x50, 0xf2, 5 };
+ 
+-u16 RSN_VERSION_BSD23A = 1;
+ u8 RSN_AUTH_KEY_MGMT_UNSPEC_802_1X23A[] = { 0x00, 0x0f, 0xac, 1 };
+ u8 RSN_AUTH_KEY_MGMT_PSK_OVER_802_1X23A[] = { 0x00, 0x0f, 0xac, 2 };
+ u8 RSN_CIPHER_SUITE_NONE23A[] = { 0x00, 0x0f, 0xac, 0 };
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index 89c23ae..0b17a7f 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -79,7 +79,6 @@ extern u8 WPA_CIPHER_SUITE_WEP10423A[];
+ #define RSN_HEADER_LEN 4
+ #define RSN_SELECTOR_LEN 4
+ 
+-extern u16 RSN_VERSION_BSD23A;
+ extern u8 RSN_AUTH_KEY_MGMT_UNSPEC_802_1X23A[];
+ extern u8 RSN_AUTH_KEY_MGMT_PSK_OVER_802_1X23A[];
+ extern u8 RSN_CIPHER_SUITE_NONE23A[];

Added: dists/sid/linux/debian/patches/features/all/r8723au/0143-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0143-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,156 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:35 +0200
+Subject: [143/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Use
+ key_params->cipher to determine encryption
+Origin: https://git.kernel.org/linus/5dab9e7d2af054ad1df60ef51e25b2dd5e85517b
+
+Passing strings around for something we have defines for is just
+silly.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 47 +++++++++++++++--------
+ 1 file changed, 31 insertions(+), 16 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 5e8f7b3..f44d0f4 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -501,7 +501,8 @@ static int set_wep_key(struct rtw_adapter *padapter, u8 *key, u16 keylen,
+ 
+ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 					  struct ieee_param *param,
+-					  u32 param_len)
++					  u32 param_len,
++					  struct key_params *keyparms)
+ {
+ 	int ret = 0;
+ 	u16 wep_key_len;
+@@ -549,7 +550,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 		goto exit;
+ 	}
+ 
+-	if (strcmp(param->u.crypt.alg, "WEP") == 0 && (psta == NULL)) {
++	if (!psta && (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 ||
++		      keyparms->cipher == WLAN_CIPHER_SUITE_WEP104)) {
+ 		DBG_8723A("r871x_set_encryption, crypt.alg = WEP\n");
+ 
+ 		wep_key_idx = param->u.crypt.idx;
+@@ -598,7 +600,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 
+ 	if (!psta && check_fwstate(pmlmepriv, WIFI_AP_STATE)) {	/*  group key */
+ 		if (param->u.crypt.set_tx == 0) {	/* group key */
+-			if (strcmp(param->u.crypt.alg, "WEP") == 0) {
++			if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 ||
++			    keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) {
+ 				DBG_8723A("%s, set group_key, WEP\n", __func__);
+ 
+ 				memcpy(psecuritypriv->
+@@ -613,7 +616,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 					    WLAN_CIPHER_SUITE_WEP104;
+ 				}
+ 
+-			} else if (strcmp(param->u.crypt.alg, "TKIP") == 0) {
++			} else if (keyparms->cipher == WLAN_CIPHER_SUITE_TKIP) {
+ 				DBG_8723A("%s, set group_key, TKIP\n",
+ 					  __func__);
+ 
+@@ -638,8 +641,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 
+ 				psecuritypriv->busetkipkey = 1;
+ 
+-			} else if (strcmp(param->u.crypt.alg, "CCMP") == 0) {
+-				DBG_8723A("%s, set group_key, CCMP\n",
++			} else if (keyparms->cipher == WLAN_CIPHER_SUITE_CCMP) {
++					DBG_8723A("%s, set group_key, CCMP\n",
+ 					  __func__);
+ 
+ 				psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_CCMP;
+@@ -692,7 +695,10 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 				       (param->u.crypt.key_len >
+ 					16 ? 16 : param->u.crypt.key_len));
+ 
+-				if (!strcmp(param->u.crypt.alg, "WEP")) {
++				if (keyparms->cipher ==
++				    WLAN_CIPHER_SUITE_WEP40 ||
++				    keyparms->cipher ==
++				    WLAN_CIPHER_SUITE_WEP104) {
+ 					DBG_8723A("%s, set pairwise key, WEP\n",
+ 						  __func__);
+ 
+@@ -701,11 +707,13 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 						psta->dot118021XPrivacy =
+ 							WLAN_CIPHER_SUITE_WEP104;
+ 					}
+-				} else if (!strcmp(param->u.crypt.alg, "TKIP")) {
++				} else if (keyparms->cipher ==
++					   WLAN_CIPHER_SUITE_TKIP) {
+ 					DBG_8723A("%s, set pairwise key, "
+ 						  "TKIP\n", __func__);
+ 
+-					psta->dot118021XPrivacy = WLAN_CIPHER_SUITE_TKIP;
++					psta->dot118021XPrivacy =
++						WLAN_CIPHER_SUITE_TKIP;
+ 
+ 					/* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */
+ 					/* set mic key */
+@@ -716,12 +724,13 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 
+ 					psecuritypriv->busetkipkey = 1;
+ 
+-				} else if (!strcmp(param->u.crypt.alg, "CCMP")) {
+-
++				} else if (keyparms->cipher ==
++					   WLAN_CIPHER_SUITE_CCMP) {
+ 					DBG_8723A("%s, set pairwise key, "
+ 						  "CCMP\n", __func__);
+ 
+-					psta->dot118021XPrivacy = WLAN_CIPHER_SUITE_CCMP;
++					psta->dot118021XPrivacy =
++						WLAN_CIPHER_SUITE_CCMP;
+ 				} else {
+ 					DBG_8723A("%s, set pairwise key, "
+ 						  "none\n", __func__);
+@@ -735,7 +744,10 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 
+ 				psta->bpairwise_key_installed = true;
+ 			} else {	/* group key??? */
+-				if (!strcmp(param->u.crypt.alg, "WEP")) {
++				if (keyparms->cipher ==
++				    WLAN_CIPHER_SUITE_WEP40 ||
++				    keyparms->cipher ==
++				    WLAN_CIPHER_SUITE_WEP104) {
+ 					memcpy(psecuritypriv->
+ 					       dot118021XGrpKey[param->u.crypt.
+ 								idx].skey,
+@@ -751,7 +763,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 						    dot118021XGrpPrivacy =
+ 							WLAN_CIPHER_SUITE_WEP104;
+ 					}
+-				} else if (!strcmp(param->u.crypt.alg, "TKIP")) {
++				} else if (keyparms->cipher ==
++					   WLAN_CIPHER_SUITE_TKIP) {
+ 					psecuritypriv->dot118021XGrpPrivacy =
+ 					    WLAN_CIPHER_SUITE_TKIP;
+ 
+@@ -780,7 +793,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 
+ 					psecuritypriv->busetkipkey = 1;
+ 
+-				} else if (!strcmp(param->u.crypt.alg, "CCMP")) {
++				} else if (keyparms->cipher ==
++					   WLAN_CIPHER_SUITE_CCMP) {
+ 					psecuritypriv->dot118021XGrpPrivacy =
+ 						WLAN_CIPHER_SUITE_CCMP;
+ 
+@@ -1099,7 +1113,8 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 		if (mac_addr)
+ 			ether_addr_copy(param->sta_addr, mac_addr);
+ 
+-		ret = rtw_cfg80211_ap_set_encryption(ndev, param, param_len);
++		ret = rtw_cfg80211_ap_set_encryption(ndev, param, param_len,
++						     params);
+ #endif
+ 	} else {
+ 		DBG_8723A("error! fw_state = 0x%x, iftype =%d\n",

Added: dists/sid/linux/debian/patches/features/all/r8723au/0144-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-is-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0144-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-is-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,320 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:36 +0200
+Subject: [144/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption() is
+ only called for WIFI_AP_STATE
+Origin: https://git.kernel.org/linus/4e297c21bf2932178e7bdaeff654914b576e5f70
+
+No point checking it again in here, twice!
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 237 ++++++++++------------
+ 1 file changed, 110 insertions(+), 127 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index f44d0f4..bbc4ac5 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -509,7 +509,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 	u8 wep_key_idx;
+ 	struct sta_info *psta = NULL, *pbcmc_sta = NULL;
+ 	struct rtw_adapter *padapter = netdev_priv(dev);
+-	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct security_priv *psecuritypriv = &padapter->securitypriv;
+ 	struct sta_priv *pstapriv = &padapter->stapriv;
+ 
+@@ -598,7 +597,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 
+ 	}
+ 
+-	if (!psta && check_fwstate(pmlmepriv, WIFI_AP_STATE)) {	/*  group key */
++	if (!psta) {	/*  group key */
+ 		if (param->u.crypt.set_tx == 0) {	/* group key */
+ 			if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 ||
+ 			    keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) {
+@@ -620,7 +619,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 				DBG_8723A("%s, set group_key, TKIP\n",
+ 					  __func__);
+ 
+-				psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_TKIP;
++				psecuritypriv->dot118021XGrpPrivacy =
++					WLAN_CIPHER_SUITE_TKIP;
+ 
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrpKey[param->u.crypt.idx].
+@@ -645,7 +645,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 					DBG_8723A("%s, set group_key, CCMP\n",
+ 					  __func__);
+ 
+-				psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_CCMP;
++				psecuritypriv->dot118021XGrpPrivacy =
++					WLAN_CIPHER_SUITE_CCMP;
+ 
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrpKey[param->u.crypt.idx].
+@@ -685,151 +686,134 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 		goto exit;
+ 	}
+ 
+-	if (psecuritypriv->dot11AuthAlgrthm ==
+-	    dot11AuthAlgrthm_8021X && psta) {	/*  psk/802_1x */
+-		if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
+-			if (param->u.crypt.set_tx == 1) {
+-				/* pairwise key */
+-				memcpy(psta->dot118021x_UncstKey.skey,
+-				       param->u.crypt.key,
+-				       (param->u.crypt.key_len >
+-					16 ? 16 : param->u.crypt.key_len));
++	if (psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_8021X && psta) {
++		/*  psk/802_1x */
++		if (param->u.crypt.set_tx == 1) {
++			/* pairwise key */
++			memcpy(psta->dot118021x_UncstKey.skey,
++			       param->u.crypt.key,
++			       (param->u.crypt.key_len >
++				16 ? 16 : param->u.crypt.key_len));
+ 
+-				if (keyparms->cipher ==
+-				    WLAN_CIPHER_SUITE_WEP40 ||
+-				    keyparms->cipher ==
+-				    WLAN_CIPHER_SUITE_WEP104) {
+-					DBG_8723A("%s, set pairwise key, WEP\n",
+-						  __func__);
+-
+-					psta->dot118021XPrivacy = WLAN_CIPHER_SUITE_WEP40;
+-					if (param->u.crypt.key_len == 13) {
+-						psta->dot118021XPrivacy =
+-							WLAN_CIPHER_SUITE_WEP104;
+-					}
+-				} else if (keyparms->cipher ==
+-					   WLAN_CIPHER_SUITE_TKIP) {
+-					DBG_8723A("%s, set pairwise key, "
+-						  "TKIP\n", __func__);
++			if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 ||
++			    keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) {
++				DBG_8723A("%s, set pairwise key, WEP\n",
++					  __func__);
+ 
++				psta->dot118021XPrivacy =
++					WLAN_CIPHER_SUITE_WEP40;
++				if (param->u.crypt.key_len == 13) {
+ 					psta->dot118021XPrivacy =
+-						WLAN_CIPHER_SUITE_TKIP;
++						WLAN_CIPHER_SUITE_WEP104;
++				}
++			} else if (keyparms->cipher == WLAN_CIPHER_SUITE_TKIP) {
++				DBG_8723A("%s, set pairwise key, TKIP\n",
++					  __func__);
+ 
+-					/* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */
+-					/* set mic key */
+-					memcpy(psta->dot11tkiptxmickey.skey,
+-					       &param->u.crypt.key[16], 8);
+-					memcpy(psta->dot11tkiprxmickey.skey,
+-					       &param->u.crypt.key[24], 8);
++				psta->dot118021XPrivacy =
++					WLAN_CIPHER_SUITE_TKIP;
+ 
+-					psecuritypriv->busetkipkey = 1;
++				/* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */
++				/* set mic key */
++				memcpy(psta->dot11tkiptxmickey.skey,
++				       &param->u.crypt.key[16], 8);
++				memcpy(psta->dot11tkiprxmickey.skey,
++				       &param->u.crypt.key[24], 8);
+ 
+-				} else if (keyparms->cipher ==
+-					   WLAN_CIPHER_SUITE_CCMP) {
+-					DBG_8723A("%s, set pairwise key, "
+-						  "CCMP\n", __func__);
++				psecuritypriv->busetkipkey = 1;
+ 
+-					psta->dot118021XPrivacy =
+-						WLAN_CIPHER_SUITE_CCMP;
+-				} else {
+-					DBG_8723A("%s, set pairwise key, "
+-						  "none\n", __func__);
++			} else if (keyparms->cipher == WLAN_CIPHER_SUITE_CCMP) {
++				DBG_8723A("%s, set pairwise key, CCMP\n",
++					  __func__);
+ 
+-					psta->dot118021XPrivacy = 0;
+-				}
++				psta->dot118021XPrivacy =
++					WLAN_CIPHER_SUITE_CCMP;
++			} else {
++				DBG_8723A("%s, set pairwise key, none\n",
++					  __func__);
++
++				psta->dot118021XPrivacy = 0;
++			}
+ 
+-				set_pairwise_key(padapter, psta);
++			set_pairwise_key(padapter, psta);
+ 
+-				psta->ieee8021x_blocked = false;
++			psta->ieee8021x_blocked = false;
+ 
+-				psta->bpairwise_key_installed = true;
+-			} else {	/* group key??? */
+-				if (keyparms->cipher ==
+-				    WLAN_CIPHER_SUITE_WEP40 ||
+-				    keyparms->cipher ==
+-				    WLAN_CIPHER_SUITE_WEP104) {
+-					memcpy(psecuritypriv->
+-					       dot118021XGrpKey[param->u.crypt.
+-								idx].skey,
+-					       param->u.crypt.key,
+-					       (param->u.crypt.key_len >
+-						16 ? 16 : param->u.crypt.
+-						key_len));
++			psta->bpairwise_key_installed = true;
++		} else {	/* group key??? */
++			if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 ||
++			    keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) {
++				memcpy(psecuritypriv->
++				       dot118021XGrpKey[param->u.crypt.
++							idx].skey,
++				       param->u.crypt.key,
++				       (param->u.crypt.key_len >
++					16 ? 16 : param->u.crypt.key_len));
+ 
++				psecuritypriv->dot118021XGrpPrivacy =
++					WLAN_CIPHER_SUITE_WEP40;
++				if (param->u.crypt.key_len == 13) {
+ 					psecuritypriv->dot118021XGrpPrivacy =
+-						WLAN_CIPHER_SUITE_WEP40;
+-					if (param->u.crypt.key_len == 13) {
+-						psecuritypriv->
+-						    dot118021XGrpPrivacy =
+-							WLAN_CIPHER_SUITE_WEP104;
+-					}
+-				} else if (keyparms->cipher ==
+-					   WLAN_CIPHER_SUITE_TKIP) {
+-					psecuritypriv->dot118021XGrpPrivacy =
+-					    WLAN_CIPHER_SUITE_TKIP;
++						WLAN_CIPHER_SUITE_WEP104;
++				}
++			} else if (keyparms->cipher == WLAN_CIPHER_SUITE_TKIP) {
++				psecuritypriv->dot118021XGrpPrivacy =
++					WLAN_CIPHER_SUITE_TKIP;
+ 
+-					memcpy(psecuritypriv->
+-					       dot118021XGrpKey[param->u.crypt.
+-								idx].skey,
+-					       param->u.crypt.key,
+-					       (param->u.crypt.key_len >
+-						16 ? 16 : param->u.crypt.
+-						key_len));
++				memcpy(psecuritypriv->
++				       dot118021XGrpKey[param->u.crypt.
++							idx].skey,
++				       param->u.crypt.key,
++				       (param->u.crypt.key_len >
++					16 ? 16 : param->u.crypt.key_len));
+ 
+-					/* DEBUG_ERR("set key length :param->u"
+-					   ".crypt.key_len =%d\n",
+-					   param->u.crypt.key_len); */
+-					/* set mic key */
+-					memcpy(psecuritypriv->
+-					       dot118021XGrptxmickey[param->u.
+-								     crypt.idx].
+-					       skey, &param->u.crypt.key[16],
+-					       8);
+-					memcpy(psecuritypriv->
+-					       dot118021XGrprxmickey[param->u.
+-								     crypt.idx].
+-					       skey, &param->u.crypt.key[24],
+-					       8);
++				/* DEBUG_ERR("set key length :param->u"
++				   ".crypt.key_len =%d\n",
++				   param->u.crypt.key_len); */
++				/* set mic key */
++				memcpy(psecuritypriv->
++				       dot118021XGrptxmickey[param->u.
++							     crypt.idx].skey,
++				       &param->u.crypt.key[16], 8);
++				memcpy(psecuritypriv->
++				       dot118021XGrprxmickey[param->u.
++							     crypt.idx].skey,
++				       &param->u.crypt.key[24], 8);
+ 
+-					psecuritypriv->busetkipkey = 1;
++				psecuritypriv->busetkipkey = 1;
+ 
+-				} else if (keyparms->cipher ==
+-					   WLAN_CIPHER_SUITE_CCMP) {
+-					psecuritypriv->dot118021XGrpPrivacy =
+-						WLAN_CIPHER_SUITE_CCMP;
++			} else if (keyparms->cipher == WLAN_CIPHER_SUITE_CCMP) {
++				psecuritypriv->dot118021XGrpPrivacy =
++					WLAN_CIPHER_SUITE_CCMP;
+ 
+-					memcpy(psecuritypriv->
+-					       dot118021XGrpKey[param->u.crypt.
+-								idx].skey,
+-					       param->u.crypt.key,
+-					       (param->u.crypt.key_len >
+-						16 ? 16 : param->u.crypt.
+-						key_len));
+-				} else {
+-					psecuritypriv->dot118021XGrpPrivacy =
+-						0;
+-				}
++				memcpy(psecuritypriv->
++				       dot118021XGrpKey[param->u.crypt.
++							idx].skey,
++				       param->u.crypt.key,
++				       (param->u.crypt.key_len >
++					16 ? 16 : param->u.crypt.key_len));
++			} else {
++				psecuritypriv->dot118021XGrpPrivacy = 0;
++			}
+ 
+-				psecuritypriv->dot118021XGrpKeyid =
+-					param->u.crypt.idx;
++			psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx;
+ 
+-				psecuritypriv->binstallGrpkey = 1;
++			psecuritypriv->binstallGrpkey = 1;
+ 
+-				psecuritypriv->dot11PrivacyAlgrthm =
+-					psecuritypriv->dot118021XGrpPrivacy;
++			psecuritypriv->dot11PrivacyAlgrthm =
++				psecuritypriv->dot118021XGrpPrivacy;
+ 
+-				set_group_key(padapter, param->u.crypt.key,
+-					      psecuritypriv->
+-					      dot118021XGrpPrivacy,
+-					      param->u.crypt.idx);
++			set_group_key(padapter, param->u.crypt.key,
++				      psecuritypriv->dot118021XGrpPrivacy,
++				      param->u.crypt.idx);
+ 
+-				pbcmc_sta = rtw_get_bcmc_stainfo23a(padapter);
+-				if (pbcmc_sta) {
+-					/* rx will use bmc_sta's
+-					   dot118021XPrivacy */
+-					pbcmc_sta->ieee8021x_blocked = false;
+-					pbcmc_sta->dot118021XPrivacy = psecuritypriv->dot118021XGrpPrivacy;
+-				}
++			pbcmc_sta = rtw_get_bcmc_stainfo23a(padapter);
++			if (pbcmc_sta) {
++				/* rx will use bmc_sta's
++				   dot118021XPrivacy */
++				pbcmc_sta->ieee8021x_blocked = false;
++				pbcmc_sta->dot118021XPrivacy =
++					psecuritypriv->dot118021XGrpPrivacy;
+ 			}
+ 		}
+ 	}
+@@ -837,7 +821,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ exit:
+ 
+ 	return ret;
+-
+ }
+ #endif
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0145-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0145-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,188 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:37 +0200
+Subject: [145/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Use
+ key len from struct key_params
+Origin: https://git.kernel.org/linus/c36e122f6eba4e31c67d572c1e01ef845747010d
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 55 ++++++++++-------------
+ 1 file changed, 24 insertions(+), 31 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index bbc4ac5..0925d56 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -417,7 +417,7 @@ exit:
+ 	return res;
+ }
+ 
+-static int set_group_key(struct rtw_adapter *padapter, u8 *key, u32 alg,
++static int set_group_key(struct rtw_adapter *padapter, const u8 *key, u32 alg,
+ 			 u8 keyid)
+ {
+ 	u8 keylen;
+@@ -480,7 +480,7 @@ exit:
+ 	return res;
+ }
+ 
+-static int set_wep_key(struct rtw_adapter *padapter, u8 *key, u16 keylen,
++static int set_wep_key(struct rtw_adapter *padapter, const u8 *key, u16 keylen,
+ 		       u8 keyid)
+ {
+ 	u32 alg;
+@@ -505,7 +505,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 					  struct key_params *keyparms)
+ {
+ 	int ret = 0;
+-	u16 wep_key_len;
++	int key_len;
+ 	u8 wep_key_idx;
+ 	struct sta_info *psta = NULL, *pbcmc_sta = NULL;
+ 	struct rtw_adapter *padapter = netdev_priv(dev);
+@@ -549,23 +549,24 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 		goto exit;
+ 	}
+ 
++	key_len = keyparms->key_len;
++
+ 	if (!psta && (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 ||
+ 		      keyparms->cipher == WLAN_CIPHER_SUITE_WEP104)) {
+ 		DBG_8723A("r871x_set_encryption, crypt.alg = WEP\n");
+ 
+ 		wep_key_idx = param->u.crypt.idx;
+-		wep_key_len = param->u.crypt.key_len;
+ 
+ 		DBG_8723A("r871x_set_encryption, wep_key_idx =%d, len =%d\n",
+-			  wep_key_idx, wep_key_len);
++			  wep_key_idx, key_len);
+ 
+-		if ((wep_key_idx >= WEP_KEYS) || (wep_key_len <= 0)) {
++		if (wep_key_idx >= WEP_KEYS || key_len <= 0) {
+ 			ret = -EINVAL;
+ 			goto exit;
+ 		}
+ 
+-		if (wep_key_len > 0) {
+-			wep_key_len = wep_key_len <= 5 ? 5 : 13;
++		if (key_len > 0) {
++			key_len = key_len <= 5 ? 5 : 13;
+ 		}
+ 
+ 		if (psecuritypriv->bWepDefaultKeyIdxSet == 0) {
+@@ -577,7 +578,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 			psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP40;
+ 			psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP40;
+ 
+-			if (wep_key_len == 13) {
++			if (key_len == 13) {
+ 				psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP104;
+ 				psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP104;
+ 			}
+@@ -586,12 +587,11 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 		}
+ 
+ 		memcpy(&psecuritypriv->wep_key[wep_key_idx].key,
+-		       param->u.crypt.key, wep_key_len);
++		       keyparms->key, key_len);
+ 
+-		psecuritypriv->wep_key[wep_key_idx].keylen = wep_key_len;
++		psecuritypriv->wep_key[wep_key_idx].keylen = key_len;
+ 
+-		set_wep_key(padapter, param->u.crypt.key, wep_key_len,
+-			    wep_key_idx);
++		set_wep_key(padapter, keyparms->key, key_len, wep_key_idx);
+ 
+ 		goto exit;
+ 
+@@ -605,12 +605,11 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrpKey[param->u.crypt.idx].
+-				       skey, param->u.crypt.key,
+-				       (param->u.crypt.key_len >
+-					16 ? 16 : param->u.crypt.key_len));
++				       skey, keyparms->key,
++				       (key_len > 16 ? 16 : key_len));
+ 
+ 				psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP40;
+-				if (param->u.crypt.key_len == 13) {
++				if (key_len == 13) {
+ 					psecuritypriv->dot118021XGrpPrivacy =
+ 					    WLAN_CIPHER_SUITE_WEP104;
+ 				}
+@@ -625,8 +624,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrpKey[param->u.crypt.idx].
+ 				       skey, param->u.crypt.key,
+-				       (param->u.crypt.key_len >
+-					16 ? 16 : param->u.crypt.key_len));
++				       (key_len > 16 ? 16 : key_len));
+ 
+ 				/* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */
+ 				/* set mic key */
+@@ -651,8 +649,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrpKey[param->u.crypt.idx].
+ 				       skey, param->u.crypt.key,
+-				       (param->u.crypt.key_len >
+-					16 ? 16 : param->u.crypt.key_len));
++				       (key_len > 16 ? 16 : key_len));
+ 			} else {
+ 				DBG_8723A("%s, set group_key, none\n",
+ 					  __func__);
+@@ -692,8 +689,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 			/* pairwise key */
+ 			memcpy(psta->dot118021x_UncstKey.skey,
+ 			       param->u.crypt.key,
+-			       (param->u.crypt.key_len >
+-				16 ? 16 : param->u.crypt.key_len));
++			       (key_len > 16 ? 16 : key_len));
+ 
+ 			if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 ||
+ 			    keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) {
+@@ -702,7 +698,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 
+ 				psta->dot118021XPrivacy =
+ 					WLAN_CIPHER_SUITE_WEP40;
+-				if (param->u.crypt.key_len == 13) {
++				if (key_len == 13) {
+ 					psta->dot118021XPrivacy =
+ 						WLAN_CIPHER_SUITE_WEP104;
+ 				}
+@@ -747,12 +743,11 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 				       dot118021XGrpKey[param->u.crypt.
+ 							idx].skey,
+ 				       param->u.crypt.key,
+-				       (param->u.crypt.key_len >
+-					16 ? 16 : param->u.crypt.key_len));
++				       (key_len > 16 ? 16 : key_len));
+ 
+ 				psecuritypriv->dot118021XGrpPrivacy =
+ 					WLAN_CIPHER_SUITE_WEP40;
+-				if (param->u.crypt.key_len == 13) {
++				if (key_len == 13) {
+ 					psecuritypriv->dot118021XGrpPrivacy =
+ 						WLAN_CIPHER_SUITE_WEP104;
+ 				}
+@@ -764,8 +759,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 				       dot118021XGrpKey[param->u.crypt.
+ 							idx].skey,
+ 				       param->u.crypt.key,
+-				       (param->u.crypt.key_len >
+-					16 ? 16 : param->u.crypt.key_len));
++				       (key_len > 16 ? 16 : key_len));
+ 
+ 				/* DEBUG_ERR("set key length :param->u"
+ 				   ".crypt.key_len =%d\n",
+@@ -790,8 +784,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 				       dot118021XGrpKey[param->u.crypt.
+ 							idx].skey,
+ 				       param->u.crypt.key,
+-				       (param->u.crypt.key_len >
+-					16 ? 16 : param->u.crypt.key_len));
++				       (key_len > 16 ? 16 : key_len));
+ 			} else {
+ 				psecuritypriv->dot118021XGrpPrivacy = 0;
+ 			}

Added: dists/sid/linux/debian/patches/features/all/r8723au/0146-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Sto.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0146-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Sto.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,50 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:38 +0200
+Subject: [146/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Stop
+ using param->u.crypt.alg
+Origin: https://git.kernel.org/linus/f84f97fd6a90080b89a7aa6ddd7b6b5b6d6c3898
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 20 +++++++++++---------
+ 1 file changed, 11 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 0925d56..ac13df1 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -530,6 +530,17 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 			ret = -EINVAL;
+ 			goto exit;
+ 		}
++		switch (keyparms->cipher) {
++		case WLAN_CIPHER_SUITE_WEP40:
++		case WLAN_CIPHER_SUITE_WEP104:
++		case WLAN_CIPHER_SUITE_TKIP:
++		case WLAN_CIPHER_SUITE_CCMP:
++			break;
++		default:
++			ret = -EINVAL;
++			goto exit;
++		}
++
+ 	} else {
+ 		psta = rtw_get_stainfo23a(pstapriv, param->sta_addr);
+ 		if (!psta) {
+@@ -540,15 +551,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 		}
+ 	}
+ 
+-	if (strcmp(param->u.crypt.alg, "none") == 0 && (psta == NULL)) {
+-		/* todo:clear default encryption keys */
+-
+-		DBG_8723A("clear default encryption keys, keyid =%d\n",
+-			  param->u.crypt.idx);
+-
+-		goto exit;
+-	}
+-
+ 	key_len = keyparms->key_len;
+ 
+ 	if (!psta && (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 ||

Added: dists/sid/linux/debian/patches/features/all/r8723au/0147-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0147-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,86 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:39 +0200
+Subject: [147/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Use
+ keyparms->cipher to set WEP size
+Origin: https://git.kernel.org/linus/55db5d02f81bd45c3a47f4ab4a917a70c6e13916
+
+We already know which type of WEP we are using when we get here, no
+point trying to determine it from key_len.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 32 +++++------------------
+ 1 file changed, 7 insertions(+), 25 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index ac13df1..c0b0cb1 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -577,13 +577,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 
+ 			psecuritypriv->ndisencryptstatus =
+ 				Ndis802_11Encryption1Enabled;
+-			psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP40;
+-			psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP40;
+-
+-			if (key_len == 13) {
+-				psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP104;
+-				psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP104;
+-			}
++			psecuritypriv->dot11PrivacyAlgrthm = keyparms->cipher;
++			psecuritypriv->dot118021XGrpPrivacy = keyparms->cipher;
+ 
+ 			psecuritypriv->dot11PrivacyKeyIndex = wep_key_idx;
+ 		}
+@@ -596,7 +591,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 		set_wep_key(padapter, keyparms->key, key_len, wep_key_idx);
+ 
+ 		goto exit;
+-
+ 	}
+ 
+ 	if (!psta) {	/*  group key */
+@@ -610,12 +604,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 				       skey, keyparms->key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 
+-				psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP40;
+-				if (key_len == 13) {
+-					psecuritypriv->dot118021XGrpPrivacy =
+-					    WLAN_CIPHER_SUITE_WEP104;
+-				}
+-
++				psecuritypriv->dot118021XGrpPrivacy =
++					keyparms->cipher;
+ 			} else if (keyparms->cipher == WLAN_CIPHER_SUITE_TKIP) {
+ 				DBG_8723A("%s, set group_key, TKIP\n",
+ 					  __func__);
+@@ -698,12 +688,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 				DBG_8723A("%s, set pairwise key, WEP\n",
+ 					  __func__);
+ 
+-				psta->dot118021XPrivacy =
+-					WLAN_CIPHER_SUITE_WEP40;
+-				if (key_len == 13) {
+-					psta->dot118021XPrivacy =
+-						WLAN_CIPHER_SUITE_WEP104;
+-				}
++				psecuritypriv->dot118021XGrpPrivacy =
++					keyparms->cipher;
+ 			} else if (keyparms->cipher == WLAN_CIPHER_SUITE_TKIP) {
+ 				DBG_8723A("%s, set pairwise key, TKIP\n",
+ 					  __func__);
+@@ -748,11 +734,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 				       (key_len > 16 ? 16 : key_len));
+ 
+ 				psecuritypriv->dot118021XGrpPrivacy =
+-					WLAN_CIPHER_SUITE_WEP40;
+-				if (key_len == 13) {
+-					psecuritypriv->dot118021XGrpPrivacy =
+-						WLAN_CIPHER_SUITE_WEP104;
+-				}
++					keyparms->cipher;
+ 			} else if (keyparms->cipher == WLAN_CIPHER_SUITE_TKIP) {
+ 				psecuritypriv->dot118021XGrpPrivacy =
+ 					WLAN_CIPHER_SUITE_TKIP;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0148-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-a.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0148-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-a.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,36 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:40 +0200
+Subject: [148/249] staging: rtl8723au: rtw_cfg80211_set_encryption(): Pass
+ additional struct key_params
+Origin: https://git.kernel.org/linus/a9e346fb88d6daeef37c21a3c55ebd70f1501fd2
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index c0b0cb1..7c3a58f 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -802,7 +802,8 @@ exit:
+ #endif
+ 
+ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+-				       struct ieee_param *param, u32 param_len)
++				       struct ieee_param *param, u32 param_len,
++				       struct key_params *keyparms)
+ {
+ 	int ret = 0;
+ 	u32 wep_key_idx;
+@@ -1067,7 +1068,8 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 	}
+ 
+ 	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
+-		ret = rtw_cfg80211_set_encryption(ndev, param, param_len);
++		ret = rtw_cfg80211_set_encryption(ndev, param, param_len,
++						  params);
+ 	} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
+ #ifdef CONFIG_8723AU_AP_MODE
+ 		if (mac_addr)

Added: dists/sid/linux/debian/patches/features/all/r8723au/0149-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0149-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,109 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:41 +0200
+Subject: [149/249] staging: rtl8723au: rtw_cfg80211_set_encryption(): Obtain
+ key_len from struct key_params
+Origin: https://git.kernel.org/linus/d0dc266692d1bd4579fd9abd4a9b80f8d0ab5150
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 28 +++++++++--------------
+ 1 file changed, 11 insertions(+), 17 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 7c3a58f..5ea0fa1 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -807,7 +807,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ {
+ 	int ret = 0;
+ 	u32 wep_key_idx;
+-	u16 wep_key_len;
++	int key_len;
+ 	struct rtw_adapter *padapter = netdev_priv(dev);
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+ 	struct security_priv *psecuritypriv = &padapter->securitypriv;
+@@ -817,9 +817,10 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 	param->u.crypt.err = 0;
+ 	param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0';
+ 
++	key_len = keyparms->key_len;
++
+ 	if (param_len <
+-	    (u32) ((u8 *) param->u.crypt.key - (u8 *) param) +
+-	    param->u.crypt.key_len) {
++	    (u32) ((u8 *) param->u.crypt.key - (u8 *) param) + key_len) {
+ 		ret = -EINVAL;
+ 		goto exit;
+ 	}
+@@ -840,9 +841,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 		DBG_8723A("wpa_set_encryption, crypt.alg = WEP\n");
+ 
+ 		wep_key_idx = param->u.crypt.idx;
+-		wep_key_len = param->u.crypt.key_len;
+ 
+-		if ((wep_key_idx > WEP_KEYS) || (wep_key_len <= 0)) {
++		if (wep_key_idx > WEP_KEYS || key_len <= 0) {
+ 			ret = -EINVAL;
+ 			goto exit;
+ 		}
+@@ -851,14 +851,14 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 			/* wep default key has not been set, so use this
+ 			   key index as default key. */
+ 
+-			wep_key_len = wep_key_len <= 5 ? 5 : 13;
++			key_len = key_len <= 5 ? 5 : 13;
+ 
+ 			psecuritypriv->ndisencryptstatus =
+ 				Ndis802_11Encryption1Enabled;
+ 			psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP40;
+ 			psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP40;
+ 
+-			if (wep_key_len == 13) {
++			if (key_len == 13) {
+ 				psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP104;
+ 				psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP104;
+ 			}
+@@ -867,9 +867,9 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 		}
+ 
+ 		memcpy(&psecuritypriv->wep_key[wep_key_idx].key,
+-		       param->u.crypt.key, wep_key_len);
++		       param->u.crypt.key, key_len);
+ 
+-		psecuritypriv->wep_key[wep_key_idx].keylen = wep_key_len;
++		psecuritypriv->wep_key[wep_key_idx].keylen = key_len;
+ 
+ 		rtw_set_key23a(padapter, psecuritypriv, wep_key_idx, 0);
+ 
+@@ -910,9 +910,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 
+ 					memcpy(psta->dot118021x_UncstKey.skey,
+ 					       param->u.crypt.key,
+-					       (param->u.crypt.key_len >
+-						16 ? 16 : param->u.crypt.
+-						key_len));
++					       (key_len > 16 ? 16 : key_len));
+ 
+ 					if (strcmp(param->u.crypt.alg,
+ 						   "TKIP") == 0) {
+@@ -938,9 +936,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 					       dot118021XGrpKey[param->u.crypt.
+ 								idx].skey,
+ 					       param->u.crypt.key,
+-					       (param->u.crypt.key_len >
+-						16 ? 16 : param->u.crypt.
+-						key_len));
++					       (key_len > 16 ? 16 : key_len));
+ 					memcpy(padapter->securitypriv.
+ 					       dot118021XGrptxmickey[param->u.
+ 								     crypt.idx].
+@@ -953,8 +949,6 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 					       8);
+ 					padapter->securitypriv.binstallGrpkey =
+ 						1;
+-					/* DEBUG_ERR((" param->u.crypt.key_len"
+-					   "=%d\n", param->u.crypt.key_len)); */
+ 					DBG_8723A
+ 					    (" ~~~~set sta key:groupkey\n");
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0150-staging-rtl8723au-rtw_cfg80211_set_encryption-Use-ke.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0150-staging-rtl8723au-rtw_cfg80211_set_encryption-Use-ke.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,39 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:42 +0200
+Subject: [150/249] staging: rtl8723au: rtw_cfg80211_set_encryption(): Use
+ key_params->cipher
+Origin: https://git.kernel.org/linus/8188b1cb6165655d087edf89b6619e62021762d8
+
+Use key_params->cipher to determine WEP/TKIP
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 5ea0fa1..2e21223 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -835,7 +835,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 		goto exit;
+ 	}
+ 
+-	if (strcmp(param->u.crypt.alg, "WEP") == 0) {
++	if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 ||
++	    keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) {
+ 		RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_err_,
+ 			 ("wpa_set_encryption, crypt.alg = WEP\n"));
+ 		DBG_8723A("wpa_set_encryption, crypt.alg = WEP\n");
+@@ -912,8 +913,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 					       param->u.crypt.key,
+ 					       (key_len > 16 ? 16 : key_len));
+ 
+-					if (strcmp(param->u.crypt.alg,
+-						   "TKIP") == 0) {
++					if (keyparms->cipher ==
++					    WLAN_CIPHER_SUITE_TKIP) {
+ 						memcpy(psta->dot11tkiptxmickey.
+ 						       skey,
+ 						       &param->u.crypt.key[16],

Added: dists/sid/linux/debian/patches/features/all/r8723au/0151-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0151-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,70 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:43 +0200
+Subject: [151/249] staging: rtl8723au: rtw_cfg80211_set_encryption(): Obtain
+ key from key_params->key
+Origin: https://git.kernel.org/linus/e1343f90809ab29bd1ec286fef1d9e6fcc59b404
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 18 +++++++-----------
+ 1 file changed, 7 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 2e21223..e521c77 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -868,7 +868,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 		}
+ 
+ 		memcpy(&psecuritypriv->wep_key[wep_key_idx].key,
+-		       param->u.crypt.key, key_len);
++		       keyparms->key, key_len);
+ 
+ 		psecuritypriv->wep_key[wep_key_idx].keylen = key_len;
+ 
+@@ -910,19 +910,17 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 						  " == 1\n", __func__);
+ 
+ 					memcpy(psta->dot118021x_UncstKey.skey,
+-					       param->u.crypt.key,
++					       keyparms->key,
+ 					       (key_len > 16 ? 16 : key_len));
+ 
+ 					if (keyparms->cipher ==
+ 					    WLAN_CIPHER_SUITE_TKIP) {
+ 						memcpy(psta->dot11tkiptxmickey.
+ 						       skey,
+-						       &param->u.crypt.key[16],
+-						       8);
++						       &keyparms->key[16], 8);
+ 						memcpy(psta->dot11tkiprxmickey.
+ 						       skey,
+-						       &param->u.crypt.key[24],
+-						       8);
++						       &keyparms->key[24], 8);
+ 
+ 						padapter->securitypriv.
+ 							busetkipkey = 0;
+@@ -936,18 +934,16 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 					memcpy(padapter->securitypriv.
+ 					       dot118021XGrpKey[param->u.crypt.
+ 								idx].skey,
+-					       param->u.crypt.key,
++					       keyparms->key,
+ 					       (key_len > 16 ? 16 : key_len));
+ 					memcpy(padapter->securitypriv.
+ 					       dot118021XGrptxmickey[param->u.
+ 								     crypt.idx].
+-					       skey, &param->u.crypt.key[16],
+-					       8);
++					       skey, &keyparms->key[16], 8);
+ 					memcpy(padapter->securitypriv.
+ 					       dot118021XGrprxmickey[param->u.
+ 								     crypt.idx].
+-					       skey, &param->u.crypt.key[24],
+-					       8);
++					       skey, &keyparms->key[24], 8);
+ 					padapter->securitypriv.binstallGrpkey =
+ 						1;
+ 					DBG_8723A

Added: dists/sid/linux/debian/patches/features/all/r8723au/0152-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-k.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0152-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-k.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,117 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:44 +0200
+Subject: [152/249] staging: rtl8723au: rtw_cfg80211_set_encryption(): Pass
+ key_index as argument
+Origin: https://git.kernel.org/linus/5292a891979aab582cb66e5105fc2ab78ff2a070
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 35 +++++++++--------------
+ 1 file changed, 14 insertions(+), 21 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index e521c77..c5ac645 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -801,12 +801,11 @@ exit:
+ }
+ #endif
+ 
+-static int rtw_cfg80211_set_encryption(struct net_device *dev,
++static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index,
+ 				       struct ieee_param *param, u32 param_len,
+ 				       struct key_params *keyparms)
+ {
+ 	int ret = 0;
+-	u32 wep_key_idx;
+ 	int key_len;
+ 	struct rtw_adapter *padapter = netdev_priv(dev);
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+@@ -826,7 +825,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 	}
+ 
+ 	if (is_broadcast_ether_addr(param->sta_addr)) {
+-		if (param->u.crypt.idx >= WEP_KEYS) {
++		if (key_index >= WEP_KEYS) {
+ 			ret = -EINVAL;
+ 			goto exit;
+ 		}
+@@ -841,9 +840,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 			 ("wpa_set_encryption, crypt.alg = WEP\n"));
+ 		DBG_8723A("wpa_set_encryption, crypt.alg = WEP\n");
+ 
+-		wep_key_idx = param->u.crypt.idx;
+-
+-		if (wep_key_idx > WEP_KEYS || key_len <= 0) {
++		if (key_index > WEP_KEYS || key_len <= 0) {
+ 			ret = -EINVAL;
+ 			goto exit;
+ 		}
+@@ -864,15 +861,15 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 				psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP104;
+ 			}
+ 
+-			psecuritypriv->dot11PrivacyKeyIndex = wep_key_idx;
++			psecuritypriv->dot11PrivacyKeyIndex = key_index;
+ 		}
+ 
+-		memcpy(&psecuritypriv->wep_key[wep_key_idx].key,
++		memcpy(&psecuritypriv->wep_key[key_index].key,
+ 		       keyparms->key, key_len);
+ 
+-		psecuritypriv->wep_key[wep_key_idx].keylen = key_len;
++		psecuritypriv->wep_key[key_index].keylen = key_len;
+ 
+-		rtw_set_key23a(padapter, psecuritypriv, wep_key_idx, 0);
++		rtw_set_key23a(padapter, psecuritypriv, key_index, 0);
+ 
+ 		goto exit;
+ 	}
+@@ -932,17 +929,14 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 							  true);
+ 				} else {	/* group key */
+ 					memcpy(padapter->securitypriv.
+-					       dot118021XGrpKey[param->u.crypt.
+-								idx].skey,
++					       dot118021XGrpKey[key_index].skey,
+ 					       keyparms->key,
+ 					       (key_len > 16 ? 16 : key_len));
+ 					memcpy(padapter->securitypriv.
+-					       dot118021XGrptxmickey[param->u.
+-								     crypt.idx].
++					       dot118021XGrptxmickey[key_index].
+ 					       skey, &keyparms->key[16], 8);
+ 					memcpy(padapter->securitypriv.
+-					       dot118021XGrprxmickey[param->u.
+-								     crypt.idx].
++					       dot118021XGrprxmickey[key_index].
+ 					       skey, &keyparms->key[24], 8);
+ 					padapter->securitypriv.binstallGrpkey =
+ 						1;
+@@ -950,12 +944,11 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev,
+ 					    (" ~~~~set sta key:groupkey\n");
+ 
+ 					padapter->securitypriv.
+-					    dot118021XGrpKeyid =
+-						param->u.crypt.idx;
++					    dot118021XGrpKeyid = key_index;
+ 
+ 					rtw_set_key23a(padapter,
+ 						    &padapter->securitypriv,
+-						    param->u.crypt.idx, 1);
++						    key_index, 1);
+ 				}
+ 			}
+ 
+@@ -1059,8 +1052,8 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 	}
+ 
+ 	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
+-		ret = rtw_cfg80211_set_encryption(ndev, param, param_len,
+-						  params);
++		ret = rtw_cfg80211_set_encryption(ndev, key_index, param,
++						  param_len, params);
+ 	} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
+ #ifdef CONFIG_8723AU_AP_MODE
+ 		if (mac_addr)

Added: dists/sid/linux/debian/patches/features/all/r8723au/0153-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Pas.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0153-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Pas.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,211 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:45 +0200
+Subject: [153/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption(): Pass
+ key_index argument
+Origin: https://git.kernel.org/linus/f7ce87cdb7b8e7a674fa66d3948c5f6986737377
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 62 ++++++++++-------------
+ 1 file changed, 26 insertions(+), 36 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index c5ac645..819573f 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -499,14 +499,13 @@ static int set_wep_key(struct rtw_adapter *padapter, const u8 *key, u16 keylen,
+ 	return set_group_key(padapter, key, alg, keyid);
+ }
+ 
+-static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
++static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 					  struct ieee_param *param,
+ 					  u32 param_len,
+ 					  struct key_params *keyparms)
+ {
+ 	int ret = 0;
+ 	int key_len;
+-	u8 wep_key_idx;
+ 	struct sta_info *psta = NULL, *pbcmc_sta = NULL;
+ 	struct rtw_adapter *padapter = netdev_priv(dev);
+ 	struct security_priv *psecuritypriv = &padapter->securitypriv;
+@@ -526,7 +525,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 	}
+ 
+ 	if (is_broadcast_ether_addr(param->sta_addr)) {
+-		if (param->u.crypt.idx >= WEP_KEYS) {
++		if (key_index >= WEP_KEYS) {
+ 			ret = -EINVAL;
+ 			goto exit;
+ 		}
+@@ -557,12 +556,10 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 		      keyparms->cipher == WLAN_CIPHER_SUITE_WEP104)) {
+ 		DBG_8723A("r871x_set_encryption, crypt.alg = WEP\n");
+ 
+-		wep_key_idx = param->u.crypt.idx;
+-
+ 		DBG_8723A("r871x_set_encryption, wep_key_idx =%d, len =%d\n",
+-			  wep_key_idx, key_len);
++			  key_index, key_len);
+ 
+-		if (wep_key_idx >= WEP_KEYS || key_len <= 0) {
++		if (key_index >= WEP_KEYS || key_len <= 0) {
+ 			ret = -EINVAL;
+ 			goto exit;
+ 		}
+@@ -580,15 +577,15 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 			psecuritypriv->dot11PrivacyAlgrthm = keyparms->cipher;
+ 			psecuritypriv->dot118021XGrpPrivacy = keyparms->cipher;
+ 
+-			psecuritypriv->dot11PrivacyKeyIndex = wep_key_idx;
++			psecuritypriv->dot11PrivacyKeyIndex = key_index;
+ 		}
+ 
+-		memcpy(&psecuritypriv->wep_key[wep_key_idx].key,
++		memcpy(&psecuritypriv->wep_key[key_index].key,
+ 		       keyparms->key, key_len);
+ 
+-		psecuritypriv->wep_key[wep_key_idx].keylen = key_len;
++		psecuritypriv->wep_key[key_index].keylen = key_len;
+ 
+-		set_wep_key(padapter, keyparms->key, key_len, wep_key_idx);
++		set_wep_key(padapter, keyparms->key, key_len, key_index);
+ 
+ 		goto exit;
+ 	}
+@@ -600,8 +597,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 				DBG_8723A("%s, set group_key, WEP\n", __func__);
+ 
+ 				memcpy(psecuritypriv->
+-				       dot118021XGrpKey[param->u.crypt.idx].
+-				       skey, keyparms->key,
++				       dot118021XGrpKey[key_index].skey,
++				       keyparms->key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 
+ 				psecuritypriv->dot118021XGrpPrivacy =
+@@ -614,19 +611,17 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 					WLAN_CIPHER_SUITE_TKIP;
+ 
+ 				memcpy(psecuritypriv->
+-				       dot118021XGrpKey[param->u.crypt.idx].
+-				       skey, param->u.crypt.key,
++				       dot118021XGrpKey[key_index].skey,
++				       param->u.crypt.key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 
+ 				/* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */
+ 				/* set mic key */
+ 				memcpy(psecuritypriv->
+-				       dot118021XGrptxmickey[param->u.crypt.
+-							     idx].skey,
++				       dot118021XGrptxmickey[key_index].skey,
+ 				       &param->u.crypt.key[16], 8);
+ 				memcpy(psecuritypriv->
+-				       dot118021XGrprxmickey[param->u.crypt.
+-							     idx].skey,
++				       dot118021XGrprxmickey[key_index].skey,
+ 				       &param->u.crypt.key[24], 8);
+ 
+ 				psecuritypriv->busetkipkey = 1;
+@@ -639,7 +634,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 					WLAN_CIPHER_SUITE_CCMP;
+ 
+ 				memcpy(psecuritypriv->
+-				       dot118021XGrpKey[param->u.crypt.idx].
++				       dot118021XGrpKey[key_index].
+ 				       skey, param->u.crypt.key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 			} else {
+@@ -650,7 +645,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 				    0;
+ 			}
+ 
+-			psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx;
++			psecuritypriv->dot118021XGrpKeyid = key_index;
+ 
+ 			psecuritypriv->binstallGrpkey = 1;
+ 
+@@ -659,7 +654,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 
+ 			set_group_key(padapter, param->u.crypt.key,
+ 				      psecuritypriv->dot118021XGrpPrivacy,
+-				      param->u.crypt.idx);
++				      key_index);
+ 
+ 			pbcmc_sta = rtw_get_bcmc_stainfo23a(padapter);
+ 			if (pbcmc_sta) {
+@@ -728,8 +723,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 			if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 ||
+ 			    keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) {
+ 				memcpy(psecuritypriv->
+-				       dot118021XGrpKey[param->u.crypt.
+-							idx].skey,
++				       dot118021XGrpKey[key_index].skey,
+ 				       param->u.crypt.key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 
+@@ -740,8 +734,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 					WLAN_CIPHER_SUITE_TKIP;
+ 
+ 				memcpy(psecuritypriv->
+-				       dot118021XGrpKey[param->u.crypt.
+-							idx].skey,
++				       dot118021XGrpKey[key_index].skey,
+ 				       param->u.crypt.key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 
+@@ -750,12 +743,10 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 				   param->u.crypt.key_len); */
+ 				/* set mic key */
+ 				memcpy(psecuritypriv->
+-				       dot118021XGrptxmickey[param->u.
+-							     crypt.idx].skey,
++				       dot118021XGrptxmickey[key_index].skey,
+ 				       &param->u.crypt.key[16], 8);
+ 				memcpy(psecuritypriv->
+-				       dot118021XGrprxmickey[param->u.
+-							     crypt.idx].skey,
++				       dot118021XGrprxmickey[key_index].skey,
+ 				       &param->u.crypt.key[24], 8);
+ 
+ 				psecuritypriv->busetkipkey = 1;
+@@ -765,15 +756,14 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 					WLAN_CIPHER_SUITE_CCMP;
+ 
+ 				memcpy(psecuritypriv->
+-				       dot118021XGrpKey[param->u.crypt.
+-							idx].skey,
++				       dot118021XGrpKey[key_index].skey,
+ 				       param->u.crypt.key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 			} else {
+ 				psecuritypriv->dot118021XGrpPrivacy = 0;
+ 			}
+ 
+-			psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx;
++			psecuritypriv->dot118021XGrpKeyid = key_index;
+ 
+ 			psecuritypriv->binstallGrpkey = 1;
+ 
+@@ -782,7 +772,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev,
+ 
+ 			set_group_key(padapter, param->u.crypt.key,
+ 				      psecuritypriv->dot118021XGrpPrivacy,
+-				      param->u.crypt.idx);
++				      key_index);
+ 
+ 			pbcmc_sta = rtw_get_bcmc_stainfo23a(padapter);
+ 			if (pbcmc_sta) {
+@@ -1059,8 +1049,8 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 		if (mac_addr)
+ 			ether_addr_copy(param->sta_addr, mac_addr);
+ 
+-		ret = rtw_cfg80211_ap_set_encryption(ndev, param, param_len,
+-						     params);
++		ret = rtw_cfg80211_ap_set_encryption(ndev, key_index, param,
++						     param_len, params);
+ #endif
+ 	} else {
+ 		DBG_8723A("error! fw_state = 0x%x, iftype =%d\n",

Added: dists/sid/linux/debian/patches/features/all/r8723au/0154-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-obt.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0154-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-obt.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,128 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:46 +0200
+Subject: [154/249] staging: rtl8723au: rtw_cfg80211_ap_set_encryption():
+ obtain key from key_params
+Origin: https://git.kernel.org/linus/fd381874eb3efded6c088f649a03c03b9690d588
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 31 +++++++++++------------
+ 1 file changed, 15 insertions(+), 16 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 819573f..f676ec6 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -612,17 +612,17 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrpKey[key_index].skey,
+-				       param->u.crypt.key,
++				       keyparms->key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 
+ 				/* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */
+ 				/* set mic key */
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrptxmickey[key_index].skey,
+-				       &param->u.crypt.key[16], 8);
++				       &keyparms->key[16], 8);
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrprxmickey[key_index].skey,
+-				       &param->u.crypt.key[24], 8);
++				       &keyparms->key[24], 8);
+ 
+ 				psecuritypriv->busetkipkey = 1;
+ 
+@@ -634,8 +634,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 					WLAN_CIPHER_SUITE_CCMP;
+ 
+ 				memcpy(psecuritypriv->
+-				       dot118021XGrpKey[key_index].
+-				       skey, param->u.crypt.key,
++				       dot118021XGrpKey[key_index].skey,
++				       keyparms->key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 			} else {
+ 				DBG_8723A("%s, set group_key, none\n",
+@@ -652,7 +652,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 			psecuritypriv->dot11PrivacyAlgrthm =
+ 				psecuritypriv->dot118021XGrpPrivacy;
+ 
+-			set_group_key(padapter, param->u.crypt.key,
++			set_group_key(padapter, keyparms->key,
+ 				      psecuritypriv->dot118021XGrpPrivacy,
+ 				      key_index);
+ 
+@@ -675,8 +675,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 		if (param->u.crypt.set_tx == 1) {
+ 			/* pairwise key */
+ 			memcpy(psta->dot118021x_UncstKey.skey,
+-			       param->u.crypt.key,
+-			       (key_len > 16 ? 16 : key_len));
++			       keyparms->key, (key_len > 16 ? 16 : key_len));
+ 
+ 			if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 ||
+ 			    keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) {
+@@ -695,9 +694,9 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 				/* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */
+ 				/* set mic key */
+ 				memcpy(psta->dot11tkiptxmickey.skey,
+-				       &param->u.crypt.key[16], 8);
++				       &keyparms->key[16], 8);
+ 				memcpy(psta->dot11tkiprxmickey.skey,
+-				       &param->u.crypt.key[24], 8);
++				       &keyparms->key[24], 8);
+ 
+ 				psecuritypriv->busetkipkey = 1;
+ 
+@@ -724,7 +723,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 			    keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) {
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrpKey[key_index].skey,
+-				       param->u.crypt.key,
++				       keyparms->key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 
+ 				psecuritypriv->dot118021XGrpPrivacy =
+@@ -735,7 +734,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrpKey[key_index].skey,
+-				       param->u.crypt.key,
++				       keyparms->key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 
+ 				/* DEBUG_ERR("set key length :param->u"
+@@ -744,10 +743,10 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 				/* set mic key */
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrptxmickey[key_index].skey,
+-				       &param->u.crypt.key[16], 8);
++				       &keyparms->key[16], 8);
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrprxmickey[key_index].skey,
+-				       &param->u.crypt.key[24], 8);
++				       &keyparms->key[24], 8);
+ 
+ 				psecuritypriv->busetkipkey = 1;
+ 
+@@ -757,7 +756,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrpKey[key_index].skey,
+-				       param->u.crypt.key,
++				       keyparms->key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 			} else {
+ 				psecuritypriv->dot118021XGrpPrivacy = 0;
+@@ -770,7 +769,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 			psecuritypriv->dot11PrivacyAlgrthm =
+ 				psecuritypriv->dot118021XGrpPrivacy;
+ 
+-			set_group_key(padapter, param->u.crypt.key,
++			set_group_key(padapter, keyparms->key,
+ 				      psecuritypriv->dot118021XGrpPrivacy,
+ 				      key_index);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0155-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0155-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,109 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:47 +0200
+Subject: [155/249] staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption(): Add
+ set_tx argument
+Origin: https://git.kernel.org/linus/0996cf9c693fd58d116619005ac1e1382865e0db
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 31 ++++++++++++-----------
+ 1 file changed, 16 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index f676ec6..624966e 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -500,6 +500,7 @@ static int set_wep_key(struct rtw_adapter *padapter, const u8 *key, u16 keylen,
+ }
+ 
+ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
++					  int set_tx,
+ 					  struct ieee_param *param,
+ 					  u32 param_len,
+ 					  struct key_params *keyparms)
+@@ -591,7 +592,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 	}
+ 
+ 	if (!psta) {	/*  group key */
+-		if (param->u.crypt.set_tx == 0) {	/* group key */
++		if (set_tx == 0) {	/* group key */
+ 			if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 ||
+ 			    keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) {
+ 				DBG_8723A("%s, set group_key, WEP\n", __func__);
+@@ -672,7 +673,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 
+ 	if (psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_8021X && psta) {
+ 		/*  psk/802_1x */
+-		if (param->u.crypt.set_tx == 1) {
++		if (set_tx == 1) {
+ 			/* pairwise key */
+ 			memcpy(psta->dot118021x_UncstKey.skey,
+ 			       keyparms->key, (key_len > 16 ? 16 : key_len));
+@@ -791,6 +792,7 @@ exit:
+ #endif
+ 
+ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index,
++				       int set_tx,
+ 				       struct ieee_param *param, u32 param_len,
+ 				       struct key_params *keyparms)
+ {
+@@ -890,10 +892,10 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index,
+ 						dot11PrivacyAlgrthm;
+ 				}
+ 
+-				if (param->u.crypt.set_tx == 1) {
++				if (set_tx == 1) {
+ 					/* pairwise key */
+-					DBG_8723A("%s, : param->u.crypt.set_tx"
+-						  " == 1\n", __func__);
++					DBG_8723A("%s, : set_tx == 1\n",
++						  __func__);
+ 
+ 					memcpy(psta->dot118021x_UncstKey.skey,
+ 					       keyparms->key,
+@@ -977,7 +979,7 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 	char *alg_name;
+ 	u32 param_len;
+ 	struct ieee_param *param;
+-	int ret = 0;
++	int set_tx, ret = 0;
+ 	struct wireless_dev *rtw_wdev = wiphy_to_wdev(wiphy);
+ 	struct rtw_adapter *padapter = wiphy_to_adapter(wiphy);
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+@@ -1022,11 +1024,10 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 
+ 	strncpy((char *)param->u.crypt.alg, alg_name, IEEE_CRYPT_ALG_NAME_LEN);
+ 
+-	if (!mac_addr || is_broadcast_ether_addr(mac_addr)) {
+-		param->u.crypt.set_tx = 0;	/* for wpa/wpa2 group key */
+-	} else {
+-		param->u.crypt.set_tx = 1;	/* for wpa/wpa2 pairwise key */
+-	}
++	if (!mac_addr || is_broadcast_ether_addr(mac_addr))
++		set_tx = 0;	/* for wpa/wpa2 group key */
++	else
++		set_tx = 1;	/* for wpa/wpa2 pairwise key */
+ 
+ 	/* param->u.crypt.idx = key_index - 1; */
+ 	param->u.crypt.idx = key_index;
+@@ -1041,15 +1042,15 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 	}
+ 
+ 	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
+-		ret = rtw_cfg80211_set_encryption(ndev, key_index, param,
+-						  param_len, params);
++		ret = rtw_cfg80211_set_encryption(ndev, key_index, set_tx,
++						  param, param_len, params);
+ 	} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
+ #ifdef CONFIG_8723AU_AP_MODE
+ 		if (mac_addr)
+ 			ether_addr_copy(param->sta_addr, mac_addr);
+ 
+-		ret = rtw_cfg80211_ap_set_encryption(ndev, key_index, param,
+-						     param_len, params);
++		ret = rtw_cfg80211_ap_set_encryption(ndev, key_index, set_tx,
++						     param, param_len, params);
+ #endif
+ 	} else {
+ 		DBG_8723A("error! fw_state = 0x%x, iftype =%d\n",

Added: dists/sid/linux/debian/patches/features/all/r8723au/0156-staging-rtl8723au-Stop-setting-ieee_parm-arguments-t.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0156-staging-rtl8723au-Stop-setting-ieee_parm-arguments-t.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,97 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:48 +0200
+Subject: [156/249] staging: rtl8723au: Stop setting ieee_parm arguments that
+ aren't used
+Origin: https://git.kernel.org/linus/6e6e2d633b7410953597eff63ccb210aa2aadd33
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 37 -----------------------
+ 1 file changed, 37 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 624966e..7aaa3f8 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -514,17 +514,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 
+ 	DBG_8723A("%s\n", __func__);
+ 
+-	param->u.crypt.err = 0;
+-	param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0';
+-
+-	/* sizeof(struct ieee_param) = 64 bytes; */
+-	/* if (param_len !=  (u32) ((u8 *) param->u.crypt.key -
+-	   (u8 *) param) + param->u.crypt.key_len) */
+-	if (param_len != sizeof(struct ieee_param) + param->u.crypt.key_len) {
+-		ret = -EINVAL;
+-		goto exit;
+-	}
+-
+ 	if (is_broadcast_ether_addr(param->sta_addr)) {
+ 		if (key_index >= WEP_KEYS) {
+ 			ret = -EINVAL;
+@@ -616,7 +605,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 				       keyparms->key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 
+-				/* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */
+ 				/* set mic key */
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrptxmickey[key_index].skey,
+@@ -692,7 +680,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 				psta->dot118021XPrivacy =
+ 					WLAN_CIPHER_SUITE_TKIP;
+ 
+-				/* DEBUG_ERR("set key length :param->u.crypt.key_len =%d\n", param->u.crypt.key_len); */
+ 				/* set mic key */
+ 				memcpy(psta->dot11tkiptxmickey.skey,
+ 				       &keyparms->key[16], 8);
+@@ -738,9 +725,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 				       keyparms->key,
+ 				       (key_len > 16 ? 16 : key_len));
+ 
+-				/* DEBUG_ERR("set key length :param->u"
+-				   ".crypt.key_len =%d\n",
+-				   param->u.crypt.key_len); */
+ 				/* set mic key */
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrptxmickey[key_index].skey,
+@@ -804,17 +788,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index,
+ 
+ 	DBG_8723A("%s\n", __func__);
+ 
+-	param->u.crypt.err = 0;
+-	param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0';
+-
+ 	key_len = keyparms->key_len;
+ 
+-	if (param_len <
+-	    (u32) ((u8 *) param->u.crypt.key - (u8 *) param) + key_len) {
+-		ret = -EINVAL;
+-		goto exit;
+-	}
+-
+ 	if (is_broadcast_ether_addr(param->sta_addr)) {
+ 		if (key_index >= WEP_KEYS) {
+ 			ret = -EINVAL;
+@@ -1029,18 +1004,6 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 	else
+ 		set_tx = 1;	/* for wpa/wpa2 pairwise key */
+ 
+-	/* param->u.crypt.idx = key_index - 1; */
+-	param->u.crypt.idx = key_index;
+-
+-	if (params->seq_len && params->seq) {
+-		memcpy(param->u.crypt.seq, params->seq, params->seq_len);
+-	}
+-
+-	if (params->key_len && params->key) {
+-		param->u.crypt.key_len = params->key_len;
+-		memcpy(param->u.crypt.key, params->key, params->key_len);
+-	}
+-
+ 	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
+ 		ret = rtw_cfg80211_set_encryption(ndev, key_index, set_tx,
+ 						  param, param_len, params);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0157-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-N.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0157-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-N.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,101 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:49 +0200
+Subject: [157/249] staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption(): No
+ more string parsing to determine cipher
+Origin: https://git.kernel.org/linus/efd4216c2d558f2faf03284e95a9c1c1297d801a
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 37 ++++++++---------------
+ 1 file changed, 13 insertions(+), 24 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 7aaa3f8..7e34f89 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -855,7 +855,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index,
+ 			} else {
+ 				/* Jeff: don't disable ieee8021x_blocked
+ 				   while clearing key */
+-				if (strcmp(param->u.crypt.alg, "none") != 0)
++				if (keyparms->cipher != IW_AUTH_CIPHER_NONE &&
++				    keyparms->cipher != 0)
+ 					psta->ieee8021x_blocked = false;
+ 
+ 				if ((padapter->securitypriv.ndisencryptstatus ==
+@@ -922,7 +923,8 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index,
+ 			if (pbcmc_sta) {
+ 				/* Jeff: don't disable ieee8021x_blocked
+ 				   while clearing key */
+-				if (strcmp(param->u.crypt.alg, "none") != 0)
++				if (keyparms->cipher != IW_AUTH_CIPHER_NONE &&
++				    keyparms->cipher != 0)
+ 					pbcmc_sta->ieee8021x_blocked = false;
+ 
+ 				if ((padapter->securitypriv.ndisencryptstatus ==
+@@ -951,7 +953,6 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 				u8 key_index, bool pairwise,
+ 				const u8 *mac_addr, struct key_params *params)
+ {
+-	char *alg_name;
+ 	u32 param_len;
+ 	struct ieee_param *param;
+ 	int set_tx, ret = 0;
+@@ -967,37 +968,25 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 	DBG_8723A("key_index =%d\n", key_index);
+ 	DBG_8723A("pairwise =%d\n", pairwise);
+ 
+-	param_len = sizeof(struct ieee_param) + params->key_len;
+-	param = kzalloc(param_len, GFP_KERNEL);
+-	if (!param)
+-		return -ENOMEM;
+-
+-	param->cmd = IEEE_CMD_SET_ENCRYPTION;
+-	eth_broadcast_addr(param->sta_addr);
+-
+ 	switch (params->cipher) {
+ 	case IW_AUTH_CIPHER_NONE:
+-		/* todo: remove key */
+-		/* remove = 1; */
+-		alg_name = "none";
+-		break;
+ 	case WLAN_CIPHER_SUITE_WEP40:
+ 	case WLAN_CIPHER_SUITE_WEP104:
+-		alg_name = "WEP";
+-		break;
+ 	case WLAN_CIPHER_SUITE_TKIP:
+-		alg_name = "TKIP";
+-		break;
+ 	case WLAN_CIPHER_SUITE_CCMP:
+-		alg_name = "CCMP";
+ 		break;
+-
+ 	default:
+ 		ret = -ENOTSUPP;
+-		goto addkey_end;
++		goto exit;
+ 	}
+ 
+-	strncpy((char *)param->u.crypt.alg, alg_name, IEEE_CRYPT_ALG_NAME_LEN);
++	param_len = sizeof(struct ieee_param) + params->key_len;
++	param = kzalloc(param_len, GFP_KERNEL);
++	if (!param)
++		return -ENOMEM;
++
++	param->cmd = IEEE_CMD_SET_ENCRYPTION;
++	eth_broadcast_addr(param->sta_addr);
+ 
+ 	if (!mac_addr || is_broadcast_ether_addr(mac_addr))
+ 		set_tx = 0;	/* for wpa/wpa2 group key */
+@@ -1021,9 +1010,9 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 
+ 	}
+ 
+-addkey_end:
+ 	kfree(param);
+ 
++exit:
+ 	return ret;
+ }
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0158-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0158-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,95 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:50 +0200
+Subject: [158/249] staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption(): Add
+ sta_addr argument
+Origin: https://git.kernel.org/linus/f88ab54c10b1270257f39268e88c1949fd903fb2
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 17 ++++++++++-------
+ 1 file changed, 10 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 7e34f89..0cbf255 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -500,7 +500,7 @@ static int set_wep_key(struct rtw_adapter *padapter, const u8 *key, u16 keylen,
+ }
+ 
+ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+-					  int set_tx,
++					  int set_tx, const u8 *sta_addr,
+ 					  struct ieee_param *param,
+ 					  u32 param_len,
+ 					  struct key_params *keyparms)
+@@ -514,7 +514,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 
+ 	DBG_8723A("%s\n", __func__);
+ 
+-	if (is_broadcast_ether_addr(param->sta_addr)) {
++	if (is_broadcast_ether_addr(sta_addr)) {
+ 		if (key_index >= WEP_KEYS) {
+ 			ret = -EINVAL;
+ 			goto exit;
+@@ -531,7 +531,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 		}
+ 
+ 	} else {
+-		psta = rtw_get_stainfo23a(pstapriv, param->sta_addr);
++		psta = rtw_get_stainfo23a(pstapriv, sta_addr);
+ 		if (!psta) {
+ 			/* ret = -EINVAL; */
+ 			DBG_8723A("rtw_set_encryption(), sta has already "
+@@ -776,7 +776,7 @@ exit:
+ #endif
+ 
+ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index,
+-				       int set_tx,
++				       int set_tx, const u8 *sta_addr,
+ 				       struct ieee_param *param, u32 param_len,
+ 				       struct key_params *keyparms)
+ {
+@@ -790,7 +790,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index,
+ 
+ 	key_len = keyparms->key_len;
+ 
+-	if (is_broadcast_ether_addr(param->sta_addr)) {
++	if (is_broadcast_ether_addr(sta_addr)) {
+ 		if (key_index >= WEP_KEYS) {
+ 			ret = -EINVAL;
+ 			goto exit;
+@@ -959,6 +959,7 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 	struct wireless_dev *rtw_wdev = wiphy_to_wdev(wiphy);
+ 	struct rtw_adapter *padapter = wiphy_to_adapter(wiphy);
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
++	u8 sta_addr[ETH_ALEN];
+ 
+ 	DBG_8723A("%s(%s): adding key for %pM\n", __func__, ndev->name,
+ 		  mac_addr);
+@@ -986,7 +987,7 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 		return -ENOMEM;
+ 
+ 	param->cmd = IEEE_CMD_SET_ENCRYPTION;
+-	eth_broadcast_addr(param->sta_addr);
++	eth_broadcast_addr(sta_addr);
+ 
+ 	if (!mac_addr || is_broadcast_ether_addr(mac_addr))
+ 		set_tx = 0;	/* for wpa/wpa2 group key */
+@@ -995,13 +996,15 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 
+ 	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
+ 		ret = rtw_cfg80211_set_encryption(ndev, key_index, set_tx,
++						  sta_addr,
+ 						  param, param_len, params);
+ 	} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
+ #ifdef CONFIG_8723AU_AP_MODE
+ 		if (mac_addr)
+-			ether_addr_copy(param->sta_addr, mac_addr);
++			ether_addr_copy(sta_addr, mac_addr);
+ 
+ 		ret = rtw_cfg80211_ap_set_encryption(ndev, key_index, set_tx,
++						     sta_addr,
+ 						     param, param_len, params);
+ #endif
+ 	} else {

Added: dists/sid/linux/debian/patches/features/all/r8723au/0159-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-S.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0159-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-S.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,85 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:51 +0200
+Subject: [159/249] staging: rtl8723au: rtw_cfg80211_{ap_}set_encryption():
+ Stop passing ieee_parms argument
+Origin: https://git.kernel.org/linus/f0bf8dd53d1a1c952784f1e5cf0c076cb514bdaf
+
+struct ieee_parms is obsolete, so stop passing it on.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 19 ++-----------------
+ 1 file changed, 2 insertions(+), 17 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 0cbf255..f53189a 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -501,8 +501,6 @@ static int set_wep_key(struct rtw_adapter *padapter, const u8 *key, u16 keylen,
+ 
+ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 					  int set_tx, const u8 *sta_addr,
+-					  struct ieee_param *param,
+-					  u32 param_len,
+ 					  struct key_params *keyparms)
+ {
+ 	int ret = 0;
+@@ -777,7 +775,6 @@ exit:
+ 
+ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index,
+ 				       int set_tx, const u8 *sta_addr,
+-				       struct ieee_param *param, u32 param_len,
+ 				       struct key_params *keyparms)
+ {
+ 	int ret = 0;
+@@ -953,8 +950,6 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 				u8 key_index, bool pairwise,
+ 				const u8 *mac_addr, struct key_params *params)
+ {
+-	u32 param_len;
+-	struct ieee_param *param;
+ 	int set_tx, ret = 0;
+ 	struct wireless_dev *rtw_wdev = wiphy_to_wdev(wiphy);
+ 	struct rtw_adapter *padapter = wiphy_to_adapter(wiphy);
+@@ -981,12 +976,6 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 		goto exit;
+ 	}
+ 
+-	param_len = sizeof(struct ieee_param) + params->key_len;
+-	param = kzalloc(param_len, GFP_KERNEL);
+-	if (!param)
+-		return -ENOMEM;
+-
+-	param->cmd = IEEE_CMD_SET_ENCRYPTION;
+ 	eth_broadcast_addr(sta_addr);
+ 
+ 	if (!mac_addr || is_broadcast_ether_addr(mac_addr))
+@@ -996,16 +985,14 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 
+ 	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
+ 		ret = rtw_cfg80211_set_encryption(ndev, key_index, set_tx,
+-						  sta_addr,
+-						  param, param_len, params);
++						  sta_addr, params);
+ 	} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
+ #ifdef CONFIG_8723AU_AP_MODE
+ 		if (mac_addr)
+ 			ether_addr_copy(sta_addr, mac_addr);
+ 
+ 		ret = rtw_cfg80211_ap_set_encryption(ndev, key_index, set_tx,
+-						     sta_addr,
+-						     param, param_len, params);
++						     sta_addr, params);
+ #endif
+ 	} else {
+ 		DBG_8723A("error! fw_state = 0x%x, iftype =%d\n",
+@@ -1013,8 +1000,6 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 
+ 	}
+ 
+-	kfree(param);
+-
+ exit:
+ 	return ret;
+ }

Added: dists/sid/linux/debian/patches/features/all/r8723au/0160-staging-rtl8723au-Remove-obsolete-struct-ieee_parm.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0160-staging-rtl8723au-Remove-obsolete-struct-ieee_parm.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,79 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:52 +0200
+Subject: [160/249] staging: rtl8723au: Remove obsolete struct ieee_parm
+Origin: https://git.kernel.org/linus/3e71669accfadd670aa745d7bdcabc179360d9cb
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/ieee80211.h | 50 ---------------------------
+ 1 file changed, 50 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/include/ieee80211.h b/drivers/staging/rtl8723au/include/ieee80211.h
+index 0b17a7f..e9f465f 100644
+--- a/drivers/staging/rtl8723au/include/ieee80211.h
++++ b/drivers/staging/rtl8723au/include/ieee80211.h
+@@ -48,12 +48,6 @@
+ 
+ #endif
+ 
+-#define IEEE_CMD_SET_WPA_PARAM			1
+-#define IEEE_CMD_SET_WPA_IE				2
+-#define IEEE_CMD_SET_ENCRYPTION			3
+-
+-#define	IEEE_CRYPT_ALG_NAME_LEN			16
+-
+ #define WPA_CIPHER_NONE		BIT(0)
+ #define WPA_CIPHER_WEP40	BIT(1)
+ #define WPA_CIPHER_WEP104	BIT(2)
+@@ -151,50 +145,6 @@ enum NETWORK_TYPE
+ #define IsSupportedTxMCS(NetType) (NetType & (WIRELESS_11_24N|WIRELESS_11_5N) ? true : false)
+ 
+ 
+-struct ieee_param {
+-	u32 cmd;
+-	u8 sta_addr[ETH_ALEN];
+-	union {
+-		struct {
+-			u8 name;
+-			u32 value;
+-		} wpa_param;
+-		struct {
+-			u32 len;
+-			u8 reserved[32];
+-			u8 data[0];
+-		} wpa_ie;
+-	        struct{
+-			int command;
+-			int reason_code;
+-		} mlme;
+-		struct {
+-			u8 alg[IEEE_CRYPT_ALG_NAME_LEN];
+-			u8 set_tx;
+-			u32 err;
+-			u8 idx;
+-			u8 seq[8]; /* sequence counter (set: RX, get: TX) */
+-			u16 key_len;
+-			u8 key[0];
+-		} crypt;
+-#ifdef CONFIG_8723AU_AP_MODE
+-		struct {
+-			u16 aid;
+-			u16 capability;
+-			int flags;
+-			u8 tx_supp_rates[16];
+-			struct ieee80211_ht_cap ht_cap;
+-		} add_sta;
+-		struct {
+-			u8	reserved[2];/* for set max_num_sta */
+-			u8	buf[0];
+-		} bcn_ie;
+-#endif
+-
+-	} u;
+-};
+-
+-
+ #define MIN_FRAG_THRESHOLD     256U
+ #define	MAX_FRAG_THRESHOLD     2346U
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0161-staging-rtl8723au-Validate-keys-in-cfg80211_rtw_add_.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0161-staging-rtl8723au-Validate-keys-in-cfg80211_rtw_add_.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,170 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:53 +0200
+Subject: [161/249] staging: rtl8723au: Validate keys in cfg80211_rtw_add_key()
+Origin: https://git.kernel.org/linus/7ef2743da1bb1edcad5cdfafe75652445fa3cc1b
+
+We validate the parameters in cfg80211_rtw_add_key() so no need to do
+it all again in rtw_cfg80211_{ap_}set_encryption()
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 76 ++++++-----------------
+ 1 file changed, 19 insertions(+), 57 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index f53189a..87f953c 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -512,23 +512,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 
+ 	DBG_8723A("%s\n", __func__);
+ 
+-	if (is_broadcast_ether_addr(sta_addr)) {
+-		if (key_index >= WEP_KEYS) {
+-			ret = -EINVAL;
+-			goto exit;
+-		}
+-		switch (keyparms->cipher) {
+-		case WLAN_CIPHER_SUITE_WEP40:
+-		case WLAN_CIPHER_SUITE_WEP104:
+-		case WLAN_CIPHER_SUITE_TKIP:
+-		case WLAN_CIPHER_SUITE_CCMP:
+-			break;
+-		default:
+-			ret = -EINVAL;
+-			goto exit;
+-		}
+-
+-	} else {
++	if (!is_broadcast_ether_addr(sta_addr)) {
+ 		psta = rtw_get_stainfo23a(pstapriv, sta_addr);
+ 		if (!psta) {
+ 			/* ret = -EINVAL; */
+@@ -547,15 +531,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 		DBG_8723A("r871x_set_encryption, wep_key_idx =%d, len =%d\n",
+ 			  key_index, key_len);
+ 
+-		if (key_index >= WEP_KEYS || key_len <= 0) {
+-			ret = -EINVAL;
+-			goto exit;
+-		}
+-
+-		if (key_len > 0) {
+-			key_len = key_len <= 5 ? 5 : 13;
+-		}
+-
+ 		if (psecuritypriv->bWepDefaultKeyIdxSet == 0) {
+ 			/* wep default key has not been set, so use
+ 			   this key index as default key. */
+@@ -586,8 +561,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrpKey[key_index].skey,
+-				       keyparms->key,
+-				       (key_len > 16 ? 16 : key_len));
++				       keyparms->key, key_len);
+ 
+ 				psecuritypriv->dot118021XGrpPrivacy =
+ 					keyparms->cipher;
+@@ -628,8 +602,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 				DBG_8723A("%s, set group_key, none\n",
+ 					  __func__);
+ 
+-				psecuritypriv->dot118021XGrpPrivacy =
+-				    0;
++				psecuritypriv->dot118021XGrpPrivacy = 0;
+ 			}
+ 
+ 			psecuritypriv->dot118021XGrpKeyid = key_index;
+@@ -709,8 +682,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 			    keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) {
+ 				memcpy(psecuritypriv->
+ 				       dot118021XGrpKey[key_index].skey,
+-				       keyparms->key,
+-				       (key_len > 16 ? 16 : key_len));
++				       keyparms->key, key_len);
+ 
+ 				psecuritypriv->dot118021XGrpPrivacy =
+ 					keyparms->cipher;
+@@ -732,7 +704,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 				       &keyparms->key[24], 8);
+ 
+ 				psecuritypriv->busetkipkey = 1;
+-
+ 			} else if (keyparms->cipher == WLAN_CIPHER_SUITE_CCMP) {
+ 				psecuritypriv->dot118021XGrpPrivacy =
+ 					WLAN_CIPHER_SUITE_CCMP;
+@@ -787,42 +758,20 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, u8 key_index,
+ 
+ 	key_len = keyparms->key_len;
+ 
+-	if (is_broadcast_ether_addr(sta_addr)) {
+-		if (key_index >= WEP_KEYS) {
+-			ret = -EINVAL;
+-			goto exit;
+-		}
+-	} else {
+-		ret = -EINVAL;
+-		goto exit;
+-	}
+-
+ 	if (keyparms->cipher == WLAN_CIPHER_SUITE_WEP40 ||
+ 	    keyparms->cipher == WLAN_CIPHER_SUITE_WEP104) {
+ 		RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_err_,
+ 			 ("wpa_set_encryption, crypt.alg = WEP\n"));
+ 		DBG_8723A("wpa_set_encryption, crypt.alg = WEP\n");
+ 
+-		if (key_index > WEP_KEYS || key_len <= 0) {
+-			ret = -EINVAL;
+-			goto exit;
+-		}
+-
+ 		if (psecuritypriv->bWepDefaultKeyIdxSet == 0) {
+ 			/* wep default key has not been set, so use this
+ 			   key index as default key. */
+ 
+-			key_len = key_len <= 5 ? 5 : 13;
+-
+ 			psecuritypriv->ndisencryptstatus =
+ 				Ndis802_11Encryption1Enabled;
+-			psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP40;
+-			psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP40;
+-
+-			if (key_len == 13) {
+-				psecuritypriv->dot11PrivacyAlgrthm = WLAN_CIPHER_SUITE_WEP104;
+-				psecuritypriv->dot118021XGrpPrivacy = WLAN_CIPHER_SUITE_WEP104;
+-			}
++			psecuritypriv->dot11PrivacyAlgrthm = keyparms->cipher;
++			psecuritypriv->dot118021XGrpPrivacy = keyparms->cipher;
+ 
+ 			psecuritypriv->dot11PrivacyKeyIndex = key_index;
+ 		}
+@@ -967,7 +916,15 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 	switch (params->cipher) {
+ 	case IW_AUTH_CIPHER_NONE:
+ 	case WLAN_CIPHER_SUITE_WEP40:
++		if (params->key_len != WLAN_KEY_LEN_WEP40) {
++			ret = -EINVAL;
++			goto exit;
++		}
+ 	case WLAN_CIPHER_SUITE_WEP104:
++		if (params->key_len != WLAN_KEY_LEN_WEP104) {
++			ret = -EINVAL;
++			goto exit;
++		}
+ 	case WLAN_CIPHER_SUITE_TKIP:
+ 	case WLAN_CIPHER_SUITE_CCMP:
+ 		break;
+@@ -976,6 +933,11 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
+ 		goto exit;
+ 	}
+ 
++	if (key_index >= WEP_KEYS || params->key_len < 0) {
++		ret = -EINVAL;
++		goto exit;
++	}
++
+ 	eth_broadcast_addr(sta_addr);
+ 
+ 	if (!mac_addr || is_broadcast_ether_addr(mac_addr))

Added: dists/sid/linux/debian/patches/features/all/r8723au/0162-staging-rtl8723au-Eliminate-set_wep_key-and-call-set.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0162-staging-rtl8723au-Eliminate-set_wep_key-and-call-set.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,107 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:54 +0200
+Subject: [162/249] staging: rtl8723au: Eliminate set_wep_key() and call
+ set_group_key() directly
+Origin: https://git.kernel.org/linus/2dcf6b4c73a3b92774955b83e5bd7c5cec2c87e6
+
+This also eliminates another round of determine algorithm based on key
+length, followed by determine key length based on algorithm.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c | 45 +++--------------------
+ 1 file changed, 6 insertions(+), 39 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+index 87f953c..93dc844 100644
+--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
++++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+@@ -417,10 +417,9 @@ exit:
+ 	return res;
+ }
+ 
+-static int set_group_key(struct rtw_adapter *padapter, const u8 *key, u32 alg,
+-			 u8 keyid)
++static int set_group_key(struct rtw_adapter *padapter, struct key_params *parms,
++			 u32 alg, u8 keyid)
+ {
+-	u8 keylen;
+ 	struct cmd_obj *pcmd;
+ 	struct setkey_parm *psetkeyparm;
+ 	struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
+@@ -453,20 +452,7 @@ static int set_group_key(struct rtw_adapter *padapter, const u8 *key, u32 alg,
+ 
+ 	psetkeyparm->set_tx = 1;
+ 
+-	switch (alg) {
+-	case WLAN_CIPHER_SUITE_WEP40:
+-		keylen = 5;
+-		break;
+-	case WLAN_CIPHER_SUITE_WEP104:
+-		keylen = 13;
+-		break;
+-	case WLAN_CIPHER_SUITE_TKIP:
+-	case WLAN_CIPHER_SUITE_CCMP:
+-	default:
+-		keylen = 16;
+-	}
+-
+-	memcpy(&psetkeyparm->key[0], key, keylen);
++	memcpy(&psetkeyparm->key, parms->key, parms->key_len);
+ 
+ 	pcmd->cmdcode = _SetKey_CMD_;
+ 	pcmd->parmbuf = (u8 *) psetkeyparm;
+@@ -480,25 +466,6 @@ exit:
+ 	return res;
+ }
+ 
+-static int set_wep_key(struct rtw_adapter *padapter, const u8 *key, u16 keylen,
+-		       u8 keyid)
+-{
+-	u32 alg;
+-
+-	switch (keylen) {
+-	case 5:
+-		alg = WLAN_CIPHER_SUITE_WEP40;
+-		break;
+-	case 13:
+-		alg = WLAN_CIPHER_SUITE_WEP104;
+-		break;
+-	default:
+-		alg = 0;
+-	}
+-
+-	return set_group_key(padapter, key, alg, keyid);
+-}
+-
+ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 					  int set_tx, const u8 *sta_addr,
+ 					  struct key_params *keyparms)
+@@ -548,7 +515,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 
+ 		psecuritypriv->wep_key[key_index].keylen = key_len;
+ 
+-		set_wep_key(padapter, keyparms->key, key_len, key_index);
++		set_group_key(padapter, keyparms, keyparms->cipher, key_index);
+ 
+ 		goto exit;
+ 	}
+@@ -612,7 +579,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 			psecuritypriv->dot11PrivacyAlgrthm =
+ 				psecuritypriv->dot118021XGrpPrivacy;
+ 
+-			set_group_key(padapter, keyparms->key,
++			set_group_key(padapter, keyparms,
+ 				      psecuritypriv->dot118021XGrpPrivacy,
+ 				      key_index);
+ 
+@@ -723,7 +690,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, u8 key_index,
+ 			psecuritypriv->dot11PrivacyAlgrthm =
+ 				psecuritypriv->dot118021XGrpPrivacy;
+ 
+-			set_group_key(padapter, keyparms->key,
++			set_group_key(padapter, keyparms,
+ 				      psecuritypriv->dot118021XGrpPrivacy,
+ 				      key_index);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0163-staging-rtl8723au-rtw_restruct_wmm_ie23a-Use-cfg8021.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0163-staging-rtl8723au-rtw_restruct_wmm_ie23a-Use-cfg8021.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,65 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:55 +0200
+Subject: [163/249] staging: rtl8723au: rtw_restruct_wmm_ie23a(): Use
+ cfg80211_find_vendor_ie()
+Origin: https://git.kernel.org/linus/86184b93c52c21ad3bd56d185634a4704f9e98c9
+
+Rewrite rtw_restruct_wmm_ie23a() using cfg80211_find_vendor_ie()
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 34 ++++++++++++-------------------
+ 1 file changed, 13 insertions(+), 21 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index b3db56a..d0e9b66 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -1909,33 +1909,25 @@ exit:
+ 
+ /* adjust IEs for rtw_joinbss_cmd23a in WMM */
+ int rtw_restruct_wmm_ie23a(struct rtw_adapter *adapter, u8 *in_ie,
+-			u8 *out_ie, uint in_len, uint initial_out_len)
++			   u8 *out_ie, uint in_len, uint initial_out_len)
+ {
+-	unsigned int ielength = 0;
+-	unsigned int i, j;
++	int ielength;
++	const u8 *p;
+ 
+-	i = 0; /* after the fixed IE */
+-	while (i < in_len) {
+-		ielength = initial_out_len;
++	ielength = initial_out_len;
+ 
+-		/* WMM element ID and OUI */
+-		if (in_ie[i] == 0xDD && in_ie[i + 2] == 0x00 &&
+-		    in_ie[i + 3] == 0x50 && in_ie[i + 4] == 0xF2 &&
+-		    in_ie[i + 5] == 0x02 && i+5 < in_len) {
++	p = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
++				    WLAN_OUI_TYPE_MICROSOFT_WMM,
++				    in_ie, in_len);
+ 
+-			/* Append WMM IE to the last index of out_ie */
+-                        for (j = i; j < i + 9; j++) {
+-				out_ie[ielength] = in_ie[j];
+-				ielength++;
+-                        }
+-                        out_ie[initial_out_len + 1] = 0x07;
+-                        out_ie[initial_out_len + 6] = 0x00;
+-                        out_ie[initial_out_len + 8] = 0x00;
++	if (p && p[1]) {
++		memcpy(out_ie + initial_out_len, p, 9);
+ 
+-			break;
+-		}
++		out_ie[initial_out_len + 1] = 7;
++		out_ie[initial_out_len + 6] = 0;
++		out_ie[initial_out_len + 8] = 0;
+ 
+-		i += (in_ie[i + 1] + 2); /*  to the next IE element */
++		ielength += 9;
+ 	}
+ 
+ 	return ielength;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0164-staging-rtl8723au-rtw_append_pmkid-Adjust-for-IEs-ar.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0164-staging-rtl8723au-rtw_append_pmkid-Adjust-for-IEs-ar.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,37 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:56 +0200
+Subject: [164/249] staging: rtl8723au: rtw_append_pmkid(): Adjust for IEs
+ array not arrying fixed elements
+Origin: https://git.kernel.org/linus/98f979f1f80cf2ef0188370ee8fec996c3ee7fd8
+
+Another case using hard coded offsets counting on the presence of
+fixed beacon elements in the IEs array.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index d0e9b66..c2e3777 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -1984,7 +1984,7 @@ static int rtw_append_pmkid(struct rtw_adapter *Adapter, int iEntry,
+ {
+ 	struct security_priv *psecuritypriv = &Adapter->securitypriv;
+ 
+-	if (ie[13] <= 20) {
++	if (ie[1] <= 20) {
+ 		/*  The RSN IE didn't include the PMK ID,
+ 		    append the PMK information */
+ 			ie[ie_len] = 1;
+@@ -1995,7 +1995,7 @@ static int rtw_append_pmkid(struct rtw_adapter *Adapter, int iEntry,
+ 			       &psecuritypriv->PMKIDList[iEntry].PMKID, 16);
+ 
+ 			ie_len += 16;
+-			ie[13] += 18;/* PMKID length = 2+16 */
++			ie[1] += 18;/* PMKID length = 2+16 */
+ 	}
+ 	return ie_len;
+ }

Added: dists/sid/linux/debian/patches/features/all/r8723au/0165-staging-rtl8723au-Only-validate-vendor-specific-ies-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0165-staging-rtl8723au-Only-validate-vendor-specific-ies-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,51 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:57 +0200
+Subject: [165/249] staging: rtl8723au: Only validate vendor specific ies, when
+ they it is vendor specific
+Origin: https://git.kernel.org/linus/42282f4147e2bc5b89d6a050244a7c5475613d83
+
+Don't run rtw_validate_vendor_specific_ies() on anything but
+WLAN_EID_VENDOR_SPECIFIC. In addition use the proper
+WLAN_OUI_TYPE_MICROSOFT_* definitions.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 4b769d5..88cf1fd 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -1204,11 +1204,11 @@ static int rtw_validate_vendor_specific_ies(const u8 *pos, int elen)
+ 		/* Microsoft/Wi-Fi information elements are further typed and
+ 		 * subtyped */
+ 		switch (pos[3]) {
+-		case 1:
++		case WLAN_OUI_TYPE_MICROSOFT_WPA:
+ 			/* Microsoft OUI (00:50:F2) with OUI Type 1:
+ 			 * real WPA information element */
+ 			break;
+-		case WME_OUI_TYPE: /* this is a Wi-Fi WME info. element */
++		case WLAN_OUI_TYPE_MICROSOFT_WMM:
+ 			if (elen < 5) {
+ 				DBG_8723A("short WME information element "
+ 					  "ignored (len =%i)\n", elen);
+@@ -1227,7 +1227,7 @@ static int rtw_validate_vendor_specific_ies(const u8 *pos, int elen)
+ 				return -EINVAL;
+ 			}
+ 			break;
+-		case 4:
++		case WLAN_OUI_TYPE_MICROSOFT_WPS:
+ 			/* Wi-Fi Protected Setup (WPS) IE */
+ 			break;
+ 		default:
+@@ -1289,6 +1289,7 @@ static int rtw_validate_frame_ies(const u8 *start, uint len)
+ 		case WLAN_EID_CHALLENGE:
+ 		case WLAN_EID_ERP_INFO:
+ 		case WLAN_EID_EXT_SUPP_RATES:
++			break;
+ 		case WLAN_EID_VENDOR_SPECIFIC:
+ 			if (rtw_validate_vendor_specific_ies(pos, elen))
+ 				unknown++;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0166-staging-rtl8723au-OnAssocReq23a-Use-cfg80211_find_ve.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0166-staging-rtl8723au-OnAssocReq23a-Use-cfg80211_find_ve.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,102 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 24 Jun 2014 15:03:58 +0200
+Subject: [166/249] staging: rtl8723au: OnAssocReq23a(): Use
+ cfg80211_find_vendor_ie() to locate VMM
+Origin: https://git.kernel.org/linus/7c3a8f2a5ec95e2b13704562f36321e20ddfc190
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 62 +++++++++++++--------------
+ 1 file changed, 30 insertions(+), 32 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 88cf1fd..09e5a59 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -1327,7 +1327,6 @@ OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 	u16 capab_info, listen_interval;
+ 	struct sta_info	*pstat;
+ 	unsigned char reassoc;
+-	unsigned char WMM_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01};
+ 	int i, wpa_ie_len, left;
+ 	unsigned char supportRate[16];
+ 	int supportRateNum;
+@@ -1577,47 +1576,46 @@ OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 
+ 		for (;;) {
+ 			left = end - p;
+-			p = cfg80211_find_ie(WLAN_EID_VENDOR_SPECIFIC, p, left);
++			p = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
++						    WLAN_OUI_TYPE_MICROSOFT_WMM,
++						    p, left);
+ 			if (p) {
+-				if (!memcmp(p + 2, WMM_IE, 6)) {
+-					pstat->flags |= WLAN_STA_WME;
++				pstat->flags |= WLAN_STA_WME;
+ 
+-					pstat->qos_option = 1;
+-					pstat->qos_info = *(p + 8);
++				pstat->qos_option = 1;
++				pstat->qos_info = *(p + 8);
+ 
+-					pstat->max_sp_len =
+-						(pstat->qos_info >> 5) & 0x3;
++				pstat->max_sp_len =
++					(pstat->qos_info >> 5) & 0x3;
+ 
+-					if ((pstat->qos_info & 0xf) != 0xf)
+-						pstat->has_legacy_ac = true;
+-					else
+-						pstat->has_legacy_ac = false;
+-
+-					if (pstat->qos_info & 0xf) {
+-						if (pstat->qos_info & BIT(0))
+-							pstat->uapsd_vo = BIT(0)|BIT(1);
+-						else
+-							pstat->uapsd_vo = 0;
++				if ((pstat->qos_info & 0xf) != 0xf)
++					pstat->has_legacy_ac = true;
++				else
++					pstat->has_legacy_ac = false;
+ 
+-						if (pstat->qos_info & BIT(1))
+-							pstat->uapsd_vi = BIT(0)|BIT(1);
+-						else
+-							pstat->uapsd_vi = 0;
++				if (pstat->qos_info & 0xf) {
++					if (pstat->qos_info & BIT(0))
++						pstat->uapsd_vo = BIT(0)|BIT(1);
++					else
++						pstat->uapsd_vo = 0;
+ 
+-						if (pstat->qos_info & BIT(2))
+-							pstat->uapsd_bk = BIT(0)|BIT(1);
+-						else
+-							pstat->uapsd_bk = 0;
++					if (pstat->qos_info & BIT(1))
++						pstat->uapsd_vi = BIT(0)|BIT(1);
++					else
++						pstat->uapsd_vi = 0;
+ 
+-						if (pstat->qos_info & BIT(3))
+-							pstat->uapsd_be = BIT(0)|BIT(1);
+-						else
+-							pstat->uapsd_be = 0;
++					if (pstat->qos_info & BIT(2))
++						pstat->uapsd_bk = BIT(0)|BIT(1);
++					else
++						pstat->uapsd_bk = 0;
+ 
+-					}
++					if (pstat->qos_info & BIT(3))
++						pstat->uapsd_be = BIT(0)|BIT(1);
++					else
++						pstat->uapsd_be = 0;
+ 
+-					break;
+ 				}
++				break;
+ 			} else {
+ 				break;
+ 			}

Added: dists/sid/linux/debian/patches/features/all/r8723au/0167-staging-rtl8723au-fix-sparse-warning.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0167-staging-rtl8723au-fix-sparse-warning.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,46 @@
+From: =?UTF-8?q?Cl=C3=A9ment=20Calmels?= <clement.calmels at free.fr>
+Date: Thu, 26 Jun 2014 10:20:46 +0200
+Subject: [167/249] staging: rtl8723au: fix sparse warning
+Origin: https://git.kernel.org/linus/809d208b1b0175843f19f8f552bf05af84496b56
+
+Found running sparse on the rtl8723au driver.
+
+  CHECK   drivers/staging/rtl8723au/core/rtw_cmd.c
+drivers/staging/rtl8723au/core/rtw_cmd.c:1479:54: warning: incorrect type in argument 2 (different base types)
+drivers/staging/rtl8723au/core/rtw_cmd.c:1479:54:    expected int [signed] gfp
+drivers/staging/rtl8723au/core/rtw_cmd.c:1479:54:    got restricted gfp_t
+
+Signed-off-by: Clement Calmels <clement.calmels at free.fr>
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c    | 2 +-
+ drivers/staging/rtl8723au/include/rtw_mlme.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index c2e3777..4827280 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -100,7 +100,7 @@ void rtw_free_mlme_priv23a(struct mlme_priv *pmlmepriv)
+ 	rtw23a_free_mlme_priv_ie_data(pmlmepriv);
+ }
+ 
+-struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv, int gfp)
++struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv, gfp_t gfp)
+ {
+ 	struct wlan_network *pnetwork;
+ 
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme.h b/drivers/staging/rtl8723au/include/rtw_mlme.h
+index 277d90b..2ff01eb 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme.h
+@@ -314,7 +314,7 @@ void rtw23a_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv);
+ 
+ void _rtw_free_mlme_priv23a(struct mlme_priv *pmlmepriv);
+ 
+-struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv, int gfp);
++struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv, gfp_t gfp);
+ 
+ int rtw_if_up23a(struct rtw_adapter *padapter);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0168-staging-rtl8723au-usb_ops_linux.c-Add-blank-line-bet.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0168-staging-rtl8723au-usb_ops_linux.c-Add-blank-line-bet.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,35 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 26 Jun 2014 10:20:47 +0200
+Subject: [168/249] staging: rtl8723au: usb_ops_linux.c: Add blank line between
+ declaration and usage
+Origin: https://git.kernel.org/linus/1c69be9facbbb7d6aaa87831444544736c884653
+
+This fixes a minor sparse warning.
+
+Reported-by: Fengguang Wu <fengguang.wu at intel.com>
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/usb_ops_linux.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/usb_ops_linux.c b/drivers/staging/rtl8723au/hal/usb_ops_linux.c
+index 8e9e61c..6acb0e3 100644
+--- a/drivers/staging/rtl8723au/hal/usb_ops_linux.c
++++ b/drivers/staging/rtl8723au/hal/usb_ops_linux.c
+@@ -28,7 +28,6 @@ static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request,
+ {
+ 	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
+ 	struct usb_device *udev = pdvobjpriv->pusbdev;
+-
+ 	unsigned int pipe;
+ 	int status = 0;
+ 	u8 reqtype;
+@@ -97,6 +96,7 @@ static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request,
+ 					padapter->bSurpriseRemoved = true;
+ 				else {
+ 					struct hal_data_8723a *pHalData;
++
+ 					pHalData = GET_HAL_DATA(padapter);
+ 					pHalData->srestpriv.Wifi_Error_Status =
+ 						USB_VEN_REQ_CMD_FAIL;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0169-staging-rtl8723au-rtw_sta_mgt.c-Use-ether_addr_-copy.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0169-staging-rtl8723au-rtw_sta_mgt.c-Use-ether_addr_-copy.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,48 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 26 Jun 2014 10:20:48 +0200
+Subject: [169/249] staging: rtl8723au: rtw_sta_mgt.c: Use ether_addr_{copy,
+ equal}()
+Origin: https://git.kernel.org/linus/a6f4e0c17cecf7ccdf3f61bc998c5ecbd5fdfd00
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_sta_mgt.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
+index 14a82be..62e35dd 100644
+--- a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
++++ b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
+@@ -126,7 +126,7 @@ rtw_alloc_stainfo23a(struct sta_priv *pstapriv, u8 *hwaddr, gfp_t gfp)
+ 
+ 	psta->padapter = pstapriv->padapter;
+ 
+-	memcpy(psta->hwaddr, hwaddr, ETH_ALEN);
++	ether_addr_copy(psta->hwaddr, hwaddr);
+ 
+ 	index = wifi_mac_hash(hwaddr);
+ 
+@@ -363,10 +363,10 @@ struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr)
+ 	list_for_each(plist, phead) {
+ 		psta = container_of(plist, struct sta_info, hash_list);
+ 
+-		if (!memcmp(psta->hwaddr, addr, ETH_ALEN)) {
+-			/*  if found the matched address */
++		/*  if found the matched address */
++		if (ether_addr_equal(psta->hwaddr, addr))
+ 			break;
+-		}
++
+ 		psta = NULL;
+ 	}
+ 	spin_unlock_bh(&pstapriv->sta_hash_lock);
+@@ -422,7 +422,7 @@ bool rtw_access_ctrl23a(struct rtw_adapter *padapter, u8 *mac_addr)
+ 	list_for_each(plist, phead) {
+ 		paclnode = container_of(plist, struct rtw_wlan_acl_node, list);
+ 
+-		if (!memcmp(paclnode->addr, mac_addr, ETH_ALEN)) {
++		if (ether_addr_equal(paclnode->addr, mac_addr)) {
+ 			if (paclnode->valid) {
+ 				match = true;
+ 				break;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0170-staging-rtl8723au-rtw_sta_mgt.c-One-copy-of-the-broa.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0170-staging-rtl8723au-rtw_sta_mgt.c-One-copy-of-the-broa.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,55 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 26 Jun 2014 10:20:49 +0200
+Subject: [170/249] staging: rtl8723au: rtw_sta_mgt.c: One copy of the
+ broadcast address should suffice
+Origin: https://git.kernel.org/linus/25f71900872a5b2120011489d8f5d76420ebc193
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_sta_mgt.c | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
+index 62e35dd..f13a470 100644
+--- a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
++++ b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
+@@ -22,6 +22,8 @@
+ #include <sta_info.h>
+ #include <rtl8723a_hal.h>
+ 
++static u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
++
+ static void _rtw_init_stainfo(struct sta_info *psta)
+ {
+ 	memset((u8 *)psta, 0, sizeof (struct sta_info));
+@@ -344,7 +346,6 @@ struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr)
+ 	struct sta_info *psta = NULL;
+ 	u32	index;
+ 	const u8 *addr;
+-	u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+ 
+ 	if (hwaddr == NULL)
+ 		return NULL;
+@@ -379,9 +380,8 @@ int rtw_init_bcmc_stainfo23a(struct rtw_adapter* padapter)
+ 	struct sta_info		*psta;
+ 	struct tx_servq	*ptxservq;
+ 	int res = _SUCCESS;
+-	unsigned char bcast_addr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+ 
+-	psta = rtw_alloc_stainfo23a(pstapriv, bcast_addr, GFP_KERNEL);
++	psta = rtw_alloc_stainfo23a(pstapriv, bc_addr, GFP_KERNEL);
+ 	if (psta == NULL) {
+ 		res = _FAIL;
+ 		RT_TRACE(_module_rtl871x_sta_mgt_c_, _drv_err_,
+@@ -399,9 +399,8 @@ struct sta_info *rtw_get_bcmc_stainfo23a(struct rtw_adapter *padapter)
+ {
+ 	struct sta_info		*psta;
+ 	struct sta_priv		*pstapriv = &padapter->stapriv;
+-	u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+ 
+-	 psta = rtw_get_stainfo23a(pstapriv, bc_addr);
++	psta = rtw_get_stainfo23a(pstapriv, bc_addr);
+ 	return psta;
+ }
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0171-staging-rtl8723au-rtw_allow_stainfo23a-Make-hwaddr-a.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0171-staging-rtl8723au-rtw_allow_stainfo23a-Make-hwaddr-a.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,48 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 26 Jun 2014 10:20:50 +0200
+Subject: [171/249] staging: rtl8723au: rtw_allow_stainfo23a(): Make hwaddr
+ argument const
+Origin: https://git.kernel.org/linus/3cf7fa6f8a2005f8cbe2e44228239a8dc1fffff6
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_sta_mgt.c | 4 ++--
+ drivers/staging/rtl8723au/include/sta_info.h | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
+index f13a470..8db844b 100644
+--- a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
++++ b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
+@@ -22,7 +22,7 @@
+ #include <sta_info.h>
+ #include <rtl8723a_hal.h>
+ 
+-static u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
++static const u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+ 
+ static void _rtw_init_stainfo(struct sta_info *psta)
+ {
+@@ -109,7 +109,7 @@ int _rtw_free_sta_priv23a(struct sta_priv *pstapriv)
+ }
+ 
+ struct sta_info *
+-rtw_alloc_stainfo23a(struct sta_priv *pstapriv, u8 *hwaddr, gfp_t gfp)
++rtw_alloc_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr, gfp_t gfp)
+ {
+ 	struct list_head	*phash_list;
+ 	struct sta_info	*psta;
+diff --git a/drivers/staging/rtl8723au/include/sta_info.h b/drivers/staging/rtl8723au/include/sta_info.h
+index d1939a6..c756b4f 100644
+--- a/drivers/staging/rtl8723au/include/sta_info.h
++++ b/drivers/staging/rtl8723au/include/sta_info.h
+@@ -362,7 +362,7 @@ static inline u32 wifi_mac_hash(const u8 *mac)
+ int _rtw_init_sta_priv23a(struct sta_priv *pstapriv);
+ int _rtw_free_sta_priv23a(struct sta_priv *pstapriv);
+ 
+-struct sta_info *rtw_alloc_stainfo23a(struct sta_priv *pstapriv, u8 *hwaddr, gfp_t gfp);
++struct sta_info *rtw_alloc_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr, gfp_t gfp);
+ int rtw_free_stainfo23a(struct rtw_adapter *padapter, struct sta_info *psta);
+ void rtw_free_all_stainfo23a(struct rtw_adapter *padapter);
+ struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0172-staging-rtl8723au-Remove-unused-rtw_sreset_get_wifi_.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0172-staging-rtl8723au-Remove-unused-rtw_sreset_get_wifi_.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,65 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 26 Jun 2014 10:20:51 +0200
+Subject: [172/249] staging: rtl8723au: Remove unused
+ rtw_sreset_get_wifi_status()
+Origin: https://git.kernel.org/linus/5a90765817bbff15edb9f3fa094856ec01576312
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_sreset.c    | 29 --------------------------
+ drivers/staging/rtl8723au/include/rtw_sreset.h |  1 -
+ 2 files changed, 30 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_sreset.c b/drivers/staging/rtl8723au/core/rtw_sreset.c
+index 18a42a2..8142dd1 100644
+--- a/drivers/staging/rtl8723au/core/rtw_sreset.c
++++ b/drivers/staging/rtl8723au/core/rtw_sreset.c
+@@ -39,35 +39,6 @@ void rtw_sreset_reset_value(struct rtw_adapter *padapter)
+ 	psrtpriv->last_tx_complete_time = 0;
+ }
+ 
+-u8 rtw_sreset_get_wifi_status(struct rtw_adapter *padapter)
+-{
+-	struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter);
+-	struct sreset_priv *psrtpriv = &pHalData->srestpriv;
+-	u8 status = WIFI_STATUS_SUCCESS;
+-	u32 val32 = 0;
+-
+-	if (psrtpriv->silent_reset_inprogress)
+-		return status;
+-	val32 = rtl8723au_read32(padapter, REG_TXDMA_STATUS);
+-	if (val32 == 0xeaeaeaea) {
+-		psrtpriv->Wifi_Error_Status = WIFI_IF_NOT_EXIST;
+-	} else if (val32 != 0) {
+-		DBG_8723A("txdmastatu(%x)\n", val32);
+-		psrtpriv->Wifi_Error_Status = WIFI_MAC_TXDMA_ERROR;
+-	}
+-
+-	if (WIFI_STATUS_SUCCESS != psrtpriv->Wifi_Error_Status) {
+-		DBG_8723A("==>%s error_status(0x%x)\n", __func__, psrtpriv->Wifi_Error_Status);
+-		status = (psrtpriv->Wifi_Error_Status &~(USB_READ_PORT_FAIL|USB_WRITE_PORT_FAIL));
+-	}
+-	DBG_8723A("==> %s wifi_status(0x%x)\n", __func__, status);
+-
+-	/* status restore */
+-	psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS;
+-
+-	return status;
+-}
+-
+ void sreset_set_wifi_error_status23a(struct rtw_adapter *padapter, u32 status)
+ {
+ 	struct hal_data_8723a	*pHalData = GET_HAL_DATA(padapter);
+diff --git a/drivers/staging/rtl8723au/include/rtw_sreset.h b/drivers/staging/rtl8723au/include/rtw_sreset.h
+index 77cc794..a4c45cb 100644
+--- a/drivers/staging/rtl8723au/include/rtw_sreset.h
++++ b/drivers/staging/rtl8723au/include/rtw_sreset.h
+@@ -47,7 +47,6 @@ struct sreset_priv {
+ 
+ void rtw_sreset_init(struct rtw_adapter *padapter);
+ void rtw_sreset_reset_value(struct rtw_adapter *padapter);
+-u8 rtw_sreset_get_wifi_status(struct rtw_adapter *padapter);
+ bool rtw_sreset_inprogress(struct rtw_adapter *padapter);
+ void sreset_set_wifi_error_status23a(struct rtw_adapter *padapter, u32 status);
+ void sreset_set_trigger_point(struct rtw_adapter *padapter, s32 tgp);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0173-staging-rtl8723au-Wifi_Error_Status-isn-t-used-for-a.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0173-staging-rtl8723au-Wifi_Error_Status-isn-t-used-for-a.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,149 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 26 Jun 2014 10:20:52 +0200
+Subject: [173/249] staging: rtl8723au: Wifi_Error_Status isn't used for
+ anything
+Origin: https://git.kernel.org/linus/63a7cabbd57522fdbf063ccb0d0309fd8b3b7ada
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_sreset.c      | 11 -----------
+ drivers/staging/rtl8723au/hal/rtl8723a_sreset.c  |  1 -
+ drivers/staging/rtl8723au/hal/usb_ops_linux.c    | 11 -----------
+ drivers/staging/rtl8723au/include/rtw_sreset.h   | 11 -----------
+ drivers/staging/rtl8723au/os_dep/usb_ops_linux.c |  2 --
+ 5 files changed, 36 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_sreset.c b/drivers/staging/rtl8723au/core/rtw_sreset.c
+index 8142dd1..c19831c 100644
+--- a/drivers/staging/rtl8723au/core/rtw_sreset.c
++++ b/drivers/staging/rtl8723au/core/rtw_sreset.c
+@@ -23,7 +23,6 @@ void rtw_sreset_init(struct rtw_adapter *padapter)
+ 
+ 	mutex_init(&psrtpriv->silentreset_mutex);
+ 	psrtpriv->silent_reset_inprogress = false;
+-	psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS;
+ 	psrtpriv->last_tx_time = 0;
+ 	psrtpriv->last_tx_complete_time = 0;
+ }
+@@ -34,18 +33,10 @@ void rtw_sreset_reset_value(struct rtw_adapter *padapter)
+ 	struct sreset_priv *psrtpriv = &pHalData->srestpriv;
+ 
+ 	psrtpriv->silent_reset_inprogress = false;
+-	psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS;
+ 	psrtpriv->last_tx_time = 0;
+ 	psrtpriv->last_tx_complete_time = 0;
+ }
+ 
+-void sreset_set_wifi_error_status23a(struct rtw_adapter *padapter, u32 status)
+-{
+-	struct hal_data_8723a	*pHalData = GET_HAL_DATA(padapter);
+-
+-	pHalData->srestpriv.Wifi_Error_Status = status;
+-}
+-
+ void sreset_set_trigger_point(struct rtw_adapter *padapter, s32 tgp)
+ {
+ 	struct hal_data_8723a	*pHalData = GET_HAL_DATA(padapter);
+@@ -213,8 +204,6 @@ void rtw_sreset_reset(struct rtw_adapter *active_adapter)
+ 
+ 	DBG_8723A("%s\n", __func__);
+ 
+-	psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS;
+-
+ 	mutex_lock(&psrtpriv->silentreset_mutex);
+ 	psrtpriv->silent_reset_inprogress = true;
+ 	pwrpriv->change_rfpwrstate = rf_off;
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c
+index 0680e29..4374036 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c
+@@ -46,7 +46,6 @@ void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter)
+ 			} else {
+ 				diff_time = jiffies_to_msecs(jiffies - psrtpriv->last_tx_complete_time);
+ 				if (diff_time > 4000) {
+-					/* padapter->Wifi_Error_Status = WIFI_TX_HANG; */
+ 					DBG_8723A("%s tx hang\n", __func__);
+ 					rtw_sreset_reset(padapter);
+ 				}
+diff --git a/drivers/staging/rtl8723au/hal/usb_ops_linux.c b/drivers/staging/rtl8723au/hal/usb_ops_linux.c
+index 6acb0e3..23af718 100644
+--- a/drivers/staging/rtl8723au/hal/usb_ops_linux.c
++++ b/drivers/staging/rtl8723au/hal/usb_ops_linux.c
+@@ -94,13 +94,6 @@ static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request,
+ 			if (status < 0) {
+ 				if (status == -ESHUTDOWN || status == -ENODEV)
+ 					padapter->bSurpriseRemoved = true;
+-				else {
+-					struct hal_data_8723a *pHalData;
+-
+-					pHalData = GET_HAL_DATA(padapter);
+-					pHalData->srestpriv.Wifi_Error_Status =
+-						USB_VEN_REQ_CMD_FAIL;
+-				}
+ 			} else { /*  status != len && status >= 0 */
+ 				if (status > 0) {
+ 					if (requesttype == 0x01) {
+@@ -647,7 +640,6 @@ static void usb_read_port_complete(struct urb *purb)
+ 	struct recv_buf *precvbuf = (struct recv_buf *)purb->context;
+ 	struct rtw_adapter *padapter = (struct rtw_adapter *)precvbuf->adapter;
+ 	struct recv_priv *precvpriv = &padapter->recvpriv;
+-	struct hal_data_8723a *pHalData;
+ 
+ 	RT_TRACE(_module_hci_ops_os_c_, _drv_err_,
+ 		 ("usb_read_port_complete!!!\n"));
+@@ -726,9 +718,6 @@ static void usb_read_port_complete(struct urb *purb)
+ 			break;
+ 		case -EPROTO:
+ 		case -EOVERFLOW:
+-			pHalData = GET_HAL_DATA(padapter);
+-			pHalData->srestpriv.Wifi_Error_Status =
+-				USB_READ_PORT_FAIL;
+ 			rtl8723au_read_port(padapter, RECV_BULK_IN_ADDR, 0,
+ 					    precvbuf);
+ 			break;
+diff --git a/drivers/staging/rtl8723au/include/rtw_sreset.h b/drivers/staging/rtl8723au/include/rtw_sreset.h
+index a4c45cb..4799614 100644
+--- a/drivers/staging/rtl8723au/include/rtw_sreset.h
++++ b/drivers/staging/rtl8723au/include/rtw_sreset.h
+@@ -27,7 +27,6 @@ enum {
+ struct sreset_priv {
+ 	struct mutex	silentreset_mutex;
+ 	u8	silent_reset_inprogress;
+-	u8	Wifi_Error_Status;
+ 	unsigned long last_tx_time;
+ 	unsigned long last_tx_complete_time;
+ 
+@@ -36,19 +35,9 @@ struct sreset_priv {
+ 
+ #include <rtl8723a_hal.h>
+ 
+-#define	WIFI_STATUS_SUCCESS	0
+-#define	USB_VEN_REQ_CMD_FAIL	BIT(0)
+-#define	USB_READ_PORT_FAIL	BIT(1)
+-#define	USB_WRITE_PORT_FAIL	BIT(2)
+-#define	WIFI_MAC_TXDMA_ERROR	BIT(3)
+-#define	WIFI_TX_HANG		BIT(4)
+-#define	WIFI_RX_HANG		BIT(5)
+-#define	WIFI_IF_NOT_EXIST	BIT(6)
+-
+ void rtw_sreset_init(struct rtw_adapter *padapter);
+ void rtw_sreset_reset_value(struct rtw_adapter *padapter);
+ bool rtw_sreset_inprogress(struct rtw_adapter *padapter);
+-void sreset_set_wifi_error_status23a(struct rtw_adapter *padapter, u32 status);
+ void sreset_set_trigger_point(struct rtw_adapter *padapter, s32 tgp);
+ void rtw_sreset_reset(struct rtw_adapter *active_adapter);
+ 
+diff --git a/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c b/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c
+index d081449..3352807 100644
+--- a/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c
++++ b/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c
+@@ -96,8 +96,6 @@ static void usb_write_port23a_complete(struct urb *purb)
+ 		DBG_8723A("###=> urb_write_port_complete status(%d)\n",
+ 			  purb->status);
+ 		if (purb->status == -EPIPE || purb->status == -EPROTO) {
+-			sreset_set_wifi_error_status23a(padapter,
+-						     USB_WRITE_PORT_FAIL);
+ 		} else if (purb->status == -EINPROGRESS) {
+ 			RT_TRACE(_module_hci_ops_os_c_, _drv_err_,
+ 				 ("usb_write_port23a_complete: EINPROGESS\n"));

Added: dists/sid/linux/debian/patches/features/all/r8723au/0174-staging-rtl8723au-sreset_priv-dbg_trigger_point-is-n.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0174-staging-rtl8723au-sreset_priv-dbg_trigger_point-is-n.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,86 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 26 Jun 2014 10:20:53 +0200
+Subject: [174/249] staging: rtl8723au: sreset_priv->dbg_trigger_point is never
+ set
+Origin: https://git.kernel.org/linus/e899c9176a1d0659d854802966f1b1a8e74394a6
+
+No point carrying a bunch of code around that is never going to get
+called.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_sreset.c     |  7 -------
+ drivers/staging/rtl8723au/hal/rtl8723a_sreset.c | 14 --------------
+ drivers/staging/rtl8723au/include/rtw_sreset.h  |  8 --------
+ 3 files changed, 29 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_sreset.c b/drivers/staging/rtl8723au/core/rtw_sreset.c
+index c19831c..c152aef 100644
+--- a/drivers/staging/rtl8723au/core/rtw_sreset.c
++++ b/drivers/staging/rtl8723au/core/rtw_sreset.c
+@@ -37,13 +37,6 @@ void rtw_sreset_reset_value(struct rtw_adapter *padapter)
+ 	psrtpriv->last_tx_complete_time = 0;
+ }
+ 
+-void sreset_set_trigger_point(struct rtw_adapter *padapter, s32 tgp)
+-{
+-	struct hal_data_8723a	*pHalData = GET_HAL_DATA(padapter);
+-
+-	pHalData->srestpriv.dbg_trigger_point = tgp;
+-}
+-
+ bool rtw_sreset_inprogress(struct rtw_adapter *padapter)
+ {
+ 	struct rtw_adapter *primary_adapter = GET_PRIMARY_ADAPTER(padapter);
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c
+index 4374036..54a08a1 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c
+@@ -52,22 +52,8 @@ void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter)
+ 			}
+ 		}
+ 	}
+-
+-	if (psrtpriv->dbg_trigger_point == SRESET_TGP_XMIT_STATUS) {
+-		psrtpriv->dbg_trigger_point = SRESET_TGP_NULL;
+-		rtw_sreset_reset(padapter);
+-		return;
+-	}
+ }
+ 
+ void rtl8723a_sreset_linked_status_check(struct rtw_adapter *padapter)
+ {
+-	struct hal_data_8723a	*pHalData = GET_HAL_DATA(padapter);
+-	struct sreset_priv *psrtpriv = &pHalData->srestpriv;
+-
+-	if (psrtpriv->dbg_trigger_point == SRESET_TGP_LINK_STATUS) {
+-		psrtpriv->dbg_trigger_point = SRESET_TGP_NULL;
+-		rtw_sreset_reset(padapter);
+-		return;
+-	}
+ }
+diff --git a/drivers/staging/rtl8723au/include/rtw_sreset.h b/drivers/staging/rtl8723au/include/rtw_sreset.h
+index 4799614..60fa829 100644
+--- a/drivers/staging/rtl8723au/include/rtw_sreset.h
++++ b/drivers/staging/rtl8723au/include/rtw_sreset.h
+@@ -18,19 +18,11 @@
+ #include <osdep_service.h>
+ #include <drv_types.h>
+ 
+-enum {
+-	SRESET_TGP_NULL = 0,
+-	SRESET_TGP_XMIT_STATUS = 1,
+-	SRESET_TGP_LINK_STATUS = 2,
+-};
+-
+ struct sreset_priv {
+ 	struct mutex	silentreset_mutex;
+ 	u8	silent_reset_inprogress;
+ 	unsigned long last_tx_time;
+ 	unsigned long last_tx_complete_time;
+-
+-	s32 dbg_trigger_point;
+ };
+ 
+ #include <rtl8723a_hal.h>

Added: dists/sid/linux/debian/patches/features/all/r8723au/0175-staging-rtl8723au-Remove-no-op-rtl8723a_sreset_linke.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0175-staging-rtl8723au-Remove-no-op-rtl8723a_sreset_linke.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,50 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 26 Jun 2014 10:20:54 +0200
+Subject: [175/249] staging: rtl8723au: Remove no-op
+ rtl8723a_sreset_linked_status_check()
+Origin: https://git.kernel.org/linus/f2750d90565bf1ee629593472dd26fbb076bfc41
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c       | 2 --
+ drivers/staging/rtl8723au/hal/rtl8723a_sreset.c     | 4 ----
+ drivers/staging/rtl8723au/include/rtl8723a_sreset.h | 1 -
+ 3 files changed, 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 09e5a59..3655ee5 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -5215,8 +5215,6 @@ void linked_status_chk23a(struct rtw_adapter *padapter)
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	struct sta_priv *pstapriv = &padapter->stapriv;
+ 
+-	rtl8723a_sreset_linked_status_check(padapter);
+-
+ 	if (is_client_associated_to_ap23a(padapter)) {
+ 		/* linked infrastructure client mode */
+ 
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c
+index 54a08a1..3c46294 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_sreset.c
+@@ -53,7 +53,3 @@ void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter)
+ 		}
+ 	}
+ }
+-
+-void rtl8723a_sreset_linked_status_check(struct rtw_adapter *padapter)
+-{
+-}
+diff --git a/drivers/staging/rtl8723au/include/rtl8723a_sreset.h b/drivers/staging/rtl8723au/include/rtl8723a_sreset.h
+index 82af6a2..6197910 100644
+--- a/drivers/staging/rtl8723au/include/rtl8723a_sreset.h
++++ b/drivers/staging/rtl8723au/include/rtl8723a_sreset.h
+@@ -20,6 +20,5 @@
+ #include <rtw_sreset.h>
+ 
+ void rtl8723a_sreset_xmit_status_check(struct rtw_adapter *padapter);
+-void rtl8723a_sreset_linked_status_check(struct rtw_adapter *padapter);
+ 
+ #endif

Added: dists/sid/linux/debian/patches/features/all/r8723au/0176-staging-rtl8723au-Remove-unused-rtw_pwr_wakeup_ex.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0176-staging-rtl8723au-Remove-unused-rtw_pwr_wakeup_ex.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,24 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 26 Jun 2014 10:20:55 +0200
+Subject: [176/249] staging: rtl8723au: Remove unused rtw_pwr_wakeup_ex()
+Origin: https://git.kernel.org/linus/80f8210abc5ecd5c12c31e57c46a7758396978e1
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/rtw_pwrctrl.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+index a458af9..577914d 100644
+--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+@@ -253,8 +253,6 @@ int _rtw_pwr_wakeup23a(struct rtw_adapter *padapter, u32 ips_deffer_ms,
+ 		    const char *caller);
+ #define rtw_pwr_wakeup(adapter) _rtw_pwr_wakeup23a(adapter,		\
+ 	 RTW_PWR_STATE_CHK_INTERVAL, __func__)
+-#define rtw_pwr_wakeup_ex(adapter, ips_deffer_ms)			\
+-	 _rtw_pwr_wakeup23a(adapter, ips_deffer_ms, __func__)
+ int rtw_pm_set_ips23a(struct rtw_adapter *padapter, u8 mode);
+ int rtw_pm_set_lps23a(struct rtw_adapter *padapter, u8 mode);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0177-staging-rtl8723au-Clean-up-rtw_pm_set_ips23a.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0177-staging-rtl8723au-Clean-up-rtw_pm_set_ips23a.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,59 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 1 Jul 2014 10:11:14 +0200
+Subject: [177/249] staging: rtl8723au: Clean up rtw_pm_set_ips23a()
+Origin: https://git.kernel.org/linus/c742e339d5ed554cc20f20df56ae90b553405c9c
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_pwrctrl.c    | 15 ++++++---------
+ drivers/staging/rtl8723au/include/rtw_pwrctrl.h |  6 ------
+ 2 files changed, 6 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
+index 7dc7c90..ef29118 100644
+--- a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
++++ b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
+@@ -615,19 +615,16 @@ int rtw_pm_set_ips23a(struct rtw_adapter *padapter, u8 mode)
+ {
+ 	struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv;
+ 
+-	if (mode == IPS_NORMAL || mode == IPS_LEVEL_2) {
+-		rtw_ips_mode_req(pwrctrlpriv, mode);
+-		DBG_8723A("%s %s\n", __func__,
+-			  mode == IPS_NORMAL?"IPS_NORMAL":"IPS_LEVEL_2");
+-		return 0;
+-	} else if (mode == IPS_NONE) {
+-		rtw_ips_mode_req(pwrctrlpriv, mode);
++	if (mode != IPS_NORMAL && mode != IPS_LEVEL_2 && mode != IPS_NONE)
++		return -EINVAL;
++
++	pwrctrlpriv->ips_mode_req = mode;
++	if (mode == IPS_NONE) {
+ 		DBG_8723A("%s %s\n", __func__, "IPS_NONE");
+ 		if (padapter->bSurpriseRemoved == 0 &&
+ 		    rtw_pwr_wakeup(padapter) == _FAIL)
+ 			return -EFAULT;
+-	} else
+-		return -EINVAL;
++	}
+ 
+ 	return 0;
+ }
+diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+index 577914d..97bb569 100644
+--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+@@ -214,12 +214,6 @@ struct pwrctrl_priv {
+ 	unsigned long PS_BBRegBackup[PSBBREG_TOTALCNT];
+ };
+ 
+-#define rtw_get_ips_mode_req(pwrctrlpriv) \
+-	((pwrctrlpriv)->ips_mode_req)
+-
+-#define rtw_ips_mode_req(pwrctrlpriv, ips_mode) \
+-	((pwrctrlpriv)->ips_mode_req = (ips_mode))
+-
+ #define RTW_PWR_STATE_CHK_INTERVAL 2000
+ 
+ #define _rtw_set_pwr_state_check_timer(pwrctrlpriv, ms) \

Added: dists/sid/linux/debian/patches/features/all/r8723au/0178-staging-rtl8723au-Fold-power_saving_wk_hdl-into-rtw_.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0178-staging-rtl8723au-Fold-power_saving_wk_hdl-into-rtw_.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,38 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 1 Jul 2014 10:11:15 +0200
+Subject: [178/249] staging: rtl8723au: Fold power_saving_wk_hdl() into
+ rtw_drvextra_cmd_hdl23a()
+Origin: https://git.kernel.org/linus/462eb49eae7060081d6e29e93c6defb866580e91
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_cmd.c | 8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_cmd.c b/drivers/staging/rtl8723au/core/rtw_cmd.c
+index 35f879e..f44f941 100644
+--- a/drivers/staging/rtl8723au/core/rtw_cmd.c
++++ b/drivers/staging/rtl8723au/core/rtw_cmd.c
+@@ -1113,11 +1113,6 @@ exit:
+ 	return res;
+ }
+ 
+-static void power_saving_wk_hdl(struct rtw_adapter *padapter, u8 *pbuf, int sz)
+-{
+-	 rtw_ps_processor23a(padapter);
+-}
+-
+ int rtw_ps_cmd23a(struct rtw_adapter*padapter)
+ {
+ 	struct cmd_obj *ppscmd;
+@@ -1332,8 +1327,7 @@ int rtw_drvextra_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 				   pdrvextra_cmd->type_size);
+ 		break;
+ 	case POWER_SAVING_CTRL_WK_CID:
+-		power_saving_wk_hdl(padapter, pdrvextra_cmd->pbuf,
+-				    pdrvextra_cmd->type_size);
++		rtw_ps_processor23a(padapter);
+ 		break;
+ 	case LPS_CTRL_WK_CID:
+ 		lps_ctrl_wk_hdl(padapter, (u8)pdrvextra_cmd->type_size);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0179-staging-rtl8723au-Remove-unused-pwrctrl_priv-brfoffb.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0179-staging-rtl8723au-Remove-unused-pwrctrl_priv-brfoffb.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,49 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 1 Jul 2014 10:11:16 +0200
+Subject: [179/249] staging: rtl8723au: Remove unused pwrctrl_priv->brfoffbyhw
+Origin: https://git.kernel.org/linus/bf51ee79fd468f958ce191f01bf4995fb3eb354c
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_pwrctrl.c    | 1 -
+ drivers/staging/rtl8723au/include/rtw_pwrctrl.h | 1 -
+ drivers/staging/rtl8723au/os_dep/usb_intf.c     | 1 -
+ 3 files changed, 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
+index ef29118..ad06335 100644
+--- a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
++++ b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
+@@ -165,7 +165,6 @@ void rtw_ps_processor23a(struct rtw_adapter*padapter)
+ 		if (rfpwrstate!= pwrpriv->rf_pwrstate) {
+ 			if (rfpwrstate == rf_off) {
+ 				pwrpriv->change_rfpwrstate = rf_off;
+-				pwrpriv->brfoffbyhw = true;
+ 				padapter->bCardDisableWOHSM = true;
+ 				rtw_hw_suspend23a(padapter);
+ 			} else {
+diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+index 97bb569..110bad9 100644
+--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+@@ -210,7 +210,6 @@ struct pwrctrl_priv {
+ 	u8	bHWPowerdown;/* if support hw power down */
+ 	u8	bHWPwrPindetect;
+ 	u8	bkeepfwalive;
+-	u8	brfoffbyhw;
+ 	unsigned long PS_BBRegBackup[PSBBREG_TOTALCNT];
+ };
+ 
+diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+index d0a3a1e6..e0d5514 100644
+--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c
++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+@@ -416,7 +416,6 @@ int rtw_hw_resume23a(struct rtw_adapter *padapter)
+ 			netif_tx_wake_all_queues(pnetdev);
+ 
+ 		pwrpriv->bkeepfwalive = false;
+-		pwrpriv->brfoffbyhw = false;
+ 
+ 		pwrpriv->rf_pwrstate = rf_on;
+ 		pwrpriv->bips_processing = false;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0180-staging-rtl8723au-Remove-unused-variables-from-struc.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0180-staging-rtl8723au-Remove-unused-variables-from-struc.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,43 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 1 Jul 2014 10:11:17 +0200
+Subject: [180/249] staging: rtl8723au: Remove unused variables from struct
+ pwrctrl_priv
+Origin: https://git.kernel.org/linus/46eff7392d23d6ec8e2b1d02bc90e6cdb2c72d41
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/rtw_pwrctrl.h | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+index 110bad9..2142255 100644
+--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+@@ -155,18 +155,14 @@ struct pwrctrl_priv {
+ 			   * read from HCPWM 2. driver lowers power level
+ 			   */
+ 	volatile u8 tog; /*  toggling */
+-	volatile u8 cpwm_tog; /*  toggling */
+ 
+ 	u8	pwr_mode;
+ 	u8	smart_ps;
+ 	u8	bcn_ant_mode;
+ 
+-	u32	alives;
+-	struct work_struct cpwm_event;
+ 	u8	bpower_saving;
+ 
+ 	u8	reg_rfoff;
+-	u8	reg_pdnmode; /* powerdown mode */
+ 	u32	rfoff_reason;
+ 
+ 	/* RF OFF Level */
+@@ -206,7 +202,6 @@ struct pwrctrl_priv {
+ 	enum rt_rf_power_state	rf_pwrstate;/* cur power state */
+ 	enum rt_rf_power_state	change_rfpwrstate;
+ 
+-	u8	wepkeymask;
+ 	u8	bHWPowerdown;/* if support hw power down */
+ 	u8	bHWPwrPindetect;
+ 	u8	bkeepfwalive;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0181-staging-rtl8723au-pnp_bstop_trx-is-never-set.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0181-staging-rtl8723au-pnp_bstop_trx-is-never-set.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,80 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 1 Jul 2014 10:11:18 +0200
+Subject: [181/249] staging: rtl8723au: pnp_bstop_trx is never set
+Origin: https://git.kernel.org/linus/e976cf6f135713cb6f4c904bf24fadfbbf325160
+
+In addition remove unused pnp_current_pwr_state
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/usb_ops_linux.c    | 11 ++++-------
+ drivers/staging/rtl8723au/include/rtw_pwrctrl.h  |  2 --
+ drivers/staging/rtl8723au/os_dep/usb_ops_linux.c |  8 +++-----
+ 3 files changed, 7 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/usb_ops_linux.c b/drivers/staging/rtl8723au/hal/usb_ops_linux.c
+index 23af718..780658c 100644
+--- a/drivers/staging/rtl8723au/hal/usb_ops_linux.c
++++ b/drivers/staging/rtl8723au/hal/usb_ops_linux.c
+@@ -34,10 +34,9 @@ static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request,
+ 	u8 *pIo_buf;
+ 	int vendorreq_times = 0;
+ 
+-	if (padapter->bSurpriseRemoved || padapter->pwrctrlpriv.pnp_bstop_trx) {
++	if (padapter->bSurpriseRemoved) {
+ 		RT_TRACE(_module_hci_ops_os_c_, _drv_err_,
+-			 ("usbctrl_vendorreq:(padapter->bSurpriseRemoved||"
+-			  "adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n"));
++			 ("usbctrl_vendorreq:(padapter->bSurpriseRemoved)!!!"));
+ 		status = -EPERM;
+ 		goto exit;
+ 	}
+@@ -743,12 +742,10 @@ int rtl8723au_read_port(struct rtw_adapter *adapter, u32 addr, u32 cnt,
+ 	struct recv_priv *precvpriv = &adapter->recvpriv;
+ 	struct usb_device *pusbd = pdvobj->pusbdev;
+ 
+-	if (adapter->bDriverStopped || adapter->bSurpriseRemoved ||
+-	    adapter->pwrctrlpriv.pnp_bstop_trx) {
++	if (adapter->bDriverStopped || adapter->bSurpriseRemoved) {
+ 		RT_TRACE(_module_hci_ops_os_c_, _drv_err_,
+ 			 ("usb_read_port:(padapter->bDriverStopped ||"
+-			  "padapter->bSurpriseRemoved ||adapter->"
+-			  "pwrctrlpriv.pnp_bstop_trx)!!!\n"));
++			  "padapter->bSurpriseRemoved)!!!\n"));
+ 		return _FAIL;
+ 	}
+ 
+diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+index 2142255..45e13ce 100644
+--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+@@ -184,8 +184,6 @@ struct pwrctrl_priv {
+ 	u8	bFwCurrentInPSMode;
+ 	unsigned long	DelayLPSLastTimeStamp;
+ 	u8	btcoex_rfon;
+-	s32		pnp_current_pwr_state;
+-	u8		pnp_bstop_trx;
+ 
+ 	u8		bInSuspend;
+ #ifdef	CONFIG_8723AU_BT_COEXIST
+diff --git a/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c b/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c
+index 3352807..a3349ac 100644
+--- a/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c
++++ b/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c
+@@ -153,12 +153,10 @@ int rtl8723au_write_port(struct rtw_adapter *padapter, u32 addr, u32 cnt,
+ 
+ 	RT_TRACE(_module_hci_ops_os_c_, _drv_err_, ("+usb_write_port23a\n"));
+ 
+-	if (padapter->bDriverStopped || padapter->bSurpriseRemoved ||
+-	    padapter->pwrctrlpriv.pnp_bstop_trx) {
++	if (padapter->bDriverStopped || padapter->bSurpriseRemoved) {
+ 		RT_TRACE(_module_hci_ops_os_c_, _drv_err_,
+-			 ("usb_write_port23a:( padapter->bDriverStopped || "
+-			  "padapter->bSurpriseRemoved || "
+-			  "adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n"));
++			 ("%s:(padapter->bDriverStopped || "
++			  "padapter->bSurpriseRemoved)!!!\n", __func__));
+ 		rtw23a_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_TX_DENY);
+ 		goto exit;
+ 	}

Added: dists/sid/linux/debian/patches/features/all/r8723au/0182-staging-rtl8723au-pwrctrl_priv-ps_flag-is-never-set.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0182-staging-rtl8723au-pwrctrl_priv-ps_flag-is-never-set.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,48 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 1 Jul 2014 10:11:19 +0200
+Subject: [182/249] staging: rtl8723au: pwrctrl_priv->ps_flag is never set
+Origin: https://git.kernel.org/linus/c3a3e226113dc43a0acdca3b98a7e175cc8b622b
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/rtw_pwrctrl.h | 2 --
+ drivers/staging/rtl8723au/os_dep/os_intfs.c     | 5 -----
+ 2 files changed, 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+index 45e13ce..1fa712f 100644
+--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+@@ -195,8 +195,6 @@ struct pwrctrl_priv {
+ 	int		pwr_state_check_interval;
+ 	u8		pwr_state_check_cnts;
+ 
+-	int		ps_flag;
+-
+ 	enum rt_rf_power_state	rf_pwrstate;/* cur power state */
+ 	enum rt_rf_power_state	change_rfpwrstate;
+ 
+diff --git a/drivers/staging/rtl8723au/os_dep/os_intfs.c b/drivers/staging/rtl8723au/os_dep/os_intfs.c
+index ee3d62c..7fa5c4c 100644
+--- a/drivers/staging/rtl8723au/os_dep/os_intfs.c
++++ b/drivers/staging/rtl8723au/os_dep/os_intfs.c
+@@ -663,10 +663,6 @@ int netdev_open23a(struct net_device *pnetdev)
+ 	mutex_lock(&adapter_to_dvobj(padapter)->hw_init_mutex);
+ 
+ 	pwrctrlpriv = &padapter->pwrctrlpriv;
+-	if (pwrctrlpriv->ps_flag) {
+-		padapter->net_closed = false;
+-		goto netdev_open23a_normal_process;
+-	}
+ 
+ 	if (!padapter->bup) {
+ 		padapter->bDriverStopped = false;
+@@ -711,7 +707,6 @@ int netdev_open23a(struct net_device *pnetdev)
+ 	else
+ 		netif_tx_wake_all_queues(pnetdev);
+ 
+-netdev_open23a_normal_process:
+ 	RT_TRACE(_module_os_intfs_c_, _drv_info_, ("-871x_drv - dev_open\n"));
+ 	DBG_8723A("-871x_drv - drv_open, bup =%d\n", padapter->bup);
+ exit:

Added: dists/sid/linux/debian/patches/features/all/r8723au/0183-staging-rtl8723au-Remove-never-set-struct-rtw_adapte.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0183-staging-rtl8723au-Remove-never-set-struct-rtw_adapte.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,69 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 1 Jul 2014 10:11:20 +0200
+Subject: [183/249] staging: rtl8723au: Remove never set struct
+ rtw_adapter->bNotifyChannelChange
+Origin: https://git.kernel.org/linus/a4f3d3c776140bb739353ca8614fd1105c696d97
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c  | 4 ----
+ drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c | 3 ---
+ drivers/staging/rtl8723au/include/drv_types.h   | 2 --
+ drivers/staging/rtl8723au/os_dep/os_intfs.c     | 1 -
+ 4 files changed, 10 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 66e72e2..25dae51 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -360,10 +360,6 @@ void set_channel_bwmode23a(struct rtw_adapter *padapter, unsigned char channel,
+ {
+ 	u8 center_ch;
+ 
+-	if (padapter->bNotifyChannelChange)
+-		DBG_8723A("[%s] ch = %d, offset = %d, bwmode = %d\n",
+-			  __func__, channel, channel_offset, bwmode);
+-
+ 	if (bwmode == HT_CHANNEL_WIDTH_20 ||
+ 	    channel_offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE) {
+ 		/* SelectChannel23a(padapter, channel); */
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c
+index d23525e..8a6ba63 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c
+@@ -1098,9 +1098,6 @@ static void _PHY_SwChnl8723A(struct rtw_adapter *Adapter, u8 channel)
+ 	u32 param1, param2;
+ 	struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);
+ 
+-	if (Adapter->bNotifyChannelChange)
+-		DBG_8723A("[%s] ch = %d\n", __func__, channel);
+-
+ 	/* s1. pre common command - CmdID_SetTxPowerLevel */
+ 	PHY_SetTxPowerLevel8723A(Adapter, channel);
+ 
+diff --git a/drivers/staging/rtl8723au/include/drv_types.h b/drivers/staging/rtl8723au/include/drv_types.h
+index 3ef9d7a..c06de68 100644
+--- a/drivers/staging/rtl8723au/include/drv_types.h
++++ b/drivers/staging/rtl8723au/include/drv_types.h
+@@ -257,8 +257,6 @@ struct rtw_adapter {
+ 	u8 bFWReady;
+ 	u8 bReadPortCancel;
+ 	u8 bWritePortCancel;
+-	/* The driver will show the desired chan nor when this flag is 1. */
+-	u8 bNotifyChannelChange;
+ 
+ 	/* extend to support multi interface */
+ 	/* IFACE_ID0 is equals to PRIMARY_ADAPTER */
+diff --git a/drivers/staging/rtl8723au/os_dep/os_intfs.c b/drivers/staging/rtl8723au/os_dep/os_intfs.c
+index 7fa5c4c..d72305d 100644
+--- a/drivers/staging/rtl8723au/os_dep/os_intfs.c
++++ b/drivers/staging/rtl8723au/os_dep/os_intfs.c
+@@ -425,7 +425,6 @@ static int rtw_init_default_value(struct rtw_adapter *padapter)
+ 	/* misc. */
+ 	padapter->bReadPortCancel = false;
+ 	padapter->bWritePortCancel = false;
+-	padapter->bNotifyChannelChange = 0;
+ 	return ret;
+ }
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0184-staging-rtl8723au-Sanitize-USB-read-write-functions.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0184-staging-rtl8723au-Sanitize-USB-read-write-functions.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,474 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 1 Jul 2014 12:07:00 +0200
+Subject: [184/249] staging: rtl8723au: Sanitize USB read/write functions
+Origin: https://git.kernel.org/linus/2786faa33bfc8d61b4fa45dd2e31664de796c837
+
+The original Realtek provided functions suffered badly from clutter to
+accommodate broken operating systems. Lets try this lean and clean
+version instead.
+
+v2: Do not use the stack for data passed to usb_control_msg(). This
+    requires reintroducing the mutex used in the old function. In
+    addition, get rid of the no longer used 'usb_vendor_req_buf'.
+    Note that rtl8723au_writeN() remains unlocked, so it can be used
+    for bulk block transfers without having to retake the mutex for
+    every write().
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/usb_ops_linux.c     | 299 +++++++---------------
+ drivers/staging/rtl8723au/include/drv_types.h     |   9 +-
+ drivers/staging/rtl8723au/include/usb_ops_linux.h |  14 +-
+ drivers/staging/rtl8723au/os_dep/usb_intf.c       |  21 +-
+ 4 files changed, 105 insertions(+), 238 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/usb_ops_linux.c b/drivers/staging/rtl8723au/hal/usb_ops_linux.c
+index 780658c..c1b04c1 100644
+--- a/drivers/staging/rtl8723au/hal/usb_ops_linux.c
++++ b/drivers/staging/rtl8723au/hal/usb_ops_linux.c
+@@ -22,270 +22,149 @@
+ #include <rtl8723a_hal.h>
+ #include <rtl8723a_recv.h>
+ 
+-static int usbctrl_vendorreq(struct rtw_adapter *padapter, u8 request,
+-			     u16 value, u16 index, void *pdata, u16 len,
+-			     u8 requesttype)
++u8 rtl8723au_read8(struct rtw_adapter *padapter, u16 addr)
+ {
+ 	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
+ 	struct usb_device *udev = pdvobjpriv->pusbdev;
+-	unsigned int pipe;
+-	int status = 0;
+-	u8 reqtype;
+-	u8 *pIo_buf;
+-	int vendorreq_times = 0;
+-
+-	if (padapter->bSurpriseRemoved) {
+-		RT_TRACE(_module_hci_ops_os_c_, _drv_err_,
+-			 ("usbctrl_vendorreq:(padapter->bSurpriseRemoved)!!!"));
+-		status = -EPERM;
+-		goto exit;
+-	}
+-
+-	if (len > MAX_VENDOR_REQ_CMD_SIZE) {
+-		DBG_8723A("[%s] Buffer len error , vendor request failed\n",
+-			  __func__);
+-		status = -EINVAL;
+-		goto exit;
+-	}
++	int len;
++	u8 data;
+ 
+ 	mutex_lock(&pdvobjpriv->usb_vendor_req_mutex);
++	len = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
++			      REALTEK_USB_VENQT_CMD_REQ, REALTEK_USB_VENQT_READ,
++			      addr, 0, &pdvobjpriv->usb_buf.val8, sizeof(data),
++			      RTW_USB_CONTROL_MSG_TIMEOUT);
+ 
+-	/*  Acquire IO memory for vendorreq */
+-	pIo_buf = pdvobjpriv->usb_vendor_req_buf;
+-
+-	if (pIo_buf == NULL) {
+-		DBG_8723A("[%s] pIo_buf == NULL \n", __func__);
+-		status = -ENOMEM;
+-		goto release_mutex;
+-	}
+-
+-	while (++vendorreq_times <= MAX_USBCTRL_VENDORREQ_TIMES) {
+-		memset(pIo_buf, 0, len);
+-
+-		if (requesttype == 0x01) {
+-			pipe = usb_rcvctrlpipe(udev, 0);/* read_in */
+-			reqtype =  REALTEK_USB_VENQT_READ;
+-		} else {
+-			pipe = usb_sndctrlpipe(udev, 0);/* write_out */
+-			reqtype =  REALTEK_USB_VENQT_WRITE;
+-			memcpy(pIo_buf, pdata, len);
+-		}
+-
+-		status = usb_control_msg(udev, pipe, request, reqtype,
+-					 value, index, pIo_buf, len,
+-					 RTW_USB_CONTROL_MSG_TIMEOUT);
+-
+-		if (status == len) {   /*  Success this control transfer. */
+-			rtw_reset_continual_urb_error(pdvobjpriv);
+-			if (requesttype == 0x01) {
+-				/* For Control read transfer, we have to copy
+-				 * the read data from pIo_buf to pdata.
+-				 */
+-				memcpy(pdata, pIo_buf,  len);
+-			}
+-		} else { /*  error cases */
+-			DBG_8723A("reg 0x%x, usb %s %u fail, status:%d value ="
+-				  " 0x%x, vendorreq_times:%d\n",
+-				  value, (requesttype == 0x01) ?
+-				  "read" : "write",
+-				  len, status, *(u32 *)pdata, vendorreq_times);
+-
+-			if (status < 0) {
+-				if (status == -ESHUTDOWN || status == -ENODEV)
+-					padapter->bSurpriseRemoved = true;
+-			} else { /*  status != len && status >= 0 */
+-				if (status > 0) {
+-					if (requesttype == 0x01) {
+-						/*
+-						 * For Control read transfer,
+-						 * we have to copy the read
+-						 * data from pIo_buf to pdata.
+-						 */
+-						memcpy(pdata, pIo_buf,  len);
+-					}
+-				}
+-			}
+-
+-			if (rtw_inc_and_chk_continual_urb_error(pdvobjpriv)) {
+-				padapter->bSurpriseRemoved = true;
+-				break;
+-			}
+-		}
+-
+-		/*  firmware download is checksumed, don't retry */
+-		if ((value >= FW_8723A_START_ADDRESS &&
+-		     value <= FW_8723A_END_ADDRESS) || status == len)
+-			break;
+-	}
+-
+-release_mutex:
++	data = pdvobjpriv->usb_buf.val8;
+ 	mutex_unlock(&pdvobjpriv->usb_vendor_req_mutex);
+-exit:
+-	return status;
+-}
+-
+-u8 rtl8723au_read8(struct rtw_adapter *padapter, u32 addr)
+-{
+-	u8 request;
+-	u8 requesttype;
+-	u16 wvalue;
+-	u16 index;
+-	u16 len;
+-	u8 data = 0;
+-
+-	request = 0x05;
+-	requesttype = 0x01;/* read_in */
+-	index = 0;/* n/a */
+-
+-	wvalue = (u16)(addr&0x0000ffff);
+-	len = 1;
+-
+-	usbctrl_vendorreq(padapter, request, wvalue, index, &data,
+-			  len, requesttype);
+ 
+ 	return data;
+ }
+ 
+-u16 rtl8723au_read16(struct rtw_adapter *padapter, u32 addr)
++u16 rtl8723au_read16(struct rtw_adapter *padapter, u16 addr)
+ {
+-	u8 request;
+-	u8 requesttype;
+-	u16 wvalue;
+-	u16 index;
+-	u16 len;
+-	__le16 data;
+-
+-	request = 0x05;
+-	requesttype = 0x01;/* read_in */
+-	index = 0;/* n/a */
++	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
++	struct usb_device *udev = pdvobjpriv->pusbdev;
++	int len;
++	u16 data;
+ 
+-	wvalue = (u16)(addr&0x0000ffff);
+-	len = 2;
++	mutex_lock(&pdvobjpriv->usb_vendor_req_mutex);
++	len = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
++			      REALTEK_USB_VENQT_CMD_REQ, REALTEK_USB_VENQT_READ,
++			      addr, 0, &pdvobjpriv->usb_buf.val16, sizeof(data),
++			      RTW_USB_CONTROL_MSG_TIMEOUT);
+ 
+-	usbctrl_vendorreq(padapter, request, wvalue, index, &data,
+-			  len, requesttype);
++	data = le16_to_cpu(pdvobjpriv->usb_buf.val16);
++	mutex_unlock(&pdvobjpriv->usb_vendor_req_mutex);
+ 
+-	return le16_to_cpu(data);
++	return data;
+ }
+ 
+-u32 rtl8723au_read32(struct rtw_adapter *padapter, u32 addr)
++u32 rtl8723au_read32(struct rtw_adapter *padapter, u16 addr)
+ {
+-	u8 request;
+-	u8 requesttype;
+-	u16 wvalue;
+-	u16 index;
+-	u16 len;
+-	__le32 data;
+-
+-	request = 0x05;
+-	requesttype = 0x01;/* read_in */
+-	index = 0;/* n/a */
++	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
++	struct usb_device *udev = pdvobjpriv->pusbdev;
++	int len;
++	u32 data;
+ 
+-	wvalue = (u16)(addr&0x0000ffff);
+-	len = 4;
++	mutex_lock(&pdvobjpriv->usb_vendor_req_mutex);
++	len = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
++			      REALTEK_USB_VENQT_CMD_REQ, REALTEK_USB_VENQT_READ,
++			      addr, 0, &pdvobjpriv->usb_buf.val32, sizeof(data),
++			      RTW_USB_CONTROL_MSG_TIMEOUT);
+ 
+-	usbctrl_vendorreq(padapter, request, wvalue, index, &data,
+-			  len, requesttype);
++	data = le32_to_cpu(pdvobjpriv->usb_buf.val32);
++	mutex_unlock(&pdvobjpriv->usb_vendor_req_mutex);
+ 
+-	return le32_to_cpu(data);
++	return data;
+ }
+ 
+-int rtl8723au_write8(struct rtw_adapter *padapter, u32 addr, u8 val)
++int rtl8723au_write8(struct rtw_adapter *padapter, u16 addr, u8 val)
+ {
+-	u8 request;
+-	u8 requesttype;
+-	u16 wvalue;
+-	u16 index;
+-	u16 len;
+-	u8 data;
++	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
++	struct usb_device *udev = pdvobjpriv->pusbdev;
+ 	int ret;
+ 
+-	request = 0x05;
+-	requesttype = 0x00;/* write_out */
+-	index = 0;/* n/a */
+-
+-	wvalue = (u16)(addr&0x0000ffff);
+-	len = 1;
++	mutex_lock(&pdvobjpriv->usb_vendor_req_mutex);
++	pdvobjpriv->usb_buf.val8 = val;
+ 
+-	data = val;
++	ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
++			      REALTEK_USB_VENQT_CMD_REQ,
++			      REALTEK_USB_VENQT_WRITE,
++			      addr, 0, &pdvobjpriv->usb_buf.val8, sizeof(val),
++			      RTW_USB_CONTROL_MSG_TIMEOUT);
+ 
+-	ret = usbctrl_vendorreq(padapter, request, wvalue, index, &data,
+-				len, requesttype);
++	if (ret != sizeof(val))
++		ret = _FAIL;
++	else
++		ret = _SUCCESS;
+ 
++	mutex_unlock(&pdvobjpriv->usb_vendor_req_mutex);
+ 	return ret;
+ }
+ 
+-int rtl8723au_write16(struct rtw_adapter *padapter, u32 addr, u16 val)
++int rtl8723au_write16(struct rtw_adapter *padapter, u16 addr, u16 val)
+ {
+-	u8 request;
+-	u8 requesttype;
+-	u16 wvalue;
+-	u16 index;
+-	u16 len;
+-	__le16 data;
++	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
++	struct usb_device *udev = pdvobjpriv->pusbdev;
+ 	int ret;
+ 
+-	request = 0x05;
+-	requesttype = 0x00;/* write_out */
+-	index = 0;/* n/a */
++	mutex_lock(&pdvobjpriv->usb_vendor_req_mutex);
++	pdvobjpriv->usb_buf.val16 = cpu_to_le16(val);
+ 
+-	wvalue = (u16)(addr&0x0000ffff);
+-	len = 2;
++	ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
++			      REALTEK_USB_VENQT_CMD_REQ,
++			      REALTEK_USB_VENQT_WRITE,
++			      addr, 0, &pdvobjpriv->usb_buf.val16, sizeof(val),
++			      RTW_USB_CONTROL_MSG_TIMEOUT);
+ 
+-	data = cpu_to_le16(val);
++	if (ret != sizeof(val))
++		ret = _FAIL;
++	else
++		ret = _SUCCESS;
+ 
+-	ret = usbctrl_vendorreq(padapter, request, wvalue, index, &data,
+-				len, requesttype);
++	mutex_unlock(&pdvobjpriv->usb_vendor_req_mutex);
+ 	return ret;
+ }
+ 
+-int rtl8723au_write32(struct rtw_adapter *padapter, u32 addr, u32 val)
++int rtl8723au_write32(struct rtw_adapter *padapter, u16 addr, u32 val)
+ {
+-	u8 request;
+-	u8 requesttype;
+-	u16 wvalue;
+-	u16 index;
+-	u16 len;
+-	__le32 data;
++	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
++	struct usb_device *udev = pdvobjpriv->pusbdev;
+ 	int ret;
+ 
+-	request = 0x05;
+-	requesttype = 0x00;/* write_out */
+-	index = 0;/* n/a */
++	mutex_lock(&pdvobjpriv->usb_vendor_req_mutex);
++	pdvobjpriv->usb_buf.val32 = cpu_to_le32(val);
+ 
+-	wvalue = (u16)(addr&0x0000ffff);
+-	len = 4;
+-	data = cpu_to_le32(val);
++	ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
++			      REALTEK_USB_VENQT_CMD_REQ,
++			      REALTEK_USB_VENQT_WRITE,
++			      addr, 0, &pdvobjpriv->usb_buf.val32, sizeof(val),
++			      RTW_USB_CONTROL_MSG_TIMEOUT);
+ 
+-	ret = usbctrl_vendorreq(padapter, request, wvalue, index, &data,
+-				len, requesttype);
++	if (ret != sizeof(val))
++		ret = _FAIL;
++	else
++		ret = _SUCCESS;
+ 
++	mutex_unlock(&pdvobjpriv->usb_vendor_req_mutex);
+ 	return ret;
+ }
+ 
+-int rtl8723au_writeN(struct rtw_adapter *padapter,
+-		     u32 addr, u32 length, u8 *pdata)
++int rtl8723au_writeN(struct rtw_adapter *padapter, u16 addr, u16 len, u8 *buf)
+ {
+-	u8 request;
+-	u8 requesttype;
+-	u16 wvalue;
+-	u16 index;
+-	u16 len;
+-	u8 buf[VENDOR_CMD_MAX_DATA_LEN] = {0};
++	struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
++	struct usb_device *udev = pdvobjpriv->pusbdev;
+ 	int ret;
+ 
+-	request = 0x05;
+-	requesttype = 0x00;/* write_out */
+-	index = 0;/* n/a */
+-
+-	wvalue = (u16)(addr&0x0000ffff);
+-	len = length;
+-	memcpy(buf, pdata, len);
++	ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
++			      REALTEK_USB_VENQT_CMD_REQ,
++			      REALTEK_USB_VENQT_WRITE,
++			      addr, 0, buf, len, RTW_USB_CONTROL_MSG_TIMEOUT);
+ 
+-	ret = usbctrl_vendorreq(padapter, request, wvalue, index, buf,
+-				len, requesttype);
+-
+-	return ret;
++	if (ret != len)
++		return _FAIL;
++	return _SUCCESS;
+ }
+ 
+ /*
+diff --git a/drivers/staging/rtl8723au/include/drv_types.h b/drivers/staging/rtl8723au/include/drv_types.h
+index c06de68..df55e5b 100644
+--- a/drivers/staging/rtl8723au/include/drv_types.h
++++ b/drivers/staging/rtl8723au/include/drv_types.h
+@@ -177,10 +177,13 @@ struct dvobj_priv {
+ 	u8	RtNumOutPipes;
+ 	int	ep_num[5]; /* endpoint number */
+ 
+-	struct mutex  usb_vendor_req_mutex;
++	struct mutex usb_vendor_req_mutex;
+ 
+-	u8 *usb_alloc_vendor_req_buf;
+-	u8 *usb_vendor_req_buf;
++	union {
++		__le32 val32;
++		__le16 val16;
++		u8 val8;
++	} usb_buf;
+ 
+ 	struct usb_interface *pusbintf;
+ 	struct usb_device *pusbdev;
+diff --git a/drivers/staging/rtl8723au/include/usb_ops_linux.h b/drivers/staging/rtl8723au/include/usb_ops_linux.h
+index e540a4b..bf68bbb 100644
+--- a/drivers/staging/rtl8723au/include/usb_ops_linux.h
++++ b/drivers/staging/rtl8723au/include/usb_ops_linux.h
+@@ -29,13 +29,13 @@ int rtl8723au_write_port(struct rtw_adapter *padapter, u32 addr, u32 cnt,
+ void rtl8723au_write_port_cancel(struct rtw_adapter *padapter);
+ int rtl8723au_read_interrupt(struct rtw_adapter *adapter, u32 addr);
+ 
+-u8 rtl8723au_read8(struct rtw_adapter *padapter, u32 addr);
+-u16 rtl8723au_read16(struct rtw_adapter *padapter, u32 addr);
+-u32 rtl8723au_read32(struct rtw_adapter *padapter, u32 addr);
+-int rtl8723au_write8(struct rtw_adapter *padapter, u32 addr, u8 val);
+-int rtl8723au_write16(struct rtw_adapter *padapter, u32 addr, u16 val);
+-int rtl8723au_write32(struct rtw_adapter *padapter, u32 addr, u32 val);
++u8 rtl8723au_read8(struct rtw_adapter *padapter, u16 addr);
++u16 rtl8723au_read16(struct rtw_adapter *padapter, u16 addr);
++u32 rtl8723au_read32(struct rtw_adapter *padapter, u16 addr);
++int rtl8723au_write8(struct rtw_adapter *padapter, u16 addr, u8 val);
++int rtl8723au_write16(struct rtw_adapter *padapter, u16 addr, u16 val);
++int rtl8723au_write32(struct rtw_adapter *padapter, u16 addr, u32 val);
+ int rtl8723au_writeN(struct rtw_adapter *padapter,
+-		     u32 addr, u32 length, u8 *pdata);
++		     u16 addr, u16 length, u8 *pdata);
+ 
+ #endif
+diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+index e0d5514..ec90216 100644
+--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c
++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+@@ -101,31 +101,16 @@ static inline int RT_usb_endpoint_num(const struct usb_endpoint_descriptor *epd)
+ 
+ static int rtw_init_intf_priv(struct dvobj_priv *dvobj)
+ {
+-	int rst = _SUCCESS;
+-
+ 	mutex_init(&dvobj->usb_vendor_req_mutex);
+-	dvobj->usb_alloc_vendor_req_buf = kzalloc(MAX_USB_IO_CTL_SIZE,
+-						  GFP_KERNEL);
+-	if (dvobj->usb_alloc_vendor_req_buf == NULL) {
+-		DBG_8723A("alloc usb_vendor_req_buf failed...\n");
+-		rst = _FAIL;
+-		goto exit;
+-	}
+-	dvobj->usb_vendor_req_buf =
+-		PTR_ALIGN(dvobj->usb_alloc_vendor_req_buf, ALIGNMENT_UNIT);
+-exit:
+-	return rst;
++
++	return _SUCCESS;
+ }
+ 
+ static int rtw_deinit_intf_priv(struct dvobj_priv *dvobj)
+ {
+-	int rst = _SUCCESS;
+-
+-	kfree(dvobj->usb_alloc_vendor_req_buf);
+-
+ 	mutex_destroy(&dvobj->usb_vendor_req_mutex);
+ 
+-	return rst;
++	return _SUCCESS;
+ }
+ 
+ static struct dvobj_priv *usb_dvobj_init(struct usb_interface *usb_intf)

Added: dists/sid/linux/debian/patches/features/all/r8723au/0185-staging-rtl8723au-Simplify-_BlockWrite-based-on-sane.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0185-staging-rtl8723au-Simplify-_BlockWrite-based-on-sane.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,115 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Tue, 1 Jul 2014 10:11:22 +0200
+Subject: [185/249] staging: rtl8723au: Simplify _BlockWrite() based on saner
+ rtl8723au_writeN()
+Origin: https://git.kernel.org/linus/42f984eb6f0ed957825d13fa81c308a50c4cab17
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c | 89 ++---------------------
+ 1 file changed, 5 insertions(+), 84 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
+index 8b3473f..2bc830f 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
+@@ -49,93 +49,14 @@ static void _FWDownloadEnable(struct rtw_adapter *padapter, bool enable)
+ 
+ static int _BlockWrite(struct rtw_adapter *padapter, void *buffer, u32 buffSize)
+ {
+-	int ret = _SUCCESS;
+-	/*  (Default) Phase #1 : PCI muse use 4-byte write to download FW */
+-	u32 blockSize_p1 = 4;
+-	/*  Phase #2 : Use 8-byte, if Phase#1 use big size to write FW. */
+-	u32 blockSize_p2 = 8;
+-	/*  Phase #3 : Use 1-byte, the remnant of FW image. */
+-	u32 blockSize_p3 = 1;
+-	u32 blockCount_p1 = 0, blockCount_p2 = 0, blockCount_p3 = 0;
+-	u32 remainSize_p1 = 0, remainSize_p2 = 0;
+-	u8 *bufferPtr = (u8 *) buffer;
+-	u32 i = 0, offset = 0;
+-
+-	blockSize_p1 = 254;
+-
+-	/* 3 Phase #1 */
+-	blockCount_p1 = buffSize / blockSize_p1;
+-	remainSize_p1 = buffSize % blockSize_p1;
++	int ret;
+ 
+-	if (blockCount_p1) {
+-		RT_TRACE(_module_hal_init_c_, _drv_notice_,
+-			 ("_BlockWrite: [P1] buffSize(%d) blockSize_p1(%d) "
+-			  "blockCount_p1(%d) remainSize_p1(%d)\n",
+-			  buffSize, blockSize_p1, blockCount_p1,
+-			  remainSize_p1));
+-	}
+-
+-	for (i = 0; i < blockCount_p1; i++) {
+-		ret = rtl8723au_writeN(padapter, (FW_8723A_START_ADDRESS +
+-						  i * blockSize_p1),
+-				       blockSize_p1,
+-				       (bufferPtr + i * blockSize_p1));
+-		if (ret == _FAIL)
+-			goto exit;
+-	}
+-
+-	/* 3 Phase #2 */
+-	if (remainSize_p1) {
+-		offset = blockCount_p1 * blockSize_p1;
+-
+-		blockCount_p2 = remainSize_p1 / blockSize_p2;
+-		remainSize_p2 = remainSize_p1 % blockSize_p2;
+-
+-		if (blockCount_p2) {
+-			RT_TRACE(_module_hal_init_c_, _drv_notice_,
+-				 ("_BlockWrite: [P2] buffSize_p2(%d) "
+-				  "blockSize_p2(%d) blockCount_p2(%d) "
+-				  "remainSize_p2(%d)\n",
+-				  (buffSize - offset), blockSize_p2,
+-				  blockCount_p2, remainSize_p2));
+-		}
+-
+-		for (i = 0; i < blockCount_p2; i++) {
+-			ret = rtl8723au_writeN(padapter,
+-					       (FW_8723A_START_ADDRESS +
+-						offset + i * blockSize_p2),
+-					       blockSize_p2,
+-					       (bufferPtr + offset +
+-						i * blockSize_p2));
+-
+-			if (ret == _FAIL)
+-				goto exit;
+-		}
+-	}
+-
+-	/* 3 Phase #3 */
+-	if (remainSize_p2) {
+-		offset = (blockCount_p1 * blockSize_p1) +
+-			(blockCount_p2 * blockSize_p2);
+-
+-		blockCount_p3 = remainSize_p2 / blockSize_p3;
+-
+-		RT_TRACE(_module_hal_init_c_, _drv_notice_,
+-			 ("_BlockWrite: [P3] buffSize_p3(%d) blockSize_p3(%d) "
+-			  "blockCount_p3(%d)\n",
+-			  (buffSize - offset), blockSize_p3, blockCount_p3));
+-
+-		for (i = 0; i < blockCount_p3; i++) {
+-			ret = rtl8723au_write8(padapter,
+-					       (FW_8723A_START_ADDRESS + offset + i),
+-					       *(bufferPtr + offset + i));
++	if (buffSize > MAX_PAGE_SIZE)
++		return _FAIL;
+ 
+-			if (ret == _FAIL)
+-				goto exit;
+-		}
+-	}
++	ret = rtl8723au_writeN(padapter, FW_8723A_START_ADDRESS,
++			       buffSize, buffer);
+ 
+-exit:
+ 	return ret;
+ }
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0186-staging-rtl8723au-Remove-unnecessary-null-test-befor.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0186-staging-rtl8723au-Remove-unnecessary-null-test-befor.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,34 @@
+From: Fabian Frederick <fabf at skynet.be>
+Date: Tue, 1 Jul 2014 10:11:23 +0200
+Subject: [186/249] staging: rtl8723au: Remove unnecessary null test before
+ kfree
+Origin: https://git.kernel.org/linus/352f145d8fce34aa75b58cca102587ba7bce4412
+
+Fix checkpatch warning:
+WARNING: kfree(NULL) is safe this check is probably not required
+
+Cc: Larry Finger <Larry.Finger at lwfinger.net>
+Cc: Jes Sorensen <Jes.Sorensen at redhat.com>
+Cc: linux-wireless at vger.kernel.org
+Signed-off-by: Fabian Frederick <fabf at skynet.be>
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_cmd.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_cmd.c b/drivers/staging/rtl8723au/core/rtw_cmd.c
+index f44f941..df1ffb3 100644
+--- a/drivers/staging/rtl8723au/core/rtw_cmd.c
++++ b/drivers/staging/rtl8723au/core/rtw_cmd.c
+@@ -515,9 +515,7 @@ int rtw_joinbss_cmd23a(struct rtw_adapter *padapter,
+ 
+ 	psecnetwork = &psecuritypriv->sec_bss;
+ 	if (!psecnetwork) {
+-		if (pcmd)
+-			kfree(pcmd);
+-
++		kfree(pcmd);
+ 		res = _FAIL;
+ 
+ 		RT_TRACE(_module_rtl871x_cmd_c_, _drv_err_,

Added: dists/sid/linux/debian/patches/features/all/r8723au/0187-staging-rtl8723au-Remove-horrendous-code-obfuscation.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0187-staging-rtl8723au-Remove-horrendous-code-obfuscation.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,62 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sun, 13 Jul 2014 09:32:01 +0200
+Subject: [187/249] staging: rtl8723au: Remove horrendous code obfuscation
+ READ_AND_CONFIG*()
+Origin: https://git.kernel.org/linus/974fe27ceca9f8449275169dd2759b23cbfd6a06
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm_HWConfig.c | 18 ++++--------------
+ 1 file changed, 4 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+index 82b1b83..388654d 100644
+--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c
++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+@@ -19,11 +19,6 @@
+ 
+ #include "odm_precomp.h"
+ 
+-#define READ_AND_CONFIG     READ_AND_CONFIG_MP
+-
+-#define READ_AND_CONFIG_MP(ic, txt) (ODM_ReadAndConfig##txt##ic(pDM_Odm))
+-#define READ_AND_CONFIG_TC(ic, txt) (ODM_ReadAndConfig_TC##txt##ic(pDM_Odm))
+-
+ static u8 odm_QueryRxPwrPercentage(s8 AntPower)
+ {
+ 	if ((AntPower <= -100) || (AntPower >= 20))
+@@ -436,12 +431,7 @@ int ODM_ConfigRFWithHeaderFile23a(struct dm_odm_t *pDM_Odm,
+ 		     ("===>ODM_ConfigRFWithHeaderFile23a\n"));
+ 	if (pDM_Odm->SupportICType == ODM_RTL8723A) {
+ 		if (eRFPath == RF_PATH_A)
+-			READ_AND_CONFIG_MP(8723A, _RadioA_1T_);
+-
+-		ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+-			     (" ===> ODM_ConfigRFWithHeaderFile23a() Radio_A:Rtl8723RadioA_1TArray\n"));
+-		ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+-			     (" ===> ODM_ConfigRFWithHeaderFile23a() Radio_B:Rtl8723RadioB_1TArray\n"));
++			ODM_ReadAndConfig_RadioA_1T_8723A(pDM_Odm);
+ 	}
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
+ 		     ("ODM_ConfigRFWithHeaderFile23a: Radio No %x\n", eRFPath));
+@@ -453,9 +443,9 @@ int ODM_ConfigBBWithHeaderFile23a(struct dm_odm_t *pDM_Odm,
+ {
+ 	if (pDM_Odm->SupportICType == ODM_RTL8723A) {
+ 		if (ConfigType == CONFIG_BB_PHY_REG)
+-			READ_AND_CONFIG_MP(8723A, _PHY_REG_1T_);
++			ODM_ReadAndConfig_PHY_REG_1T_8723A(pDM_Odm);
+ 		else if (ConfigType == CONFIG_BB_AGC_TAB)
+-			READ_AND_CONFIG_MP(8723A, _AGC_TAB_1T_);
++			ODM_ReadAndConfig_AGC_TAB_1T_8723A(pDM_Odm);
+ 		ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+ 			     (" ===> phy_ConfigBBWithHeaderFile() phy:Rtl8723AGCTAB_1TArray\n"));
+ 		ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+@@ -467,6 +457,6 @@ int ODM_ConfigBBWithHeaderFile23a(struct dm_odm_t *pDM_Odm,
+ int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm)
+ {
+ 	if (pDM_Odm->SupportICType == ODM_RTL8723A)
+-		READ_AND_CONFIG_MP(8723A, _MAC_REG_);
++		ODM_ReadAndConfig_MAC_REG_8723A(pDM_Odm);
+ 	return _SUCCESS;
+ }

Added: dists/sid/linux/debian/patches/features/all/r8723au/0188-staging-rtl8723au-Call-to-ODM_ConfigRFWithHeaderFile.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0188-staging-rtl8723au-Call-to-ODM_ConfigRFWithHeaderFile.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,30 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sun, 13 Jul 2014 09:32:02 +0200
+Subject: [188/249] staging: rtl8723au: Call to ODM_ConfigRFWithHeaderFile23a
+ path is identical for RF_PATH_[AB]
+Origin: https://git.kernel.org/linus/a8950425732317380ddbe27453c7a16e61ec20c6
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c b/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c
+index c30bd23..6686a29 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c
+@@ -455,13 +455,6 @@ static int phy_RF6052_Config_ParaFile(struct rtw_adapter *Adapter)
+ 		/*----Initialize RF fom connfiguration file----*/
+ 		switch (eRFPath) {
+ 		case RF_PATH_A:
+-			if (ODM_ConfigRFWithHeaderFile23a(&pHalData->odmpriv,
+-							  (enum RF_RADIO_PATH)
+-							  eRFPath,
+-							  (enum RF_RADIO_PATH)
+-							  eRFPath) == _FAIL)
+-				rtStatus = _FAIL;
+-			break;
+ 		case RF_PATH_B:
+ 			if (ODM_ConfigRFWithHeaderFile23a(&pHalData->odmpriv,
+ 							  (enum RF_RADIO_PATH)

Added: dists/sid/linux/debian/patches/features/all/r8723au/0189-staging-rtl8723au-Eliminate-wrapper-ODM_ConfigRFWith.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0189-staging-rtl8723au-Eliminate-wrapper-ODM_ConfigRFWith.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,100 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sun, 13 Jul 2014 09:32:03 +0200
+Subject: [189/249] staging: rtl8723au: Eliminate wrapper
+ ODM_ConfigRFWithHeaderFile23a()
+Origin: https://git.kernel.org/linus/6b435adbcb2e05e92684bcb1721e7377f91c4825
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm_HWConfig.c       | 15 ---------------
+ drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c |  6 ++----
+ drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c    |  8 ++------
+ drivers/staging/rtl8723au/include/odm_HWConfig.h   |  4 ----
+ 4 files changed, 4 insertions(+), 29 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+index 388654d..4fc0b06 100644
+--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c
++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+@@ -423,21 +423,6 @@ void ODM_MacStatusQuery23a(struct dm_odm_t *pDM_Odm, u8 *pMacStatus, u8 MacID,
+ 
+ }
+ 
+-int ODM_ConfigRFWithHeaderFile23a(struct dm_odm_t *pDM_Odm,
+-				  enum RF_RADIO_PATH Content,
+-				  enum RF_RADIO_PATH eRFPath)
+-{
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+-		     ("===>ODM_ConfigRFWithHeaderFile23a\n"));
+-	if (pDM_Odm->SupportICType == ODM_RTL8723A) {
+-		if (eRFPath == RF_PATH_A)
+-			ODM_ReadAndConfig_RadioA_1T_8723A(pDM_Odm);
+-	}
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
+-		     ("ODM_ConfigRFWithHeaderFile23a: Radio No %x\n", eRFPath));
+-	return _SUCCESS;
+-}
+-
+ int ODM_ConfigBBWithHeaderFile23a(struct dm_odm_t *pDM_Odm,
+ 				  enum odm_bb_config_type ConfigType)
+ {
+diff --git a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c
+index d076e14..8f883d9 100644
+--- a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c
++++ b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c
+@@ -54,8 +54,7 @@ void odm_ConfigRF_RadioA_8723A(struct dm_odm_t *pDM_Odm,
+ 	odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_A,
+ 			      Addr|maskforPhySet);
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+-		     ("===> ODM_ConfigRFWithHeaderFile23a: [RadioA] %08X %08X\n",
+-		     Addr, Data));
++		     ("===> %s: [RadioA] %08X %08X\n", __func__, Addr, Data));
+ }
+ 
+ void odm_ConfigRF_RadioB_8723A(struct dm_odm_t *pDM_Odm,
+@@ -69,8 +68,7 @@ void odm_ConfigRF_RadioB_8723A(struct dm_odm_t *pDM_Odm,
+ 	odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_B,
+ 			      Addr|maskforPhySet);
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+-		     ("===> ODM_ConfigRFWithHeaderFile23a: [RadioB] %08X %08X\n",
+-		     Addr, Data));
++		     ("===> %s: [RadioB] %08X %08X\n", __func__, Addr, Data));
+ }
+ 
+ void odm_ConfigMAC_8723A(struct dm_odm_t *pDM_Odm,
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c b/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c
+index 6686a29..2dc0886 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_rf6052.c
+@@ -455,13 +455,9 @@ static int phy_RF6052_Config_ParaFile(struct rtw_adapter *Adapter)
+ 		/*----Initialize RF fom connfiguration file----*/
+ 		switch (eRFPath) {
+ 		case RF_PATH_A:
++			ODM_ReadAndConfig_RadioA_1T_8723A(&pHalData->odmpriv);
++			break;
+ 		case RF_PATH_B:
+-			if (ODM_ConfigRFWithHeaderFile23a(&pHalData->odmpriv,
+-							  (enum RF_RADIO_PATH)
+-							  eRFPath,
+-							  (enum RF_RADIO_PATH)
+-							  eRFPath) == _FAIL)
+-				rtStatus = _FAIL;
+ 			break;
+ 		}
+ 
+diff --git a/drivers/staging/rtl8723au/include/odm_HWConfig.h b/drivers/staging/rtl8723au/include/odm_HWConfig.h
+index 6b98e05..f8236ca 100644
+--- a/drivers/staging/rtl8723au/include/odm_HWConfig.h
++++ b/drivers/staging/rtl8723au/include/odm_HWConfig.h
+@@ -160,10 +160,6 @@ void ODM_MacStatusQuery23a(struct dm_odm_t *pDM_Odm,
+ 	bool bPacketBeacon
+ );
+ 
+-int ODM_ConfigRFWithHeaderFile23a(struct dm_odm_t *pDM_Odm,
+-				  enum RF_RADIO_PATH Content,
+-				  enum RF_RADIO_PATH eRFPath);
+-
+ int ODM_ConfigBBWithHeaderFile23a(struct dm_odm_t *pDM_Odm,
+ 				  enum odm_bb_config_type ConfigType);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0190-staging-rtl8723au-Remove-zero-value-calculation-adde.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0190-staging-rtl8723au-Remove-zero-value-calculation-adde.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,51 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sun, 13 Jul 2014 09:32:04 +0200
+Subject: [190/249] staging: rtl8723au: Remove zero value calculation added to
+ address
+Origin: https://git.kernel.org/linus/d10ef6371eab6642e9925c43200a7fea6fca04b8
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c | 22 ++++------------------
+ 1 file changed, 4 insertions(+), 18 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c
+index 8f883d9..70b7168 100644
+--- a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c
++++ b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c
+@@ -43,30 +43,16 @@ odm_ConfigRFReg_8723A(
+ 	}
+ }
+ 
+-void odm_ConfigRF_RadioA_8723A(struct dm_odm_t *pDM_Odm,
+-	u32					Addr,
+-	u32					Data
+-	)
++void odm_ConfigRF_RadioA_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data)
+ {
+-	u32  content = 0x1000; /*  RF_Content: radioa_txt */
+-	u32	maskforPhySet = (u32)(content&0xE000);
+-
+-	odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_A,
+-			      Addr|maskforPhySet);
++	odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_A, Addr);
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+ 		     ("===> %s: [RadioA] %08X %08X\n", __func__, Addr, Data));
+ }
+ 
+-void odm_ConfigRF_RadioB_8723A(struct dm_odm_t *pDM_Odm,
+-	u32					Addr,
+-	u32					Data
+-	)
++void odm_ConfigRF_RadioB_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data)
+ {
+-	u32  content = 0x1001; /*  RF_Content: radiob_txt */
+-	u32	maskforPhySet = (u32)(content&0xE000);
+-
+-	odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_B,
+-			      Addr|maskforPhySet);
++	odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_B, Addr);
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+ 		     ("===> %s: [RadioB] %08X %08X\n", __func__, Addr, Data));
+ }

Added: dists/sid/linux/debian/patches/features/all/r8723au/0191-staging-rtl8723au-Remove-pointless-wrappers-for-call.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0191-staging-rtl8723au-Remove-pointless-wrappers-for-call.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,77 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sun, 13 Jul 2014 09:32:05 +0200
+Subject: [191/249] staging: rtl8723au: Remove pointless wrappers for calling
+ odm_ConfigRFReg_8723A()
+Origin: https://git.kernel.org/linus/863b61948e4057f418ee081591724ed112f14cdf
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c       |  5 +++--
+ drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c     | 14 --------------
+ drivers/staging/rtl8723au/include/odm_RegConfig8723A.h |  4 ----
+ 3 files changed, 3 insertions(+), 20 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c b/drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c
+index 0f2ae05..00480f5 100644
+--- a/drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c
++++ b/drivers/staging/rtl8723au/hal/HalHWImg8723A_RF.c
+@@ -230,7 +230,7 @@ void ODM_ReadAndConfig_RadioA_1T_8723A(struct dm_odm_t *pDM_Odm)
+ 
+ 		/*  This (offset, data) pair meets the condition. */
+ 		if (v1 < 0xCDCDCDCD) {
+-			odm_ConfigRF_RadioA_8723A(pDM_Odm, v1, v2);
++			odm_ConfigRFReg_8723A(pDM_Odm, v1, v2, RF_PATH_A, v1);
+ 			continue;
+ 		} else {
+ 			if (!CheckCondition(Array[i], hex)) {
+@@ -247,7 +247,8 @@ void ODM_ReadAndConfig_RadioA_1T_8723A(struct dm_odm_t *pDM_Odm)
+ 				while (v2 != 0xDEAD &&
+ 				       v2 != 0xCDEF &&
+ 				       v2 != 0xCDCD && i < ArrayLen - 2) {
+-					odm_ConfigRF_RadioA_8723A(pDM_Odm, v1, v2);
++					odm_ConfigRFReg_8723A(pDM_Odm, v1, v2,
++							      RF_PATH_A, v1);
+ 					READ_NEXT_PAIR(v1, v2, i);
+ 				}
+ 
+diff --git a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c
+index 70b7168..bd86b6c 100644
+--- a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c
++++ b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c
+@@ -43,20 +43,6 @@ odm_ConfigRFReg_8723A(
+ 	}
+ }
+ 
+-void odm_ConfigRF_RadioA_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data)
+-{
+-	odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_A, Addr);
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+-		     ("===> %s: [RadioA] %08X %08X\n", __func__, Addr, Data));
+-}
+-
+-void odm_ConfigRF_RadioB_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data)
+-{
+-	odm_ConfigRFReg_8723A(pDM_Odm, Addr, Data, RF_PATH_B, Addr);
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+-		     ("===> %s: [RadioB] %08X %08X\n", __func__, Addr, Data));
+-}
+-
+ void odm_ConfigMAC_8723A(struct dm_odm_t *pDM_Odm,
+ 	u32		Addr,
+ 	u8		Data
+diff --git a/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h b/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h
+index 4ea579b..4117830 100644
+--- a/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h
++++ b/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h
+@@ -18,10 +18,6 @@
+ void odm_ConfigRFReg_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data,
+ 			   enum RF_RADIO_PATH RF_PATH, u32 RegAddr);
+ 
+-void odm_ConfigRF_RadioA_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data);
+-
+-void odm_ConfigRF_RadioB_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Data);
+-
+ void odm_ConfigMAC_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u8 Data);
+ 
+ void odm_ConfigBB_AGC_8723A(struct dm_odm_t *pDM_Odm, u32 Addr,

Added: dists/sid/linux/debian/patches/features/all/r8723au/0192-staging-rtl8723au-Remove-unused-ODM_ReadAndConfig_PH.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0192-staging-rtl8723au-Remove-unused-ODM_ReadAndConfig_PH.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,250 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sun, 13 Jul 2014 09:32:06 +0200
+Subject: [192/249] staging: rtl8723au: Remove unused
+ ODM_ReadAndConfig_PHY_REG_PG_8723A() and related code+data
+Origin: https://git.kernel.org/linus/7bafabf2d939e72b56591939883a31c31b93a076
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c   | 160 ---------------------
+ drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c |  28 ----
+ .../staging/rtl8723au/include/HalHWImg8723A_BB.h   |   6 -
+ .../staging/rtl8723au/include/odm_RegConfig8723A.h |   2 -
+ 4 files changed, 196 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c b/drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c
+index 294e6a6..9d4f6be 100644
+--- a/drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c
++++ b/drivers/staging/rtl8723au/hal/HalHWImg8723A_BB.c
+@@ -564,163 +564,3 @@ void ODM_ReadAndConfig_PHY_REG_MP_8723A(struct dm_odm_t *pDM_Odm)
+ 		}
+ 	}
+ }
+-
+-/******************************************************************************
+-*                           PHY_REG_PG.TXT
+-******************************************************************************/
+-
+-static u32 Array_PHY_REG_PG_8723A[] = {
+-	0xE00, 0xFFFFFFFF, 0x0A0C0C0C,
+-	0xE04, 0xFFFFFFFF, 0x02040608,
+-	0xE08, 0x0000FF00, 0x00000000,
+-	0x86C, 0xFFFFFF00, 0x00000000,
+-	0xE10, 0xFFFFFFFF, 0x0A0C0D0E,
+-	0xE14, 0xFFFFFFFF, 0x02040608,
+-	0xE18, 0xFFFFFFFF, 0x0A0C0D0E,
+-	0xE1C, 0xFFFFFFFF, 0x02040608,
+-	0x830, 0xFFFFFFFF, 0x0A0C0C0C,
+-	0x834, 0xFFFFFFFF, 0x02040608,
+-	0x838, 0xFFFFFF00, 0x00000000,
+-	0x86C, 0x000000FF, 0x00000000,
+-	0x83C, 0xFFFFFFFF, 0x0A0C0D0E,
+-	0x848, 0xFFFFFFFF, 0x02040608,
+-	0x84C, 0xFFFFFFFF, 0x0A0C0D0E,
+-	0x868, 0xFFFFFFFF, 0x02040608,
+-	0xE00, 0xFFFFFFFF, 0x00000000,
+-	0xE04, 0xFFFFFFFF, 0x00000000,
+-	0xE08, 0x0000FF00, 0x00000000,
+-	0x86C, 0xFFFFFF00, 0x00000000,
+-	0xE10, 0xFFFFFFFF, 0x00000000,
+-	0xE14, 0xFFFFFFFF, 0x00000000,
+-	0xE18, 0xFFFFFFFF, 0x00000000,
+-	0xE1C, 0xFFFFFFFF, 0x00000000,
+-	0x830, 0xFFFFFFFF, 0x00000000,
+-	0x834, 0xFFFFFFFF, 0x00000000,
+-	0x838, 0xFFFFFF00, 0x00000000,
+-	0x86C, 0x000000FF, 0x00000000,
+-	0x83C, 0xFFFFFFFF, 0x00000000,
+-	0x848, 0xFFFFFFFF, 0x00000000,
+-	0x84C, 0xFFFFFFFF, 0x00000000,
+-	0x868, 0xFFFFFFFF, 0x00000000,
+-	0xE00, 0xFFFFFFFF, 0x04040404,
+-	0xE04, 0xFFFFFFFF, 0x00020204,
+-	0xE08, 0x0000FF00, 0x00000000,
+-	0x86C, 0xFFFFFF00, 0x00000000,
+-	0xE10, 0xFFFFFFFF, 0x06060606,
+-	0xE14, 0xFFFFFFFF, 0x00020406,
+-	0xE18, 0xFFFFFFFF, 0x00000000,
+-	0xE1C, 0xFFFFFFFF, 0x00000000,
+-	0x830, 0xFFFFFFFF, 0x04040404,
+-	0x834, 0xFFFFFFFF, 0x00020204,
+-	0x838, 0xFFFFFF00, 0x00000000,
+-	0x86C, 0x000000FF, 0x00000000,
+-	0x83C, 0xFFFFFFFF, 0x06060606,
+-	0x848, 0xFFFFFFFF, 0x00020406,
+-	0x84C, 0xFFFFFFFF, 0x00000000,
+-	0x868, 0xFFFFFFFF, 0x00000000,
+-	0xE00, 0xFFFFFFFF, 0x00000000,
+-	0xE04, 0xFFFFFFFF, 0x00000000,
+-	0xE08, 0x0000FF00, 0x00000000,
+-	0x86C, 0xFFFFFF00, 0x00000000,
+-	0xE10, 0xFFFFFFFF, 0x00000000,
+-	0xE14, 0xFFFFFFFF, 0x00000000,
+-	0xE18, 0xFFFFFFFF, 0x00000000,
+-	0xE1C, 0xFFFFFFFF, 0x00000000,
+-	0x830, 0xFFFFFFFF, 0x00000000,
+-	0x834, 0xFFFFFFFF, 0x00000000,
+-	0x838, 0xFFFFFF00, 0x00000000,
+-	0x86C, 0x000000FF, 0x00000000,
+-	0x83C, 0xFFFFFFFF, 0x00000000,
+-	0x848, 0xFFFFFFFF, 0x00000000,
+-	0x84C, 0xFFFFFFFF, 0x00000000,
+-	0x868, 0xFFFFFFFF, 0x00000000,
+-	0xE00, 0xFFFFFFFF, 0x00000000,
+-	0xE04, 0xFFFFFFFF, 0x00000000,
+-	0xE08, 0x0000FF00, 0x00000000,
+-	0x86C, 0xFFFFFF00, 0x00000000,
+-	0xE10, 0xFFFFFFFF, 0x00000000,
+-	0xE14, 0xFFFFFFFF, 0x00000000,
+-	0xE18, 0xFFFFFFFF, 0x00000000,
+-	0xE1C, 0xFFFFFFFF, 0x00000000,
+-	0x830, 0xFFFFFFFF, 0x00000000,
+-	0x834, 0xFFFFFFFF, 0x00000000,
+-	0x838, 0xFFFFFF00, 0x00000000,
+-	0x86C, 0x000000FF, 0x00000000,
+-	0x83C, 0xFFFFFFFF, 0x00000000,
+-	0x848, 0xFFFFFFFF, 0x00000000,
+-	0x84C, 0xFFFFFFFF, 0x00000000,
+-	0x868, 0xFFFFFFFF, 0x00000000,
+-	0xE00, 0xFFFFFFFF, 0x04040404,
+-	0xE04, 0xFFFFFFFF, 0x00020204,
+-	0xE08, 0x0000FF00, 0x00000000,
+-	0x86C, 0xFFFFFF00, 0x00000000,
+-	0xE10, 0xFFFFFFFF, 0x00000000,
+-	0xE14, 0xFFFFFFFF, 0x00000000,
+-	0xE18, 0xFFFFFFFF, 0x00000000,
+-	0xE1C, 0xFFFFFFFF, 0x00000000,
+-	0x830, 0xFFFFFFFF, 0x04040404,
+-	0x834, 0xFFFFFFFF, 0x00020204,
+-	0x838, 0xFFFFFF00, 0x00000000,
+-	0x86C, 0x000000FF, 0x00000000,
+-	0x83C, 0xFFFFFFFF, 0x00000000,
+-	0x848, 0xFFFFFFFF, 0x00000000,
+-	0x84C, 0xFFFFFFFF, 0x00000000,
+-	0x868, 0xFFFFFFFF, 0x00000000,
+-	0xE00, 0xFFFFFFFF, 0x00000000,
+-	0xE04, 0xFFFFFFFF, 0x00000000,
+-	0xE08, 0x0000FF00, 0x00000000,
+-	0x86C, 0xFFFFFF00, 0x00000000,
+-	0xE10, 0xFFFFFFFF, 0x00000000,
+-	0xE14, 0xFFFFFFFF, 0x00000000,
+-	0xE18, 0xFFFFFFFF, 0x00000000,
+-	0xE1C, 0xFFFFFFFF, 0x00000000,
+-	0x830, 0xFFFFFFFF, 0x00000000,
+-	0x834, 0xFFFFFFFF, 0x00000000,
+-	0x838, 0xFFFFFF00, 0x00000000,
+-	0x86C, 0x000000FF, 0x00000000,
+-	0x83C, 0xFFFFFFFF, 0x00000000,
+-	0x848, 0xFFFFFFFF, 0x00000000,
+-	0x84C, 0xFFFFFFFF, 0x00000000,
+-	0x868, 0xFFFFFFFF, 0x00000000,
+-};
+-
+-void ODM_ReadAndConfig_PHY_REG_PG_8723A(struct dm_odm_t *pDM_Odm)
+-{
+-	u32     hex = 0;
+-	u32     i           = 0;
+-	u8     platform    = 0x04;
+-	u8     interfaceValue   = pDM_Odm->SupportInterface;
+-	u8     board       = pDM_Odm->BoardType;
+-	u32     ArrayLen    = sizeof(Array_PHY_REG_PG_8723A)/sizeof(u32);
+-	u32 *Array       = Array_PHY_REG_PG_8723A;
+-
+-	hex += board;
+-	hex += interfaceValue << 8;
+-	hex += platform << 16;
+-	hex += 0xFF000000;
+-	for (i = 0; i < ArrayLen; i += 3) {
+-		u32 v1 = Array[i];
+-		u32 v2 = Array[i+1];
+-		u32 v3 = Array[i+2];
+-
+-		/*  this line is a line of pure_body */
+-		if (v1 < 0xCDCDCDCD) {
+-			 odm_ConfigBB_PHY_REG_PG_8723A(pDM_Odm, v1, v2, v3);
+-			 continue;
+-		} else { /*  this line is the start of branch */
+-			if (!CheckCondition(Array[i], hex)) {
+-				/*  don't need the hw_body */
+-				i += 2; /*  skip the pair of expression */
+-				v1 = Array[i];
+-				v2 = Array[i+1];
+-				v3 = Array[i+2];
+-				while (v2 != 0xDEAD) {
+-					i += 3;
+-					v1 = Array[i];
+-					v2 = Array[i+1];
+-					v3 = Array[i+1];
+-				}
+-			}
+-		}
+-	}
+-}
+diff --git a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c
+index bd86b6c..88e0126 100644
+--- a/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c
++++ b/drivers/staging/rtl8723au/hal/odm_RegConfig8723A.c
+@@ -72,34 +72,6 @@ odm_ConfigBB_AGC_8723A(
+ }
+ 
+ void
+-odm_ConfigBB_PHY_REG_PG_8723A(
+-	struct dm_odm_t *pDM_Odm,
+-	u32		Addr,
+-	u32		Bitmask,
+-	u32		Data
+-  )
+-{
+-	if (Addr == 0xfe)
+-		msleep(50);
+-	else if (Addr == 0xfd)
+-		mdelay(5);
+-	else if (Addr == 0xfc)
+-		mdelay(1);
+-	else if (Addr == 0xfb)
+-		udelay(50);
+-	else if (Addr == 0xfa)
+-		udelay(5);
+-	else if (Addr == 0xf9)
+-		udelay(1);
+-    /*  TODO: ODM_StorePwrIndexDiffRateOffset(...) */
+-	/*  storePwrIndexDiffRateOffset(Adapter, Addr, Bitmask, Data); */
+-
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+-		     ("===> ODM_ConfigBBWithHeaderFile23a: [PHY_REG] %08X %08X %08X\n",
+-		     Addr, Bitmask, Data));
+-}
+-
+-void
+ odm_ConfigBB_PHY_8723A(
+ 	struct dm_odm_t *pDM_Odm,
+ 	u32		Addr,
+diff --git a/drivers/staging/rtl8723au/include/HalHWImg8723A_BB.h b/drivers/staging/rtl8723au/include/HalHWImg8723A_BB.h
+index e99833c..1276094 100644
+--- a/drivers/staging/rtl8723au/include/HalHWImg8723A_BB.h
++++ b/drivers/staging/rtl8723au/include/HalHWImg8723A_BB.h
+@@ -35,10 +35,4 @@ void ODM_ReadAndConfig_PHY_REG_1T_8723A(struct dm_odm_t *pDM_Odm);
+ 
+ void ODM_ReadAndConfig_PHY_REG_MP_8723A(struct dm_odm_t *pDM_Odm);
+ 
+-/******************************************************************************
+-*                           PHY_REG_PG.TXT
+-******************************************************************************/
+-
+-void ODM_ReadAndConfig_PHY_REG_PG_8723A(struct dm_odm_t *pDM_Odm);
+-
+ #endif /*  end of HWIMG_SUPPORT */
+diff --git a/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h b/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h
+index 4117830..a6cfb6d 100644
+--- a/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h
++++ b/drivers/staging/rtl8723au/include/odm_RegConfig8723A.h
+@@ -23,8 +23,6 @@ void odm_ConfigMAC_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u8 Data);
+ void odm_ConfigBB_AGC_8723A(struct dm_odm_t *pDM_Odm, u32 Addr,
+ 			    u32 Bitmask, u32 Data);
+ 
+-void odm_ConfigBB_PHY_REG_PG_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Bitmask, u32 Data);
+-
+ void odm_ConfigBB_PHY_8723A(struct dm_odm_t *pDM_Odm, u32 Addr, u32 Bitmask, u32 Data);
+ 
+ #endif /*  end of SUPPORT */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0193-staging-rtl8723au-Remove-ugly-wrapper-ODM_ConfigBBWi.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0193-staging-rtl8723au-Remove-ugly-wrapper-ODM_ConfigBBWi.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,103 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sun, 13 Jul 2014 09:32:07 +0200
+Subject: [193/249] staging: rtl8723au: Remove ugly wrapper
+ ODM_ConfigBBWithHeaderFile23a()
+Origin: https://git.kernel.org/linus/79756e687c52e0cec233906dcc9b57a71c306b3d
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm_HWConfig.c     | 16 ----------------
+ drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c  | 10 ++--------
+ drivers/staging/rtl8723au/include/odm.h          |  8 --------
+ drivers/staging/rtl8723au/include/odm_HWConfig.h |  3 ---
+ 4 files changed, 2 insertions(+), 35 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+index 4fc0b06..40fea7d 100644
+--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c
++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+@@ -423,22 +423,6 @@ void ODM_MacStatusQuery23a(struct dm_odm_t *pDM_Odm, u8 *pMacStatus, u8 MacID,
+ 
+ }
+ 
+-int ODM_ConfigBBWithHeaderFile23a(struct dm_odm_t *pDM_Odm,
+-				  enum odm_bb_config_type ConfigType)
+-{
+-	if (pDM_Odm->SupportICType == ODM_RTL8723A) {
+-		if (ConfigType == CONFIG_BB_PHY_REG)
+-			ODM_ReadAndConfig_PHY_REG_1T_8723A(pDM_Odm);
+-		else if (ConfigType == CONFIG_BB_AGC_TAB)
+-			ODM_ReadAndConfig_AGC_TAB_1T_8723A(pDM_Odm);
+-		ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+-			     (" ===> phy_ConfigBBWithHeaderFile() phy:Rtl8723AGCTAB_1TArray\n"));
+-		ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
+-			     (" ===> phy_ConfigBBWithHeaderFile() agc:Rtl8723PHY_REG_1TArray\n"));
+-	}
+-	return _SUCCESS;
+-}
+-
+ int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm)
+ {
+ 	if (pDM_Odm->SupportICType == ODM_RTL8723A)
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c
+index 8a6ba63..7dc2de0 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c
+@@ -753,11 +753,7 @@ phy_BB8723a_Config_ParaFile(struct rtw_adapter *Adapter)
+ 	/*  1. Read PHY_REG.TXT BB INIT!! */
+ 	/*  We will seperate as 88C / 92C according to chip version */
+ 	/*  */
+-	if (ODM_ConfigBBWithHeaderFile23a(&pHalData->odmpriv,
+-					  CONFIG_BB_PHY_REG) == _FAIL)
+-		rtStatus = _FAIL;
+-	if (rtStatus != _SUCCESS)
+-		goto phy_BB8190_Config_ParaFile_Fail;
++	ODM_ReadAndConfig_PHY_REG_1T_8723A(&pHalData->odmpriv);
+ 
+ 	/*  */
+ 	/*  20100318 Joseph: Config 2T2R to 1T2R if necessary. */
+@@ -784,9 +780,7 @@ phy_BB8723a_Config_ParaFile(struct rtw_adapter *Adapter)
+ 	/*  */
+ 	/*  3. BB AGC table Initialization */
+ 	/*  */
+-	if (ODM_ConfigBBWithHeaderFile23a(&pHalData->odmpriv,
+-					  CONFIG_BB_AGC_TAB) == _FAIL)
+-		rtStatus = _FAIL;
++	ODM_ReadAndConfig_AGC_TAB_1T_8723A(&pHalData->odmpriv);
+ 
+ phy_BB8190_Config_ParaFile_Fail:
+ 
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index 183d8ff..08c6f72 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -855,14 +855,6 @@ enum odm_rf_content {
+ 	odm_radiod_txt = 0x1003
+ };
+ 
+-enum odm_bb_config_type {
+-    CONFIG_BB_PHY_REG,
+-    CONFIG_BB_AGC_TAB,
+-    CONFIG_BB_AGC_TAB_2G,
+-    CONFIG_BB_AGC_TAB_5G,
+-    CONFIG_BB_PHY_REG_PG,
+-};
+-
+ /*  Status code */
+ enum rt_status {
+ 	RT_STATUS_SUCCESS,
+diff --git a/drivers/staging/rtl8723au/include/odm_HWConfig.h b/drivers/staging/rtl8723au/include/odm_HWConfig.h
+index f8236ca..6fe6f70 100644
+--- a/drivers/staging/rtl8723au/include/odm_HWConfig.h
++++ b/drivers/staging/rtl8723au/include/odm_HWConfig.h
+@@ -160,9 +160,6 @@ void ODM_MacStatusQuery23a(struct dm_odm_t *pDM_Odm,
+ 	bool bPacketBeacon
+ );
+ 
+-int ODM_ConfigBBWithHeaderFile23a(struct dm_odm_t *pDM_Odm,
+-				  enum odm_bb_config_type ConfigType);
+-
+ int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm);
+ 
+ #endif

Added: dists/sid/linux/debian/patches/features/all/r8723au/0194-staging-rtl8723au-Remove-unused-ODM_MacStatusQuery23.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0194-staging-rtl8723au-Remove-unused-ODM_MacStatusQuery23.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,51 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sun, 13 Jul 2014 09:32:08 +0200
+Subject: [194/249] staging: rtl8723au: Remove unused ODM_MacStatusQuery23a()
+Origin: https://git.kernel.org/linus/f467c2b214928132980a2d850741407cd59af502
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm_HWConfig.c     | 9 ---------
+ drivers/staging/rtl8723au/include/odm_HWConfig.h | 8 --------
+ 2 files changed, 17 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+index 40fea7d..b3c711a 100644
+--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c
++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+@@ -414,15 +414,6 @@ void ODM_PhyStatusQuery23a(struct dm_odm_t *pDM_Odm, struct phy_info *pPhyInfo,
+ 	ODM_PhyStatusQuery23a_92CSeries(pDM_Odm, pPhyInfo, pPhyStatus, pPktinfo);
+ }
+ 
+-/*  For future use. */
+-void ODM_MacStatusQuery23a(struct dm_odm_t *pDM_Odm, u8 *pMacStatus, u8 MacID,
+-			bool bPacketMatchBSSID, bool bPacketToSelf,
+-			bool bPacketBeacon)
+-{
+-	/*  2011/10/19 Driver team will handle in the future. */
+-
+-}
+-
+ int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm)
+ {
+ 	if (pDM_Odm->SupportICType == ODM_RTL8723A)
+diff --git a/drivers/staging/rtl8723au/include/odm_HWConfig.h b/drivers/staging/rtl8723au/include/odm_HWConfig.h
+index 6fe6f70..2d0fc86 100644
+--- a/drivers/staging/rtl8723au/include/odm_HWConfig.h
++++ b/drivers/staging/rtl8723au/include/odm_HWConfig.h
+@@ -152,14 +152,6 @@ ODM_PhyStatusQuery23a(
+ 	struct odm_packet_info *pPktinfo
+ 	);
+ 
+-void ODM_MacStatusQuery23a(struct dm_odm_t *pDM_Odm,
+-	u8 *pMacStatus,
+-	u8 MacID,
+-	bool bPacketMatchBSSID,
+-	bool bPacketToSelf,
+-	bool bPacketBeacon
+-);
+-
+ int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm);
+ 
+ #endif

Added: dists/sid/linux/debian/patches/features/all/r8723au/0195-staging-rtl8723au-Remove-obfuscating-wrapper-ODM_Con.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0195-staging-rtl8723au-Remove-obfuscating-wrapper-ODM_Con.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,54 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sun, 13 Jul 2014 09:32:09 +0200
+Subject: [195/249] staging: rtl8723au: Remove obfuscating wrapper
+ ODM_ConfigMACWithHeaderFile23a()
+Origin: https://git.kernel.org/linus/9464cac7c940e800fc5a2e8696b19febbd8b537c
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm_HWConfig.c     | 7 -------
+ drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c  | 3 +--
+ drivers/staging/rtl8723au/include/odm_HWConfig.h | 2 --
+ 3 files changed, 1 insertion(+), 11 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+index b3c711a..26fbf6c 100644
+--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c
++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+@@ -413,10 +413,3 @@ void ODM_PhyStatusQuery23a(struct dm_odm_t *pDM_Odm, struct phy_info *pPhyInfo,
+ {
+ 	ODM_PhyStatusQuery23a_92CSeries(pDM_Odm, pPhyInfo, pPhyStatus, pPktinfo);
+ }
+-
+-int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm)
+-{
+-	if (pDM_Odm->SupportICType == ODM_RTL8723A)
+-		ODM_ReadAndConfig_MAC_REG_8723A(pDM_Odm);
+-	return _SUCCESS;
+-}
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c
+index 7dc2de0..bd01c10 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c
+@@ -425,8 +425,7 @@ int PHY_MACConfig8723A(struct rtw_adapter *Adapter)
+ 	/*  */
+ 	/*  Config MAC */
+ 	/*  */
+-	if (ODM_ConfigMACWithHeaderFile23a(&pHalData->odmpriv) == _FAIL)
+-		rtStatus = _FAIL;
++	ODM_ReadAndConfig_MAC_REG_8723A(&pHalData->odmpriv);
+ 
+ 	/*  2010.07.13 AMPDU aggregation number 9 */
+ 	/* rtw_write16(Adapter, REG_MAX_AGGR_NUM, MAX_AGGR_NUM); */
+diff --git a/drivers/staging/rtl8723au/include/odm_HWConfig.h b/drivers/staging/rtl8723au/include/odm_HWConfig.h
+index 2d0fc86..78021a8 100644
+--- a/drivers/staging/rtl8723au/include/odm_HWConfig.h
++++ b/drivers/staging/rtl8723au/include/odm_HWConfig.h
+@@ -152,6 +152,4 @@ ODM_PhyStatusQuery23a(
+ 	struct odm_packet_info *pPktinfo
+ 	);
+ 
+-int ODM_ConfigMACWithHeaderFile23a(struct dm_odm_t *pDM_Odm);
+-
+ #endif

Added: dists/sid/linux/debian/patches/features/all/r8723au/0196-staging-rtl8723au-Remove-unncessary-wrapper-PHY_RFCo.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0196-staging-rtl8723au-Remove-unncessary-wrapper-PHY_RFCo.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,65 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Sun, 13 Jul 2014 09:32:10 +0200
+Subject: [196/249] staging: rtl8723au: Remove unncessary wrapper
+ PHY_RFConfig8723A()
+Origin: https://git.kernel.org/linus/f6a7125c82e8904436d09cf9002194143e4d7019
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c    | 12 ------------
+ drivers/staging/rtl8723au/hal/usb_halinit.c        |  4 ++--
+ drivers/staging/rtl8723au/include/Hal8723APhyCfg.h |  1 -
+ 3 files changed, 2 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c
+index bd01c10..3d4d7ec 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_phycfg.c
+@@ -839,18 +839,6 @@ PHY_BBConfig8723A(struct rtw_adapter *Adapter)
+ 	return rtStatus;
+ }
+ 
+-int
+-PHY_RFConfig8723A(struct rtw_adapter *Adapter)
+-{
+-	int rtStatus = _SUCCESS;
+-
+-	/*  */
+-	/*  RF config */
+-	/*  */
+-	rtStatus = PHY_RF6052_Config8723A(Adapter);
+-	return rtStatus;
+-}
+-
+ static void getTxPowerIndex(struct rtw_adapter *Adapter,
+ 			    u8 channel,	u8 *cckPowerLevel,  u8 *ofdmPowerLevel)
+ {
+diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c
+index d3d7289..8a7e644 100644
+--- a/drivers/staging/rtl8723au/hal/usb_halinit.c
++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c
+@@ -718,9 +718,9 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter)
+ 	/*  Add for tx power by rate fine tune. We need to call the function after BB config. */
+ 	/*  Because the tx power by rate table is inited in BB config. */
+ 
+-	status = PHY_RFConfig8723A(Adapter);
++	status = PHY_RF6052_Config8723A(Adapter);
+ 	if (status == _FAIL) {
+-		DBG_8723A("PHY_RFConfig8723A fault !!\n");
++		DBG_8723A("PHY_RF6052_Config8723A failed!!\n");
+ 		goto exit;
+ 	}
+ 
+diff --git a/drivers/staging/rtl8723au/include/Hal8723APhyCfg.h b/drivers/staging/rtl8723au/include/Hal8723APhyCfg.h
+index 299598b..688f204 100644
+--- a/drivers/staging/rtl8723au/include/Hal8723APhyCfg.h
++++ b/drivers/staging/rtl8723au/include/Hal8723APhyCfg.h
+@@ -224,7 +224,6 @@ SetAntennaConfig92C(struct rtw_adapter *Adapter, u8 DefaultAnt);
+ 
+ /* MAC/BB/RF HAL config */
+ int PHY_BBConfig8723A(struct rtw_adapter *Adapter);
+-int PHY_RFConfig8723A(struct rtw_adapter *Adapter);
+ s32 PHY_MACConfig8723A(struct rtw_adapter *padapter);
+ 
+ #endif

Added: dists/sid/linux/debian/patches/features/all/r8723au/0197-staging-rtl8723au-Eliminate-Set_MSR-wrapper-call.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0197-staging-rtl8723au-Eliminate-Set_MSR-wrapper-call.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,148 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 17 Jul 2014 22:59:45 +0200
+Subject: [197/249] staging: rtl8723au: Eliminate Set_MSR() wrapper call
+Origin: https://git.kernel.org/linus/ee225f0f19b88909b53c8d612e7195379b0553e7
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c          |  2 +-
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c    | 18 +++++++++---------
+ drivers/staging/rtl8723au/core/rtw_sreset.c      |  2 +-
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c   |  5 -----
+ drivers/staging/rtl8723au/include/rtw_mlme_ext.h |  2 --
+ 5 files changed, 11 insertions(+), 18 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index ab9a66e..1ee8747 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -688,7 +688,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
+ 	}
+ 
+ 	/* set MSR to AP_Mode */
+-	Set_MSR23a(padapter, _HW_STATE_AP_);
++	rtl8723a_set_media_status(padapter, _HW_STATE_AP_);
+ 
+ 	/* Set BSSID REG */
+ 	hw_var_set_bssid(padapter, pnetwork->MacAddress);
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 3655ee5..44f3cd9 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -4102,7 +4102,7 @@ static void rtw_site_survey(struct rtw_adapter *padapter)
+ 		/* val8 = 0; */
+ 
+ 		/* config MSR */
+-		Set_MSR23a(padapter, (pmlmeinfo->state & 0x3));
++		rtl8723a_set_media_status(padapter, pmlmeinfo->state & 0x3);
+ 
+ 		/* restore RX GAIN */
+ 		rtl8723a_set_initial_gain(padapter, 0xff);
+@@ -4339,7 +4339,7 @@ static void start_create_ibss(struct rtw_adapter* padapter)
+ 
+ 		/* set msr to WIFI_FW_ADHOC_STATE */
+ 		pmlmeinfo->state = WIFI_FW_ADHOC_STATE;
+-		Set_MSR23a(padapter, (pmlmeinfo->state & 0x3));
++		rtl8723a_set_media_status(padapter, pmlmeinfo->state & 0x3);
+ 
+ 		/* issue beacon */
+ 		if (send_beacon23a(padapter) == _FAIL)
+@@ -4387,7 +4387,7 @@ static void start_clnt_join(struct rtw_adapter* padapter)
+ 		/* switch channel */
+ 		set_channel_bwmode23a(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode);
+ 
+-		Set_MSR23a(padapter, WIFI_FW_STATION_STATE);
++		rtl8723a_set_media_status(padapter, WIFI_FW_STATION_STATE);
+ 
+ 		val8 = (pmlmeinfo->auth_algo == dot11AuthAlgrthm_8021X) ?
+ 			0xcc: 0xcf;
+@@ -4405,7 +4405,7 @@ static void start_clnt_join(struct rtw_adapter* padapter)
+ 			  msecs_to_jiffies((REAUTH_TO * REAUTH_LIMIT) + (REASSOC_TO*REASSOC_LIMIT) + beacon_timeout));
+ 		pmlmeinfo->state = WIFI_FW_AUTH_NULL | WIFI_FW_STATION_STATE;
+ 	} else if (caps & WLAN_CAPABILITY_IBSS) {	/* adhoc client */
+-		Set_MSR23a(padapter, WIFI_FW_ADHOC_STATE);
++		rtl8723a_set_media_status(padapter, WIFI_FW_ADHOC_STATE);
+ 
+ 		rtl8723a_set_sec_cfg(padapter, 0xcf);
+ 
+@@ -5185,7 +5185,7 @@ void mlmeext_sta_del_event_callback23a(struct rtw_adapter *padapter)
+ 		pmlmeinfo->state = WIFI_FW_NULL_STATE;
+ 
+ 		/* set MSR to no link state -> infra. mode */
+-		Set_MSR23a(padapter, _HW_STATE_STATION_);
++		rtl8723a_set_media_status(padapter, _HW_STATE_STATION_);
+ 
+ 		del_timer_sync(&pmlmeext->link_timer);
+ 	}
+@@ -5584,8 +5584,8 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 		del_timer_sync(&pmlmeext->link_timer);
+ 
+ 		/* set MSR to nolink -> infra. mode */
+-		/* Set_MSR23a(padapter, _HW_STATE_NOLINK_); */
+-		Set_MSR23a(padapter, _HW_STATE_STATION_);
++		/* rtl8723a_set_media_status(padapter, _HW_STATE_NOLINK_); */
++		rtl8723a_set_media_status(padapter, _HW_STATE_STATION_);
+ 
+ 		hw_var_set_mlme_disconnect(padapter);
+ 	}
+@@ -5704,7 +5704,7 @@ int disconnect_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 		rtl8723a_set_bcn_func(padapter, 0);	/* Stop BCN */
+ 
+ 	/* set MSR to no link state -> infra. mode */
+-	Set_MSR23a(padapter, _HW_STATE_STATION_);
++	rtl8723a_set_media_status(padapter, _HW_STATE_STATION_);
+ 
+ 	pmlmeinfo->state = WIFI_FW_NULL_STATE;
+ 
+@@ -5865,7 +5865,7 @@ int sitesurvey_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 		rtl8723a_set_initial_gain(padapter, initialgain);
+ 
+ 		/* set MSR to no link state */
+-		Set_MSR23a(padapter, _HW_STATE_NOLINK_);
++		rtl8723a_set_media_status(padapter, _HW_STATE_NOLINK_);
+ 
+ 		rtl8723a_mlme_sitesurvey(padapter, 1);
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_sreset.c b/drivers/staging/rtl8723au/core/rtw_sreset.c
+index c152aef..9a79e11 100644
+--- a/drivers/staging/rtl8723au/core/rtw_sreset.c
++++ b/drivers/staging/rtl8723au/core/rtw_sreset.c
+@@ -103,7 +103,7 @@ static void sreset_restore_network_station(struct rtw_adapter *padapter)
+ 	hw_var_set_bssid(padapter, pmlmeinfo->network.MacAddress);
+ 	hw_var_set_mlme_join(padapter, 0);
+ 
+-	Set_MSR23a(padapter, (pmlmeinfo->state & 0x3));
++	rtl8723a_set_media_status(padapter, pmlmeinfo->state & 0x3);
+ 
+ 	mlmeext_joinbss_event_callback23a(padapter, 1);
+ 	/* restore Sequence No. */
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 25dae51..59cf5f1 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -293,11 +293,6 @@ void Update23aTblForSoftAP(u8 *bssrateset, u32 bssratelen)
+ 	}
+ }
+ 
+-void Set_MSR23a(struct rtw_adapter *padapter, u8 type)
+-{
+-	rtl8723a_set_media_status(padapter, type);
+-}
+-
+ inline u8 rtw_get_oper_ch23a(struct rtw_adapter *adapter)
+ {
+ 	return adapter_to_dvobj(adapter)->oper_channel;
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+index 7fd249f..87803e0 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+@@ -471,8 +471,6 @@ void get_rate_set23a(struct rtw_adapter *padapter, unsigned char *pbssrate,
+ void UpdateBrateTbl23a(struct rtw_adapter *padapter,u8 *mBratesOS);
+ void Update23aTblForSoftAP(u8 *bssrateset, u32 bssratelen);
+ 
+-void Set_MSR23a(struct rtw_adapter *padapter, u8 type);
+-
+ u8 rtw_get_oper_ch23a(struct rtw_adapter *adapter);
+ void rtw_set_oper_ch23a(struct rtw_adapter *adapter, u8 ch);
+ u8 rtw_get_oper_bw23a(struct rtw_adapter *adapter);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0198-staging-rtl8723au-Reduce-number-of-duplicate-defines.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0198-staging-rtl8723au-Reduce-number-of-duplicate-defines.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,594 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 17 Jul 2014 22:59:46 +0200
+Subject: [198/249] staging: rtl8723au: Reduce number of duplicate defines for
+ link state
+Origin: https://git.kernel.org/linus/6ec262733ecbb4578c2bd7d9d586f40fd587f636
+
+We use the MSR bits to define link state anyway, so no point having an
+additional two sets of defines for the same thing.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c           |   8 +-
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c     | 112 +++++++++++-----------
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c    |   5 +-
+ drivers/staging/rtl8723au/hal/hal_com.c           |   4 +-
+ drivers/staging/rtl8723au/hal/rtl8723a_cmd.c      |   4 +-
+ drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c |  14 +--
+ drivers/staging/rtl8723au/include/rtw_mlme_ext.h  |  10 --
+ 7 files changed, 72 insertions(+), 85 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index 1ee8747..14c8d4e 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -52,7 +52,7 @@ void free_mlme_ap_info23a(struct rtw_adapter *padapter)
+ 
+ 	rtw_sta_flush23a(padapter);
+ 
+-	pmlmeinfo->state = _HW_STATE_NOLINK_;
++	pmlmeinfo->state = MSR_NOLINK;
+ 
+ 	/* free_assoc_sta_resources */
+ 	rtw_free_all_stainfo23a(padapter);
+@@ -688,7 +688,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
+ 	}
+ 
+ 	/* set MSR to AP_Mode */
+-	rtl8723a_set_media_status(padapter, _HW_STATE_AP_);
++	rtl8723a_set_media_status(padapter, MSR_AP);
+ 
+ 	/* Set BSSID REG */
+ 	hw_var_set_bssid(padapter, pnetwork->MacAddress);
+@@ -1703,7 +1703,7 @@ int rtw_ap_inform_ch_switch23a (struct rtw_adapter *padapter, u8 new_ch, u8 ch_o
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+ 
+-	if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE)
++	if ((pmlmeinfo->state&0x03) != MSR_AP)
+ 		return ret;
+ 
+ 	DBG_8723A("%s(%s): with ch:%u, offset:%u\n", __func__,
+@@ -1740,7 +1740,7 @@ int rtw_sta_flush23a(struct rtw_adapter *padapter)
+ 
+ 	DBG_8723A("%s(%s)\n", __func__, padapter->pnetdev->name);
+ 
+-	if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE)
++	if ((pmlmeinfo->state&0x03) != MSR_AP)
+ 		return ret;
+ 
+ 	spin_lock_bh(&pstapriv->asoc_list_lock);
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 44f3cd9..18e4d24 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -393,7 +393,7 @@ static void init_mlme_ext_priv23a_value(struct rtw_adapter* padapter)
+ 	pmlmeext->sitesurvey_res.bss_cnt = 0;
+ 	pmlmeext->scan_abort = false;
+ 
+-	pmlmeinfo->state = WIFI_FW_NULL_STATE;
++	pmlmeinfo->state = MSR_NOLINK;
+ 	pmlmeinfo->reauth_count = 0;
+ 	pmlmeinfo->reassoc_count = 0;
+ 	pmlmeinfo->link_count = 0;
+@@ -849,7 +849,7 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 		return _SUCCESS;
+ 	}
+ 
+-	if (((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE) &&
++	if (((pmlmeinfo->state & 0x03) == MSR_AP) &&
+ 	    (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) {
+ 		psta = rtw_get_stainfo23a(pstapriv, mgmt->sa);
+ 		if (psta) {
+@@ -869,7 +869,7 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 						      pkt_len, psta);
+ 			}
+ 		}
+-	} else if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) {
++	} else if ((pmlmeinfo->state&0x03) == MSR_ADHOC) {
+ 		psta = rtw_get_stainfo23a(pstapriv, mgmt->sa);
+ 		if (psta) {
+ 			/* update WMM, ERP in the beacon */
+@@ -925,7 +925,7 @@ OnAuth23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 	u16 auth_mode, seq, algorithm;
+ 	int status, len = skb->len;
+ 
+-	if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE)
++	if ((pmlmeinfo->state & 0x03) != MSR_AP)
+ 		return _FAIL;
+ 
+ 	DBG_8723A("+OnAuth23a\n");
+@@ -1344,7 +1344,7 @@ OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 	uint pkt_len = skb->len;
+ 	int r;
+ 
+-	if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE)
++	if ((pmlmeinfo->state & 0x03) != MSR_AP)
+ 		return _FAIL;
+ 
+ 	left = pkt_len - sizeof(struct ieee80211_hdr_3addr);
+@@ -1801,7 +1801,7 @@ OnAssocRsp23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+ 	status = le16_to_cpu(pmgmt->u.assoc_resp.status_code);
+ 	if (status > 0)	{
+ 		DBG_8723A("assoc reject, status code: %d\n", status);
+-		pmlmeinfo->state = WIFI_FW_NULL_STATE;
++		pmlmeinfo->state = MSR_NOLINK;
+ 		res = -4;
+ 		goto report_assoc_result;
+ 	}
+@@ -2033,7 +2033,7 @@ static int OnAction23a_back23a(struct rtw_adapter *padapter,
+ 
+ 	DBG_8723A("%s\n", __func__);
+ 
+-	if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE)
++	if ((pmlmeinfo->state&0x03) != MSR_AP)
+ 		if (!(pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS))
+ 			return _SUCCESS;
+ 
+@@ -2416,7 +2416,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 	pframe = mgmt->u.beacon.variable;
+ 	pattrib->pktlen = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 
+-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
++	if ((pmlmeinfo->state & 0x03) == MSR_AP) {
+ 		u8 *iebuf;
+ 		int buflen;
+ 		/* DBG_8723A("ie len =%d\n", cur_network->IELength); */
+@@ -2461,7 +2461,7 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
+ 	pframe = rtw_set_ie23a(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *)
+ 			       &cur_network->DSConfig, &pattrib->pktlen);
+ 
+-	/* if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) */
++	/* if ((pmlmeinfo->state&0x03) == MSR_ADHOC) */
+ 	{
+ 		u8 erpinfo = 0;
+ 		u32 ATIMWindow;
+@@ -2578,7 +2578,7 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 	/* below for ad-hoc mode */
+ 
+ #ifdef CONFIG_8723AU_AP_MODE
+-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
++	if ((pmlmeinfo->state & 0x03) == MSR_AP) {
+ 		pwps_ie = cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+ 						  WLAN_OUI_TYPE_MICROSOFT_WPS,
+ 						  cur_network->IEs,
+@@ -2639,7 +2639,7 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+ 				       (unsigned char *)&cur_network->DSConfig,
+ 				       &pattrib->pktlen);
+ 
+-		if ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) {
++		if ((pmlmeinfo->state & 0x03) == MSR_ADHOC) {
+ 			u8 erpinfo = 0;
+ 			u32 ATIMWindow;
+ 			/*  IBSS Parameter Set... */
+@@ -3391,9 +3391,9 @@ static int _issue_nulldata23a(struct rtw_adapter *padapter, unsigned char *da,
+ 	pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_DATA |
+ 					      IEEE80211_STYPE_NULLFUNC);
+ 
+-	if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)
++	if ((pmlmeinfo->state&0x03) == MSR_AP)
+ 		pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_FROMDS);
+-	else if ((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE)
++	else if ((pmlmeinfo->state&0x03) == MSR_INFRA)
+ 		pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_TODS);
+ 
+ 	if (power_mode)
+@@ -3513,9 +3513,9 @@ static int _issue_qos_nulldata23a(struct rtw_adapter *padapter,
+ 	pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_DATA |
+ 					      IEEE80211_STYPE_QOS_NULLFUNC);
+ 
+-	if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)
++	if ((pmlmeinfo->state&0x03) == MSR_AP)
+ 		pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_FROMDS);
+-	else if ((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE)
++	else if ((pmlmeinfo->state&0x03) == MSR_INFRA)
+ 		pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_TODS);
+ 
+ 	if (pattrib->mdata)
+@@ -3950,7 +3950,7 @@ int send_delba23a(struct rtw_adapter *padapter, u8 initiator, u8 *addr)
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 	u16 tid;
+ 
+-	if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE)
++	if ((pmlmeinfo->state&0x03) != MSR_AP)
+ 		if (!(pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS))
+ 			return _SUCCESS;
+ 
+@@ -4337,20 +4337,17 @@ static void start_create_ibss(struct rtw_adapter* padapter)
+ 
+ 		rtl8723a_SetBeaconRelatedRegisters(padapter);
+ 
+-		/* set msr to WIFI_FW_ADHOC_STATE */
+-		pmlmeinfo->state = WIFI_FW_ADHOC_STATE;
++		/* set msr to MSR_ADHOC */
++		pmlmeinfo->state = MSR_ADHOC;
+ 		rtl8723a_set_media_status(padapter, pmlmeinfo->state & 0x3);
+ 
+ 		/* issue beacon */
+-		if (send_beacon23a(padapter) == _FAIL)
+-		{
++		if (send_beacon23a(padapter) == _FAIL) {
+ 			RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("issuing beacon frame fail....\n"));
+ 
+ 			report_join_res23a(padapter, -1);
+-			pmlmeinfo->state = WIFI_FW_NULL_STATE;
+-		}
+-		else
+-		{
++			pmlmeinfo->state = MSR_NOLINK;
++		} else {
+ 			hw_var_set_bssid(padapter, padapter->registrypriv.dev_network.MacAddress);
+ 			hw_var_set_mlme_join(padapter, 0);
+ 
+@@ -4387,7 +4384,7 @@ static void start_clnt_join(struct rtw_adapter* padapter)
+ 		/* switch channel */
+ 		set_channel_bwmode23a(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode);
+ 
+-		rtl8723a_set_media_status(padapter, WIFI_FW_STATION_STATE);
++		rtl8723a_set_media_status(padapter, MSR_INFRA);
+ 
+ 		val8 = (pmlmeinfo->auth_algo == dot11AuthAlgrthm_8021X) ?
+ 			0xcc: 0xcf;
+@@ -4403,9 +4400,9 @@ static void start_clnt_join(struct rtw_adapter* padapter)
+ 		set_link_timer(pmlmeext, beacon_timeout);
+ 		mod_timer(&padapter->mlmepriv.assoc_timer, jiffies +
+ 			  msecs_to_jiffies((REAUTH_TO * REAUTH_LIMIT) + (REASSOC_TO*REASSOC_LIMIT) + beacon_timeout));
+-		pmlmeinfo->state = WIFI_FW_AUTH_NULL | WIFI_FW_STATION_STATE;
++		pmlmeinfo->state = WIFI_FW_AUTH_NULL | MSR_INFRA;
+ 	} else if (caps & WLAN_CAPABILITY_IBSS) {	/* adhoc client */
+-		rtl8723a_set_media_status(padapter, WIFI_FW_ADHOC_STATE);
++		rtl8723a_set_media_status(padapter, MSR_ADHOC);
+ 
+ 		rtl8723a_set_sec_cfg(padapter, 0xcf);
+ 
+@@ -4414,7 +4411,7 @@ static void start_clnt_join(struct rtw_adapter* padapter)
+ 
+ 		rtl8723a_SetBeaconRelatedRegisters(padapter);
+ 
+-		pmlmeinfo->state = WIFI_FW_ADHOC_STATE;
++		pmlmeinfo->state = MSR_ADHOC;
+ 
+ 		report_join_res23a(padapter, 1);
+ 	}
+@@ -4483,17 +4480,17 @@ int receive_disconnect23a(struct rtw_adapter *padapter,
+ 
+ 	DBG_8723A("%s\n", __func__);
+ 
+-	if ((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE)
++	if ((pmlmeinfo->state&0x03) == MSR_INFRA)
+ 	{
+ 		if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)
+ 		{
+-			pmlmeinfo->state = WIFI_FW_NULL_STATE;
++			pmlmeinfo->state = MSR_NOLINK;
+ 			report_del_sta_event23a(padapter, MacAddr, reason);
+ 
+ 		}
+ 		else if (pmlmeinfo->state & WIFI_FW_LINKING_STATE)
+ 		{
+-			pmlmeinfo->state = WIFI_FW_NULL_STATE;
++			pmlmeinfo->state = MSR_NOLINK;
+ 			report_join_res23a(padapter, -2);
+ 		}
+ 	}
+@@ -5053,7 +5050,7 @@ void mlmeext_joinbss_event_callback23a(struct rtw_adapter *padapter,
+ 		goto exit_mlmeext_joinbss_event_callback23a;
+ 	}
+ 
+-	if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE)
++	if ((pmlmeinfo->state&0x03) == MSR_ADHOC)
+ 	{
+ 		/* for bc/mc */
+ 		psta_bmc = rtw_get_bcmc_stainfo23a(padapter);
+@@ -5103,7 +5100,7 @@ void mlmeext_joinbss_event_callback23a(struct rtw_adapter *padapter,
+ 
+ 	hw_var_set_mlme_join(padapter, 2);
+ 
+-	if ((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE) {
++	if ((pmlmeinfo->state&0x03) == MSR_INFRA) {
+ 		/*  correcting TSF */
+ 		rtw_correct_TSF(padapter);
+ 
+@@ -5124,7 +5121,7 @@ void mlmeext_sta_add_event_callback23a(struct rtw_adapter *padapter,
+ 
+ 	DBG_8723A("%s\n", __func__);
+ 
+-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) {
++	if ((pmlmeinfo->state & 0x03) == MSR_ADHOC) {
+ 	/* adhoc master or sta_count>1 */
+ 		if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)
+ 		{
+@@ -5137,7 +5134,7 @@ void mlmeext_sta_add_event_callback23a(struct rtw_adapter *padapter,
+ 			if (send_beacon23a(padapter) != _SUCCESS) {
+ 				pmlmeinfo->FW_sta_info[psta->mac_id].status = 0;
+ 
+-				pmlmeinfo->state ^= WIFI_FW_ADHOC_STATE;
++				pmlmeinfo->state ^= MSR_ADHOC;
+ 
+ 				return;
+ 			}
+@@ -5182,10 +5179,10 @@ void mlmeext_sta_del_event_callback23a(struct rtw_adapter *padapter)
+ 
+ 		flush_all_cam_entry23a(padapter);
+ 
+-		pmlmeinfo->state = WIFI_FW_NULL_STATE;
++		pmlmeinfo->state = MSR_NOLINK;
+ 
+ 		/* set MSR to no link state -> infra. mode */
+-		rtl8723a_set_media_status(padapter, _HW_STATE_STATION_);
++		rtl8723a_set_media_status(padapter, MSR_INFRA);
+ 
+ 		del_timer_sync(&pmlmeext->link_timer);
+ 	}
+@@ -5393,7 +5390,7 @@ static void link_timer_hdl(unsigned long data)
+ 
+ 	if (pmlmeinfo->state & WIFI_FW_AUTH_NULL) {
+ 		DBG_8723A("link_timer_hdl:no beacon while connecting\n");
+-		pmlmeinfo->state = WIFI_FW_NULL_STATE;
++		pmlmeinfo->state = MSR_NOLINK;
+ 		report_join_res23a(padapter, -3);
+ 	} else if (pmlmeinfo->state & WIFI_FW_AUTH_STATE) {
+ 		/* re-auth timer */
+@@ -5418,7 +5415,7 @@ static void link_timer_hdl(unsigned long data)
+ 	} else if (pmlmeinfo->state & WIFI_FW_ASSOC_STATE) {
+ 		/* re-assoc timer */
+ 		if (++pmlmeinfo->reassoc_count > REASSOC_LIMIT) {
+-			pmlmeinfo->state = WIFI_FW_NULL_STATE;
++			pmlmeinfo->state = MSR_NOLINK;
+ 			report_join_res23a(padapter, -2);
+ 			return;
+ 		}
+@@ -5479,22 +5476,22 @@ int setopmode_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 	switch (psetop->mode) {
+ 	case NL80211_IFTYPE_P2P_GO:
+ 	case NL80211_IFTYPE_AP:
+-		pmlmeinfo->state = WIFI_FW_AP_STATE;
+-		type = _HW_STATE_AP_;
++		pmlmeinfo->state = MSR_AP;
++		type = MSR_AP;
+ 		break;
+ 	case NL80211_IFTYPE_P2P_CLIENT:
+ 	case NL80211_IFTYPE_STATION:
+ 		/*  clear state */
+ 		pmlmeinfo->state &= ~(BIT(0)|BIT(1));
+ 		/* set to STATION_STATE */
+-		pmlmeinfo->state |= WIFI_FW_STATION_STATE;
+-		type = _HW_STATE_STATION_;
++		pmlmeinfo->state |= MSR_INFRA;
++		type = MSR_INFRA;
+ 		break;
+ 	case NL80211_IFTYPE_ADHOC:
+-		type = _HW_STATE_ADHOC_;
++		type = MSR_ADHOC;
+ 		break;
+ 	default:
+-		type = _HW_STATE_NOLINK_;
++		type = MSR_NOLINK;
+ 		break;
+ 	}
+ 
+@@ -5515,7 +5512,7 @@ int createbss_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 	if (pparm->ifmode == NL80211_IFTYPE_AP ||
+ 	    pparm->ifmode == NL80211_IFTYPE_P2P_GO) {
+ #ifdef CONFIG_8723AU_AP_MODE
+-		if (pmlmeinfo->state == WIFI_FW_AP_STATE) {
++		if (pmlmeinfo->state == MSR_AP) {
+ 			/* todo: */
+ 			return H2C_SUCCESS;
+ 		}
+@@ -5572,11 +5569,11 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 
+ 	/* check already connecting to AP or not */
+ 	if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) {
+-		if (pmlmeinfo->state & WIFI_FW_STATION_STATE)
++		if (pmlmeinfo->state & MSR_INFRA)
+ 			issue_deauth_ex(padapter, pnetwork->MacAddress,
+ 					WLAN_REASON_DEAUTH_LEAVING, 5, 100);
+ 
+-		pmlmeinfo->state = WIFI_FW_NULL_STATE;
++		pmlmeinfo->state = MSR_NOLINK;
+ 
+ 		/* clear CAM */
+ 		flush_all_cam_entry23a(padapter);
+@@ -5584,8 +5581,7 @@ int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 		del_timer_sync(&pmlmeext->link_timer);
+ 
+ 		/* set MSR to nolink -> infra. mode */
+-		/* rtl8723a_set_media_status(padapter, _HW_STATE_NOLINK_); */
+-		rtl8723a_set_media_status(padapter, _HW_STATE_STATION_);
++		rtl8723a_set_media_status(padapter, MSR_INFRA);
+ 
+ 		hw_var_set_mlme_disconnect(padapter);
+ 	}
+@@ -5691,7 +5687,7 @@ int disconnect_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 
+ 	/* set_opmode_cmd(padapter, infra_client_with_mlme); */
+ 
+-	/* pmlmeinfo->state = WIFI_FW_NULL_STATE; */
++	/* pmlmeinfo->state = MSR_NOLINK; */
+ 
+ 	hw_var_set_mlme_disconnect(padapter);
+ 	hw_var_set_bssid(padapter, null_addr);
+@@ -5699,14 +5695,14 @@ int disconnect_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 	/* restore to initial setting. */
+ 	update_tx_basic_rate23a(padapter, padapter->registrypriv.wireless_mode);
+ 
+-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE ||
+-	    (pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)
++	if ((pmlmeinfo->state & 0x03) == MSR_ADHOC ||
++	    (pmlmeinfo->state & 0x03) == MSR_AP)
+ 		rtl8723a_set_bcn_func(padapter, 0);	/* Stop BCN */
+ 
+ 	/* set MSR to no link state -> infra. mode */
+-	rtl8723a_set_media_status(padapter, _HW_STATE_STATION_);
++	rtl8723a_set_media_status(padapter, MSR_INFRA);
+ 
+-	pmlmeinfo->state = WIFI_FW_NULL_STATE;
++	pmlmeinfo->state = MSR_NOLINK;
+ 
+ 	/* switch to the 20M Hz mode after disconnect */
+ 	pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20;
+@@ -5865,7 +5861,7 @@ int sitesurvey_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 		rtl8723a_set_initial_gain(padapter, initialgain);
+ 
+ 		/* set MSR to no link state */
+-		rtl8723a_set_media_status(padapter, _HW_STATE_NOLINK_);
++		rtl8723a_set_media_status(padapter, MSR_NOLINK);
+ 
+ 		rtl8723a_mlme_sitesurvey(padapter, 1);
+ 
+@@ -5941,7 +5937,7 @@ int set_stakey_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 	DBG_8723A_LEVEL(_drv_always_, "set pairwise key to hw: alg:%d(WEP40-1 "
+ 			"WEP104-5 TKIP-2 AES-4) camid:%d\n",
+ 			pparm->algorithm, cam_id);
+-	if ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
++	if ((pmlmeinfo->state & 0x03) == MSR_AP) {
+ 		struct sta_info *psta;
+ 		struct sta_priv *pstapriv = &padapter->stapriv;
+ 
+@@ -6015,7 +6011,7 @@ int add_ba_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 
+ 	if (((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) &&
+ 	     pmlmeinfo->HT_enable) ||
+-	    (pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE) {
++	    (pmlmeinfo->state & 0x03) == MSR_AP) {
+ 		issue_action_BA23a(padapter, pparm->addr,
+ 				   WLAN_ACTION_ADDBA_REQ, (u16)pparm->tid);
+ 		mod_timer(&psta->addba_retry_timer,
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 59cf5f1..3228c59 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -18,6 +18,7 @@
+ #include <drv_types.h>
+ #include <linux/ieee80211.h>
+ #include <wifi.h>
++#include <rtl8723a_spec.h>
+ 
+ static unsigned char ARTHEROS_OUI1[] = {0x00, 0x03, 0x7f};
+ static unsigned char ARTHEROS_OUI2[] = {0x00, 0x13, 0x74};
+@@ -402,7 +403,7 @@ bool is_client_associated_to_ap23a(struct rtw_adapter *padapter)
+ 	pmlmeinfo = &pmlmeext->mlmext_info;
+ 
+ 	if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS &&
+-	    (pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE)
++	    (pmlmeinfo->state & 0x03) == MSR_INFRA)
+ 		return true;
+ 	else
+ 		return false;
+@@ -414,7 +415,7 @@ bool is_client_associated_to_ibss23a(struct rtw_adapter *padapter)
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 
+ 	if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS &&
+-	    (pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE)
++	    (pmlmeinfo->state & 0x03) == MSR_ADHOC)
+ 		return true;
+ 	else
+ 		return false;
+diff --git a/drivers/staging/rtl8723au/hal/hal_com.c b/drivers/staging/rtl8723au/hal/hal_com.c
+index 9fba049..44fc37b 100644
+--- a/drivers/staging/rtl8723au/hal/hal_com.c
++++ b/drivers/staging/rtl8723au/hal/hal_com.c
+@@ -567,8 +567,8 @@ void rtl8723a_mlme_sitesurvey(struct rtw_adapter *padapter, u8 flag)
+ 		pmlmeinfo = &pmlmeext->mlmext_info;
+ 
+ 		if ((is_client_associated_to_ap23a(padapter) == true) ||
+-		    ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) ||
+-		    ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)) {
++		    ((pmlmeinfo->state & 0x03) == MSR_ADHOC) ||
++		    ((pmlmeinfo->state & 0x03) == MSR_AP)) {
+ 			/*  enable to rx data frame */
+ 			rtl8723au_write16(padapter, REG_RXFLTMAP2, 0xFFFF);
+ 
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+index 66ece49..7dd62b3 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+@@ -235,7 +235,7 @@ ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength)
+ 	pframe = mgmt->u.beacon.variable;
+ 	pktlen = offsetof(struct ieee80211_mgmt, u.beacon.variable);
+ 
+-	if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) {
++	if ((pmlmeinfo->state&0x03) == MSR_AP) {
+ 		/* DBG_8723A("ie len =%d\n", cur_network->IELength); */
+ 		pktlen += cur_network->IELength;
+ 		memcpy(pframe, cur_network->IEs, pktlen);
+@@ -259,7 +259,7 @@ ConstructBeacon(struct rtw_adapter *padapter, u8 *pframe, u32 *pLength)
+ 	pframe = rtw_set_ie23a(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *)
+ 			       &cur_network->DSConfig, &pktlen);
+ 
+-	if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) {
++	if ((pmlmeinfo->state&0x03) == MSR_ADHOC) {
+ 		u32 ATIMWindow;
+ 		/*  IBSS Parameter Set... */
+ 		/* ATIMWindow = cur->ATIMWindow; */
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
+index 2bc830f..bc9e880 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
+@@ -2300,18 +2300,18 @@ void hw_var_set_opmode(struct rtw_adapter *padapter, u8 mode)
+ {
+ 	u8 val8;
+ 
+-	if ((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) {
++	if (mode == MSR_INFRA || mode == MSR_NOLINK) {
+ 		StopTxBeacon(padapter);
+ 
+ 		/*  disable atim wnd */
+ 		val8 = DIS_TSF_UDT | EN_BCN_FUNCTION | DIS_ATIM;
+ 		SetBcnCtrlReg23a(padapter, val8, ~val8);
+-	} else if ((mode == _HW_STATE_ADHOC_) /*|| (mode == _HW_STATE_AP_) */) {
++	} else if (mode == MSR_ADHOC) {
+ 		ResumeTxBeacon(padapter);
+ 
+ 		val8 = DIS_TSF_UDT | EN_BCN_FUNCTION | DIS_BCNQ_SUB;
+ 		SetBcnCtrlReg23a(padapter, val8, ~val8);
+-	} else if (mode == _HW_STATE_AP_) {
++	} else if (mode == MSR_AP) {
+ 		/*  add NULL Data and BT NULL Data Packets to FW RSVD Page */
+ 		rtl8723a_set_BTCoex_AP_mode_FwRsvdPkt_cmd(padapter);
+ 
+@@ -2393,8 +2393,8 @@ void hw_var_set_correct_tsf(struct rtw_adapter *padapter)
+ 		do_div(pmlmeext->TSFValue,
+ 		       (pmlmeinfo->bcn_interval * 1024)) - 1024;	/* us */
+ 
+-	if (((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) ||
+-	    ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE)) {
++	if (((pmlmeinfo->state & 0x03) == MSR_ADHOC) ||
++	    ((pmlmeinfo->state & 0x03) == MSR_AP)) {
+ 		/* pHalData->RegTxPause |= STOP_BCNQ;BIT(6) */
+ 		/* rtl8723au_write8(padapter, REG_TXPAUSE,
+ 		   (rtl8723au_read8(Adapter, REG_TXPAUSE)|BIT(6))); */
+@@ -2412,8 +2412,8 @@ void hw_var_set_correct_tsf(struct rtw_adapter *padapter)
+ 	/* enable related TSF function */
+ 	SetBcnCtrlReg23a(padapter, EN_BCN_FUNCTION, 0);
+ 
+-	if (((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) ||
+-	    ((pmlmeinfo->state & 0x03) == WIFI_FW_AP_STATE))
++	if (((pmlmeinfo->state & 0x03) == MSR_ADHOC) ||
++	    ((pmlmeinfo->state & 0x03) == MSR_AP))
+ 		ResumeTxBeacon(padapter);
+ }
+ 
+diff --git a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+index 87803e0..2e32c83 100644
+--- a/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
++++ b/drivers/staging/rtl8723au/include/rtw_mlme_ext.h
+@@ -282,16 +282,6 @@ struct	ss_res
+ 	struct rtw_ieee80211_channel ch[RTW_CHANNEL_SCAN_AMOUNT];
+ };
+ 
+-/* define AP_MODE				0x0C */
+-/* define STATION_MODE	0x08 */
+-/* define AD_HOC_MODE		0x04 */
+-/* define NO_LINK_MODE	0x00 */
+-
+-#define		WIFI_FW_NULL_STATE			_HW_STATE_NOLINK_
+-#define	WIFI_FW_STATION_STATE		_HW_STATE_STATION_
+-#define	WIFI_FW_AP_STATE				_HW_STATE_AP_
+-#define	WIFI_FW_ADHOC_STATE			_HW_STATE_ADHOC_
+-
+ #define	WIFI_FW_AUTH_NULL			0x00000100
+ #define	WIFI_FW_AUTH_STATE			0x00000200
+ #define	WIFI_FW_AUTH_SUCCESS			0x00000400

Added: dists/sid/linux/debian/patches/features/all/r8723au/0199-staging-rtl8723au-Use-rtl8723au_set_media_status-to-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0199-staging-rtl8723au-Use-rtl8723au_set_media_status-to-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,65 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 17 Jul 2014 22:59:47 +0200
+Subject: [199/249] staging: rtl8723au: Use rtl8723au_set_media_status() to
+ replace _InitNetworkType()
+Origin: https://git.kernel.org/linus/df72ac93ee22daf1595e93b45de9e6804af0afde
+
+Reduce yet another duplicate implementation of set_media_status()
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/usb_halinit.c       | 13 +------------
+ drivers/staging/rtl8723au/include/rtl8723a_spec.h |  8 --------
+ 2 files changed, 1 insertion(+), 20 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c
+index 8a7e644..d8f9f27 100644
+--- a/drivers/staging/rtl8723au/hal/usb_halinit.c
++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c
+@@ -338,17 +338,6 @@ static void _InitQueuePriority(struct rtw_adapter *Adapter)
+ 	_InitNormalChipQueuePriority(Adapter);
+ }
+ 
+-static void _InitNetworkType(struct rtw_adapter *Adapter)
+-{
+-	u32 value32;
+-
+-	value32 = rtl8723au_read32(Adapter, REG_CR);
+-
+-	/*  TODO: use the other function to set network type */
+-	value32 = (value32 & ~MASK_NETTYPE) | _NETTYPE(NT_LINK_AP);
+-	rtl8723au_write32(Adapter, REG_CR, value32);
+-}
+-
+ static void _InitTransferPageSize(struct rtw_adapter *Adapter)
+ {
+ 	/*  Tx page size is always 128. */
+@@ -756,7 +745,7 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter)
+ 
+ 	_InitInterrupt(Adapter);
+ 	hw_var_set_macaddr(Adapter, Adapter->eeprompriv.mac_addr);
+-	_InitNetworkType(Adapter);/* set msr */
++	rtl8723a_set_media_status(Adapter, MSR_INFRA);
+ 	_InitWMACSetting(Adapter);
+ 	_InitAdaptiveCtrl(Adapter);
+ 	_InitEDCA(Adapter);
+diff --git a/drivers/staging/rtl8723au/include/rtl8723a_spec.h b/drivers/staging/rtl8723au/include/rtl8723a_spec.h
+index b5d7123..8d19b28 100644
+--- a/drivers/staging/rtl8723au/include/rtl8723a_spec.h
++++ b/drivers/staging/rtl8723au/include/rtl8723a_spec.h
+@@ -1323,14 +1323,6 @@ Current IOREG MAP
+ #define ENSWBCN				BIT(8)
+ #define ENSEC				BIT(9)
+ 
+-/*  Network type */
+-#define _NETTYPE(x)			(((x) & 0x3) << 16)
+-#define MASK_NETTYPE			0x30000
+-#define NT_NO_LINK			0x0
+-#define NT_LINK_AD_HOC			0x1
+-#define NT_LINK_AP			0x2
+-#define NT_AS_AP			0x3
+-
+ #define _LBMODE(x)			(((x) & 0xF) << 24)
+ #define MASK_LBMODE			0xF000000
+ #define LOOPBACK_NORMAL			0x0

Added: dists/sid/linux/debian/patches/features/all/r8723au/0200-staging-rtl8723au-Corrections-in-the-coding-style.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0200-staging-rtl8723au-Corrections-in-the-coding-style.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,144 @@
+From: Raphael Silva <rapphil at gmail.com>
+Date: Thu, 17 Jul 2014 22:59:48 +0200
+Subject: [200/249] staging: rtl8723au: Corrections in the coding style
+Origin: https://git.kernel.org/linus/1d69fe84f33e92e2097e83a99200716ea4bfc873
+
+Some corrections were made to the code in order to conform to the
+Kernel Coding Style.
+
+Jes: Fix build problem
+
+Signed-off-by: Raphael Silva <rapphil at gmail.com>
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_sta_mgt.c | 42 ++++++++++++++++++----------
+ 1 file changed, 27 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
+index 8db844b..d17998d 100644
+--- a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
++++ b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
+@@ -26,7 +26,7 @@ static const u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+ 
+ static void _rtw_init_stainfo(struct sta_info *psta)
+ {
+-	memset((u8 *)psta, 0, sizeof (struct sta_info));
++	memset((u8 *)psta, 0, sizeof(struct sta_info));
+ 	spin_lock_init(&psta->lock);
+ 	INIT_LIST_HEAD(&psta->list);
+ 	INIT_LIST_HEAD(&psta->hash_list);
+@@ -71,8 +71,10 @@ int _rtw_init_sta_priv23a(struct sta_priv *pstapriv)
+ 	pstapriv->auth_list_cnt = 0;
+ 	pstapriv->auth_to = 3; /*  3*2 = 6 sec */
+ 	pstapriv->assoc_to = 3;
+-	/* pstapriv->expire_to = 900;  900*2 = 1800 sec = 30 min, expire after no any traffic. */
+-	/* pstapriv->expire_to = 30;  30*2 = 60 sec = 1 min, expire after no any traffic. */
++	/* pstapriv->expire_to = 900;  900*2 = 1800 sec = 30 min,
++	    expire after no any traffic. */
++	/* pstapriv->expire_to = 30;  30*2 = 60 sec = 1 min,
++	    expire after no any traffic. */
+ 	pstapriv->expire_to = 3; /*  3*2 = 6 sec */
+ 	pstapriv->max_num_sta = NUM_STA;
+ #endif
+@@ -94,6 +96,7 @@ int _rtw_free_sta_priv23a(struct sta_priv *pstapriv)
+ 
+ 			list_for_each_safe(plist, ptmp, phead) {
+ 				int i;
++
+ 				psta = container_of(plist, struct sta_info,
+ 						    hash_list);
+ 				for (i = 0; i < 16 ; i++) {
+@@ -144,14 +147,17 @@ rtw_alloc_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr, gfp_t gfp)
+ 
+ 	list_add_tail(&psta->hash_list, phash_list);
+ 
+-	pstapriv->asoc_sta_count ++ ;
++	pstapriv->asoc_sta_count++;
+ 
+-/*  For the SMC router, the sequence number of first packet of WPS handshake will be 0. */
+-/*  In this case, this packet will be dropped by recv_decache function if we use the 0x00 as the default value for tid_rxseq variable. */
++/*  For the SMC router, the sequence number of first packet of WPS
++     handshake will be 0. */
++/*  In this case, this packet will be dropped by recv_decache function
++    if we use the 0x00 as the default value for tid_rxseq variable. */
+ /*  So, we initialize the tid_rxseq variable as the 0xffff. */
+ 
+ 	for (i = 0; i < 16; i++)
+-		memcpy(&psta->sta_recvpriv.rxcache.tid_rxseq[i], &wRxSeqInitialValue, 2);
++		memcpy(&psta->sta_recvpriv.rxcache.tid_rxseq[i],
++			&wRxSeqInitialValue, 2);
+ 
+ 	RT_TRACE(_module_rtl871x_sta_mgt_c_, _drv_info_,
+ 		 ("alloc number_%d stainfo  with hwaddr = %pM\n",
+@@ -242,8 +248,12 @@ int rtw_free_stainfo23a(struct rtw_adapter *padapter, struct sta_info *psta)
+ 	spin_unlock_bh(&pxmitpriv->lock);
+ 
+ 	list_del_init(&psta->hash_list);
+-	RT_TRACE(_module_rtl871x_sta_mgt_c_, _drv_err_, ("\n free number_%d stainfo  with hwaddr = 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x \n", pstapriv->asoc_sta_count, psta->hwaddr[0], psta->hwaddr[1], psta->hwaddr[2], psta->hwaddr[3], psta->hwaddr[4], psta->hwaddr[5]));
+-	pstapriv->asoc_sta_count --;
++	RT_TRACE(_module_rtl871x_sta_mgt_c_, _drv_err_,
++		("\n free number_%d stainfo  with hwaddr = 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x\n",
++			pstapriv->asoc_sta_count, psta->hwaddr[0],
++			psta->hwaddr[1], psta->hwaddr[2], psta->hwaddr[3],
++			psta->hwaddr[4], psta->hwaddr[5]));
++	pstapriv->asoc_sta_count--;
+ 
+ 	/*  re-init sta_info; 20061114  will be init in alloc_stainfo */
+ 	/* _rtw_init_sta_xmit_priv23a(&psta->sta_xmitpriv); */
+@@ -251,7 +261,8 @@ int rtw_free_stainfo23a(struct rtw_adapter *padapter, struct sta_info *psta)
+ 
+ 	del_timer_sync(&psta->addba_retry_timer);
+ 
+-	/* for A-MPDU Rx reordering buffer control, cancel reordering_ctrl_timer */
++	/* for A-MPDU Rx reordering buffer control,
++	   cancel reordering_ctrl_timer */
+ 	for (i = 0; i < 16; i++) {
+ 		struct list_head	*phead, *plist;
+ 		struct recv_frame *prframe;
+@@ -261,7 +272,8 @@ int rtw_free_stainfo23a(struct rtw_adapter *padapter, struct sta_info *psta)
+ 
+ 		del_timer_sync(&preorder_ctrl->reordering_ctrl_timer);
+ 
+-		ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue;
++		ppending_recvframe_queue =
++			&preorder_ctrl->pending_recvframe_queue;
+ 
+ 		spin_lock_bh(&ppending_recvframe_queue->lock);
+ 		phead =		get_list_head(ppending_recvframe_queue);
+@@ -301,7 +313,7 @@ int rtw_free_stainfo23a(struct rtw_adapter *padapter, struct sta_info *psta)
+ 	pstapriv->sta_dz_bitmap &= ~CHKBIT(psta->aid);
+ 	pstapriv->tim_bitmap &= ~CHKBIT(psta->aid);
+ 
+-	if ((psta->aid >0) && (pstapriv->sta_aid[psta->aid - 1] == psta)) {
++	if ((psta->aid > 0) && (pstapriv->sta_aid[psta->aid - 1] == psta)) {
+ 		pstapriv->sta_aid[psta->aid - 1] = NULL;
+ 		psta->aid = 0;
+ 	}
+@@ -318,7 +330,7 @@ void rtw_free_all_stainfo23a(struct rtw_adapter *padapter)
+ 	struct list_head *plist, *phead, *ptmp;
+ 	struct sta_info *psta;
+ 	struct sta_priv *pstapriv = &padapter->stapriv;
+-	struct sta_info* pbcmc_stainfo = rtw_get_bcmc_stainfo23a(padapter);
++	struct sta_info *pbcmc_stainfo = rtw_get_bcmc_stainfo23a(padapter);
+ 	s32 index;
+ 
+ 	if (pstapriv->asoc_sta_count == 1)
+@@ -332,7 +344,7 @@ void rtw_free_all_stainfo23a(struct rtw_adapter *padapter)
+ 		list_for_each_safe(plist, ptmp, phead) {
+ 			psta = container_of(plist, struct sta_info, hash_list);
+ 
+-			if (pbcmc_stainfo!= psta)
++			if (pbcmc_stainfo != psta)
+ 				rtw_free_stainfo23a(padapter, psta);
+ 		}
+ 	}
+@@ -374,7 +386,7 @@ struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr)
+ 	return psta;
+ }
+ 
+-int rtw_init_bcmc_stainfo23a(struct rtw_adapter* padapter)
++int rtw_init_bcmc_stainfo23a(struct rtw_adapter *padapter)
+ {
+ 	struct	sta_priv *pstapriv = &padapter->stapriv;
+ 	struct sta_info		*psta;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0201-staging-rtl8723au-Remove-write-only-variable-UsbRxHi.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0201-staging-rtl8723au-Remove-write-only-variable-UsbRxHi.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,41 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 17 Jul 2014 22:59:49 +0200
+Subject: [201/249] staging: rtl8723au: Remove write-only variable
+ UsbRxHighSpeedMode
+Origin: https://git.kernel.org/linus/ef03600cae2dec4e5225b18e9ffbcdd5bc56d73c
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/usb_halinit.c      | 3 ---
+ drivers/staging/rtl8723au/include/rtl8723a_hal.h | 3 ---
+ 2 files changed, 6 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c
+index d8f9f27..227a363 100644
+--- a/drivers/staging/rtl8723au/hal/usb_halinit.c
++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c
+@@ -520,9 +520,6 @@ static void InitUsbAggregationSetting(struct rtw_adapter *Adapter)
+ 
+ 	/*  Rx aggregation setting */
+ 	usb_AggSettingRxUpdate(Adapter);
+-
+-	/*  201/12/10 MH Add for USB agg mode dynamic switch. */
+-	pHalData->UsbRxHighSpeedMode = false;
+ }
+ 
+ static void _InitOperationMode(struct rtw_adapter *Adapter)
+diff --git a/drivers/staging/rtl8723au/include/rtl8723a_hal.h b/drivers/staging/rtl8723au/include/rtl8723a_hal.h
+index 344b708..066dc9c 100644
+--- a/drivers/staging/rtl8723au/include/rtl8723a_hal.h
++++ b/drivers/staging/rtl8723au/include/rtl8723a_hal.h
+@@ -384,9 +384,6 @@ struct hal_data_8723a {
+ 	u8	OutEpQueueSel;
+ 	u8	OutEpNumber;
+ 
+-	/*  2010/12/10 MH Add for USB aggreation mode dynamic shceme. */
+-	bool		UsbRxHighSpeedMode;
+-
+ 	/*  2010/11/22 MH Add for slim combo debug mode selective. */
+ 	/*  This is used for fix the drawback of CU TSMC-A/UMC-A cut. HW auto suspend ability. Close BT clock. */
+ 	bool		SlimComboDbg;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0202-staging-rtl8723au-Remove-no-op-usb_AggSetting.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0202-staging-rtl8723au-Remove-no-op-usb_AggSetting.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,79 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 17 Jul 2014 22:59:50 +0200
+Subject: [202/249] staging: rtl8723au: Remove no-op usb_AggSetting*()
+Origin: https://git.kernel.org/linus/120036acecd1610b88a6445252377c0b8ba73442
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/usb_halinit.c | 50 -----------------------------
+ 1 file changed, 50 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c
+index 227a363..4161409 100644
+--- a/drivers/staging/rtl8723au/hal/usb_halinit.c
++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c
+@@ -473,55 +473,6 @@ static void _InitRetryFunction(struct rtw_adapter *Adapter)
+ 	rtl8723au_write8(Adapter, REG_ACKTO, 0x40);
+ }
+ 
+-/*-----------------------------------------------------------------------------
+- * Function:	usb_AggSettingTxUpdate()
+- *
+- * Overview:	Seperate TX/RX parameters update independent for TP
+- *		detection and dynamic TX/RX aggreagtion parameters update.
+- *
+- * Input:			struct rtw_adapter *
+- *
+- * Output/Return:	NONE
+- *
+- * Revised History:
+- *	When		Who		Remark
+- *	12/10/2010	MHC		Seperate to smaller function.
+- *
+- *---------------------------------------------------------------------------*/
+-static void usb_AggSettingTxUpdate(struct rtw_adapter *Adapter)
+-{
+-}	/*  usb_AggSettingTxUpdate */
+-
+-/*-----------------------------------------------------------------------------
+- * Function:	usb_AggSettingRxUpdate()
+- *
+- * Overview:	Seperate TX/RX parameters update independent for TP
+- *		detection and dynamic TX/RX aggreagtion parameters update.
+- *
+- * Input:			struct rtw_adapter *
+- *
+- * Output/Return:	NONE
+- *
+- * Revised History:
+- *	When		Who		Remark
+- *	12/10/2010	MHC		Seperate to smaller function.
+- *
+- *---------------------------------------------------------------------------*/
+-static void usb_AggSettingRxUpdate(struct rtw_adapter *Adapter)
+-{
+-}	/*  usb_AggSettingRxUpdate */
+-
+-static void InitUsbAggregationSetting(struct rtw_adapter *Adapter)
+-{
+-	struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);
+-
+-	/*  Tx aggregation setting */
+-	usb_AggSettingTxUpdate(Adapter);
+-
+-	/*  Rx aggregation setting */
+-	usb_AggSettingRxUpdate(Adapter);
+-}
+-
+ static void _InitOperationMode(struct rtw_adapter *Adapter)
+ {
+ }
+@@ -748,7 +699,6 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter)
+ 	_InitEDCA(Adapter);
+ 	_InitRateFallback(Adapter);
+ 	_InitRetryFunction(Adapter);
+-	InitUsbAggregationSetting(Adapter);
+ 	_InitOperationMode(Adapter);/* todo */
+ 	rtl8723a_InitBeaconParameters(Adapter);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0203-staging-rtl8723au-Remove-no-op-_InitOperation_mode-f.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0203-staging-rtl8723au-Remove-no-op-_InitOperation_mode-f.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,35 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 17 Jul 2014 22:59:51 +0200
+Subject: [203/249] staging: rtl8723au: Remove no-op _InitOperation_mode()
+ function
+Origin: https://git.kernel.org/linus/a2c379ce26a054b4154effddd61601ef0acffb59
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/usb_halinit.c | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c
+index 4161409..0c760e5 100644
+--- a/drivers/staging/rtl8723au/hal/usb_halinit.c
++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c
+@@ -473,10 +473,6 @@ static void _InitRetryFunction(struct rtw_adapter *Adapter)
+ 	rtl8723au_write8(Adapter, REG_ACKTO, 0x40);
+ }
+ 
+-static void _InitOperationMode(struct rtw_adapter *Adapter)
+-{
+-}
+-
+ static void _InitRFType(struct rtw_adapter *Adapter)
+ {
+ 	struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);
+@@ -699,7 +695,6 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter)
+ 	_InitEDCA(Adapter);
+ 	_InitRateFallback(Adapter);
+ 	_InitRetryFunction(Adapter);
+-	_InitOperationMode(Adapter);/* todo */
+ 	rtl8723a_InitBeaconParameters(Adapter);
+ 
+ 	_InitHWLed(Adapter);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0204-staging-rtl8723au-Remove-RegBcnCtrlVal.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0204-staging-rtl8723au-Remove-RegBcnCtrlVal.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,66 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 17 Jul 2014 22:59:52 +0200
+Subject: [204/249] staging: rtl8723au: Remove RegBcnCtrlVal
+Origin: https://git.kernel.org/linus/e4d480b012f371c12a5c317494a5e068ad27216f
+
+The value saved in RegBcnCtrlVal was never used. In addition the code
+was highly endian broken, declaring it as a u32, then accessing it via
+a u8 * later.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c | 18 +++++-------------
+ drivers/staging/rtl8723au/include/rtl8723a_hal.h  |  1 -
+ 2 files changed, 5 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
+index bc9e880..5c4751c 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
+@@ -882,20 +882,13 @@ void rtl8723a_read_chip_version(struct rtw_adapter *padapter)
+ /*  */
+ void SetBcnCtrlReg23a(struct rtw_adapter *padapter, u8 SetBits, u8 ClearBits)
+ {
+-	struct hal_data_8723a *pHalData;
+-	u32 addr;
+-	u8 *pRegBcnCtrlVal;
+-
+-	pHalData = GET_HAL_DATA(padapter);
+-	pRegBcnCtrlVal = (u8 *)&pHalData->RegBcnCtrlVal;
+-
+-	addr = REG_BCN_CTRL;
++	u8 val8;
+ 
+-	*pRegBcnCtrlVal = rtl8723au_read8(padapter, addr);
+-	*pRegBcnCtrlVal |= SetBits;
+-	*pRegBcnCtrlVal &= ~ClearBits;
++	val8 = rtl8723au_read8(padapter, REG_BCN_CTRL);
++	val8 |= SetBits;
++	val8 &= ~ClearBits;
+ 
+-	rtl8723au_write8(padapter, addr, *pRegBcnCtrlVal);
++	rtl8723au_write8(padapter, REG_BCN_CTRL, val8);
+ }
+ 
+ void rtl8723a_InitBeaconParameters(struct rtw_adapter *padapter)
+@@ -903,7 +896,6 @@ void rtl8723a_InitBeaconParameters(struct rtw_adapter *padapter)
+ 	struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter);
+ 
+ 	rtl8723au_write16(padapter, REG_BCN_CTRL, 0x1010);
+-	pHalData->RegBcnCtrlVal = 0x1010;
+ 
+ 	/*  TODO: Remove these magic number */
+ 	rtl8723au_write16(padapter, REG_TBTT_PROHIBIT, 0x6404);	/*  ms */
+diff --git a/drivers/staging/rtl8723au/include/rtl8723a_hal.h b/drivers/staging/rtl8723au/include/rtl8723a_hal.h
+index 066dc9c..1f63eb1 100644
+--- a/drivers/staging/rtl8723au/include/rtl8723a_hal.h
++++ b/drivers/staging/rtl8723au/include/rtl8723a_hal.h
+@@ -356,7 +356,6 @@ struct hal_data_8723a {
+ 	u8	fw_ractrl;
+ 	u8	RegTxPause;
+ 	/*  Beacon function related global variable. */
+-	u32	RegBcnCtrlVal;
+ 	u8	RegFwHwTxQCtrl;
+ 	u8	RegReg542;
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0205-staging-rtl8723au-Use-proper-name-REG_CAMCMD-and-rem.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0205-staging-rtl8723au-Use-proper-name-REG_CAMCMD-and-rem.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,113 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 17 Jul 2014 22:59:53 +0200
+Subject: [205/249] staging: rtl8723au: Use proper name REG_CAMCMD and remove
+ wrapper invalidate_cam_all23a()
+Origin: https://git.kernel.org/linus/2a3bc8aa4fb2466ac478180dd9b21339b689ff5e
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_wlan_util.c    | 7 +------
+ drivers/staging/rtl8723au/hal/hal_com.c           | 8 ++++----
+ drivers/staging/rtl8723au/hal/usb_halinit.c       | 2 +-
+ drivers/staging/rtl8723au/include/hal_com.h       | 2 +-
+ drivers/staging/rtl8723au/include/rtl8723a_spec.h | 2 --
+ 5 files changed, 7 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_wlan_util.c b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+index 3228c59..32f3603 100644
+--- a/drivers/staging/rtl8723au/core/rtw_wlan_util.c
++++ b/drivers/staging/rtl8723au/core/rtw_wlan_util.c
+@@ -445,11 +445,6 @@ unsigned int decide_wait_for_beacon_timeout23a(unsigned int bcn_interval)
+ 		return bcn_interval << 2;
+ }
+ 
+-void invalidate_cam_all23a(struct rtw_adapter *padapter)
+-{
+-	rtl8723a_cam_invalid_all(padapter);
+-}
+-
+ void clear_cam_entry23a(struct rtw_adapter *padapter, u8 entry)
+ {
+ 	unsigned char null_sta[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+@@ -483,7 +478,7 @@ void flush_all_cam_entry23a(struct rtw_adapter *padapter)
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 
+-	rtl8723a_cam_invalid_all(padapter);
++	rtl8723a_cam_invalidate_all(padapter);
+ 
+ 	memset(pmlmeinfo->FW_sta_info, 0, sizeof(pmlmeinfo->FW_sta_info));
+ }
+diff --git a/drivers/staging/rtl8723au/hal/hal_com.c b/drivers/staging/rtl8723au/hal/hal_com.c
+index 44fc37b..8718151 100644
+--- a/drivers/staging/rtl8723au/hal/hal_com.c
++++ b/drivers/staging/rtl8723au/hal/hal_com.c
+@@ -669,16 +669,16 @@ void rtl8723a_cam_empty_entry(struct rtw_adapter *padapter, u8 ucIndex)
+ 		   ("rtl8723a_cam_empty_entry(): WRITE A4: %lx \n",
+ 		   ulContent));*/
+ 		/* delay_ms(40); */
+-		rtl8723au_write32(padapter, RWCAM, ulCommand);
++		rtl8723au_write32(padapter, REG_CAMCMD, ulCommand);
+ 		/* RT_TRACE(COMP_SEC, DBG_LOUD,
+ 		   ("rtl8723a_cam_empty_entry(): WRITE A0: %lx \n",
+ 		   ulCommand));*/
+ 	}
+ }
+ 
+-void rtl8723a_cam_invalid_all(struct rtw_adapter *padapter)
++void rtl8723a_cam_invalidate_all(struct rtw_adapter *padapter)
+ {
+-	rtl8723au_write32(padapter, RWCAM, BIT(31) | BIT(30));
++	rtl8723au_write32(padapter, REG_CAMCMD, CAM_POLLINIG | BIT(30));
+ }
+ 
+ void rtl8723a_cam_write(struct rtw_adapter *padapter,
+@@ -708,7 +708,7 @@ void rtl8723a_cam_write(struct rtw_adapter *padapter,
+ 
+ 		rtl8723au_write32(padapter, WCAMI, val);
+ 		cmd = CAM_POLLINIG | CAM_WRITE | (addr + j);
+-		rtl8723au_write32(padapter, RWCAM, cmd);
++		rtl8723au_write32(padapter, REG_CAMCMD, cmd);
+ 
+ 		/* DBG_8723A("%s => cam write: %x, %x\n", __func__, cmd, val);*/
+ 	}
+diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c
+index 0c760e5..e09329b 100644
+--- a/drivers/staging/rtl8723au/hal/usb_halinit.c
++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c
+@@ -702,7 +702,7 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter)
+ 	_BBTurnOnBlock(Adapter);
+ 	/* NicIFSetMacAddress(padapter, padapter->PermanentAddress); */
+ 
+-	invalidate_cam_all23a(Adapter);
++	rtl8723a_cam_invalidate_all(Adapter);
+ 
+ 	/*  2010/12/17 MH We need to set TX power according to EFUSE content at first. */
+ 	PHY_SetTxPowerLevel8723A(Adapter, pHalData->CurrentChannel);
+diff --git a/drivers/staging/rtl8723au/include/hal_com.h b/drivers/staging/rtl8723au/include/hal_com.h
+index 4a161e2..6c2ca4f 100644
+--- a/drivers/staging/rtl8723au/include/hal_com.h
++++ b/drivers/staging/rtl8723au/include/hal_com.h
+@@ -182,7 +182,7 @@ void rtl8723a_set_slot_time(struct rtw_adapter *padapter, u8 slottime);
+ void rtl8723a_ack_preamble(struct rtw_adapter *padapter, u8 bShortPreamble);
+ void rtl8723a_set_sec_cfg(struct rtw_adapter *padapter, u8 sec);
+ void rtl8723a_cam_empty_entry(struct rtw_adapter *padapter, u8 ucIndex);
+-void rtl8723a_cam_invalid_all(struct rtw_adapter *padapter);
++void rtl8723a_cam_invalidate_all(struct rtw_adapter *padapter);
+ void rtl8723a_cam_write(struct rtw_adapter *padapter,
+ 			u8 entry, u16 ctrl, const u8 *mac, const u8 *key);
+ void rtl8723a_fifo_cleanup(struct rtw_adapter *padapter);
+diff --git a/drivers/staging/rtl8723au/include/rtl8723a_spec.h b/drivers/staging/rtl8723au/include/rtl8723a_spec.h
+index 8d19b28..59b545b 100644
+--- a/drivers/staging/rtl8723au/include/rtl8723a_spec.h
++++ b/drivers/staging/rtl8723au/include/rtl8723a_spec.h
+@@ -454,8 +454,6 @@
+ /*  */
+ /*  9. Security Control Registers	(Offset: ) */
+ /*  */
+-	/* IN 8190 Data Sheet is called CAMcmd */
+-#define	RWCAM				REG_CAMCMD
+ 	/*  Software write CAM input content */
+ #define	WCAMI				REG_CAMWRITE
+ 	/*  Software read/write CAM config */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0206-staging-rtl8723au-rtl8723a_InitBeaconParameters-Remo.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0206-staging-rtl8723au-rtl8723a_InitBeaconParameters-Remo.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,25 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 17 Jul 2014 22:59:54 +0200
+Subject: [206/249] staging: rtl8723au: rtl8723a_InitBeaconParameters(): Remove
+ unused variable
+Origin: https://git.kernel.org/linus/b3ee999e0b4e8a3e42bf186dae0ccf4f2692a8a5
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
+index 5c4751c..8523908 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c
+@@ -893,8 +893,6 @@ void SetBcnCtrlReg23a(struct rtw_adapter *padapter, u8 SetBits, u8 ClearBits)
+ 
+ void rtl8723a_InitBeaconParameters(struct rtw_adapter *padapter)
+ {
+-	struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter);
+-
+ 	rtl8723au_write16(padapter, REG_BCN_CTRL, 0x1010);
+ 
+ 	/*  TODO: Remove these magic number */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0207-staging-rtl8723au-ODM_IC_11N_SERIES-is-always-true-f.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0207-staging-rtl8723au-ODM_IC_11N_SERIES-is-always-true-f.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,293 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 17 Jul 2014 22:59:55 +0200
+Subject: [207/249] staging: rtl8723au: ODM_IC_11N_SERIES is always true for
+ SupportICType
+Origin: https://git.kernel.org/linus/344af82c94311c4b11af968503c8b97cedb2fa91
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c               | 142 +++++++++++-----------
+ drivers/staging/rtl8723au/include/odm.h           |   4 -
+ drivers/staging/rtl8723au/include/odm_interface.h |  11 +-
+ 3 files changed, 75 insertions(+), 82 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index e15ebfe..f21861e 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -274,18 +274,16 @@ void ODM23a_DMInit(struct dm_odm_t *pDM_Odm)
+ 	odm_DIG23aInit(pDM_Odm);
+ 	odm_RateAdaptiveMaskInit23a(pDM_Odm);
+ 
+-	if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) {
+-		odm23a_DynBBPSInit(pDM_Odm);
+-		odm_DynamicTxPower23aInit(pDM_Odm);
+-		odm_TXPowerTrackingInit23a(pDM_Odm);
+-		ODM_EdcaTurboInit23a(pDM_Odm);
+-		if ((pDM_Odm->AntDivType == CG_TRX_HW_ANTDIV)	||
+-		    (pDM_Odm->AntDivType == CGCS_RX_HW_ANTDIV)	||
+-		    (pDM_Odm->AntDivType == CG_TRX_SMART_ANTDIV))
+-			odm_InitHybridAntDiv23a(pDM_Odm);
+-		else if (pDM_Odm->AntDivType == CGCS_RX_SW_ANTDIV)
+-			odm_SwAntDivInit(pDM_Odm);
+-	}
++	odm23a_DynBBPSInit(pDM_Odm);
++	odm_DynamicTxPower23aInit(pDM_Odm);
++	odm_TXPowerTrackingInit23a(pDM_Odm);
++	ODM_EdcaTurboInit23a(pDM_Odm);
++	if ((pDM_Odm->AntDivType == CG_TRX_HW_ANTDIV)	||
++	    (pDM_Odm->AntDivType == CGCS_RX_HW_ANTDIV)	||
++	    (pDM_Odm->AntDivType == CG_TRX_SMART_ANTDIV))
++		odm_InitHybridAntDiv23a(pDM_Odm);
++	else if (pDM_Odm->AntDivType == CGCS_RX_SW_ANTDIV)
++		odm_SwAntDivInit(pDM_Odm);
+ }
+ 
+ /*  2011/09/20 MH This is the entry pointer for all team to execute HW out source DM. */
+@@ -304,7 +302,7 @@ void ODM_DMWatchdog23a(struct dm_odm_t *pDM_Odm)
+ 	/* NeilChen--2012--08--24-- */
+ 	/* Fix Leave LPS issue */
+ 	if ((pDM_Odm->Adapter->pwrctrlpriv.pwr_mode != PS_MODE_ACTIVE) &&/*  in LPS mode */
+-	    (pDM_Odm->SupportICType & (ODM_RTL8723A))) {
++	    (pDM_Odm->SupportICType & ODM_RTL8723A)) {
+ 			ODM_RT_TRACE(pDM_Odm, ODM_COMP_DIG, ODM_DBG_LOUD, ("----Step1: odm_DIG23a is in LPS mode\n"));
+ 			ODM_RT_TRACE(pDM_Odm, ODM_COMP_DIG, ODM_DBG_LOUD, ("---Step2: 8723AS is in LPS mode\n"));
+ 			odm_DIG23abyRSSI_LPS(pDM_Odm);
+@@ -327,10 +325,8 @@ void ODM_DMWatchdog23a(struct dm_odm_t *pDM_Odm)
+ 	else if (pDM_Odm->AntDivType == CGCS_RX_SW_ANTDIV)
+ 		odm_SwAntDivChkAntSwitch(pDM_Odm, SWAW_STEP_PEAK);
+ 
+-	if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) {
+-		ODM_TXPowerTrackingCheck23a(pDM_Odm);
+-	      odm_EdcaTurboCheck23a(pDM_Odm);
+-	}
++	ODM_TXPowerTrackingCheck23a(pDM_Odm);
++	odm_EdcaTurboCheck23a(pDM_Odm);
+ 
+ 	odm_dtc(pDM_Odm);
+ }
+@@ -551,7 +547,7 @@ void odm_CommonInfoSelfInit23a(struct dm_odm_t *pDM_Odm
+ {
+ 	pDM_Odm->bCckHighPower = (bool) ODM_GetBBReg(pDM_Odm, 0x824, BIT(9));
+ 	pDM_Odm->RFPathRxEnable = (u8) ODM_GetBBReg(pDM_Odm, 0xc04, 0x0F);
+-	if (pDM_Odm->SupportICType & (ODM_RTL8723A))
++	if (pDM_Odm->SupportICType & ODM_RTL8723A)
+ 		pDM_Odm->AntDivType = CGCS_RX_SW_ANTDIV;
+ 
+ 	ODM_InitDebugSetting23a(pDM_Odm);
+@@ -655,7 +651,7 @@ void odm_DIG23abyRSSI_LPS(struct dm_odm_t *pDM_Odm)
+ 	u8 bFwCurrentInPSMode = false;
+ 	u8 CurrentIGI = pDM_Odm->RSSI_Min;
+ 
+-	if (!(pDM_Odm->SupportICType & (ODM_RTL8723A)))
++	if (!(pDM_Odm->SupportICType & ODM_RTL8723A))
+ 		return;
+ 
+ 	CurrentIGI = CurrentIGI+RSSI_OFFSET_DIG;
+@@ -764,7 +760,7 @@ void odm_DIG23a(struct dm_odm_t *pDM_Odm)
+ 	FirstDisConnect = (!pDM_Odm->bLinked) && (pDM_DigTable->bMediaConnect_0);
+ 
+ 	/* 1 Boundary Decision */
+-	if ((pDM_Odm->SupportICType & (ODM_RTL8723A)) &&
++	if ((pDM_Odm->SupportICType & ODM_RTL8723A) &&
+ 	    ((pDM_Odm->BoardType == ODM_BOARD_HIGHPWR) || pDM_Odm->ExtLNA)) {
+ 		dm_dig_max = DM_DIG_MAX_NIC_HP;
+ 		dm_dig_min = DM_DIG_MIN_NIC_HP;
+@@ -777,7 +773,7 @@ void odm_DIG23a(struct dm_odm_t *pDM_Odm)
+ 
+ 	if (pDM_Odm->bLinked) {
+ 	      /* 2 8723A Series, offset need to be 10 */
+-		if (pDM_Odm->SupportICType == (ODM_RTL8723A)) {
++		if (pDM_Odm->SupportICType == ODM_RTL8723A) {
+ 			/* 2 Upper Bound */
+ 			if ((pDM_Odm->RSSI_Min + 10) > DM_DIG_MAX_NIC)
+ 				pDM_DigTable->rx_gain_range_max = DM_DIG_MAX_NIC;
+@@ -925,32 +921,36 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm)
+ 	if (!(pDM_Odm->SupportAbility & ODM_BB_FA_CNT))
+ 		return;
+ 
+-	if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) {
+-		/* hold ofdm counter */
+-		ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_HOLDC_11N, BIT(31), 1); /* hold page C counter */
+-		ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(31), 1); /* hold page D counter */
+-
+-		ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE1_11N, bMaskDWord);
+-		FalseAlmCnt->Cnt_Fast_Fsync = (ret_value&0xffff);
+-		FalseAlmCnt->Cnt_SB_Search_fail = ((ret_value&0xffff0000)>>16);
+-		ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE2_11N, bMaskDWord);
+-		FalseAlmCnt->Cnt_OFDM_CCA = (ret_value&0xffff);
+-		FalseAlmCnt->Cnt_Parity_Fail = ((ret_value&0xffff0000)>>16);
+-		ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE3_11N, bMaskDWord);
+-		FalseAlmCnt->Cnt_Rate_Illegal = (ret_value&0xffff);
+-		FalseAlmCnt->Cnt_Crc8_fail = ((ret_value&0xffff0000)>>16);
+-		ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE4_11N, bMaskDWord);
+-		FalseAlmCnt->Cnt_Mcs_fail = (ret_value&0xffff);
+-
+-		FalseAlmCnt->Cnt_Ofdm_fail = FalseAlmCnt->Cnt_Parity_Fail +
+-					     FalseAlmCnt->Cnt_Rate_Illegal +
+-					     FalseAlmCnt->Cnt_Crc8_fail +
+-					     FalseAlmCnt->Cnt_Mcs_fail +
+-					     FalseAlmCnt->Cnt_Fast_Fsync +
+-					     FalseAlmCnt->Cnt_SB_Search_fail;
+-		/* hold cck counter */
+-		ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT(12), 1);
+-		ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT(14), 1);
++	/* hold ofdm counter */
++	 /* hold page C counter */
++	ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_HOLDC_11N, BIT(31), 1);
++	/* hold page D counter */
++	ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(31), 1);
++	ret_value =
++		ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE1_11N, bMaskDWord);
++	FalseAlmCnt->Cnt_Fast_Fsync = (ret_value&0xffff);
++	FalseAlmCnt->Cnt_SB_Search_fail = ((ret_value&0xffff0000)>>16);
++	ret_value =
++		ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE2_11N, bMaskDWord);
++	FalseAlmCnt->Cnt_OFDM_CCA = (ret_value&0xffff);
++	FalseAlmCnt->Cnt_Parity_Fail = ((ret_value&0xffff0000)>>16);
++	ret_value =
++		ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE3_11N, bMaskDWord);
++	FalseAlmCnt->Cnt_Rate_Illegal = (ret_value&0xffff);
++	FalseAlmCnt->Cnt_Crc8_fail = ((ret_value&0xffff0000)>>16);
++	ret_value =
++		ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_TYPE4_11N, bMaskDWord);
++	FalseAlmCnt->Cnt_Mcs_fail = (ret_value&0xffff);
++
++	FalseAlmCnt->Cnt_Ofdm_fail = FalseAlmCnt->Cnt_Parity_Fail +
++		FalseAlmCnt->Cnt_Rate_Illegal +
++		FalseAlmCnt->Cnt_Crc8_fail +
++		FalseAlmCnt->Cnt_Mcs_fail +
++		FalseAlmCnt->Cnt_Fast_Fsync +
++		FalseAlmCnt->Cnt_SB_Search_fail;
++	/* hold cck counter */
++	ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT(12), 1);
++	ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N, BIT(14), 1);
+ 
+ 	ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_CCK_FA_LSB_11N, bMaskByte0);
+ 	FalseAlmCnt->Cnt_Cck_fail = ret_value;
+@@ -958,7 +958,8 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm)
+ 	FalseAlmCnt->Cnt_Cck_fail +=  (ret_value & 0xff) << 8;
+ 
+ 	ret_value = ODM_GetBBReg(pDM_Odm, ODM_REG_CCK_CCA_CNT_11N, bMaskDWord);
+-	FalseAlmCnt->Cnt_CCK_CCA = ((ret_value&0xFF)<<8) | ((ret_value&0xFF00)>>8);
++	FalseAlmCnt->Cnt_CCK_CCA =
++		((ret_value&0xFF)<<8) | ((ret_value&0xFF00)>>8);
+ 
+ 	FalseAlmCnt->Cnt_all = (FalseAlmCnt->Cnt_Fast_Fsync +
+ 				FalseAlmCnt->Cnt_SB_Search_fail +
+@@ -968,7 +969,8 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm)
+ 				FalseAlmCnt->Cnt_Mcs_fail +
+ 				FalseAlmCnt->Cnt_Cck_fail);
+ 
+-	FalseAlmCnt->Cnt_CCA_all = FalseAlmCnt->Cnt_OFDM_CCA + FalseAlmCnt->Cnt_CCK_CCA;
++	FalseAlmCnt->Cnt_CCA_all =
++		FalseAlmCnt->Cnt_OFDM_CCA + FalseAlmCnt->Cnt_CCK_CCA;
+ 
+ 	if (pDM_Odm->SupportICType >= ODM_RTL8723A) {
+ 		/* reset false alarm counter registers */
+@@ -977,8 +979,10 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm)
+ 		ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(27), 1);
+ 		ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(27), 0);
+ 		/* update ofdm counter */
+-		ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_HOLDC_11N, BIT(31), 0); /* update page C counter */
+-		ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(31), 0); /* update page D counter */
++		 /* update page C counter */
++		ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_HOLDC_11N, BIT(31), 0);
++		 /* update page D counter */
++		ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RSTD_11N, BIT(31), 0);
+ 
+ 		/* reset CCK CCA counter */
+ 		ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11N,
+@@ -992,26 +996,20 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm)
+ 			     BIT(15) | BIT(14), 2);
+ 	}
+ 
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Enter odm_FalseAlarmCounterStatistics23a\n"));
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Fast_Fsync =%d, Cnt_SB_Search_fail =%d\n",
+-		FalseAlmCnt->Cnt_Fast_Fsync, FalseAlmCnt->Cnt_SB_Search_fail));
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Parity_Fail =%d, Cnt_Rate_Illegal =%d\n",
+-		FalseAlmCnt->Cnt_Parity_Fail, FalseAlmCnt->Cnt_Rate_Illegal));
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Crc8_fail =%d, Cnt_Mcs_fail =%d\n",
+-		FalseAlmCnt->Cnt_Crc8_fail, FalseAlmCnt->Cnt_Mcs_fail));
+-	} else { /* FOR ODM_IC_11AC_SERIES */
+-		/* read OFDM FA counter */
+-		FalseAlmCnt->Cnt_Ofdm_fail = ODM_GetBBReg(pDM_Odm, ODM_REG_OFDM_FA_11AC, bMaskLWord);
+-		FalseAlmCnt->Cnt_Cck_fail = ODM_GetBBReg(pDM_Odm, ODM_REG_CCK_FA_11AC, bMaskLWord);
+-		FalseAlmCnt->Cnt_all = FalseAlmCnt->Cnt_Ofdm_fail + FalseAlmCnt->Cnt_Cck_fail;
+-
+-		/*  reset OFDM FA coutner */
+-		ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RST_11AC, BIT(17), 1);
+-		ODM_SetBBReg(pDM_Odm, ODM_REG_OFDM_FA_RST_11AC, BIT(17), 0);
+-		/*  reset CCK FA counter */
+-		ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11AC, BIT(15), 0);
+-		ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11AC, BIT(15), 1);
+-	}
++	ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD,
++		     ("Enter odm_FalseAlarmCounterStatistics23a\n"));
++	ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD,
++		     ("Cnt_Fast_Fsync =%d, Cnt_SB_Search_fail =%d\n",
++		      FalseAlmCnt->Cnt_Fast_Fsync,
++		      FalseAlmCnt->Cnt_SB_Search_fail));
++	ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD,
++		     ("Cnt_Parity_Fail =%d, Cnt_Rate_Illegal =%d\n",
++		      FalseAlmCnt->Cnt_Parity_Fail,
++		      FalseAlmCnt->Cnt_Rate_Illegal));
++	ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD,
++		     ("Cnt_Crc8_fail =%d, Cnt_Mcs_fail =%d\n",
++		      FalseAlmCnt->Cnt_Crc8_fail, FalseAlmCnt->Cnt_Mcs_fail));
++
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Cck_fail =%d\n", FalseAlmCnt->Cnt_Cck_fail));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Ofdm_fail =%d\n", FalseAlmCnt->Cnt_Ofdm_fail));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Total False Alarm =%d\n", FalseAlmCnt->Cnt_all));
+@@ -1836,7 +1834,7 @@ bool ODM_SingleDualAntennaDetection(struct dm_odm_t *pDM_Odm, u8 mode)
+ 		rSleep, rPMPD_ANAEN,
+ 		rFPGA0_XCD_SwitchControl, rBlue_Tooth};
+ 
+-	if (!(pDM_Odm->SupportICType & (ODM_RTL8723A)))
++	if (!(pDM_Odm->SupportICType & ODM_RTL8723A))
+ 		return bResult;
+ 
+ 	if (!(pDM_Odm->SupportAbility&ODM_BB_ANT_DIV))
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index 08c6f72..b466a81 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -415,10 +415,6 @@ enum odm_ic_type_def {
+ 	ODM_RTL8821	=	BIT(6),
+ };
+ 
+-#define ODM_IC_11N_SERIES			\
+-	(ODM_RTL8192S|ODM_RTL8192C|ODM_RTL8192D|ODM_RTL8723A|ODM_RTL8188E)
+-#define ODM_IC_11AC_SERIES		(ODM_RTL8812)
+-
+ /* ODM_CMNINFO_CUT_VER */
+ enum odm_cut_version {
+ 	ODM_CUT_A		=	1,
+diff --git a/drivers/staging/rtl8723au/include/odm_interface.h b/drivers/staging/rtl8723au/include/odm_interface.h
+index c260d6b..ea35070 100644
+--- a/drivers/staging/rtl8723au/include/odm_interface.h
++++ b/drivers/staging/rtl8723au/include/odm_interface.h
+@@ -33,17 +33,16 @@ ODM_REG(DIG,_pDM_Odm)
+ #define _bit_11N(_name)			ODM_BIT_##_name##_11N
+ #define _bit_11AC(_name)		ODM_BIT_##_name##_11AC
+ 
+-#define _cat(_name, _ic_type, _func)									\
+-	(															\
+-		((_ic_type) & ODM_IC_11N_SERIES)? _func##_11N(_name):		\
+-		_func##_11AC(_name)									\
++#define _cat(_name, _func)					\
++	(							\
++		_func##_11N(_name)				\
+ 	)
+ 
+ /*  _name: name of register or bit. */
+ /*  Example: "ODM_REG(R_A_AGC_CORE1, pDM_Odm)" */
+ /*         gets "ODM_R_A_AGC_CORE1" or "ODM_R_A_AGC_CORE1_8192C", depends on SupportICType. */
+-#define ODM_REG(_name, _pDM_Odm)	_cat(_name, _pDM_Odm->SupportICType, _reg)
+-#define ODM_BIT(_name, _pDM_Odm)	_cat(_name, _pDM_Odm->SupportICType, _bit)
++#define ODM_REG(_name, _pDM_Odm)	_cat(_name, _reg)
++#define ODM_BIT(_name, _pDM_Odm)	_cat(_name, _bit)
+ 
+ /*  */
+ /*  2012/02/17 MH For non-MP compile pass only. Linux does not support workitem. */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0208-staging-rtl8723au-Remove-unused-odm_RegDefine11AC.h.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0208-staging-rtl8723au-Remove-unused-odm_RegDefine11AC.h.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,80 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 17 Jul 2014 22:59:56 +0200
+Subject: [208/249] staging: rtl8723au: Remove unused odm_RegDefine11AC.h
+Origin: https://git.kernel.org/linus/bc919b0e599eb7a7c04b57001320bbd95eddadb1
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ .../staging/rtl8723au/include/odm_RegDefine11AC.h  | 49 ----------------------
+ drivers/staging/rtl8723au/include/odm_precomp.h    |  1 -
+ 2 files changed, 50 deletions(-)
+ delete mode 100644 drivers/staging/rtl8723au/include/odm_RegDefine11AC.h
+
+diff --git a/drivers/staging/rtl8723au/include/odm_RegDefine11AC.h b/drivers/staging/rtl8723au/include/odm_RegDefine11AC.h
+deleted file mode 100644
+index 77b7ace..0000000
+--- a/drivers/staging/rtl8723au/include/odm_RegDefine11AC.h
++++ /dev/null
+@@ -1,49 +0,0 @@
+-/******************************************************************************
+- *
+- * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+- *
+- * 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
+- * published by the Free Software Foundation.
+- *
+- * This program is distributed in the hope that it will be useful, but WITHOUT
+- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+- * more details.
+- *
+- ******************************************************************************/
+-
+-#ifndef	__ODM_REGDEFINE11AC_H__
+-#define __ODM_REGDEFINE11AC_H__
+-
+-/* 2 RF REG LIST */
+-
+-
+-
+-/* 2 BB REG LIST */
+-/* PAGE 8 */
+-/* PAGE 9 */
+-#define	ODM_REG_OFDM_FA_RST_11AC		0x9A4
+-/* PAGE A */
+-#define	ODM_REG_CCK_CCA_11AC				0xA0A
+-#define	ODM_REG_CCK_FA_RST_11AC			0xA2C
+-#define	ODM_REG_CCK_FA_11AC				0xA5C
+-/* PAGE C */
+-#define	ODM_REG_IGI_A_11AC				0xC50
+-/* PAGE E */
+-#define	ODM_REG_IGI_B_11AC				0xE50
+-/* PAGE F */
+-#define	ODM_REG_OFDM_FA_11AC			0xF48
+-
+-
+-/* 2 MAC REG LIST */
+-
+-
+-
+-
+-/* DIG Related */
+-#define	ODM_BIT_IGI_11AC				0xFFFFFFFF
+-
+-
+-
+-#endif
+diff --git a/drivers/staging/rtl8723au/include/odm_precomp.h b/drivers/staging/rtl8723au/include/odm_precomp.h
+index 69de888..fb793c8 100644
+--- a/drivers/staging/rtl8723au/include/odm_precomp.h
++++ b/drivers/staging/rtl8723au/include/odm_precomp.h
+@@ -32,7 +32,6 @@
+ #include "odm.h"
+ #include "odm_HWConfig.h"
+ #include "odm_debug.h"
+-#include "odm_RegDefine11AC.h"
+ #include "odm_RegDefine11N.h"
+ 
+ #include "HalDMOutSrc8723A.h" /* for IQK,LCK,Power-tracking */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0209-staging-rtl8723au-Remove-pointless-IS_STA_VALID-macr.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0209-staging-rtl8723au-Remove-pointless-IS_STA_VALID-macr.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,81 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 17 Jul 2014 22:59:57 +0200
+Subject: [209/249] staging: rtl8723au: Remove pointless IS_STA_VALID() macro
+Origin: https://git.kernel.org/linus/2e8d47e039ec09959800ce559ed6396c4a29351d
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c          | 8 ++++----
+ drivers/staging/rtl8723au/hal/odm_HWConfig.c | 2 +-
+ drivers/staging/rtl8723au/include/odm.h      | 4 ----
+ 3 files changed, 5 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index f21861e..ce192de 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -570,7 +570,7 @@ void odm_CommonInfoSelfUpdate23a(struct dm_odm_t *pDM_Odm)
+ 
+ 	for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) {
+ 		pEntry = pDM_Odm->pODM_StaInfo[i];
+-		if (IS_STA_VALID(pEntry))
++		if (pEntry)
+ 			EntryCnt++;
+ 	}
+ 	if (EntryCnt == 1)
+@@ -1216,7 +1216,7 @@ u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm,
+ 	/* u8 WirelessMode =*(pDM_Odm->pWirelessMode); */
+ 
+ 	pEntry = pDM_Odm->pODM_StaInfo[macid];
+-	if (!IS_STA_VALID(pEntry))
++	if (!pEntry)
+ 		return ra_mask;
+ 
+ 	WirelessMode = pEntry->wireless_mode;
+@@ -1338,7 +1338,7 @@ void odm_RefreshRateAdaptiveMask23aCE23a(struct dm_odm_t *pDM_Odm)
+ 
+ 	for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) {
+ 		struct sta_info *pstat = pDM_Odm->pODM_StaInfo[i];
+-		if (IS_STA_VALID(pstat)) {
++		if (pstat) {
+ 			if (ODM_RAStateCheck23a(pDM_Odm, pstat->rssi_stat.UndecoratedSmoothedPWDB, false, &pstat->rssi_level)) {
+ 				ODM_RT_TRACE(pDM_Odm, ODM_COMP_RA_MASK, ODM_DBG_LOUD,
+ 					     ("RSSI:%d, RSSI_LEVEL:%d\n",
+@@ -1480,7 +1480,7 @@ void odm_RSSIMonitorCheck23aCE(struct dm_odm_t *pDM_Odm)
+ 
+ 	for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) {
+ 		psta = pDM_Odm->pODM_StaInfo[i];
+-		if (IS_STA_VALID(psta)) {
++		if (psta) {
+ 			if (psta->rssi_stat.UndecoratedSmoothedPWDB < tmpEntryMinPWDB)
+ 				tmpEntryMinPWDB = psta->rssi_stat.UndecoratedSmoothedPWDB;
+ 
+diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+index 26fbf6c..ab820a8 100644
+--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c
++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+@@ -291,7 +291,7 @@ static void odm_Process_RSSIForDM(struct dm_odm_t *pDM_Odm,
+ 		return;
+ 
+ 	pEntry = pDM_Odm->pODM_StaInfo[pPktinfo->StationID];
+-	if (!IS_STA_VALID(pEntry))
++	if (!pEntry)
+ 		return;
+ 	if ((!pPktinfo->bPacketMatchBSSID))
+ 		return;
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index b466a81..b2f661e 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -1001,10 +1001,6 @@ extern	u8 CCKSwingTable_Ch1423A [CCK_TABLE_SIZE][8];
+ 
+ 
+ 
+-/*  */
+-/*  check Sta pointer valid or not */
+-/*  */
+-#define IS_STA_VALID(pSta)		(pSta)
+ /*  20100514 Joseph: Add definition for antenna switching test after link. */
+ /*  This indicates two different the steps. */
+ /*  In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air. */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0210-staging-rtl8723au-Fold-odm_EdcaTurboCheck23aCE23a-in.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0210-staging-rtl8723au-Fold-odm_EdcaTurboCheck23aCE23a-in.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,77 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:41 +0200
+Subject: [210/249] staging: rtl8723au: Fold odm_EdcaTurboCheck23aCE23a() into
+ odm_EdcaTurboCheck23a()
+Origin: https://git.kernel.org/linus/9ea3b82630d9f0e8839df87772af3342473121d5
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c | 37 +++++++++++++------------------------
+ 1 file changed, 13 insertions(+), 24 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index ce192de..3292b5f 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -241,8 +241,6 @@ void odm_TXPowerTrackingCheckCE23a(struct dm_odm_t *pDM_Odm);
+ void odm_EdcaTurboCheck23a(struct dm_odm_t *pDM_Odm);
+ void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm);
+ 
+-void odm_EdcaTurboCheck23aCE23a(struct dm_odm_t *pDM_Odm);
+-
+ #define		RxDefaultAnt1		0x65a9
+ #define	RxDefaultAnt2		0x569a
+ 
+@@ -1628,38 +1626,29 @@ void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm)
+ 
+ void odm_EdcaTurboCheck23a(struct dm_odm_t *pDM_Odm)
+ {
++	struct rtw_adapter *Adapter = pDM_Odm->Adapter;
++	struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);
++	struct xmit_priv *pxmitpriv = &Adapter->xmitpriv;
++	struct recv_priv *precvpriv = &Adapter->recvpriv;
++	struct registry_priv *pregpriv = &Adapter->registrypriv;
++	struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv;
++	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
++	u32 trafficIndex;
++	u32 edca_param;
++	u64 cur_tx_bytes = 0;
++	u64 cur_rx_bytes = 0;
++	u8 bbtchange = false;
++
+ 	/*  For AP/ADSL use struct rtl8723a_priv * */
+ 	/*  For CE/NIC use struct rtw_adapter * */
+ 
+ 	/*  2011/09/29 MH In HW integration first stage, we provide 4 different handle to operate */
+ 	/*  at the same time. In the stage2/3, we need to prive universal interface and merge all */
+ 	/*  HW dynamic mechanism. */
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_EDCA_TURBO, ODM_DBG_LOUD, ("odm_EdcaTurboCheck23a ========================>\n"));
+ 
+ 	if (!(pDM_Odm->SupportAbility & ODM_MAC_EDCA_TURBO))
+ 		return;
+ 
+-	odm_EdcaTurboCheck23aCE23a(pDM_Odm);
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_EDCA_TURBO, ODM_DBG_LOUD, ("<======================== odm_EdcaTurboCheck23a\n"));
+-
+-}	/*  odm_CheckEdcaTurbo */
+-
+-void odm_EdcaTurboCheck23aCE23a(struct dm_odm_t *pDM_Odm)
+-{
+-	struct rtw_adapter *Adapter = pDM_Odm->Adapter;
+-
+-	u32 trafficIndex;
+-	u32 edca_param;
+-	u64 cur_tx_bytes = 0;
+-	u64 cur_rx_bytes = 0;
+-	u8 bbtchange = false;
+-	struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);
+-	struct xmit_priv *pxmitpriv = &Adapter->xmitpriv;
+-	struct recv_priv *precvpriv = &Adapter->recvpriv;
+-	struct registry_priv *pregpriv = &Adapter->registrypriv;
+-	struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv;
+-	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+-
+ 	if ((pregpriv->wifi_spec == 1))/*  (pmlmeinfo->HT_enable == 0)) */
+ 		goto dm_CheckEdcaTurbo_EXIT;
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0211-staging-rtl8723au-Declare-odm_EdcaTurbo-functions-st.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0211-staging-rtl8723au-Declare-odm_EdcaTurbo-functions-st.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,45 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:42 +0200
+Subject: [211/249] staging: rtl8723au: Declare odm_EdcaTurbo*() functions
+ static
+Origin: https://git.kernel.org/linus/4d1def6b5cd9294c6484145e1965899a0a5029dc
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index 3292b5f..dd02585 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -238,8 +238,8 @@ void odm_TXPowerTrackingCheckMP(struct dm_odm_t *pDM_Odm);
+ 
+ void odm_TXPowerTrackingCheckCE23a(struct dm_odm_t *pDM_Odm);
+ 
+-void odm_EdcaTurboCheck23a(struct dm_odm_t *pDM_Odm);
+-void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm);
++static void odm_EdcaTurboCheck23a(struct dm_odm_t *pDM_Odm);
++static void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm);
+ 
+ #define		RxDefaultAnt1		0x65a9
+ #define	RxDefaultAnt2		0x569a
+@@ -1609,7 +1609,7 @@ void odm_HwAntDiv23a(struct dm_odm_t *pDM_Odm)
+ }
+ 
+ /* EDCA Turbo */
+-void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm)
++static void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm)
+ {
+ 
+ 	struct rtw_adapter *Adapter = pDM_Odm->Adapter;
+@@ -1624,7 +1624,7 @@ void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm)
+ 
+ }	/*  ODM_InitEdcaTurbo */
+ 
+-void odm_EdcaTurboCheck23a(struct dm_odm_t *pDM_Odm)
++static void odm_EdcaTurboCheck23a(struct dm_odm_t *pDM_Odm)
+ {
+ 	struct rtw_adapter *Adapter = pDM_Odm->Adapter;
+ 	struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0212-staging-rtl8723au-bDMInitialGainEnable-is-always-tru.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0212-staging-rtl8723au-bDMInitialGainEnable-is-always-tru.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,52 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:43 +0200
+Subject: [212/249] staging: rtl8723au: bDMInitialGainEnable is always true
+Origin: https://git.kernel.org/linus/3f22aed843c7f7984e61f64394dc6b00000e2d18
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c     | 10 ----------
+ drivers/staging/rtl8723au/include/odm.h |  1 -
+ 2 files changed, 11 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index dd02585..ed6d3af 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -717,10 +717,6 @@ void odm_DIG23aInit(struct dm_odm_t *pDM_Odm)
+ 	pDM_DigTable->DIG_Dynamic_MIN_1 = DM_DIG_MIN_NIC;
+ 	pDM_DigTable->bMediaConnect_0 = false;
+ 	pDM_DigTable->bMediaConnect_1 = false;
+-
+-	/* To Initialize pDM_Odm->bDMInitialGainEnable == false to avoid DIG error */
+-	pDM_Odm->bDMInitialGainEnable = true;
+-
+ }
+ 
+ void odm_DIG23a(struct dm_odm_t *pDM_Odm)
+@@ -747,12 +743,6 @@ void odm_DIG23a(struct dm_odm_t *pDM_Odm)
+ 		return;
+ 	}
+ 
+-	/* add by Neil Chen to avoid PSD is processing */
+-	if (!pDM_Odm->bDMInitialGainEnable) {
+-		ODM_RT_TRACE(pDM_Odm, ODM_COMP_DIG, ODM_DBG_LOUD, ("odm_DIG23a() Return: PSD is Processing \n"));
+-		return;
+-	}
+-
+ 	DIG_Dynamic_MIN = pDM_DigTable->DIG_Dynamic_MIN_0;
+ 	FirstConnect = (pDM_Odm->bLinked) && (!pDM_DigTable->bMediaConnect_0);
+ 	FirstDisConnect = (!pDM_Odm->bLinked) && (pDM_DigTable->bMediaConnect_0);
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index b2f661e..9c8e7d8 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -818,7 +818,6 @@ struct dm_odm_t {
+ 	bool			bUserAssignLevel;
+ 	u8			RSSI_BT;			/* come from BT */
+ 	bool			bPSDinProcess;
+-	bool			bDMInitialGainEnable;
+ 
+ 	/* for rate adaptive, in fact,  88c/92c fw will handle this */
+ 	u8			bUseRAMask;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0213-staging-rtl8723au-Remove-unused-DefaultInitialGain-a.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0213-staging-rtl8723au-Remove-unused-DefaultInitialGain-a.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,23 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:44 +0200
+Subject: [213/249] staging: rtl8723au: Remove unused DefaultInitialGain array
+Origin: https://git.kernel.org/linus/22965e3937ff1d8417aef5612d398a3eff793d3b
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/rtl8723a_hal.h | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/drivers/staging/rtl8723au/include/rtl8723a_hal.h b/drivers/staging/rtl8723au/include/rtl8723a_hal.h
+index 1f63eb1..3b0b06d 100644
+--- a/drivers/staging/rtl8723au/include/rtl8723a_hal.h
++++ b/drivers/staging/rtl8723au/include/rtl8723a_hal.h
+@@ -315,7 +315,6 @@ struct hal_data_8723a {
+ 	u8	framesync;
+ 	u32	framesyncC34;
+ 	u8	framesyncMonitor;
+-	u8	DefaultInitialGain[4];
+ 	u8	pwrGroupCnt;
+ 	u32	MCSTxPowerLevelOriginalOffset[7][16];
+ 	u32	CCKTxPowerLevelOriginalOffset;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0214-staging-rtl8723au-Remove-some-redundant-check-for-hw.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0214-staging-rtl8723au-Remove-some-redundant-check-for-hw.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,54 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:45 +0200
+Subject: [214/249] staging: rtl8723au: Remove some redundant check for
+ hw_init_completed
+Origin: https://git.kernel.org/linus/c7abd8749308bbdf6c83e8232a5c94d84a9bee27
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 16 ++++++----------
+ 1 file changed, 6 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index ac47a97..bf1db90 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -211,6 +211,7 @@ rtl8723a_HalDmWatchDog(
+ {
+ 	bool		bFwCurrentInPSMode = false;
+ 	bool		bFwPSAwake = true;
++	u8 bLinked = false;
+ 	u8 hw_init_completed = false;
+ 	struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);
+ 	struct dm_priv	*pdmpriv = &pHalData->dmpriv;
+@@ -223,7 +224,7 @@ rtl8723a_HalDmWatchDog(
+ 	bFwCurrentInPSMode = Adapter->pwrctrlpriv.bFwCurrentInPSMode;
+ 	bFwPSAwake = rtl8723a_get_fwlps_rf_on(Adapter);
+ 
+-	if ((hw_init_completed) && ((!bFwCurrentInPSMode) && bFwPSAwake)) {
++	if (!bFwCurrentInPSMode && bFwPSAwake) {
+ 		/*  Calculate Tx/Rx statistics. */
+ 		dm_CheckStatistics(Adapter);
+ 
+@@ -238,16 +239,11 @@ rtl8723a_HalDmWatchDog(
+ 	}
+ 
+ 	/* ODM */
+-	if (hw_init_completed == true) {
+-		u8	bLinked = false;
++	if (rtw_linked_check(Adapter))
++		bLinked = true;
+ 
+-		if (rtw_linked_check(Adapter))
+-			bLinked = true;
+-
+-		ODM_CmnInfoUpdate23a(&pHalData->odmpriv, ODM_CMNINFO_LINK,
+-				     bLinked);
+-		ODM_DMWatchdog23a(&pHalData->odmpriv);
+-	}
++	ODM_CmnInfoUpdate23a(&pHalData->odmpriv, ODM_CMNINFO_LINK, bLinked);
++	ODM_DMWatchdog23a(&pHalData->odmpriv);
+ 
+ skip_dm:
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0215-staging-rtl8723au-Remove-no-op-rtl8723a_deinit_dm_pr.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0215-staging-rtl8723au-Remove-no-op-rtl8723a_deinit_dm_pr.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,50 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:46 +0200
+Subject: [215/249] staging: rtl8723au: Remove no-op rtl8723a_deinit_dm_priv()
+Origin: https://git.kernel.org/linus/71cd6f54dcf6e9fd858c55b109f8efd1f9539808
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c     | 4 ----
+ drivers/staging/rtl8723au/include/rtl8723a_dm.h | 1 -
+ drivers/staging/rtl8723au/os_dep/os_intfs.c     | 2 --
+ 3 files changed, 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index bf1db90..4a3d2e1 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -260,7 +260,3 @@ void rtl8723a_init_dm_priv(struct rtw_adapter *Adapter)
+ 	memset(pdmpriv, 0, sizeof(struct dm_priv));
+ 	Init_ODM_ComInfo_8723a(Adapter);
+ }
+-
+-void rtl8723a_deinit_dm_priv(struct rtw_adapter *Adapter)
+-{
+-}
+diff --git a/drivers/staging/rtl8723au/include/rtl8723a_dm.h b/drivers/staging/rtl8723au/include/rtl8723a_dm.h
+index ccac672..57be347 100644
+--- a/drivers/staging/rtl8723au/include/rtl8723a_dm.h
++++ b/drivers/staging/rtl8723au/include/rtl8723a_dm.h
+@@ -134,7 +134,6 @@ struct dm_priv
+ /*  */
+ 
+ void rtl8723a_init_dm_priv(struct rtw_adapter *padapter);
+-void rtl8723a_deinit_dm_priv(struct rtw_adapter *padapter);
+ 
+ void rtl8723a_InitHalDm(struct rtw_adapter *padapter);
+ void rtl8723a_HalDmWatchDog(struct rtw_adapter *padapter);
+diff --git a/drivers/staging/rtl8723au/os_dep/os_intfs.c b/drivers/staging/rtl8723au/os_dep/os_intfs.c
+index d72305d..a081e7a 100644
+--- a/drivers/staging/rtl8723au/os_dep/os_intfs.c
++++ b/drivers/staging/rtl8723au/os_dep/os_intfs.c
+@@ -557,8 +557,6 @@ void rtw_cancel_all_timer23a(struct rtw_adapter *padapter)
+ 		 ("%s:cancel set_scan_deny_timer!\n", __func__));
+ 
+ 	del_timer_sync(&padapter->recvpriv.signal_stat_timer);
+-	/* cancel dm timer */
+-	rtl8723a_deinit_dm_priv(padapter);
+ }
+ 
+ int rtw_free_drv_sw23a(struct rtw_adapter *padapter)

Added: dists/sid/linux/debian/patches/features/all/r8723au/0216-staging-rtl8723au-Remove-no-op-function-dm_CheckStat.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0216-staging-rtl8723au-Remove-no-op-function-dm_CheckStat.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,37 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:47 +0200
+Subject: [216/249] staging: rtl8723au: Remove no-op function
+ dm_CheckStatistics()
+Origin: https://git.kernel.org/linus/45555706d2361088c9e1209638b6ade0bb4bdd41
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index 4a3d2e1..3fb54fc 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -34,10 +34,6 @@
+ /*  Global var */
+ /*  */
+ 
+-static void dm_CheckStatistics(struct rtw_adapter *Adapter)
+-{
+-}
+-
+ static void dm_CheckPbcGPIO(struct rtw_adapter *padapter)
+ {
+ 	u8	tmp1byte;
+@@ -225,9 +221,6 @@ rtl8723a_HalDmWatchDog(
+ 	bFwPSAwake = rtl8723a_get_fwlps_rf_on(Adapter);
+ 
+ 	if (!bFwCurrentInPSMode && bFwPSAwake) {
+-		/*  Calculate Tx/Rx statistics. */
+-		dm_CheckStatistics(Adapter);
+-
+ 		/*  Read REG_INIDATA_RATE_SEL value for TXDESC. */
+ 		if (check_fwstate(&Adapter->mlmepriv, WIFI_STATION_STATE)) {
+ 			pdmpriv->INIDATA_RATE[0] = rtl8723au_read8(Adapter, REG_INIDATA_RATE_SEL) & 0x3f;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0217-staging-rtl8723au-Remove-write-only-struct-dm_priv-D.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0217-staging-rtl8723au-Remove-write-only-struct-dm_priv-D.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,37 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:48 +0200
+Subject: [217/249] staging: rtl8723au: Remove write-only struct
+ dm_priv->DM_Type variable
+Origin: https://git.kernel.org/linus/a0a88236a3c0d4696c141c09522d87e221cc537a
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c     | 1 -
+ drivers/staging/rtl8723au/include/rtl8723a_dm.h | 1 -
+ 2 files changed, 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index 3fb54fc..b7ed764 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -185,7 +185,6 @@ void rtl8723a_InitHalDm(struct rtw_adapter *Adapter)
+ 	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
+ 	u8	i;
+ 
+-	pdmpriv->DM_Type = DM_Type_ByDriver;
+ 	pdmpriv->DMFlag = DYNAMIC_FUNC_DISABLE;
+ 
+ #ifdef CONFIG_8723AU_BT_COEXIST
+diff --git a/drivers/staging/rtl8723au/include/rtl8723a_dm.h b/drivers/staging/rtl8723au/include/rtl8723a_dm.h
+index 57be347..5ee3af4 100644
+--- a/drivers/staging/rtl8723au/include/rtl8723a_dm.h
++++ b/drivers/staging/rtl8723au/include/rtl8723a_dm.h
+@@ -39,7 +39,6 @@ enum{
+ /*  duplicate code,will move to ODM ######### */
+ struct dm_priv
+ {
+-	u8	DM_Type;
+ 	u8	DMFlag;
+ 	u8	InitDMFlag;
+ 	u32	InitODMFlag;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0218-staging-rtl8723au-Remove-write-only-variables-struct.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0218-staging-rtl8723au-Remove-write-only-variables-struct.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,64 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:49 +0200
+Subject: [218/249] staging: rtl8723au: Remove write-only variables struct
+ dm_priv->{Init,}DMFlag
+Origin: https://git.kernel.org/linus/353cb50dc7d42a062f0cd96c20543384fbf630eb
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/hal_com.c         | 6 ++----
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c     | 7 -------
+ drivers/staging/rtl8723au/include/rtl8723a_dm.h | 2 --
+ 3 files changed, 2 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/hal_com.c b/drivers/staging/rtl8723au/hal/hal_com.c
+index 8718151..4a66ed5 100644
+--- a/drivers/staging/rtl8723au/hal/hal_com.c
++++ b/drivers/staging/rtl8723au/hal/hal_com.c
+@@ -867,12 +867,10 @@ void rtl8723a_odm_support_ability_set(struct rtw_adapter *padapter, u32 val)
+ {
+ 	struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter);
+ 
+-	if (val == DYNAMIC_ALL_FUNC_ENABLE) {
+-		pHalData->dmpriv.DMFlag = pHalData->dmpriv.InitDMFlag;
++	if (val == DYNAMIC_ALL_FUNC_ENABLE)
+ 		pHalData->odmpriv.SupportAbility = pHalData->dmpriv.InitODMFlag;
+-	} else {
++	else
+ 		pHalData->odmpriv.SupportAbility |= val;
+-	}
+ }
+ 
+ void rtl8723a_odm_support_ability_clr(struct rtw_adapter *padapter, u32 val)
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index b7ed764..479ce7a 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -185,13 +185,6 @@ void rtl8723a_InitHalDm(struct rtw_adapter *Adapter)
+ 	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
+ 	u8	i;
+ 
+-	pdmpriv->DMFlag = DYNAMIC_FUNC_DISABLE;
+-
+-#ifdef CONFIG_8723AU_BT_COEXIST
+-	pdmpriv->DMFlag |= DYNAMIC_FUNC_BT;
+-#endif
+-	pdmpriv->InitDMFlag = pdmpriv->DMFlag;
+-
+ 	Update_ODM_ComInfo_8723a(Adapter);
+ 	ODM23a_DMInit(pDM_Odm);
+ 	/*  Save REG_INIDATA_RATE_SEL value for TXDESC. */
+diff --git a/drivers/staging/rtl8723au/include/rtl8723a_dm.h b/drivers/staging/rtl8723au/include/rtl8723a_dm.h
+index 5ee3af4..1811222 100644
+--- a/drivers/staging/rtl8723au/include/rtl8723a_dm.h
++++ b/drivers/staging/rtl8723au/include/rtl8723a_dm.h
+@@ -39,8 +39,6 @@ enum{
+ /*  duplicate code,will move to ODM ######### */
+ struct dm_priv
+ {
+-	u8	DMFlag;
+-	u8	InitDMFlag;
+ 	u32	InitODMFlag;
+ 
+ 	/*  Upper and Lower Signal threshold for Rate Adaptive*/

Added: dists/sid/linux/debian/patches/features/all/r8723au/0219-staging-rtl8723au-Remove-ODM_CMNINFO_-RT-X_UNI-and-r.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0219-staging-rtl8723au-Remove-ODM_CMNINFO_-RT-X_UNI-and-r.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,79 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:50 +0200
+Subject: [219/249] staging: rtl8723au: Remove ODM_CMNINFO_[RT]X_UNI and
+ related code
+Origin: https://git.kernel.org/linus/65064399c2a85a2ab76e0089f2c20f766a962bc7
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c         | 8 --------
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 4 ----
+ drivers/staging/rtl8723au/include/odm.h     | 6 ------
+ 3 files changed, 18 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index ed6d3af..4f25606 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -421,12 +421,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm,
+ 	case	ODM_CMNINFO_MAC_PHY_MODE:
+ 		pDM_Odm->pMacPhyMode = (u8 *)pValue;
+ 		break;
+-	case	ODM_CMNINFO_TX_UNI:
+-		pDM_Odm->pNumTxBytesUnicast = (u64 *)pValue;
+-		break;
+-	case	ODM_CMNINFO_RX_UNI:
+-		pDM_Odm->pNumRxBytesUnicast = (u64 *)pValue;
+-		break;
+ 	case	ODM_CMNINFO_WM_MODE:
+ 		pDM_Odm->pWirelessMode = (u8 *)pValue;
+ 		break;
+@@ -600,8 +594,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm)
+ void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm)
+ {
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n"));
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pNumTxBytesUnicast =%llu\n", *(pDM_Odm->pNumTxBytesUnicast)));
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pNumRxBytesUnicast =%llu\n", *(pDM_Odm->pNumRxBytesUnicast)));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pWirelessMode = 0x%x\n", *(pDM_Odm->pWirelessMode)));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecChOffset =%d\n", *(pDM_Odm->pSecChOffset)));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecurity =%d\n", *(pDM_Odm->pSecurity)));
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index 479ce7a..37a11c3 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -154,10 +154,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ 
+ 	ODM_CmnInfoUpdate23a(pDM_Odm, ODM_CMNINFO_ABILITY, pdmpriv->InitODMFlag);
+ 
+-	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_TX_UNI,
+-			   &Adapter->xmitpriv.tx_bytes);
+-	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_RX_UNI,
+-			   &Adapter->recvpriv.rx_bytes);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_WM_MODE,
+ 			   &pmlmeext->cur_wireless_mode);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_CHNL_OFFSET,
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index 9c8e7d8..d549b7f 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -321,8 +321,6 @@ enum odm_cmninfo {
+ 	/*  Dynamic value: */
+ 	/*  */
+ 	ODM_CMNINFO_MAC_PHY_MODE,			/*  enum odm_mac_phy_mode */
+-	ODM_CMNINFO_TX_UNI,
+-	ODM_CMNINFO_RX_UNI,
+ 	ODM_CMNINFO_WM_MODE,				/*  enum odm_wireless_mode */
+ 	ODM_CMNINFO_BAND,					/*  enum odm_band_type */
+ 	ODM_CMNINFO_SEC_CHNL_OFFSET,		/*  enum odm_sec_chnl_offset */
+@@ -715,10 +713,6 @@ struct dm_odm_t {
+ 
+ 	/*  MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2 */
+ 	u8			*pMacPhyMode;
+-	/* TX Unicast byte count */
+-	u64			*pNumTxBytesUnicast;
+-	/* RX Unicast byte count */
+-	u64			*pNumRxBytesUnicast;
+ 	/*  Wireless mode B/G/A/N = BIT0/BIT1/BIT2/BIT3 */
+ 	u8			*pWirelessMode; /* enum odm_wireless_mode */
+ 	/*  Frequence band 2.4G/5G = 0/1 */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0220-staging-rtl8723au-Remove-useless-ODM_CMNINFO_-WM_MOD.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0220-staging-rtl8723au-Remove-useless-ODM_CMNINFO_-WM_MOD.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,84 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:51 +0200
+Subject: [220/249] staging: rtl8723au: Remove useless ODM_CMNINFO_{WM_MODE,
+ BAND} related code
+Origin: https://git.kernel.org/linus/c17a42655644c06598bb0efbb7fdb24393fb66f8
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c         | 8 --------
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 2 --
+ drivers/staging/rtl8723au/include/odm.h     | 6 ------
+ 3 files changed, 16 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index 4f25606..d931169 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -421,12 +421,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm,
+ 	case	ODM_CMNINFO_MAC_PHY_MODE:
+ 		pDM_Odm->pMacPhyMode = (u8 *)pValue;
+ 		break;
+-	case	ODM_CMNINFO_WM_MODE:
+-		pDM_Odm->pWirelessMode = (u8 *)pValue;
+-		break;
+-	case	ODM_CMNINFO_BAND:
+-		pDM_Odm->pBandType = (u8 *)pValue;
+-		break;
+ 	case	ODM_CMNINFO_SEC_CHNL_OFFSET:
+ 		pDM_Odm->pSecChOffset = (u8 *)pValue;
+ 		break;
+@@ -594,7 +588,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm)
+ void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm)
+ {
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n"));
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pWirelessMode = 0x%x\n", *(pDM_Odm->pWirelessMode)));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecChOffset =%d\n", *(pDM_Odm->pSecChOffset)));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecurity =%d\n", *(pDM_Odm->pSecurity)));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pBandWidth =%d\n", *(pDM_Odm->pBandWidth)));
+@@ -1193,7 +1186,6 @@ u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm,
+ 	struct sta_info *pEntry;
+ 	u32 rate_bitmap = 0x0fffffff;
+ 	u8 WirelessMode;
+-	/* u8 WirelessMode =*(pDM_Odm->pWirelessMode); */
+ 
+ 	pEntry = pDM_Odm->pODM_StaInfo[macid];
+ 	if (!pEntry)
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index 37a11c3..fe4754f 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -154,8 +154,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ 
+ 	ODM_CmnInfoUpdate23a(pDM_Odm, ODM_CMNINFO_ABILITY, pdmpriv->InitODMFlag);
+ 
+-	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_WM_MODE,
+-			   &pmlmeext->cur_wireless_mode);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_CHNL_OFFSET,
+ 			   &pHalData->nCur40MhzPrimeSC);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_MODE,
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index d549b7f..6fa7de6 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -321,8 +321,6 @@ enum odm_cmninfo {
+ 	/*  Dynamic value: */
+ 	/*  */
+ 	ODM_CMNINFO_MAC_PHY_MODE,			/*  enum odm_mac_phy_mode */
+-	ODM_CMNINFO_WM_MODE,				/*  enum odm_wireless_mode */
+-	ODM_CMNINFO_BAND,					/*  enum odm_band_type */
+ 	ODM_CMNINFO_SEC_CHNL_OFFSET,		/*  enum odm_sec_chnl_offset */
+ 	ODM_CMNINFO_SEC_MODE,				/*  enum odm_security */
+ 	ODM_CMNINFO_BW,						/*  enum odm_band_width */
+@@ -713,10 +711,6 @@ struct dm_odm_t {
+ 
+ 	/*  MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2 */
+ 	u8			*pMacPhyMode;
+-	/*  Wireless mode B/G/A/N = BIT0/BIT1/BIT2/BIT3 */
+-	u8			*pWirelessMode; /* enum odm_wireless_mode */
+-	/*  Frequence band 2.4G/5G = 0/1 */
+-	u8			*pBandType;
+ 	/*  Secondary channel offset don't_care/below/above = 0/1/2 */
+ 	u8			*pSecChOffset;
+ 	/*  Security mode Open/WEP/AES/TKIP = 0/1/2/3 */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0221-staging-rtl8723au-Remove-another-pile-of-useless-ODM.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0221-staging-rtl8723au-Remove-another-pile-of-useless-ODM.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,123 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:52 +0200
+Subject: [221/249] staging: rtl8723au: Remove another pile of useless ODM
+ variables
+Origin: https://git.kernel.org/linus/c5f3dc2fef61458efd8ef08c3f9bd7b15c143cfd
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c         | 16 ----------------
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c |  5 +----
+ drivers/staging/rtl8723au/include/odm.h     | 16 +---------------
+ 3 files changed, 2 insertions(+), 35 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index d931169..0c4756c 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -418,30 +418,15 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm,
+ 	/*  Hook call by reference pointer. */
+ 	switch	(CmnInfo) {
+ 	/*  Dynamic call by reference pointer. */
+-	case	ODM_CMNINFO_MAC_PHY_MODE:
+-		pDM_Odm->pMacPhyMode = (u8 *)pValue;
+-		break;
+ 	case	ODM_CMNINFO_SEC_CHNL_OFFSET:
+ 		pDM_Odm->pSecChOffset = (u8 *)pValue;
+ 		break;
+-	case	ODM_CMNINFO_SEC_MODE:
+-		pDM_Odm->pSecurity = (u8 *)pValue;
+-		break;
+ 	case	ODM_CMNINFO_BW:
+ 		pDM_Odm->pBandWidth = (u8 *)pValue;
+ 		break;
+ 	case	ODM_CMNINFO_CHNL:
+ 		pDM_Odm->pChannel = (u8 *)pValue;
+ 		break;
+-	case	ODM_CMNINFO_DMSP_GET_VALUE:
+-		pDM_Odm->pbGetValueFromOtherMac = (bool *)pValue;
+-		break;
+-	case	ODM_CMNINFO_BUDDY_ADAPTOR:
+-		pDM_Odm->pBuddyAdapter = (struct rtw_adapter **)pValue;
+-		break;
+-	case	ODM_CMNINFO_DMSP_IS_MASTER:
+-		pDM_Odm->pbMasterOfDMSP = (bool *)pValue;
+-		break;
+ 	case	ODM_CMNINFO_SCAN:
+ 		pDM_Odm->pbScanInProcess = (bool *)pValue;
+ 		break;
+@@ -589,7 +574,6 @@ void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm)
+ {
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n"));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecChOffset =%d\n", *(pDM_Odm->pSecChOffset)));
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecurity =%d\n", *(pDM_Odm->pSecurity)));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pBandWidth =%d\n", *(pDM_Odm->pBandWidth)));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pChannel =%d\n", *(pDM_Odm->pChannel)));
+ 
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index fe4754f..06b1496 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -133,8 +133,7 @@ static void Init_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ 
+ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ {
+-	struct mlme_ext_priv	*pmlmeext = &Adapter->mlmeextpriv;
+-	struct mlme_priv		*pmlmepriv = &Adapter->mlmepriv;
++	struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
+ 	struct pwrctrl_priv *pwrctrlpriv = &Adapter->pwrctrlpriv;
+ 	struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);
+ 	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
+@@ -156,8 +155,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ 
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_CHNL_OFFSET,
+ 			   &pHalData->nCur40MhzPrimeSC);
+-	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_MODE,
+-			   &Adapter->securitypriv.dot11PrivacyAlgrthm);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_BW,
+ 			   &pHalData->CurrentChannelBW);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_CHNL,
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index 6fa7de6..eaee966 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -320,15 +320,10 @@ enum odm_cmninfo {
+ 	/*  */
+ 	/*  Dynamic value: */
+ 	/*  */
+-	ODM_CMNINFO_MAC_PHY_MODE,			/*  enum odm_mac_phy_mode */
+ 	ODM_CMNINFO_SEC_CHNL_OFFSET,		/*  enum odm_sec_chnl_offset */
+-	ODM_CMNINFO_SEC_MODE,				/*  enum odm_security */
+-	ODM_CMNINFO_BW,						/*  enum odm_band_width */
++	ODM_CMNINFO_BW,				/*  enum odm_band_width */
+ 	ODM_CMNINFO_CHNL,
+ 
+-	ODM_CMNINFO_DMSP_GET_VALUE,
+-	ODM_CMNINFO_BUDDY_ADAPTOR,
+-	ODM_CMNINFO_DMSP_IS_MASTER,
+ 	ODM_CMNINFO_SCAN,
+ 	ODM_CMNINFO_POWER_SAVING,
+ 	ODM_CMNINFO_ONE_PATH_CCA,			/*  enum odm_cca_path */
+@@ -709,21 +704,12 @@ struct dm_odm_t {
+ 	bool			bool_temp;
+ 	struct rtw_adapter	*PADAPTER_temp;
+ 
+-	/*  MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2 */
+-	u8			*pMacPhyMode;
+ 	/*  Secondary channel offset don't_care/below/above = 0/1/2 */
+ 	u8			*pSecChOffset;
+-	/*  Security mode Open/WEP/AES/TKIP = 0/1/2/3 */
+-	u8			*pSecurity;
+ 	/*  BW info 20M/40M/80M = 0/1/2 */
+ 	u8			*pBandWidth;
+ 	/*  Central channel location Ch1/Ch2/.... */
+ 	u8			*pChannel;	/* central channel number */
+-	/*  Common info for 92D DMSP */
+-
+-	bool			*pbGetValueFromOtherMac;
+-	struct rtw_adapter	**pBuddyAdapter;
+-	bool			*pbMasterOfDMSP; /* MAC0: master, MAC1: slave */
+ 	/*  Common info for Status */
+ 	bool			*pbScanInProcess;
+ 	bool			*pbPowerSaving;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0222-staging-rtl8723au-Remove-another-pile-of-awful-unuse.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0222-staging-rtl8723au-Remove-another-pile-of-awful-unuse.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,97 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:53 +0200
+Subject: [222/249] staging: rtl8723au: Remove another pile of awful unused ODM
+ variables
+Origin: https://git.kernel.org/linus/42f9f19ef59926c5d881ffce9fd61e0b9b708678
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c         | 18 ------------------
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c |  2 --
+ drivers/staging/rtl8723au/include/odm.h     | 16 ----------------
+ 3 files changed, 36 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index 0c4756c..491ba9c 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -433,24 +433,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm,
+ 	case	ODM_CMNINFO_POWER_SAVING:
+ 		pDM_Odm->pbPowerSaving = (bool *)pValue;
+ 		break;
+-	case	ODM_CMNINFO_ONE_PATH_CCA:
+-		pDM_Odm->pOnePathCCA = (u8 *)pValue;
+-		break;
+-	case	ODM_CMNINFO_DRV_STOP:
+-		pDM_Odm->pbDriverStopped =  (bool *)pValue;
+-		break;
+-	case	ODM_CMNINFO_PNP_IN:
+-		pDM_Odm->pbDriverIsGoingToPnpSetPowerSleep =  (bool *)pValue;
+-		break;
+-	case	ODM_CMNINFO_INIT_ON:
+-		pDM_Odm->pinit_adpt_in_progress =  (bool *)pValue;
+-		break;
+-	case	ODM_CMNINFO_ANT_TEST:
+-		pDM_Odm->pAntennaTest =  (u8 *)pValue;
+-		break;
+-	case	ODM_CMNINFO_NET_CLOSED:
+-		pDM_Odm->pbNet_closed = (bool *)pValue;
+-		break;
+ 	/* To remove the compiler warning, must add an empty default statement to handle the other values. */
+ 	default:
+ 		/* do nothing */
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index 06b1496..4383c43 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -159,8 +159,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ 			   &pHalData->CurrentChannelBW);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_CHNL,
+ 			   &pHalData->CurrentChannel);
+-	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_NET_CLOSED, &Adapter->net_closed);
+-
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SCAN, &pmlmepriv->bScanInProcess);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_POWER_SAVING,
+ 			   &pwrctrlpriv->bpower_saving);
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index eaee966..7598e61 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -326,12 +326,6 @@ enum odm_cmninfo {
+ 
+ 	ODM_CMNINFO_SCAN,
+ 	ODM_CMNINFO_POWER_SAVING,
+-	ODM_CMNINFO_ONE_PATH_CCA,			/*  enum odm_cca_path */
+-	ODM_CMNINFO_DRV_STOP,
+-	ODM_CMNINFO_PNP_IN,
+-	ODM_CMNINFO_INIT_ON,
+-	ODM_CMNINFO_ANT_TEST,
+-	ODM_CMNINFO_NET_CLOSED,
+ 	ODM_CMNINFO_MP_MODE,
+ 
+ 	ODM_CMNINFO_WIFI_DIRECT,
+@@ -713,11 +707,6 @@ struct dm_odm_t {
+ 	/*  Common info for Status */
+ 	bool			*pbScanInProcess;
+ 	bool			*pbPowerSaving;
+-	/*  CCA Path 2-path/path-A/path-B = 0/1/2; using enum odm_cca_path. */
+-	u8			*pOnePathCCA;
+-	/* pMgntInfo->AntennaTest */
+-	u8			*pAntennaTest;
+-	bool			*pbNet_closed;
+ /*  POINTER REFERENCE----------- */
+ 	/*  */
+ /* CALL BY VALUE------------- */
+@@ -783,11 +772,6 @@ struct dm_odm_t {
+ 	/*  ================================================== */
+ 	/*  */
+ 
+-	/* common */
+-	bool			*pbDriverStopped;
+-	bool			*pbDriverIsGoingToPnpSetPowerSleep;
+-	bool			*pinit_adpt_in_progress;
+-
+ 	/* PSD */
+ 	bool			bUserAssignLevel;
+ 	u8			RSSI_BT;			/* come from BT */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0223-staging-rtl8723au-We-don-t-need-two-APIs-to-set-pHal.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0223-staging-rtl8723au-We-don-t-need-two-APIs-to-set-pHal.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,64 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:54 +0200
+Subject: [223/249] staging: rtl8723au: We don't need two APIs to set
+ pHalData->odmpriv.SupportAbility
+Origin: https://git.kernel.org/linus/09b052a90976393c371cd411475b88b3778071ee
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c         | 6 ------
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 3 +--
+ drivers/staging/rtl8723au/include/odm.h     | 1 -
+ 3 files changed, 1 insertion(+), 9 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index 491ba9c..c239b52 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -344,9 +344,6 @@ void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm,
+ 	/*  */
+ 	switch	(CmnInfo) {
+ 	/*  Fixed ODM value. */
+-	case	ODM_CMNINFO_ABILITY:
+-		pDM_Odm->SupportAbility = (u32)Value;
+-		break;
+ 	case	ODM_CMNINFO_PLATFORM:
+ 		break;
+ 	case	ODM_CMNINFO_INTERFACE:
+@@ -461,9 +458,6 @@ void ODM_CmnInfoUpdate23a(struct dm_odm_t *pDM_Odm, u32 CmnInfo, u64 Value)
+ {
+ 	/*  This init variable may be changed in run time. */
+ 	switch	(CmnInfo) {
+-	case	ODM_CMNINFO_ABILITY:
+-		pDM_Odm->SupportAbility = (u32)Value;
+-		break;
+ 	case	ODM_CMNINFO_RF_TYPE:
+ 		pDM_Odm->RFType = (u8)Value;
+ 		break;
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index 4383c43..204b4ad 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -150,8 +150,7 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ 				ODM_RF_TX_PWR_TRACK	|
+ 				ODM_RF_CALIBRATION;
+ 	/*  Pointer reference */
+-
+-	ODM_CmnInfoUpdate23a(pDM_Odm, ODM_CMNINFO_ABILITY, pdmpriv->InitODMFlag);
++	rtl8723a_odm_support_ability_set(Adapter, DYNAMIC_ALL_FUNC_ENABLE);
+ 
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_CHNL_OFFSET,
+ 			   &pHalData->nCur40MhzPrimeSC);
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index 7598e61..546cbb5 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -300,7 +300,6 @@ enum odm_cmninfo {
+ 	/*  */
+ 
+ 	ODM_CMNINFO_PLATFORM = 0,
+-	ODM_CMNINFO_ABILITY,					/*  enum odm_ability */
+ 	ODM_CMNINFO_INTERFACE,				/*  enum odm_interface_def */
+ 	ODM_CMNINFO_MP_TEST_CHIP,
+ 	ODM_CMNINFO_IC_TYPE,					/*  enum odm_ic_type_def */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0224-staging-rtl8723au-ODM_DMWatchdog23a-Take-a-struct-ha.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0224-staging-rtl8723au-ODM_DMWatchdog23a-Take-a-struct-ha.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,60 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:55 +0200
+Subject: [224/249] staging: rtl8723au: ODM_DMWatchdog23a(): Take a struct
+ hal_data_8723a *
+Origin: https://git.kernel.org/linus/ec8884fb20912e866d5f4ce34cdb509c146dbde1
+
+This will allow us to access variables in the hal_data struct
+directly, and get rid of the horrendous ODM_CMNINFO spaghetti API.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c         | 4 +++-
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 2 +-
+ drivers/staging/rtl8723au/include/odm.h     | 3 ++-
+ 3 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index c239b52..e4a9225 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -287,8 +287,10 @@ void ODM23a_DMInit(struct dm_odm_t *pDM_Odm)
+ /*  2011/09/20 MH This is the entry pointer for all team to execute HW out source DM. */
+ /*  You can not add any dummy function here, be care, you can only use DM structure */
+ /*  to perform any new ODM_DM. */
+-void ODM_DMWatchdog23a(struct dm_odm_t *pDM_Odm)
++void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData)
+ {
++	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
++
+ 	/* 2012.05.03 Luke: For all IC series */
+ 	odm_CmnInfoHook_Debug23a(pDM_Odm);
+ 	odm_CmnInfoUpdate_Debug23a(pDM_Odm);
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index 204b4ad..272c1e7 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -216,7 +216,7 @@ rtl8723a_HalDmWatchDog(
+ 		bLinked = true;
+ 
+ 	ODM_CmnInfoUpdate23a(&pHalData->odmpriv, ODM_CMNINFO_LINK, bLinked);
+-	ODM_DMWatchdog23a(&pHalData->odmpriv);
++	ODM_DMWatchdog23a(pHalData);
+ 
+ skip_dm:
+ 
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index 546cbb5..b2d8983 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -999,7 +999,8 @@ u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm, u32 macid, u32 ra_mask, u8
+ 
+ void ODM23a_DMInit(struct dm_odm_t *pDM_Odm);
+ 
+-void ODM_DMWatchdog23a(struct dm_odm_t *pDM_Odm); /*  For common use in the future */
++struct hal_data_8723a;
++void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData);
+ 
+ void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm, enum odm_cmninfo	CmnInfo, u32 Value);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0225-staging-rtl8723au-Eliminate-ugly-ODM_CMNINFO_SEC_CHN.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0225-staging-rtl8723au-Eliminate-ugly-ODM_CMNINFO_SEC_CHN.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,110 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:56 +0200
+Subject: [225/249] staging: rtl8723au: Eliminate ugly
+ ODM_CMNINFO_SEC_CHNL_OFFSET usage
+Origin: https://git.kernel.org/linus/91a2916a82f326c9836bc2d3e2dad5f3b5405836
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c         | 17 +++++++----------
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c |  2 --
+ drivers/staging/rtl8723au/include/odm.h     |  3 ---
+ 3 files changed, 7 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index e4a9225..aa310a3 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -166,7 +166,7 @@ u8 CCKSwingTable_Ch1423A[CCK_TABLE_SIZE][8] = {
+ /* START------------COMMON INFO RELATED--------------- */
+ void odm_CommonInfoSelfInit23a(struct dm_odm_t *pDM_Odm);
+ 
+-void odm_CommonInfoSelfUpdate23a(struct dm_odm_t *pDM_Odm);
++static void odm_CommonInfoSelfUpdate(struct hal_data_8723a *pHalData);
+ 
+ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm);
+ 
+@@ -294,7 +294,7 @@ void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData)
+ 	/* 2012.05.03 Luke: For all IC series */
+ 	odm_CmnInfoHook_Debug23a(pDM_Odm);
+ 	odm_CmnInfoUpdate_Debug23a(pDM_Odm);
+-	odm_CommonInfoSelfUpdate23a(pDM_Odm);
++	odm_CommonInfoSelfUpdate(pHalData);
+ 	odm_FalseAlarmCounterStatistics23a(pDM_Odm);
+ 	odm_RSSIMonitorCheck23a(pDM_Odm);
+ 
+@@ -417,9 +417,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm,
+ 	/*  Hook call by reference pointer. */
+ 	switch	(CmnInfo) {
+ 	/*  Dynamic call by reference pointer. */
+-	case	ODM_CMNINFO_SEC_CHNL_OFFSET:
+-		pDM_Odm->pSecChOffset = (u8 *)pValue;
+-		break;
+ 	case	ODM_CMNINFO_BW:
+ 		pDM_Odm->pBandWidth = (u8 *)pValue;
+ 		break;
+@@ -502,16 +499,17 @@ void odm_CommonInfoSelfInit23a(struct dm_odm_t *pDM_Odm
+ 	ODM_InitDebugSetting23a(pDM_Odm);
+ }
+ 
+-void odm_CommonInfoSelfUpdate23a(struct dm_odm_t *pDM_Odm)
++static void odm_CommonInfoSelfUpdate(struct hal_data_8723a *pHalData)
+ {
++	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
++	struct sta_info *pEntry;
+ 	u8 EntryCnt = 0;
+ 	u8 i;
+-	struct sta_info *pEntry;
+ 
+ 	if (*(pDM_Odm->pBandWidth) == ODM_BW40M) {
+-		if (*(pDM_Odm->pSecChOffset) == 1)
++		if (pHalData->nCur40MhzPrimeSC == 1)
+ 			pDM_Odm->ControlChannel = *(pDM_Odm->pChannel) - 2;
+-		else if (*(pDM_Odm->pSecChOffset) == 2)
++		else if (pHalData->nCur40MhzPrimeSC == 2)
+ 			pDM_Odm->ControlChannel = *(pDM_Odm->pChannel) + 2;
+ 	} else {
+ 		pDM_Odm->ControlChannel = *(pDM_Odm->pChannel);
+@@ -551,7 +549,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm)
+ void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm)
+ {
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n"));
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pSecChOffset =%d\n", *(pDM_Odm->pSecChOffset)));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pBandWidth =%d\n", *(pDM_Odm->pBandWidth)));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pChannel =%d\n", *(pDM_Odm->pChannel)));
+ 
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index 272c1e7..89ae2f2 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -152,8 +152,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ 	/*  Pointer reference */
+ 	rtl8723a_odm_support_ability_set(Adapter, DYNAMIC_ALL_FUNC_ENABLE);
+ 
+-	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SEC_CHNL_OFFSET,
+-			   &pHalData->nCur40MhzPrimeSC);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_BW,
+ 			   &pHalData->CurrentChannelBW);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_CHNL,
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index b2d8983..e361c45 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -319,7 +319,6 @@ enum odm_cmninfo {
+ 	/*  */
+ 	/*  Dynamic value: */
+ 	/*  */
+-	ODM_CMNINFO_SEC_CHNL_OFFSET,		/*  enum odm_sec_chnl_offset */
+ 	ODM_CMNINFO_BW,				/*  enum odm_band_width */
+ 	ODM_CMNINFO_CHNL,
+ 
+@@ -697,8 +696,6 @@ struct dm_odm_t {
+ 	bool			bool_temp;
+ 	struct rtw_adapter	*PADAPTER_temp;
+ 
+-	/*  Secondary channel offset don't_care/below/above = 0/1/2 */
+-	u8			*pSecChOffset;
+ 	/*  BW info 20M/40M/80M = 0/1/2 */
+ 	u8			*pBandWidth;
+ 	/*  Central channel location Ch1/Ch2/.... */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0226-staging-rtl8723au-Eliminate-ODM_CMNINFO_BW-usage.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0226-staging-rtl8723au-Eliminate-ODM_CMNINFO_BW-usage.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,183 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:57 +0200
+Subject: [226/249] staging: rtl8723au: Eliminate ODM_CMNINFO_BW usage
+Origin: https://git.kernel.org/linus/301fc630ef3ea2f1e855d409cf6be34924f67ac9
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c          | 19 ++++++++-----------
+ drivers/staging/rtl8723au/hal/rtl8723a_cmd.c |  3 ++-
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c  |  2 --
+ drivers/staging/rtl8723au/hal/usb_halinit.c  |  4 ++--
+ drivers/staging/rtl8723au/include/odm.h      | 17 +++--------------
+ 5 files changed, 15 insertions(+), 30 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index aa310a3..a15a8cb 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -417,9 +417,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm,
+ 	/*  Hook call by reference pointer. */
+ 	switch	(CmnInfo) {
+ 	/*  Dynamic call by reference pointer. */
+-	case	ODM_CMNINFO_BW:
+-		pDM_Odm->pBandWidth = (u8 *)pValue;
+-		break;
+ 	case	ODM_CMNINFO_CHNL:
+ 		pDM_Odm->pChannel = (u8 *)pValue;
+ 		break;
+@@ -506,7 +503,7 @@ static void odm_CommonInfoSelfUpdate(struct hal_data_8723a *pHalData)
+ 	u8 EntryCnt = 0;
+ 	u8 i;
+ 
+-	if (*(pDM_Odm->pBandWidth) == ODM_BW40M) {
++	if (pHalData->CurrentChannelBW == HT_CHANNEL_WIDTH_40) {
+ 		if (pHalData->nCur40MhzPrimeSC == 1)
+ 			pDM_Odm->ControlChannel = *(pDM_Odm->pChannel) - 2;
+ 		else if (pHalData->nCur40MhzPrimeSC == 2)
+@@ -549,7 +546,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm)
+ void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm)
+ {
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n"));
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pBandWidth =%d\n", *(pDM_Odm->pBandWidth)));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pChannel =%d\n", *(pDM_Odm->pChannel)));
+ 
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pbScanInProcess =%d\n", *(pDM_Odm->pbScanInProcess)));
+@@ -1137,11 +1133,10 @@ void odm_RateAdaptiveMaskInit23a(struct dm_odm_t *pDM_Odm)
+ 	pOdmRA->LowRSSIThresh = 20;
+ }
+ 
+-u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm,
+-	u32 macid,
+-	u32 ra_mask,
+-	u8 rssi_level)
++u32 ODM_Get_Rate_Bitmap23a(struct hal_data_8723a *pHalData, u32 macid,
++			   u32 ra_mask, u8 rssi_level)
+ {
++	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
+ 	struct sta_info *pEntry;
+ 	u32 rate_bitmap = 0x0fffffff;
+ 	u8 WirelessMode;
+@@ -1181,7 +1176,8 @@ u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm,
+ 			} else if (rssi_level == DM_RATR_STA_MIDDLE) {
+ 				rate_bitmap = 0x000ff000;
+ 			} else {
+-				if (*(pDM_Odm->pBandWidth) == ODM_BW40M)
++				if (pHalData->CurrentChannelBW ==
++				    HT_CHANNEL_WIDTH_40)
+ 					rate_bitmap = 0x000ff015;
+ 				else
+ 					rate_bitmap = 0x000ff005;
+@@ -1192,7 +1188,8 @@ u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm,
+ 			} else if (rssi_level == DM_RATR_STA_MIDDLE) {
+ 				rate_bitmap = 0x0f8ff000;
+ 			} else {
+-				if (*(pDM_Odm->pBandWidth) == ODM_BW40M)
++				if (pHalData->CurrentChannelBW ==
++				    HT_CHANNEL_WIDTH_40)
+ 					rate_bitmap = 0x0f8ff015;
+ 				else
+ 					rate_bitmap = 0x0f8ff005;
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+index 7dd62b3..271c33d 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_cmd.c
+@@ -151,7 +151,8 @@ void rtl8723a_add_rateatid(struct rtw_adapter *pAdapter, u32 bitmap, u8 arg, u8
+ 
+ 	bitmap &= 0x0fffffff;
+ 	if (rssi_level != DM_RATR_STA_INIT)
+-		bitmap = ODM_Get_Rate_Bitmap23a(&pHalData->odmpriv, macid, bitmap, rssi_level);
++		bitmap = ODM_Get_Rate_Bitmap23a(pHalData, macid, bitmap,
++						rssi_level);
+ 
+ 	bitmap |= ((raid<<28)&0xf0000000);
+ 
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index 89ae2f2..dfed57e 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -152,8 +152,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ 	/*  Pointer reference */
+ 	rtl8723a_odm_support_ability_set(Adapter, DYNAMIC_ALL_FUNC_ENABLE);
+ 
+-	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_BW,
+-			   &pHalData->CurrentChannelBW);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_CHNL,
+ 			   &pHalData->CurrentChannel);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SCAN, &pmlmepriv->bScanInProcess);
+diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c
+index e09329b..b51762a 100644
+--- a/drivers/staging/rtl8723au/hal/usb_halinit.c
++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c
+@@ -1500,8 +1500,8 @@ void rtl8723a_update_ramask(struct rtw_adapter *padapter,
+ 
+ 	/* mask &= 0x0fffffff; */
+ 	rate_bitmap = 0x0fffffff;
+-	rate_bitmap = ODM_Get_Rate_Bitmap23a(&pHalData->odmpriv,
+-					  mac_id, mask, rssi_level);
++	rate_bitmap = ODM_Get_Rate_Bitmap23a(pHalData, mac_id, mask,
++					     rssi_level);
+ 	DBG_8723A("%s => mac_id:%d, networkType:0x%02x, "
+ 		  "mask:0x%08x\n\t ==> rssi_level:%d, rate_bitmap:0x%08x\n",
+ 		  __func__, mac_id, networkType, mask, rssi_level, rate_bitmap);
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index e361c45..be0b84f 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -319,7 +319,6 @@ enum odm_cmninfo {
+ 	/*  */
+ 	/*  Dynamic value: */
+ 	/*  */
+-	ODM_CMNINFO_BW,				/*  enum odm_band_width */
+ 	ODM_CMNINFO_CHNL,
+ 
+ 	ODM_CMNINFO_SCAN,
+@@ -495,15 +494,6 @@ enum odm_sec_chnl_offset {
+ 	ODM_ABOVE		= 2
+ };
+ 
+-/*  ODM_CMNINFO_BW */
+-enum odm_band_width {
+-	ODM_BW20M		= 0,
+-	ODM_BW40M		= 1,
+-	ODM_BW80M		= 2,
+-	ODM_BW160M		= 3,
+-	ODM_BW10M		= 4,
+-};
+-
+ /*  ODM_CMNINFO_CHNL */
+ 
+ /*  ODM_CMNINFO_BOARD_TYPE */
+@@ -696,8 +686,6 @@ struct dm_odm_t {
+ 	bool			bool_temp;
+ 	struct rtw_adapter	*PADAPTER_temp;
+ 
+-	/*  BW info 20M/40M/80M = 0/1/2 */
+-	u8			*pBandWidth;
+ 	/*  Central channel location Ch1/Ch2/.... */
+ 	u8			*pChannel;	/* central channel number */
+ 	/*  Common info for Status */
+@@ -962,6 +950,8 @@ extern	u8 CCKSwingTable_Ch1423A [CCK_TABLE_SIZE][8];
+ #define SWAW_STEP_PEAK		0
+ #define SWAW_STEP_DETERMINE	1
+ 
++struct hal_data_8723a;
++
+ void ODM_Write_DIG23a(struct dm_odm_t *pDM_Odm,	u8	CurrentIGI);
+ void ODM_Write_CCK_CCA_Thres23a(struct dm_odm_t *pDM_Odm, u8	CurCCK_CCAThres);
+ 
+@@ -991,12 +981,11 @@ u32 GetPSDData(struct dm_odm_t *pDM_Odm, unsigned int point, u8 initial_gain_psd
+ 
+ void odm_DIG23abyRSSI_LPS(struct dm_odm_t *pDM_Odm);
+ 
+-u32 ODM_Get_Rate_Bitmap23a(struct dm_odm_t *pDM_Odm, u32 macid, u32 ra_mask, u8 rssi_level);
++u32 ODM_Get_Rate_Bitmap23a(struct hal_data_8723a *pHalData, u32 macid, u32 ra_mask, u8 rssi_level);
+ 
+ 
+ void ODM23a_DMInit(struct dm_odm_t *pDM_Odm);
+ 
+-struct hal_data_8723a;
+ void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData);
+ 
+ void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm, enum odm_cmninfo	CmnInfo, u32 Value);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0227-staging-rtl8723au-Eliminate-ODM_CMNINFO_CHNL-usage.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0227-staging-rtl8723au-Eliminate-ODM_CMNINFO_CHNL-usage.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,85 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:58 +0200
+Subject: [227/249] staging: rtl8723au: Eliminate ODM_CMNINFO_CHNL usage
+Origin: https://git.kernel.org/linus/ac6c69d31128cb479b1b99dcd019aa2c41b9ecfd
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c         | 10 +++-------
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c |  2 --
+ drivers/staging/rtl8723au/include/odm.h     |  4 ----
+ 3 files changed, 3 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index a15a8cb..ac9be21 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -417,9 +417,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm,
+ 	/*  Hook call by reference pointer. */
+ 	switch	(CmnInfo) {
+ 	/*  Dynamic call by reference pointer. */
+-	case	ODM_CMNINFO_CHNL:
+-		pDM_Odm->pChannel = (u8 *)pValue;
+-		break;
+ 	case	ODM_CMNINFO_SCAN:
+ 		pDM_Odm->pbScanInProcess = (bool *)pValue;
+ 		break;
+@@ -505,11 +502,11 @@ static void odm_CommonInfoSelfUpdate(struct hal_data_8723a *pHalData)
+ 
+ 	if (pHalData->CurrentChannelBW == HT_CHANNEL_WIDTH_40) {
+ 		if (pHalData->nCur40MhzPrimeSC == 1)
+-			pDM_Odm->ControlChannel = *(pDM_Odm->pChannel) - 2;
++			pDM_Odm->ControlChannel = pHalData->CurrentChannel - 2;
+ 		else if (pHalData->nCur40MhzPrimeSC == 2)
+-			pDM_Odm->ControlChannel = *(pDM_Odm->pChannel) + 2;
++			pDM_Odm->ControlChannel = pHalData->CurrentChannel + 2;
+ 	} else {
+-		pDM_Odm->ControlChannel = *(pDM_Odm->pChannel);
++		pDM_Odm->ControlChannel = pHalData->CurrentChannel;
+ 	}
+ 
+ 	for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) {
+@@ -546,7 +543,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm)
+ void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm)
+ {
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n"));
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pChannel =%d\n", *(pDM_Odm->pChannel)));
+ 
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pbScanInProcess =%d\n", *(pDM_Odm->pbScanInProcess)));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pbPowerSaving =%d\n", *(pDM_Odm->pbPowerSaving)));
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index dfed57e..d1e4231 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -152,8 +152,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ 	/*  Pointer reference */
+ 	rtl8723a_odm_support_ability_set(Adapter, DYNAMIC_ALL_FUNC_ENABLE);
+ 
+-	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_CHNL,
+-			   &pHalData->CurrentChannel);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SCAN, &pmlmepriv->bScanInProcess);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_POWER_SAVING,
+ 			   &pwrctrlpriv->bpower_saving);
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index be0b84f..022387b 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -319,8 +319,6 @@ enum odm_cmninfo {
+ 	/*  */
+ 	/*  Dynamic value: */
+ 	/*  */
+-	ODM_CMNINFO_CHNL,
+-
+ 	ODM_CMNINFO_SCAN,
+ 	ODM_CMNINFO_POWER_SAVING,
+ 	ODM_CMNINFO_MP_MODE,
+@@ -686,8 +684,6 @@ struct dm_odm_t {
+ 	bool			bool_temp;
+ 	struct rtw_adapter	*PADAPTER_temp;
+ 
+-	/*  Central channel location Ch1/Ch2/.... */
+-	u8			*pChannel;	/* central channel number */
+ 	/*  Common info for Status */
+ 	bool			*pbScanInProcess;
+ 	bool			*pbPowerSaving;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0228-staging-rtl8723au-Eliminate-ODM_CMNINFO_SCAN-related.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0228-staging-rtl8723au-Eliminate-ODM_CMNINFO_SCAN-related.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,144 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:24:59 +0200
+Subject: [228/249] staging: rtl8723au: Eliminate ODM_CMNINFO_SCAN related code
+Origin: https://git.kernel.org/linus/1a573d2bbeb379aa1fb3cd20be839a23a43d8a3e
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c         | 18 ++++++++----------
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c |  4 +---
+ drivers/staging/rtl8723au/include/odm.h     |  4 +---
+ 3 files changed, 10 insertions(+), 16 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index ac9be21..eadf2ed 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -179,7 +179,7 @@ void odm_FalseAlarmCounterStatistics23a(struct dm_odm_t *pDM_Odm);
+ 
+ void odm_DIG23aInit(struct dm_odm_t *pDM_Odm);
+ 
+-void odm_DIG23a(struct dm_odm_t *pDM_Odm);
++void odm_DIG23a(struct rtw_adapter *adapter);
+ 
+ void odm_CCKPacketDetectionThresh23a(struct dm_odm_t *pDM_Odm);
+ /* END---------------DIG--------------------------- */
+@@ -287,8 +287,9 @@ void ODM23a_DMInit(struct dm_odm_t *pDM_Odm)
+ /*  2011/09/20 MH This is the entry pointer for all team to execute HW out source DM. */
+ /*  You can not add any dummy function here, be care, you can only use DM structure */
+ /*  to perform any new ODM_DM. */
+-void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData)
++void ODM_DMWatchdog23a(struct rtw_adapter *adapter)
+ {
++	struct hal_data_8723a *pHalData = GET_HAL_DATA(adapter);
+ 	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
+ 
+ 	/* 2012.05.03 Luke: For all IC series */
+@@ -307,7 +308,7 @@ void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData)
+ 			ODM_RT_TRACE(pDM_Odm, ODM_COMP_DIG, ODM_DBG_LOUD, ("---Step2: 8723AS is in LPS mode\n"));
+ 			odm_DIG23abyRSSI_LPS(pDM_Odm);
+ 	} else {
+-		odm_DIG23a(pDM_Odm);
++		odm_DIG23a(adapter);
+ 	}
+ 
+ 	odm_CCKPacketDetectionThresh23a(pDM_Odm);
+@@ -417,9 +418,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm,
+ 	/*  Hook call by reference pointer. */
+ 	switch	(CmnInfo) {
+ 	/*  Dynamic call by reference pointer. */
+-	case	ODM_CMNINFO_SCAN:
+-		pDM_Odm->pbScanInProcess = (bool *)pValue;
+-		break;
+ 	case	ODM_CMNINFO_POWER_SAVING:
+ 		pDM_Odm->pbPowerSaving = (bool *)pValue;
+ 		break;
+@@ -544,7 +542,6 @@ void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm)
+ {
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n"));
+ 
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pbScanInProcess =%d\n", *(pDM_Odm->pbScanInProcess)));
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pbPowerSaving =%d\n", *(pDM_Odm->pbPowerSaving)));
+ }
+ 
+@@ -655,9 +652,10 @@ void odm_DIG23aInit(struct dm_odm_t *pDM_Odm)
+ 	pDM_DigTable->bMediaConnect_1 = false;
+ }
+ 
+-void odm_DIG23a(struct dm_odm_t *pDM_Odm)
++void odm_DIG23a(struct rtw_adapter *adapter)
+ {
+-
++	struct hal_data_8723a *pHalData = GET_HAL_DATA(adapter);
++	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
+ 	struct dig_t *pDM_DigTable = &pDM_Odm->DM_DigTable;
+ 	struct false_alarm_stats *pFalseAlmCnt = &pDM_Odm->FalseAlmCnt;
+ 	u8 DIG_Dynamic_MIN;
+@@ -674,7 +672,7 @@ void odm_DIG23a(struct dm_odm_t *pDM_Odm)
+ 		return;
+ 	}
+ 
+-	if (*(pDM_Odm->pbScanInProcess)) {
++	if (adapter->mlmepriv.bScanInProcess) {
+ 		ODM_RT_TRACE(pDM_Odm, ODM_COMP_DIG, ODM_DBG_LOUD, ("odm_DIG23a() Return: In Scan Progress \n"));
+ 		return;
+ 	}
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index d1e4231..22dec5c 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -133,7 +133,6 @@ static void Init_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ 
+ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ {
+-	struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
+ 	struct pwrctrl_priv *pwrctrlpriv = &Adapter->pwrctrlpriv;
+ 	struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);
+ 	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
+@@ -152,7 +151,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ 	/*  Pointer reference */
+ 	rtl8723a_odm_support_ability_set(Adapter, DYNAMIC_ALL_FUNC_ENABLE);
+ 
+-	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_SCAN, &pmlmepriv->bScanInProcess);
+ 	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_POWER_SAVING,
+ 			   &pwrctrlpriv->bpower_saving);
+ 
+@@ -210,7 +208,7 @@ rtl8723a_HalDmWatchDog(
+ 		bLinked = true;
+ 
+ 	ODM_CmnInfoUpdate23a(&pHalData->odmpriv, ODM_CMNINFO_LINK, bLinked);
+-	ODM_DMWatchdog23a(pHalData);
++	ODM_DMWatchdog23a(Adapter);
+ 
+ skip_dm:
+ 
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index 022387b..300f8fb 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -319,7 +319,6 @@ enum odm_cmninfo {
+ 	/*  */
+ 	/*  Dynamic value: */
+ 	/*  */
+-	ODM_CMNINFO_SCAN,
+ 	ODM_CMNINFO_POWER_SAVING,
+ 	ODM_CMNINFO_MP_MODE,
+ 
+@@ -685,7 +684,6 @@ struct dm_odm_t {
+ 	struct rtw_adapter	*PADAPTER_temp;
+ 
+ 	/*  Common info for Status */
+-	bool			*pbScanInProcess;
+ 	bool			*pbPowerSaving;
+ /*  POINTER REFERENCE----------- */
+ 	/*  */
+@@ -982,7 +980,7 @@ u32 ODM_Get_Rate_Bitmap23a(struct hal_data_8723a *pHalData, u32 macid, u32 ra_ma
+ 
+ void ODM23a_DMInit(struct dm_odm_t *pDM_Odm);
+ 
+-void ODM_DMWatchdog23a(struct hal_data_8723a *pHalData);
++void ODM_DMWatchdog23a(struct rtw_adapter *adapter);
+ 
+ void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm, enum odm_cmninfo	CmnInfo, u32 Value);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0229-staging-rtl8723au-Eliminate-ODM_CMNINFO_POWER_SAVING.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0229-staging-rtl8723au-Eliminate-ODM_CMNINFO_POWER_SAVING.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,97 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:25:00 +0200
+Subject: [229/249] staging: rtl8723au: Eliminate ODM_CMNINFO_POWER_SAVING
+ usage
+Origin: https://git.kernel.org/linus/638847c94b37fb173048129370029d3594e7de6d
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c         | 8 ++------
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 4 ----
+ drivers/staging/rtl8723au/include/odm.h     | 3 ---
+ 3 files changed, 2 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index eadf2ed..754b816 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -291,6 +291,7 @@ void ODM_DMWatchdog23a(struct rtw_adapter *adapter)
+ {
+ 	struct hal_data_8723a *pHalData = GET_HAL_DATA(adapter);
+ 	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
++	struct pwrctrl_priv *pwrctrlpriv = &adapter->pwrctrlpriv;
+ 
+ 	/* 2012.05.03 Luke: For all IC series */
+ 	odm_CmnInfoHook_Debug23a(pDM_Odm);
+@@ -313,7 +314,7 @@ void ODM_DMWatchdog23a(struct rtw_adapter *adapter)
+ 
+ 	odm_CCKPacketDetectionThresh23a(pDM_Odm);
+ 
+-	if (*(pDM_Odm->pbPowerSaving))
++	if (pwrctrlpriv->bpower_saving)
+ 		return;
+ 
+ 	odm_RefreshRateAdaptiveMask23a(pDM_Odm);
+@@ -418,9 +419,6 @@ void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm,
+ 	/*  Hook call by reference pointer. */
+ 	switch	(CmnInfo) {
+ 	/*  Dynamic call by reference pointer. */
+-	case	ODM_CMNINFO_POWER_SAVING:
+-		pDM_Odm->pbPowerSaving = (bool *)pValue;
+-		break;
+ 	/* To remove the compiler warning, must add an empty default statement to handle the other values. */
+ 	default:
+ 		/* do nothing */
+@@ -541,8 +539,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm)
+ void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm)
+ {
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n"));
+-
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("pbPowerSaving =%d\n", *(pDM_Odm->pbPowerSaving)));
+ }
+ 
+ void odm_CmnInfoUpdate_Debug23a(struct dm_odm_t *pDM_Odm)
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index 22dec5c..fa3e5aa 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -133,7 +133,6 @@ static void Init_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ 
+ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ {
+-	struct pwrctrl_priv *pwrctrlpriv = &Adapter->pwrctrlpriv;
+ 	struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);
+ 	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
+ 	struct dm_priv	*pdmpriv = &pHalData->dmpriv;
+@@ -151,9 +150,6 @@ static void Update_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+ 	/*  Pointer reference */
+ 	rtl8723a_odm_support_ability_set(Adapter, DYNAMIC_ALL_FUNC_ENABLE);
+ 
+-	ODM23a_CmnInfoHook(pDM_Odm, ODM_CMNINFO_POWER_SAVING,
+-			   &pwrctrlpriv->bpower_saving);
+-
+ 	for (i = 0; i < NUM_STA; i++)
+ 		ODM_CmnInfoPtrArrayHook23a(pDM_Odm, ODM_CMNINFO_STA_STATUS, i, NULL);
+ }
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index 300f8fb..58875f4 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -319,7 +319,6 @@ enum odm_cmninfo {
+ 	/*  */
+ 	/*  Dynamic value: */
+ 	/*  */
+-	ODM_CMNINFO_POWER_SAVING,
+ 	ODM_CMNINFO_MP_MODE,
+ 
+ 	ODM_CMNINFO_WIFI_DIRECT,
+@@ -683,8 +682,6 @@ struct dm_odm_t {
+ 	bool			bool_temp;
+ 	struct rtw_adapter	*PADAPTER_temp;
+ 
+-	/*  Common info for Status */
+-	bool			*pbPowerSaving;
+ /*  POINTER REFERENCE----------- */
+ 	/*  */
+ /* CALL BY VALUE------------- */

Added: dists/sid/linux/debian/patches/features/all/r8723au/0230-staging-rtl8723au-Eliminate-obsolete-odm_CmnInfoHook.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0230-staging-rtl8723au-Eliminate-obsolete-odm_CmnInfoHook.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,45 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:25:01 +0200
+Subject: [230/249] staging: rtl8723au: Eliminate obsolete
+ odm_CmnInfoHook_Debug23a()
+Origin: https://git.kernel.org/linus/555f1ca7bcf062b4f9c85f71f1738096877053dd
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index 754b816..d420f33 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -170,8 +170,6 @@ static void odm_CommonInfoSelfUpdate(struct hal_data_8723a *pHalData);
+ 
+ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm);
+ 
+-void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm);
+-
+ void odm_CmnInfoUpdate_Debug23a(struct dm_odm_t *pDM_Odm);
+ 
+ /* START---------------DIG--------------------------- */
+@@ -294,7 +292,6 @@ void ODM_DMWatchdog23a(struct rtw_adapter *adapter)
+ 	struct pwrctrl_priv *pwrctrlpriv = &adapter->pwrctrlpriv;
+ 
+ 	/* 2012.05.03 Luke: For all IC series */
+-	odm_CmnInfoHook_Debug23a(pDM_Odm);
+ 	odm_CmnInfoUpdate_Debug23a(pDM_Odm);
+ 	odm_CommonInfoSelfUpdate(pHalData);
+ 	odm_FalseAlarmCounterStatistics23a(pDM_Odm);
+@@ -536,11 +533,6 @@ void odm_CmnInfoInit_Debug23a(struct dm_odm_t *pDM_Odm)
+ 
+ }
+ 
+-void odm_CmnInfoHook_Debug23a(struct dm_odm_t *pDM_Odm)
+-{
+-	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoHook_Debug23a ==>\n"));
+-}
+-
+ void odm_CmnInfoUpdate_Debug23a(struct dm_odm_t *pDM_Odm)
+ {
+ 	ODM_RT_TRACE(pDM_Odm, ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_CmnInfoUpdate_Debug23a ==>\n"));

Added: dists/sid/linux/debian/patches/features/all/r8723au/0231-staging-rtl8723au-Remove-obsolete-ODM23a_CmnInfoHook.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0231-staging-rtl8723au-Remove-obsolete-ODM23a_CmnInfoHook.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,51 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:25:02 +0200
+Subject: [231/249] staging: rtl8723au: Remove obsolete ODM23a_CmnInfoHook()
+Origin: https://git.kernel.org/linus/bd9bda22d8cf1667f3389418f0a9daad6e6c2ee4
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c     | 15 ---------------
+ drivers/staging/rtl8723au/include/odm.h |  2 --
+ 2 files changed, 17 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index d420f33..1b39cbe 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -408,21 +408,6 @@ void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm,
+ 
+ }
+ 
+-void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm,
+-		enum odm_cmninfo CmnInfo,
+-		void *pValue
+-	)
+-{
+-	/*  Hook call by reference pointer. */
+-	switch	(CmnInfo) {
+-	/*  Dynamic call by reference pointer. */
+-	/* To remove the compiler warning, must add an empty default statement to handle the other values. */
+-	default:
+-		/* do nothing */
+-		break;
+-	}
+-}
+-
+ void ODM_CmnInfoPtrArrayHook23a(struct dm_odm_t *pDM_Odm, enum odm_cmninfo CmnInfo,
+ 				u16 Index, void *pValue)
+ {
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index 58875f4..80aa215 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -981,8 +981,6 @@ void ODM_DMWatchdog23a(struct rtw_adapter *adapter);
+ 
+ void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm, enum odm_cmninfo	CmnInfo, u32 Value);
+ 
+-void ODM23a_CmnInfoHook(struct dm_odm_t *pDM_Odm, enum odm_cmninfo	CmnInfo, void *pValue);
+-
+ void ODM_CmnInfoPtrArrayHook23a(struct dm_odm_t *pDM_Odm, enum odm_cmninfo	CmnInfo, u16 Index, void *pValue);
+ 
+ void ODM_CmnInfoUpdate23a(struct dm_odm_t *pDM_Odm, u32 CmnInfo, u64 Value);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0232-staging-rtl8723au-Merge-Init_ODM_ComInfo_8723a-into-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0232-staging-rtl8723au-Merge-Init_ODM_ComInfo_8723a-into-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,51 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:25:03 +0200
+Subject: [232/249] staging: rtl8723au: Merge Init_ODM_ComInfo_8723a() into
+ rtl8723a_init_dm_priv()
+Origin: https://git.kernel.org/linus/62b0d72b3cf0307a2fc2693f39b290d6657f49a9
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/rtl8723a_dm.c | 20 +++++---------------
+ 1 file changed, 5 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+index fa3e5aa..fa826b0 100644
+--- a/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
++++ b/drivers/staging/rtl8723au/hal/rtl8723a_dm.c
+@@ -82,16 +82,15 @@ static void dm_CheckPbcGPIO(struct rtw_adapter *padapter)
+ 
+ /*  Initialize GPIO setting registers */
+ /*  functions */
+-static void Init_ODM_ComInfo_8723a(struct rtw_adapter *Adapter)
+-{
+ 
++void rtl8723a_init_dm_priv(struct rtw_adapter *Adapter)
++{
+ 	struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);
++	struct dm_priv	*pdmpriv = &pHalData->dmpriv;
+ 	struct dm_odm_t *pDM_Odm = &pHalData->odmpriv;
+-	u8	cut_ver, fab_ver;
++	u8 cut_ver, fab_ver;
+ 
+-	/*  */
+-	/*  Init Value */
+-	/*  */
++	memset(pdmpriv, 0, sizeof(struct dm_priv));
+ 	memset(pDM_Odm, 0, sizeof(*pDM_Odm));
+ 
+ 	pDM_Odm->Adapter = Adapter;
+@@ -212,12 +211,3 @@ skip_dm:
+ 	/*  Check Hardware Radio ON/OFF or not */
+ 	dm_CheckPbcGPIO(Adapter);
+ }
+-
+-void rtl8723a_init_dm_priv(struct rtw_adapter *Adapter)
+-{
+-	struct hal_data_8723a *pHalData = GET_HAL_DATA(Adapter);
+-	struct dm_priv	*pdmpriv = &pHalData->dmpriv;
+-
+-	memset(pdmpriv, 0, sizeof(struct dm_priv));
+-	Init_ODM_ComInfo_8723a(Adapter);
+-}

Added: dists/sid/linux/debian/patches/features/all/r8723au/0233-staging-rtl8723au-odm_CommonInfoSelfInit23a-Use-prop.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0233-staging-rtl8723au-odm_CommonInfoSelfInit23a-Use-prop.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,29 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:25:04 +0200
+Subject: [233/249] staging: rtl8723au: odm_CommonInfoSelfInit23a(): Use proper
+ register defines
+Origin: https://git.kernel.org/linus/36cf7c75af1bdc2a4f5eeea2711690e47e8cc129
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index 1b39cbe..4e7a198 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -463,8 +463,10 @@ void ODM_CmnInfoUpdate23a(struct dm_odm_t *pDM_Odm, u32 CmnInfo, u64 Value)
+ void odm_CommonInfoSelfInit23a(struct dm_odm_t *pDM_Odm
+ 	)
+ {
+-	pDM_Odm->bCckHighPower = (bool) ODM_GetBBReg(pDM_Odm, 0x824, BIT(9));
+-	pDM_Odm->RFPathRxEnable = (u8) ODM_GetBBReg(pDM_Odm, 0xc04, 0x0F);
++	pDM_Odm->bCckHighPower =
++		(bool) ODM_GetBBReg(pDM_Odm, rFPGA0_XA_HSSIParameter2, BIT(9));
++	pDM_Odm->RFPathRxEnable =
++		(u8) ODM_GetBBReg(pDM_Odm, rOFDM0_TRxPathEnable, 0x0F);
+ 	if (pDM_Odm->SupportICType & ODM_RTL8723A)
+ 		pDM_Odm->AntDivType = CGCS_RX_SW_ANTDIV;
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0234-staging-rtl8723au-Remove-a-pile-of-fluff-for-calling.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0234-staging-rtl8723au-Remove-a-pile-of-fluff-for-calling.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,208 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:25:05 +0200
+Subject: [234/249] staging: rtl8723au: Remove a pile of fluff for calling into
+ a bunch of no-op functions
+Origin: https://git.kernel.org/linus/62900ebf471556f30a2a9208985e1d73c902b8fd
+
+The whole antenna diversity selection was completely pointless as all
+the end functions called were no-ops.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm.c          | 77 ----------------------------
+ drivers/staging/rtl8723au/hal/odm_HWConfig.c |  2 -
+ drivers/staging/rtl8723au/include/odm.h      |  9 ----
+ 3 files changed, 88 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm.c b/drivers/staging/rtl8723au/hal/odm.c
+index 4e7a198..1c0f106d 100644
+--- a/drivers/staging/rtl8723au/hal/odm.c
++++ b/drivers/staging/rtl8723au/hal/odm.c
+@@ -208,18 +208,6 @@ void odm_RSSIMonitorCheck23aAP(struct dm_odm_t *pDM_Odm);
+ void odm_RSSIMonitorCheck23a(struct dm_odm_t *pDM_Odm);
+ void odm_DynamicTxPower23a(struct dm_odm_t *pDM_Odm);
+ 
+-void odm_SwAntDivInit(struct dm_odm_t *pDM_Odm);
+-
+-void odm_SwAntDivInit_NIC(struct dm_odm_t *pDM_Odm);
+-
+-void odm_SwAntDivChkAntSwitch(struct dm_odm_t *pDM_Odm, u8 Step);
+-
+-void odm_SwAntDivChkAntSwitchNIC(struct dm_odm_t *pDM_Odm,
+-		u8 Step
+-	);
+-
+-void odm_SwAntDivChkAntSwitchCallback23a(unsigned long data);
+-
+ void odm_RefreshRateAdaptiveMask23a(struct dm_odm_t *pDM_Odm);
+ 
+ void ODM_TXPowerTrackingCheck23a(struct dm_odm_t *pDM_Odm);
+@@ -242,8 +230,6 @@ static void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm);
+ #define		RxDefaultAnt1		0x65a9
+ #define	RxDefaultAnt2		0x569a
+ 
+-void odm_InitHybridAntDiv23a(struct dm_odm_t *pDM_Odm);
+-
+ bool odm_StaDefAntSel(struct dm_odm_t *pDM_Odm,
+  u32 OFDM_Ant1_Cnt,
+  u32 OFDM_Ant2_Cnt,
+@@ -257,8 +243,6 @@ void odm_SetRxIdleAnt(struct dm_odm_t *pDM_Odm,
+    bool   bDualPath
+ );
+ 
+-void odm_HwAntDiv23a(struct dm_odm_t *pDM_Odm);
+-
+ /* 3 Export Interface */
+ 
+ /*  2011/09/21 MH Add to describe different team necessary resource allocate?? */
+@@ -274,12 +258,6 @@ void ODM23a_DMInit(struct dm_odm_t *pDM_Odm)
+ 	odm_DynamicTxPower23aInit(pDM_Odm);
+ 	odm_TXPowerTrackingInit23a(pDM_Odm);
+ 	ODM_EdcaTurboInit23a(pDM_Odm);
+-	if ((pDM_Odm->AntDivType == CG_TRX_HW_ANTDIV)	||
+-	    (pDM_Odm->AntDivType == CGCS_RX_HW_ANTDIV)	||
+-	    (pDM_Odm->AntDivType == CG_TRX_SMART_ANTDIV))
+-		odm_InitHybridAntDiv23a(pDM_Odm);
+-	else if (pDM_Odm->AntDivType == CGCS_RX_SW_ANTDIV)
+-		odm_SwAntDivInit(pDM_Odm);
+ }
+ 
+ /*  2011/09/20 MH This is the entry pointer for all team to execute HW out source DM. */
+@@ -317,12 +295,6 @@ void ODM_DMWatchdog23a(struct rtw_adapter *adapter)
+ 	odm_RefreshRateAdaptiveMask23a(pDM_Odm);
+ 
+ 	odm_DynamicBBPowerSaving23a(pDM_Odm);
+-	if ((pDM_Odm->AntDivType ==  CG_TRX_HW_ANTDIV)	||
+-	    (pDM_Odm->AntDivType == CGCS_RX_HW_ANTDIV)	||
+-	    (pDM_Odm->AntDivType == CG_TRX_SMART_ANTDIV))
+-		odm_HwAntDiv23a(pDM_Odm);
+-	else if (pDM_Odm->AntDivType == CGCS_RX_SW_ANTDIV)
+-		odm_SwAntDivChkAntSwitch(pDM_Odm, SWAW_STEP_PEAK);
+ 
+ 	ODM_TXPowerTrackingCheck23a(pDM_Odm);
+ 	odm_EdcaTurboCheck23a(pDM_Odm);
+@@ -365,9 +337,6 @@ void ODM_CmnInfoInit23a(struct dm_odm_t *pDM_Odm,
+ 	case	ODM_CMNINFO_RF_TYPE:
+ 		pDM_Odm->RFType = (u8)Value;
+ 		break;
+-	case    ODM_CMNINFO_RF_ANTENNA_TYPE:
+-		pDM_Odm->AntDivType = (u8)Value;
+-		break;
+ 	case	ODM_CMNINFO_BOARD_TYPE:
+ 		pDM_Odm->BoardType = (u8)Value;
+ 		break;
+@@ -467,8 +436,6 @@ void odm_CommonInfoSelfInit23a(struct dm_odm_t *pDM_Odm
+ 		(bool) ODM_GetBBReg(pDM_Odm, rFPGA0_XA_HSSIParameter2, BIT(9));
+ 	pDM_Odm->RFPathRxEnable =
+ 		(u8) ODM_GetBBReg(pDM_Odm, rOFDM0_TRxPathEnable, 0x0F);
+-	if (pDM_Odm->SupportICType & ODM_RTL8723A)
+-		pDM_Odm->AntDivType = CGCS_RX_SW_ANTDIV;
+ 
+ 	ODM_InitDebugSetting23a(pDM_Odm);
+ }
+@@ -1463,50 +1430,6 @@ void odm_TXPowerTrackingCheckAP(struct dm_odm_t *pDM_Odm)
+ {
+ }
+ 
+-/* antenna mapping info */
+-/*  1: right-side antenna */
+-/*  2/0: left-side antenna */
+-/* PpDM_SWAT_Table->CCK_Ant1_Cnt /OFDM_Ant1_Cnt:  for right-side antenna:   Ant:1    RxDefaultAnt1 */
+-/* PpDM_SWAT_Table->CCK_Ant2_Cnt /OFDM_Ant2_Cnt:  for left-side antenna:     Ant:0    RxDefaultAnt2 */
+-/*  We select left antenna as default antenna in initial process, modify it as needed */
+-/*  */
+-
+-/* 3 ============================================================ */
+-/* 3 SW Antenna Diversity */
+-/* 3 ============================================================ */
+-void odm_SwAntDivInit(struct dm_odm_t *pDM_Odm)
+-{
+-}
+-
+-void ODM_SwAntDivChkPerPktRssi(struct dm_odm_t *pDM_Odm, u8 StationID,
+-			       struct phy_info *pPhyInfo)
+-{
+-}
+-
+-void odm_SwAntDivChkAntSwitch(struct dm_odm_t *pDM_Odm, u8 Step)
+-{
+-}
+-
+-void ODM_SwAntDivRestAfterLink(struct dm_odm_t *pDM_Odm)
+-{
+-}
+-
+-void odm_SwAntDivChkAntSwitchCallback23a(unsigned long data)
+-{
+-}
+-
+-/* 3 ============================================================ */
+-/* 3 SW Antenna Diversity */
+-/* 3 ============================================================ */
+-
+-void odm_InitHybridAntDiv23a(struct dm_odm_t *pDM_Odm)
+-{
+-}
+-
+-void odm_HwAntDiv23a(struct dm_odm_t *pDM_Odm)
+-{
+-}
+-
+ /* EDCA Turbo */
+ static void ODM_EdcaTurboInit23a(struct dm_odm_t *pDM_Odm)
+ {
+diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+index ab820a8..409fde4 100644
+--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c
++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+@@ -401,8 +401,6 @@ static void ODM_PhyStatusQuery23a_92CSeries(struct dm_odm_t *pDM_Odm,
+ 					 pPhyStatus, pPktinfo);
+ 	if (pDM_Odm->RSSI_test) {
+ 		/*  Select the packets to do RSSI checking for antenna switching. */
+-		if (pPktinfo->bPacketToSelf || pPktinfo->bPacketBeacon)
+-			ODM_SwAntDivChkPerPktRssi(pDM_Odm, pPktinfo->StationID, pPhyInfo);
+ 	} else {
+ 		odm_Process_RSSIForDM(pDM_Odm, pPhyInfo, pPktinfo);
+ 	}
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index 80aa215..41dba62 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -125,7 +125,6 @@ struct  dig_t {
+ 	bool		bMediaConnect_0;
+ 	bool		bMediaConnect_1;
+ 
+-	u32		AntDiv_RSSI_max;
+ 	u32		RSSI_max;
+ };
+ 
+@@ -670,7 +669,6 @@ struct dm_odm_t {
+ 
+ 	bool			bDualMacSmartConcurrent;
+ 	u32			BK_SupportAbility;
+-	u8			AntDivType;
+ /* HOOK BEFORE REG INIT----------- */
+ 
+ 	/*  */
+@@ -952,9 +950,6 @@ void ODM_SetAntenna(struct dm_odm_t *pDM_Odm, u8 Antenna);
+ #define dm_RF_Saving	ODM_RF_Saving23a
+ void ODM_RF_Saving23a(struct dm_odm_t *pDM_Odm, u8 bForceInNormal);
+ 
+-#define SwAntDivRestAfterLink	ODM_SwAntDivRestAfterLink
+-void ODM_SwAntDivRestAfterLink(struct dm_odm_t *pDM_Odm);
+-
+ #define dm_CheckTXPowerTracking		ODM_TXPowerTrackingCheck23a
+ void ODM_TXPowerTrackingCheck23a(struct dm_odm_t *pDM_Odm);
+ 
+@@ -962,10 +957,6 @@ bool ODM_RAStateCheck23a(struct dm_odm_t *pDM_Odm, s32 RSSI, bool bForceUpdate,
+ 		      u8 *pRATRState);
+ 
+ 
+-#define dm_SWAW_RSSI_Check	ODM_SwAntDivChkPerPktRssi
+-void ODM_SwAntDivChkPerPktRssi(struct dm_odm_t *pDM_Odm, u8 StationID,
+-			       struct phy_info *pPhyInfo);
+-
+ u32 ConvertTo_dB23a(u32 Value);
+ 
+ u32 GetPSDData(struct dm_odm_t *pDM_Odm, unsigned int point, u8 initial_gain_psd);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0235-staging-rtl8723au-Fold-rtl8723a_set_nav_upper-into-r.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0235-staging-rtl8723au-Fold-rtl8723a_set_nav_upper-into-r.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,70 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:25:06 +0200
+Subject: [235/249] staging: rtl8723au: Fold rtl8723a_set_nav_upper() into
+ rtl8723au_hal_init()
+Origin: https://git.kernel.org/linus/d0b39f87427c806b984c57d52148200af9c57bf2
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/hal_com.c     | 18 ------------------
+ drivers/staging/rtl8723au/hal/usb_halinit.c |  4 +++-
+ drivers/staging/rtl8723au/include/hal_com.h |  1 -
+ 3 files changed, 3 insertions(+), 20 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/hal_com.c b/drivers/staging/rtl8723au/hal/hal_com.c
+index 4a66ed5..8f299ec 100644
+--- a/drivers/staging/rtl8723au/hal/hal_com.c
++++ b/drivers/staging/rtl8723au/hal/hal_com.c
+@@ -818,24 +818,6 @@ void rtl8723a_set_rxdma_agg_pg_th(struct rtw_adapter *padapter, u8 val)
+ 	rtl8723au_write8(padapter, REG_RXDMA_AGG_PG_TH, val);
+ }
+ 
+-void rtl8723a_set_nav_upper(struct rtw_adapter *padapter, u32 usNavUpper)
+-{
+-	if (usNavUpper > HAL_8723A_NAV_UPPER_UNIT * 0xFF) {
+-		RT_TRACE(_module_hal_init_c_, _drv_notice_,
+-			 ("The setting value (0x%08X us) of NAV_UPPER "
+-			  "is larger than (%d * 0xFF)!!!\n",
+-			  usNavUpper, HAL_8723A_NAV_UPPER_UNIT));
+-		return;
+-	}
+-
+-	/*  The value of ((usNavUpper + HAL_8723A_NAV_UPPER_UNIT - 1) /
+-	    HAL_8723A_NAV_UPPER_UNIT) */
+-	/*  is getting the upper integer. */
+-	usNavUpper = (usNavUpper + HAL_8723A_NAV_UPPER_UNIT - 1) /
+-		HAL_8723A_NAV_UPPER_UNIT;
+-	rtl8723au_write8(padapter, REG_NAV_UPPER, (u8) usNavUpper);
+-}
+-
+ void rtl8723a_set_initial_gain(struct rtw_adapter *padapter, u32 rx_gain)
+ {
+ 	struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter);
+diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c
+index b51762a..d896d06 100644
+--- a/drivers/staging/rtl8723au/hal/usb_halinit.c
++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c
+@@ -780,7 +780,9 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter)
+ 
+ 	rtl8723a_InitHalDm(Adapter);
+ 
+-	rtl8723a_set_nav_upper(Adapter, WiFiNavUpperUs);
++	val8 = ((WiFiNavUpperUs + HAL_8723A_NAV_UPPER_UNIT - 1) /
++		HAL_8723A_NAV_UPPER_UNIT);
++	rtl8723au_write8(Adapter, REG_NAV_UPPER, val8);
+ 
+ 	/*  2011/03/09 MH debug only, UMC-B cut pass 2500 S5 test, but we need to fin root cause. */
+ 	if (((rtl8723au_read32(Adapter, rFPGA0_RFMOD) & 0xFF000000) !=
+diff --git a/drivers/staging/rtl8723au/include/hal_com.h b/drivers/staging/rtl8723au/include/hal_com.h
+index 6c2ca4f..7c31865 100644
+--- a/drivers/staging/rtl8723au/include/hal_com.h
++++ b/drivers/staging/rtl8723au/include/hal_com.h
+@@ -197,7 +197,6 @@ void rtl8723a_set_ac_param_vi(struct rtw_adapter *padapter, u32 vi);
+ void rtl8723a_set_ac_param_be(struct rtw_adapter *padapter, u32 be);
+ void rtl8723a_set_ac_param_bk(struct rtw_adapter *padapter, u32 bk);
+ void rtl8723a_set_rxdma_agg_pg_th(struct rtw_adapter *padapter, u8 val);
+-void rtl8723a_set_nav_upper(struct rtw_adapter *padapter, u32 usNavUpper);
+ void rtl8723a_set_initial_gain(struct rtw_adapter *padapter, u32 rx_gain);
+ 
+ void rtl8723a_odm_support_ability_write(struct rtw_adapter *padapter, u32 val);

Added: dists/sid/linux/debian/patches/features/all/r8723au/0236-staging-rtl8723au-Reduce-wrapper-layers-around-hal_-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0236-staging-rtl8723au-Reduce-wrapper-layers-around-hal_-.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,169 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:25:07 +0200
+Subject: [236/249] staging: rtl8723au: Reduce wrapper layers around hal_{de,
+ }init() calls
+Origin: https://git.kernel.org/linus/dc20d1da78a631b1c823b6cebbf8f659d0faac1d
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/usb_halinit.c  | 52 +++++++---------------------
+ drivers/staging/rtl8723au/include/hal_intf.h |  4 +--
+ drivers/staging/rtl8723au/os_dep/os_intfs.c  |  6 ++--
+ drivers/staging/rtl8723au/os_dep/usb_intf.c  |  2 +-
+ 4 files changed, 19 insertions(+), 45 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c
+index d896d06..681810e 100644
+--- a/drivers/staging/rtl8723au/hal/usb_halinit.c
++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c
+@@ -534,7 +534,7 @@ enum rt_rf_power_state RfOnOffDetect23a(struct rtw_adapter *pAdapter)
+ 
+ void _ps_open_RF23a(struct rtw_adapter *padapter);
+ 
+-static int rtl8723au_hal_init(struct rtw_adapter *Adapter)
++int rtl8723au_hal_init(struct rtw_adapter *Adapter)
+ {
+ 	u8 val8 = 0;
+ 	u32 boundary;
+@@ -545,6 +545,8 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter)
+ 
+ 	unsigned long init_start_time = jiffies;
+ 
++	Adapter->hw_init_completed = false;
++
+ 	if (Adapter->pwrctrlpriv.bkeepfwalive) {
+ 		_ps_open_RF23a(Adapter);
+ 
+@@ -796,6 +798,13 @@ static int rtl8723au_hal_init(struct rtw_adapter *Adapter)
+ 			  rtl8723au_read32(Adapter, REG_FWHW_TXQ_CTRL)|BIT(12));
+ 
+ exit:
++	if (status == _SUCCESS) {
++		Adapter->hw_init_completed = true;
++
++		if (Adapter->registrypriv.notch_filter == 1)
++			rtl8723a_notch_filter(Adapter, 1);
++	}
++
+ 	DBG_8723A("%s in %dms\n", __func__,
+ 		  jiffies_to_msecs(jiffies - init_start_time));
+ 	return status;
+@@ -1105,7 +1114,7 @@ static void CardDisableRTL8723U(struct rtw_adapter *Adapter)
+ 	rtl8723au_write8(Adapter, REG_RSV_CTRL, 0x0e);
+ }
+ 
+-static int rtl8723au_hal_deinit(struct rtw_adapter *padapter)
++int rtl8723au_hal_deinit(struct rtw_adapter *padapter)
+ {
+ 	DBG_8723A("==> %s\n", __func__);
+ 
+@@ -1118,6 +1127,8 @@ static int rtl8723au_hal_deinit(struct rtw_adapter *padapter)
+ 	/*  IC. Accord to johnny's opinion, only RU need the support. */
+ 	CardDisableRTL8723U(padapter);
+ 
++	padapter->hw_init_completed = false;
++
+ 	return _SUCCESS;
+ }
+ 
+@@ -1543,40 +1554,3 @@ void rtl8723a_update_ramask(struct rtw_adapter *padapter,
+ 	/* set correct initial date rate for each mac_id */
+ 	pdmpriv->INIDATA_RATE[mac_id] = init_rate;
+ }
+-
+-int rtw_hal_init23a(struct rtw_adapter *padapter)
+-{
+-	int status;
+-
+-	padapter->hw_init_completed = false;
+-
+-	status = rtl8723au_hal_init(padapter);
+-
+-	if (status == _SUCCESS) {
+-		padapter->hw_init_completed = true;
+-
+-		if (padapter->registrypriv.notch_filter == 1)
+-			rtl8723a_notch_filter(padapter, 1);
+-	} else {
+-		padapter->hw_init_completed = false;
+-		DBG_8723A("rtw_hal_init23a: hal__init fail\n");
+-	}
+-
+-	RT_TRACE(_module_hal_init_c_, _drv_err_,
+-		 ("-rtl871x_hal_init:status = 0x%x\n", status));
+-
+-	return status;
+-}
+-
+-int rtw_hal_deinit23a(struct rtw_adapter *padapter)
+-{
+-	int status;
+-
+-	status = rtl8723au_hal_deinit(padapter);
+-
+-	if (status == _SUCCESS)
+-		padapter->hw_init_completed = false;
+-	else
+-		DBG_8723A("\n rtw_hal_deinit23a: hal_init fail\n");
+-	return status;
+-}
+diff --git a/drivers/staging/rtl8723au/include/hal_intf.h b/drivers/staging/rtl8723au/include/hal_intf.h
+index 04223b5..396decb 100644
+--- a/drivers/staging/rtl8723au/include/hal_intf.h
++++ b/drivers/staging/rtl8723au/include/hal_intf.h
+@@ -103,8 +103,8 @@ void rtw_hal_def_value_init23a(struct rtw_adapter *padapter);
+ int pm_netdev_open23a(struct net_device *pnetdev, u8 bnormal);
+ int rtw_resume_process23a(struct rtw_adapter *padapter);
+ 
+-int rtw_hal_init23a(struct rtw_adapter *padapter);
+-int rtw_hal_deinit23a(struct rtw_adapter *padapter);
++int rtl8723au_hal_init(struct rtw_adapter *padapter);
++int rtl8723au_hal_deinit(struct rtw_adapter *padapter);
+ void rtw_hal_stop(struct rtw_adapter *padapter);
+ 
+ void rtw_hal_update_ra_mask23a(struct sta_info *psta, u8 rssi_level);
+diff --git a/drivers/staging/rtl8723au/os_dep/os_intfs.c b/drivers/staging/rtl8723au/os_dep/os_intfs.c
+index a081e7a..b34eaec 100644
+--- a/drivers/staging/rtl8723au/os_dep/os_intfs.c
++++ b/drivers/staging/rtl8723au/os_dep/os_intfs.c
+@@ -666,7 +666,7 @@ int netdev_open23a(struct net_device *pnetdev)
+ 		padapter->bSurpriseRemoved = false;
+ 		padapter->bCardDisableWOHSM = false;
+ 
+-		status = rtw_hal_init23a(padapter);
++		status = rtl8723au_hal_init(padapter);
+ 		if (status == _FAIL) {
+ 			RT_TRACE(_module_os_intfs_c_, _drv_err_,
+ 				 ("rtl871x_hal_init(): Can't init h/w!\n"));
+@@ -735,7 +735,7 @@ static int ips_netdrv_open(struct rtw_adapter *padapter)
+ 	padapter->bSurpriseRemoved = false;
+ 	padapter->bCardDisableWOHSM = false;
+ 
+-	status = rtw_hal_init23a(padapter);
++	status = rtl8723au_hal_init(padapter);
+ 	if (status == _FAIL) {
+ 		RT_TRACE(_module_os_intfs_c_, _drv_err_,
+ 			 ("ips_netdrv_open(): Can't init h/w!\n"));
+@@ -800,7 +800,7 @@ void rtw_ips_dev_unload23a(struct rtw_adapter *padapter)
+ 
+ 	/* s5. */
+ 	if (!padapter->bSurpriseRemoved)
+-		rtw_hal_deinit23a(padapter);
++		rtl8723au_hal_deinit(padapter);
+ }
+ 
+ int pm_netdev_open23a(struct net_device *pnetdev, u8 bnormal)
+diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+index ec90216..aeaedcd 100644
+--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c
++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+@@ -303,7 +303,7 @@ static void rtw_dev_unload(struct rtw_adapter *padapter)
+ 
+ 		/* s5. */
+ 		if (!padapter->bSurpriseRemoved) {
+-			rtw_hal_deinit23a(padapter);
++			rtl8723au_hal_deinit(padapter);
+ 			padapter->bSurpriseRemoved = true;
+ 		}
+ 		padapter->bup = false;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0237-staging-rtl8723au-Fold-rtw_resume_process23a-into-rt.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0237-staging-rtl8723au-Fold-rtw_resume_process23a-into-rt.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,45 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Mon, 21 Jul 2014 11:25:08 +0200
+Subject: [237/249] staging: rtl8723au: Fold rtw_resume_process23a() into
+ rtw_resume()
+Origin: https://git.kernel.org/linus/30c588e04c2ba3d2cc1ff06c2d0bc7ef9d3d9cf0
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/include/hal_intf.h | 1 -
+ drivers/staging/rtl8723au/os_dep/usb_intf.c  | 9 ---------
+ 2 files changed, 10 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/include/hal_intf.h b/drivers/staging/rtl8723au/include/hal_intf.h
+index 396decb..404acb5 100644
+--- a/drivers/staging/rtl8723au/include/hal_intf.h
++++ b/drivers/staging/rtl8723au/include/hal_intf.h
+@@ -101,7 +101,6 @@ enum hardware_type {
+ 
+ void rtw_hal_def_value_init23a(struct rtw_adapter *padapter);
+ int pm_netdev_open23a(struct net_device *pnetdev, u8 bnormal);
+-int rtw_resume_process23a(struct rtw_adapter *padapter);
+ 
+ int rtl8723au_hal_init(struct rtw_adapter *padapter);
+ int rtl8723au_hal_deinit(struct rtw_adapter *padapter);
+diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+index aeaedcd..c75427f 100644
+--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c
++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+@@ -488,15 +488,6 @@ static int rtw_resume(struct usb_interface *pusb_intf)
+ {
+ 	struct dvobj_priv *dvobj = usb_get_intfdata(pusb_intf);
+ 	struct rtw_adapter *padapter = dvobj->if1;
+-	int ret;
+-
+-	ret = rtw_resume_process23a(padapter);
+-
+-	return ret;
+-}
+-
+-int rtw_resume_process23a(struct rtw_adapter *padapter)
+-{
+ 	struct net_device *pnetdev;
+ 	struct pwrctrl_priv *pwrpriv = NULL;
+ 	int ret = -1;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0239-staging-rtl8723au-Fix-typo-in-rtw_mlme_ext.c.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0239-staging-rtl8723au-Fix-typo-in-rtw_mlme_ext.c.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,134 @@
+From: Masanari Iida <standby24x7 at gmail.com>
+Date: Tue, 22 Jul 2014 23:42:13 +0900
+Subject: [239/249] staging: rtl8723au: Fix typo in rtw_mlme_ext.c
+Origin: https://git.kernel.org/linus/fae062ad57def6abf344ba1765a90c83f1a2d143
+
+This patch fix spelling typo in comments within rtw_mlme_ext.c
+
+Signed-off-by: Masanari Iida <standby24x7 at gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+index 18e4d24..c5fdcb8 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+@@ -2213,7 +2213,7 @@ exit:
+ 
+ /****************************************************************************
+ 
+-Following are some TX fuctions for WiFi MLME
++Following are some TX functions for WiFi MLME
+ 
+ *****************************************************************************/
+ 
+@@ -3352,7 +3352,7 @@ exit:
+ 	return;
+ }
+ 
+-/* when wait_ack is ture, this function shoule be called at process context */
++/* when wait_ack is true, this function should be called at process context */
+ static int _issue_nulldata23a(struct rtw_adapter *padapter, unsigned char *da,
+ 			      unsigned int power_mode, int wait_ack)
+ {
+@@ -3423,7 +3423,7 @@ exit:
+ 	return ret;
+ }
+ 
+-/* when wait_ms >0 , this function shoule be called at process context */
++/* when wait_ms >0 , this function should be called at process context */
+ /* da == NULL for station mode */
+ int issue_nulldata23a(struct rtw_adapter *padapter, unsigned char *da,
+ 		      unsigned int power_mode, int try_cnt, int wait_ms)
+@@ -3434,7 +3434,7 @@ int issue_nulldata23a(struct rtw_adapter *padapter, unsigned char *da,
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 
+-	/* da == NULL, assum it's null data for sta to ap*/
++	/* da == NULL, assume it's null data for sta to ap*/
+ 	if (da == NULL)
+ 		da = get_my_bssid23a(&pmlmeinfo->network);
+ 
+@@ -3476,7 +3476,7 @@ exit:
+ 	return ret;
+ }
+ 
+-/* when wait_ack is ture, this function shoule be called at process context */
++/* when wait_ack is true, this function should be called at process context */
+ static int _issue_qos_nulldata23a(struct rtw_adapter *padapter,
+ 				  unsigned char *da, u16 tid, int wait_ack)
+ {
+@@ -3551,7 +3551,7 @@ exit:
+ 	return ret;
+ }
+ 
+-/* when wait_ms >0 , this function shoule be called at process context */
++/* when wait_ms >0 , this function should be called at process context */
+ /* da == NULL for station mode */
+ int issue_qos_nulldata23a(struct rtw_adapter *padapter, unsigned char *da,
+ 			  u16 tid, int try_cnt, int wait_ms)
+@@ -3562,7 +3562,7 @@ int issue_qos_nulldata23a(struct rtw_adapter *padapter, unsigned char *da,
+ 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
+ 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
+ 
+-	/* da == NULL, assum it's null data for sta to ap*/
++	/* da == NULL, assume it's null data for sta to ap*/
+ 	if (da == NULL)
+ 		da = get_my_bssid23a(&pmlmeinfo->network);
+ 
+@@ -4023,7 +4023,7 @@ int send_beacon23a(struct rtw_adapter *padapter)
+ 
+ /****************************************************************************
+ 
+-Following are some utitity fuctions for WiFi MLME
++Following are some utitity functions for WiFi MLME
+ 
+ *****************************************************************************/
+ 
+@@ -4303,7 +4303,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
+ 	}
+ 
+ 
+-	/*  mark bss info receving from nearby channel as SignalQuality 101 */
++	/*  mark bss info receiving from nearby channel as SignalQuality 101 */
+ 	if (bssid->DSConfig != rtw_get_oper_ch23a(padapter))
+ 		bssid->PhyInfo.SignalQuality = 101;
+ 
+@@ -4325,7 +4325,7 @@ static void start_create_ibss(struct rtw_adapter* padapter)
+ 	/* update wireless mode */
+ 	update_wireless_mode23a(padapter);
+ 
+-	/* udpate capability */
++	/* update capability */
+ 	caps = pnetwork->capability;
+ 	update_capinfo23a(padapter, caps);
+ 	if (caps & WLAN_CAPABILITY_IBSS) {	/* adhoc master */
+@@ -4377,7 +4377,7 @@ static void start_clnt_join(struct rtw_adapter* padapter)
+ 	/* update wireless mode */
+ 	update_wireless_mode23a(padapter);
+ 
+-	/* udpate capability */
++	/* update capability */
+ 	caps = pnetwork->capability;
+ 	update_capinfo23a(padapter, caps);
+ 	if (caps & WLAN_CAPABILITY_ESS) {
+@@ -5073,7 +5073,7 @@ void mlmeext_joinbss_event_callback23a(struct rtw_adapter *padapter,
+ 	/* BCN interval */
+ 	rtl8723a_set_beacon_interval(padapter, pmlmeinfo->bcn_interval);
+ 
+-	/* udpate capability */
++	/* update capability */
+ 	update_capinfo23a(padapter, pmlmeinfo->capability);
+ 
+ 	/* WMM, Update EDCA param */
+@@ -5851,7 +5851,7 @@ int sitesurvey_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
+ 		rtl8723a_odm_support_ability_clr(padapter,
+ 						 DYNAMIC_FUNC_DISABLE);
+ 
+-		/* config the initial gain under scaning, need to
++		/* config the initial gain under scanning, need to
+ 		   write the BB registers */
+ 		if (wdev_to_priv(padapter->rtw_wdev)->p2p_enabled == true)
+ 			initialgain = 0x30;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0240-staging-rtl8723au-Fix-typo-in-rtw_mlme.c.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0240-staging-rtl8723au-Fix-typo-in-rtw_mlme.c.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,125 @@
+From: Masanari Iida <standby24x7 at gmail.com>
+Date: Tue, 22 Jul 2014 23:42:24 +0900
+Subject: [240/249] staging: rtl8723au: Fix typo in rtw_mlme.c
+Origin: https://git.kernel.org/linus/7c17d2d9b4cec3d5a78f9fbf5c1081d8a653fa80
+
+This patch fix spelling typo in comments within rtw_mlme.c
+
+Signed-off-by: Masanari Iida <standby24x7 at gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_mlme.c | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
+index 4827280..c475b79 100644
+--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
++++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
+@@ -134,7 +134,7 @@ static void _rtw_free_network23a(struct mlme_priv *pmlmepriv,
+ /*
+  return the wlan_network with the matching addr
+ 
+- Shall be calle under atomic context... to avoid possible racing condition...
++ Shall be called under atomic context... to avoid possible racing condition...
+ */
+ struct wlan_network *
+ rtw_find_network23a(struct rtw_queue *scanned_queue, u8 *addr)
+@@ -395,7 +395,7 @@ void update_network23a(struct wlan_bssid_ex *dst, struct wlan_bssid_ex *src,
+ 				    (u32)dst->PhyInfo.SignalQuality * 4) / 5;
+ 			rssi_final = src->Rssi+dst->Rssi * 4 / 5;
+ 		} else {
+-			/* bss info not receving from the right channel, use
++			/* bss info not receiving from the right channel, use
+ 			   the original RX signal infos */
+ 			ss_final = dst->PhyInfo.SignalStrength;
+ 			sq_final = dst->PhyInfo.SignalQuality;
+@@ -490,7 +490,7 @@ static void rtw_update_scanned_network(struct rtw_adapter *adapter,
+ 		pnetwork->aid = 0;
+ 		pnetwork->join_res = 0;
+ 
+-		/* bss info not receving from the right channel */
++		/* bss info not receiving from the right channel */
+ 		if (pnetwork->network.PhyInfo.SignalQuality == 101)
+ 			pnetwork->network.PhyInfo.SignalQuality = 0;
+ 	} else {
+@@ -956,7 +956,7 @@ rtw_joinbss_update_stainfo(struct rtw_adapter *padapter,
+ 		/*	Commented by Albert 2012/07/21 */
+ 		/*	When doing the WPS, the wps_ie_len won't equal to 0 */
+ 		/*	And the Wi-Fi driver shouldn't allow the data packet
+-			to be tramsmitted. */
++			to be transmitted. */
+ 		if (padapter->securitypriv.wps_ie_len != 0) {
+ 			psta->ieee8021x_blocked = true;
+ 			padapter->securitypriv.wps_ie_len = 0;
+@@ -964,7 +964,7 @@ rtw_joinbss_update_stainfo(struct rtw_adapter *padapter,
+ 
+ 		/* for A-MPDU Rx reordering buffer control for bmc_sta &
+ 		 * sta_info */
+-		/* if A-MPDU Rx is enabled, reseting
++		/* if A-MPDU Rx is enabled, resetting
+ 		   rx_ordering_ctrl wstart_b(indicate_seq) to default
+ 		   value = 0xffff */
+ 		/* todo: check if AP can send A-MPDU packets */
+@@ -1073,7 +1073,7 @@ rtw_joinbss_update_network23a(struct rtw_adapter *padapter,
+ 
+ /*
+  * Notes:
+- * the fucntion could be > passive_level (the same context as Rx tasklet)
++ * the function could be > passive_level (the same context as Rx tasklet)
+  * pnetwork : returns from rtw23a_joinbss_event_cb
+  * ptarget_wlan: found from scanned_queue
+  * if join_res > 0, for (fw_state==WIFI_STATION_STATE),
+@@ -1419,7 +1419,7 @@ void rtw_stadel_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
+ }
+ 
+ /*
+-* rtw23a_join_to_handler - Timeout/faliure handler for CMD JoinBss
++* rtw23a_join_to_handler - Timeout/failure handler for CMD JoinBss
+ * @adapter: pointer to _adapter structure
+ */
+ void rtw23a_join_to_handler (unsigned long data)
+@@ -1470,7 +1470,7 @@ void rtw23a_join_to_handler (unsigned long data)
+ }
+ 
+ /*
+-* rtw_scan_timeout_handler23a - Timeout/Faliure handler for CMD SiteSurvey
++* rtw_scan_timeout_handler23a - Timeout/Failure handler for CMD SiteSurvey
+ * @data: pointer to _adapter structure
+ */
+ void rtw_scan_timeout_handler23a(unsigned long data)
+@@ -2102,7 +2102,7 @@ void rtw_update_registrypriv_dev_network23a(struct rtw_adapter* adapter)
+ 	/* pdev_network->IELength = cpu_to_le32(sz); */
+ }
+ 
+-/* the fucntion is at passive_level */
++/* the function is at passive_level */
+ void rtw_joinbss_reset23a(struct rtw_adapter *padapter)
+ {
+ 	u8 threshold;
+@@ -2131,7 +2131,7 @@ void rtw_joinbss_reset23a(struct rtw_adapter *padapter)
+ 	rtl8723a_set_rxdma_agg_pg_th(padapter, threshold);
+ }
+ 
+-/* the fucntion is >= passive_level */
++/* the function is >= passive_level */
+ bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
+ 			      u8 *out_ie, uint in_len, uint *pout_len)
+ {
+@@ -2203,7 +2203,7 @@ bool rtw_restructure_ht_ie23a(struct rtw_adapter *padapter, u8 *in_ie,
+ 	return phtpriv->ht_option;
+ }
+ 
+-/* the fucntion is > passive_level (in critical_section) */
++/* the function is > passive_level (in critical_section) */
+ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ {
+ 	u8 max_ampdu_sz;
+@@ -2271,7 +2271,7 @@ void rtw_update_ht_cap23a(struct rtw_adapter *padapter, u8 *pie, uint ie_len)
+ 				pmlmeinfo->ht_cap.mcs.rx_mask[i] &=
+ 					MCS_rate_2R23A[i];
+ 		}
+-		/* switch to the 40M Hz mode accoring to the AP */
++		/* switch to the 40M Hz mode according to the AP */
+ 		pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40;
+ 		switch (pmlmeinfo->HT_info.ht_param &
+ 			IEEE80211_HT_PARAM_CHA_SEC_OFFSET) {

Added: dists/sid/linux/debian/patches/features/all/r8723au/0241-staging-rtl8723au-Fix-typo-in-rtw_xmit.c.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0241-staging-rtl8723au-Fix-typo-in-rtw_xmit.c.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,71 @@
+From: Masanari Iida <standby24x7 at gmail.com>
+Date: Tue, 22 Jul 2014 23:42:37 +0900
+Subject: [241/249] staging: rtl8723au: Fix typo in rtw_xmit.c
+Origin: https://git.kernel.org/linus/c582db4cb82e69f92ca5111b5043129438d5fae9
+
+This patch fix spelling typo in comments within rtw_xmit.c
+
+Signed-off-by: Masanari Iida <standby24x7 at gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_xmit.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_xmit.c b/drivers/staging/rtl8723au/core/rtw_xmit.c
+index b917526..d83af87 100644
+--- a/drivers/staging/rtl8723au/core/rtw_xmit.c
++++ b/drivers/staging/rtl8723au/core/rtw_xmit.c
+@@ -1197,7 +1197,7 @@ int rtw_xmitframe_coalesce23a(struct rtw_adapter *padapter, struct sk_buff *skb,
+ 			mpdu_len -= pattrib->icv_len;
+ 
+ 		if (bmcst)
+-			/*  don't do fragment to broadcat/multicast packets */
++			/*  don't do fragment to broadcast/multicast packets */
+ 			mem_sz = min_t(s32, data_len, pattrib->pktlen);
+ 		else
+ 			mem_sz = min_t(s32, data_len, mpdu_len);
+@@ -2011,7 +2011,7 @@ int xmitframe_enqueue_for_sleeping_sta23a(struct rtw_adapter *padapter, struct x
+ 
+ 			/* DBG_8723A("enqueue, sq_len =%d, tim =%x\n", psta->sleepq_len, pstapriv->tim_bitmap); */
+ 
+-			/* tx bc/mc packets after upate bcn */
++			/* tx bc/mc packets after update bcn */
+ 			update_beacon23a(padapter, WLAN_EID_TIM, NULL, false);
+ 
+ 			/* spin_unlock_bh(&psta->sleep_q.lock); */
+@@ -2068,7 +2068,7 @@ int xmitframe_enqueue_for_sleeping_sta23a(struct rtw_adapter *padapter, struct x
+ 				pstapriv->tim_bitmap |= CHKBIT(psta->aid);
+ 
+ 				if (psta->sleepq_len == 1) {
+-					/* upate BCN for TIM IE */
++					/* update BCN for TIM IE */
+ 					update_beacon23a(padapter, WLAN_EID_TIM,
+ 							 NULL, false);
+ 				}
+@@ -2227,7 +2227,7 @@ void wakeup_sta_to_xmit23a(struct rtw_adapter *padapter, struct sta_info *psta)
+ 	if (psta->sleepq_len == 0) {
+ 		pstapriv->tim_bitmap &= ~CHKBIT(psta->aid);
+ 
+-		/* upate BCN for TIM IE */
++		/* update BCN for TIM IE */
+ 		update_mask = BIT(0);
+ 
+ 		if (psta->state&WIFI_SLEEP_STATE)
+@@ -2274,7 +2274,7 @@ void wakeup_sta_to_xmit23a(struct rtw_adapter *padapter, struct sta_info *psta)
+ 			pstapriv->tim_bitmap &= ~BIT(0);
+ 			pstapriv->sta_dz_bitmap &= ~BIT(0);
+ 
+-			/* upate BCN for TIM IE */
++			/* update BCN for TIM IE */
+ 			/* update_BCNTIM(padapter); */
+ 			update_mask |= BIT(1);
+ 		}
+@@ -2348,7 +2348,7 @@ void xmit_delivery_enabled_frames23a(struct rtw_adapter *padapter,
+ 		    (wmmps_ac)) {
+ 			pstapriv->tim_bitmap &= ~CHKBIT(psta->aid);
+ 
+-			/* upate BCN for TIM IE */
++			/* update BCN for TIM IE */
+ 			update_beacon23a(padapter, WLAN_EID_TIM, NULL, false);
+ 		}
+ 	}

Added: dists/sid/linux/debian/patches/features/all/r8723au/0242-staging-rtl8723au-Fix-typo-in-rtw_ap.c.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0242-staging-rtl8723au-Fix-typo-in-rtw_ap.c.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,98 @@
+From: Masanari Iida <standby24x7 at gmail.com>
+Date: Tue, 22 Jul 2014 23:42:45 +0900
+Subject: [242/249] staging: rtl8723au: Fix typo in rtw_ap.c
+Origin: https://git.kernel.org/linus/96b0a5baa99b225ff7a3af5a60584cb96f8cec85
+
+This patch fix spelling typo in comments within rtw_ap.c
+
+Signed-off-by: Masanari Iida <standby24x7 at gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_ap.c | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
+index 14c8d4e..4d2880a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ap.c
++++ b/drivers/staging/rtl8723au/core/rtw_ap.c
+@@ -93,7 +93,7 @@ static void update_BCNTIM(struct rtw_adapter *padapter)
+ 	} else {
+ 		tim_ielen = 0;
+ 
+-		/* calulate head_len */
++		/* calculate head_len */
+ 		offset = 0;
+ 
+ 		/* get ssid_ie len */
+@@ -135,7 +135,7 @@ static void update_BCNTIM(struct rtw_adapter *padapter)
+ 	*dst_ie++= tim_ielen;
+ 
+ 	*dst_ie++= 0;/* DTIM count */
+-	*dst_ie++= 1;/* DTIM peroid */
++	*dst_ie++= 1;/* DTIM period */
+ 
+ 	if (pstapriv->tim_bitmap & BIT(0))/* for bc/mc frames */
+ 		*dst_ie++ = BIT(0);/* bitmap ctrl */
+@@ -243,7 +243,7 @@ void	expire_timeout_chk23a(struct rtw_adapter *padapter)
+ 
+ 			if (psta->state & WIFI_SLEEP_STATE) {
+ 				if (!(psta->state & WIFI_STA_ALIVE_CHK_STATE)) {
+-					/* to check if alive by another methods if staion is at ps mode. */
++					/* to check if alive by another methods if station is at ps mode. */
+ 					psta->expire_to = pstapriv->expire_to;
+ 					psta->state |= WIFI_STA_ALIVE_CHK_STATE;
+ 
+@@ -764,7 +764,7 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
+ 	/* update cur_wireless_mode */
+ 	update_wireless_mode23a(padapter);
+ 
+-	/* udpate capability after cur_wireless_mode updated */
++	/* update capability after cur_wireless_mode updated */
+ 	update_capinfo23a(padapter, pnetwork->capability);
+ 
+ 	/* let pnetwork_mlmeext == pnetwork_mlme. */
+@@ -844,7 +844,7 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
+ 		pbss_network->Ssid.ssid_len = ie_len;
+ 	}
+ 
+-	/* chnnel */
++	/* channel */
+ 	channel = 0;
+ 	p = rtw_get_ie23a(ie, WLAN_EID_DS_PARAMS, &ie_len,
+ 			  pbss_network->IELength);
+@@ -1305,7 +1305,7 @@ void update_beacon23a(struct rtw_adapter *padapter, u8 ie_id, u8 *oui, u8 tx)
+ 
+ /*
+ op_mode
+-Set to 0 (HT pure) under the followign conditions
++Set to 0 (HT pure) under the following conditions
+ 	- all STAs in the BSS are 20/40 MHz HT in 20/40 MHz BSS or
+ 	- all STAs in the BSS are 20 MHz HT in 20 MHz BSS
+ Set to 1 (HT non-member protection) if there may be non-HT STAs
+@@ -1387,7 +1387,7 @@ static int rtw_ht_operation_update(struct rtw_adapter *padapter)
+ 
+ void associated_clients_update23a(struct rtw_adapter *padapter, u8 updated)
+ {
+-	/* update associcated stations cap. */
++	/* update associated stations cap. */
+ 	if (updated == true)
+ 	{
+ 		struct list_head *phead, *plist, *ptmp;
+@@ -1572,7 +1572,7 @@ void bss_cap_update_on_sta_join23a(struct rtw_adapter *padapter, struct sta_info
+ 		update_beacon23a(padapter, WLAN_EID_HT_OPERATION, NULL, true);
+ 	}
+ 
+-	/* update associcated stations cap. */
++	/* update associated stations cap. */
+ 	associated_clients_update23a(padapter,  beacon_updated);
+ 
+ 	DBG_8723A("%s, updated =%d\n", __func__, beacon_updated);
+@@ -1641,7 +1641,7 @@ u8 bss_cap_update_on_sta_leave23a(struct rtw_adapter *padapter, struct sta_info
+ 		update_beacon23a(padapter, WLAN_EID_HT_OPERATION, NULL, true);
+ 	}
+ 
+-	/* update associcated stations cap. */
++	/* update associated stations cap. */
+ 
+ 	DBG_8723A("%s, updated =%d\n", __func__, beacon_updated);
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0243-staging-rtl8723au-Fix-typo-in-rtl8723au-core.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0243-staging-rtl8723au-Fix-typo-in-rtl8723au-core.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,137 @@
+From: Masanari Iida <standby24x7 at gmail.com>
+Date: Tue, 22 Jul 2014 23:42:53 +0900
+Subject: [243/249] staging: rtl8723au: Fix typo in rtl8723au/core
+Origin: https://git.kernel.org/linus/808bcb4e78f7cd79feb89d53d54ea569cbba7386
+
+This patch fix spelling typo in comments within
+rtl8723au/core.
+
+Signed-off-by: Masanari Iida <standby24x7 at gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_cmd.c       | 4 ++--
+ drivers/staging/rtl8723au/core/rtw_efuse.c     | 6 +++---
+ drivers/staging/rtl8723au/core/rtw_ieee80211.c | 2 +-
+ drivers/staging/rtl8723au/core/rtw_pwrctrl.c   | 2 +-
+ drivers/staging/rtl8723au/core/rtw_recv.c      | 8 ++++----
+ 5 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_cmd.c b/drivers/staging/rtl8723au/core/rtw_cmd.c
+index df1ffb3..25d65b27 100644
+--- a/drivers/staging/rtl8723au/core/rtw_cmd.c
++++ b/drivers/staging/rtl8723au/core/rtw_cmd.c
+@@ -322,7 +322,7 @@ post_process:
+ 				  pcmd_callback, pcmd->cmdcode));
+ 			rtw_free_cmd_obj23a(pcmd);
+ 		} else {
+-			/* need conider that free cmd_obj in
++			/* need consider that free cmd_obj in
+ 			   rtw_cmd_callback */
+ 			pcmd_callback(pcmd->padapter, pcmd);
+ 		}
+@@ -736,7 +736,7 @@ int rtw_setstakey_cmd23a(struct rtw_adapter *padapter, u8 *psta, u8 unicast_key)
+ 		       &psecuritypriv->dot118021XGrpKey[idx].skey, 16);
+         }
+ 
+-	/* jeff: set this becasue at least sw key is ready */
++	/* jeff: set this because at least sw key is ready */
+ 	padapter->securitypriv.busetkipkey = 1;
+ 
+ 	res = rtw_enqueue_cmd23a(pcmdpriv, ph2c);
+diff --git a/drivers/staging/rtl8723au/core/rtw_efuse.c b/drivers/staging/rtl8723au/core/rtw_efuse.c
+index cc063cb..345bff8 100644
+--- a/drivers/staging/rtl8723au/core/rtw_efuse.c
++++ b/drivers/staging/rtl8723au/core/rtw_efuse.c
+@@ -59,7 +59,7 @@ static void Efuse_PowerSwitch(struct rtw_adapter *padapter,
+ 		rtl8723au_write8(padapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON);
+ 
+ 		/*  1.2V Power: From VDDON with Power
+-		    Cut(0x0000h[15]), defualt valid */
++		    Cut(0x0000h[15]), default valid */
+ 		tmpV16 = rtl8723au_read16(padapter, REG_SYS_ISO_CTRL);
+ 		if (!(tmpV16 & PWC_EV12V)) {
+ 			tmpV16 |= PWC_EV12V;
+@@ -144,7 +144,7 @@ Efuse_CalculateWordCnts23a(u8 word_en)
+ /*  */
+ /*	Description: */
+ /*		Execute E-Fuse read byte operation. */
+-/*		Refered from SD1 Richard. */
++/*		Referred from SD1 Richard. */
+ /*  */
+ /*	Assumption: */
+ /*		1. Boot from E-Fuse and successfully auto-load. */
+@@ -521,7 +521,7 @@ static int efuse_write8(struct rtw_adapter *padapter, u16 address, u8 *value)
+ }
+ 
+ /*
+- * read/wirte raw efuse data
++ * read/write raw efuse data
+  */
+ int rtw_efuse_access23a(struct rtw_adapter *padapter, u8 bWrite, u16 start_addr,
+ 			u16 cnts, u8 *data)
+diff --git a/drivers/staging/rtl8723au/core/rtw_ieee80211.c b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+index 78a7b27..23e6662 100644
+--- a/drivers/staging/rtl8723au/core/rtw_ieee80211.c
++++ b/drivers/staging/rtl8723au/core/rtw_ieee80211.c
+@@ -250,7 +250,7 @@ u8 *rtw_get_ie23a_ex(u8 *in_ie, uint in_len, u8 eid, u8 *oui, u8 oui_len,
+  * rtw_ies_remove_ie23a - Find matching IEs and remove
+  * @ies: Address of IEs to search
+  * @ies_len: Pointer of length of ies, will update to new length
+- * @offset: The offset to start scarch
++ * @offset: The offset to start search
+  * @eid: Element ID to match
+  * @oui: OUI to match
+  * @oui_len: OUI length
+diff --git a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
+index ad06335..7fbbdaf 100644
+--- a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
++++ b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
+@@ -498,7 +498,7 @@ inline void rtw_set_ips_deny23a(struct rtw_adapter *padapter, u32 ms)
+ /*
+ * rtw_pwr_wakeup - Wake the NIC up from: 1)IPS. 2)USB autosuspend
+ * @adapter: pointer to _adapter structure
+-* @ips_deffer_ms: the ms wiil prevent from falling into IPS after wakeup
++* @ips_deffer_ms: the ms will prevent from falling into IPS after wakeup
+ * Return _SUCCESS or _FAIL
+ */
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_recv.c b/drivers/staging/rtl8723au/core/rtw_recv.c
+index 690970e..a9f8183 100644
+--- a/drivers/staging/rtl8723au/core/rtw_recv.c
++++ b/drivers/staging/rtl8723au/core/rtw_recv.c
+@@ -1185,7 +1185,7 @@ static int validate_recv_ctrl_frame(struct rtw_adapter *padapter,
+ 
+ 					/* DBG_8723A("after handling ps-poll, tim =%x\n", pstapriv->tim_bitmap); */
+ 
+-					/* upate BCN for TIM IE */
++					/* update BCN for TIM IE */
+ 					/* update_BCNTIM(padapter); */
+ 					update_beacon23a(padapter, WLAN_EID_TIM,
+ 							 NULL, false);
+@@ -1217,7 +1217,7 @@ static int validate_recv_ctrl_frame(struct rtw_adapter *padapter,
+ 
+ 					pstapriv->tim_bitmap &= ~CHKBIT(psta->aid);
+ 
+-					/* upate BCN for TIM IE */
++					/* update BCN for TIM IE */
+ 					/* update_BCNTIM(padapter); */
+ 					update_beacon23a(padapter, WLAN_EID_TIM,
+ 							 NULL, false);
+@@ -2363,7 +2363,7 @@ void rtw_signal_stat_timer_hdl23a(unsigned long data)
+ 				recvpriv->signal_strength_data.avg_val;
+ 			num_signal_strength =
+ 				recvpriv->signal_strength_data.total_num;
+-			/*  after avg_vals are accquired, we can re-stat */
++			/*  after avg_vals are acquired, we can re-stat */
+ 			/* the signal values */
+ 			recvpriv->signal_strength_data.update_req = 1;
+ 		}
+@@ -2372,7 +2372,7 @@ void rtw_signal_stat_timer_hdl23a(unsigned long data)
+ 			/*  update_req is clear, means we got rx */
+ 			avg_signal_qual = recvpriv->signal_qual_data.avg_val;
+ 			num_signal_qual = recvpriv->signal_qual_data.total_num;
+-			/*  after avg_vals are accquired, we can re-stat */
++			/*  after avg_vals are acquired, we can re-stat */
+ 			/*the signal values */
+ 			recvpriv->signal_qual_data.update_req = 1;
+ 		}

Added: dists/sid/linux/debian/patches/features/all/r8723au/0244-staging-rtl8723au-RSSI_test-is-never-set.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0244-staging-rtl8723au-RSSI_test-is-never-set.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,42 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 31 Jul 2014 10:36:41 +0200
+Subject: [244/249] staging: rtl8723au: RSSI_test is never set
+Origin: https://git.kernel.org/linus/1a8dcde8d3ecf68924df3a5f6e38379b2b0a5415
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/odm_HWConfig.c | 7 ++-----
+ drivers/staging/rtl8723au/include/odm.h      | 1 -
+ 2 files changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/odm_HWConfig.c b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+index 409fde4..29d844d 100644
+--- a/drivers/staging/rtl8723au/hal/odm_HWConfig.c
++++ b/drivers/staging/rtl8723au/hal/odm_HWConfig.c
+@@ -399,11 +399,8 @@ static void ODM_PhyStatusQuery23a_92CSeries(struct dm_odm_t *pDM_Odm,
+ {
+ 	odm_RxPhyStatus92CSeries_Parsing(pDM_Odm, pPhyInfo,
+ 					 pPhyStatus, pPktinfo);
+-	if (pDM_Odm->RSSI_test) {
+-		/*  Select the packets to do RSSI checking for antenna switching. */
+-	} else {
+-		odm_Process_RSSIForDM(pDM_Odm, pPhyInfo, pPktinfo);
+-	}
++
++	odm_Process_RSSIForDM(pDM_Odm, pPhyInfo, pPktinfo);
+ }
+ 
+ void ODM_PhyStatusQuery23a(struct dm_odm_t *pDM_Odm, struct phy_info *pPhyInfo,
+diff --git a/drivers/staging/rtl8723au/include/odm.h b/drivers/staging/rtl8723au/include/odm.h
+index 41dba62..68ff7bb 100644
+--- a/drivers/staging/rtl8723au/include/odm.h
++++ b/drivers/staging/rtl8723au/include/odm.h
+@@ -736,7 +736,6 @@ struct dm_odm_t {
+ 	struct false_alarm_stats	FalseAlmCnt;
+ 	struct false_alarm_stats	FlaseAlmCntBuddyAdapter;
+ 	struct sw_ant_sw		DM_SWAT_Table;
+-	bool		RSSI_test;
+ 
+ 	struct edca_turbo		DM_EDCA_Table;
+ 	u32		WMMEDCA_BE;

Added: dists/sid/linux/debian/patches/features/all/r8723au/0245-staging-rtl8723au-Remove-two-never-set-variables.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0245-staging-rtl8723au-Remove-two-never-set-variables.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,107 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 31 Jul 2014 10:36:42 +0200
+Subject: [245/249] staging: rtl8723au: Remove two never set variables
+Origin: https://git.kernel.org/linus/a48dd468efbb75a47447f82c849b1d43255a6792
+
+struct registry_priv.usbss_enable and
+struct pwrctrl_priv.bHWPwrPindetect are never set.
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_cmd.c        | 13 -------------
+ drivers/staging/rtl8723au/core/rtw_pwrctrl.c    | 22 ----------------------
+ drivers/staging/rtl8723au/include/drv_types.h   |  1 -
+ drivers/staging/rtl8723au/include/rtw_pwrctrl.h |  1 -
+ 4 files changed, 37 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_cmd.c b/drivers/staging/rtl8723au/core/rtw_cmd.c
+index 25d65b27..7241a5a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_cmd.c
++++ b/drivers/staging/rtl8723au/core/rtw_cmd.c
+@@ -203,22 +203,9 @@ void rtw_free_evt_priv23a(struct evt_priv *pevtpriv)
+ 
+ static int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj)
+ {
+-	struct drvextra_cmd_parm *pdrvextra_cmd_parm;
+ 	/* set to true to allow enqueuing cmd when hw_init_completed is false */
+ 	u8 bAllow = false;
+ 
+-	/* To decide allow or not */
+-	if (pcmdpriv->padapter->pwrctrlpriv.bHWPwrPindetect &&
+-	    !pcmdpriv->padapter->registrypriv.usbss_enable) {
+-		if (cmd_obj->cmdcode == GEN_CMD_CODE(_Set_Drv_Extra)) {
+-			pdrvextra_cmd_parm =
+-				(struct drvextra_cmd_parm *)cmd_obj->parmbuf;
+-			if (pdrvextra_cmd_parm->ec_id ==
+-			    POWER_SAVING_CTRL_WK_CID)
+-				bAllow = true;
+-		}
+-	}
+-
+ 	if (cmd_obj->cmdcode == GEN_CMD_CODE(_SetChannelPlan))
+ 		bAllow = true;
+ 
+diff --git a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
+index 7fbbdaf..d5fa26a 100644
+--- a/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
++++ b/drivers/staging/rtl8723au/core/rtw_pwrctrl.c
+@@ -150,34 +150,12 @@ void rtw_ps_processor23a(struct rtw_adapter*padapter)
+ {
+ 	struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;
+ 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
+-	enum rt_rf_power_state rfpwrstate;
+ 
+ 	pwrpriv->ps_processing = true;
+ 
+ 	if (pwrpriv->bips_processing == true)
+ 		goto exit;
+ 
+-	if (padapter->pwrctrlpriv.bHWPwrPindetect) {
+-		rfpwrstate = RfOnOffDetect23a(padapter);
+-		DBG_8723A("@@@@- #2  %s ==> rfstate:%s\n", __func__,
+-			  (rfpwrstate == rf_on)?"rf_on":"rf_off");
+-
+-		if (rfpwrstate!= pwrpriv->rf_pwrstate) {
+-			if (rfpwrstate == rf_off) {
+-				pwrpriv->change_rfpwrstate = rf_off;
+-				padapter->bCardDisableWOHSM = true;
+-				rtw_hw_suspend23a(padapter);
+-			} else {
+-				pwrpriv->change_rfpwrstate = rf_on;
+-				rtw_hw_resume23a(padapter);
+-			}
+-			DBG_8723A("current rf_pwrstate(%s)\n",
+-				  (pwrpriv->rf_pwrstate == rf_off) ?
+-				  "rf_off":"rf_on");
+-		}
+-		pwrpriv->pwr_state_check_cnts ++;
+-	}
+-
+ 	if (pwrpriv->ips_mode_req == IPS_NONE)
+ 		goto exit;
+ 
+diff --git a/drivers/staging/rtl8723au/include/drv_types.h b/drivers/staging/rtl8723au/include/drv_types.h
+index df55e5b..9870f87 100644
+--- a/drivers/staging/rtl8723au/include/drv_types.h
++++ b/drivers/staging/rtl8723au/include/drv_types.h
+@@ -111,7 +111,6 @@ struct registry_priv {
+ 	u8	antdiv_cfg;
+ 	u8	antdiv_type;
+ 
+-	u8	usbss_enable;/* 0:disable,1:enable */
+ 	u8	hwpdn_mode;/* 0:disable,1:enable,2:decide by EFUSE config */
+ 	u8	hwpwrp_detect;/* 0:disable,1:enable */
+ 
+diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+index 1fa712f..be465c2 100644
+--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+@@ -199,7 +199,6 @@ struct pwrctrl_priv {
+ 	enum rt_rf_power_state	change_rfpwrstate;
+ 
+ 	u8	bHWPowerdown;/* if support hw power down */
+-	u8	bHWPwrPindetect;
+ 	u8	bkeepfwalive;
+ 	unsigned long PS_BBRegBackup[PSBBREG_TOTALCNT];
+ };

Added: dists/sid/linux/debian/patches/features/all/r8723au/0246-staging-rtl8723au-Remove-never-set-struct-pwrctrl_pr.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0246-staging-rtl8723au-Remove-never-set-struct-pwrctrl_pr.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,58 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 31 Jul 2014 10:36:43 +0200
+Subject: [246/249] staging: rtl8723au: Remove never set struct
+ pwrctrl_priv.bHWPowerdown
+Origin: https://git.kernel.org/linus/06736c291492f90f779fe6127431036b73b0a7b4
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/hal/usb_halinit.c     | 21 ++++++++-------------
+ drivers/staging/rtl8723au/include/rtw_pwrctrl.h |  1 -
+ 2 files changed, 8 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/hal/usb_halinit.c b/drivers/staging/rtl8723au/hal/usb_halinit.c
+index 681810e..b49bf33 100644
+--- a/drivers/staging/rtl8723au/hal/usb_halinit.c
++++ b/drivers/staging/rtl8723au/hal/usb_halinit.c
+@@ -517,20 +517,15 @@ enum rt_rf_power_state RfOnOffDetect23a(struct rtw_adapter *pAdapter)
+ 	u8 val8;
+ 	enum rt_rf_power_state rfpowerstate = rf_off;
+ 
+-	if (pAdapter->pwrctrlpriv.bHWPowerdown) {
+-		val8 = rtl8723au_read8(pAdapter, REG_HSISR);
+-		DBG_8723A("pwrdown, 0x5c(BIT7) =%02x\n", val8);
+-		rfpowerstate = (val8 & BIT(7)) ? rf_off : rf_on;
+-	} else { /*  rf on/off */
+-		rtl8723au_write8(pAdapter, REG_MAC_PINMUX_CFG,
+-				 rtl8723au_read8(pAdapter, REG_MAC_PINMUX_CFG) &
+-				 ~BIT(3));
+-		val8 = rtl8723au_read8(pAdapter, REG_GPIO_IO_SEL);
+-		DBG_8723A("GPIO_IN =%02x\n", val8);
+-		rfpowerstate = (val8 & BIT(3)) ? rf_on : rf_off;
+-	}
++	rtl8723au_write8(pAdapter, REG_MAC_PINMUX_CFG,
++			 rtl8723au_read8(pAdapter,
++					 REG_MAC_PINMUX_CFG) & ~BIT(3));
++	val8 = rtl8723au_read8(pAdapter, REG_GPIO_IO_SEL);
++	DBG_8723A("GPIO_IN =%02x\n", val8);
++	rfpowerstate = (val8 & BIT(3)) ? rf_on : rf_off;
++
+ 	return rfpowerstate;
+-}	/*  HalDetectPwrDownMode */
++}
+ 
+ void _ps_open_RF23a(struct rtw_adapter *padapter);
+ 
+diff --git a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+index be465c2..599fed9 100644
+--- a/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
++++ b/drivers/staging/rtl8723au/include/rtw_pwrctrl.h
+@@ -198,7 +198,6 @@ struct pwrctrl_priv {
+ 	enum rt_rf_power_state	rf_pwrstate;/* cur power state */
+ 	enum rt_rf_power_state	change_rfpwrstate;
+ 
+-	u8	bHWPowerdown;/* if support hw power down */
+ 	u8	bkeepfwalive;
+ 	unsigned long PS_BBRegBackup[PSBBREG_TOTALCNT];
+ };

Added: dists/sid/linux/debian/patches/features/all/r8723au/0247-staging-rtl8723au-Do-not-duplicate-kernel-provided-U.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0247-staging-rtl8723au-Do-not-duplicate-kernel-provided-U.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,97 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 31 Jul 2014 10:36:44 +0200
+Subject: [247/249] staging: rtl8723au: Do not duplicate kernel provided USB
+ macros
+Origin: https://git.kernel.org/linus/c8875b2f1fc830f07cd08b8b5bce99471bfcffd9
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/usb_intf.c | 45 +++++++----------------------
+ 1 file changed, 10 insertions(+), 35 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+index 06c885f..c5ff1b8 100644
+--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c
++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+@@ -59,44 +59,19 @@ static struct usb_driver rtl8723a_usb_drv = {
+ 
+ static struct usb_driver *usb_drv = &rtl8723a_usb_drv;
+ 
+-static inline int RT_usb_endpoint_dir_in(const struct usb_endpoint_descriptor *epd)
+-{
+-	return (epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN;
+-}
+-
+-static inline int RT_usb_endpoint_dir_out(const struct usb_endpoint_descriptor *epd)
+-{
+-	return (epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT;
+-}
+-
+-static inline int RT_usb_endpoint_xfer_int(const struct usb_endpoint_descriptor *epd)
+-{
+-	return (epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT;
+-}
+-
+-static inline int RT_usb_endpoint_xfer_bulk(const struct usb_endpoint_descriptor *epd)
+-{
+-	return (epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK;
+-}
+-
+ static inline int RT_usb_endpoint_is_bulk_in(const struct usb_endpoint_descriptor *epd)
+ {
+-	return RT_usb_endpoint_xfer_bulk(epd) && RT_usb_endpoint_dir_in(epd);
++	return usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_in(epd);
+ }
+ 
+ static inline int RT_usb_endpoint_is_bulk_out(const struct usb_endpoint_descriptor *epd)
+ {
+-	return RT_usb_endpoint_xfer_bulk(epd) && RT_usb_endpoint_dir_out(epd);
++	return usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_out(epd);
+ }
+ 
+ static inline int RT_usb_endpoint_is_int_in(const struct usb_endpoint_descriptor *epd)
+ {
+-	return RT_usb_endpoint_xfer_int(epd) && RT_usb_endpoint_dir_in(epd);
+-}
+-
+-static inline int RT_usb_endpoint_num(const struct usb_endpoint_descriptor *epd)
+-{
+-	return epd->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
++	return usb_endpoint_xfer_int(epd) && usb_endpoint_dir_in(epd);
+ }
+ 
+ static int rtw_init_intf_priv(struct dvobj_priv *dvobj)
+@@ -173,25 +148,25 @@ static struct dvobj_priv *usb_dvobj_init(struct usb_interface *usb_intf)
+ 
+ 			if (RT_usb_endpoint_is_bulk_in(pendp_desc)) {
+ 				DBG_8723A("RT_usb_endpoint_is_bulk_in = %x\n",
+-					  RT_usb_endpoint_num(pendp_desc));
++					  usb_endpoint_num(pendp_desc));
+ 				pdvobjpriv->RtInPipe[pdvobjpriv->RtNumInPipes] =
+-					RT_usb_endpoint_num(pendp_desc);
++					usb_endpoint_num(pendp_desc);
+ 				pdvobjpriv->RtNumInPipes++;
+ 			} else if (RT_usb_endpoint_is_int_in(pendp_desc)) {
+ 				DBG_8723A("RT_usb_endpoint_is_int_in = %x, Interval = %x\n",
+-					  RT_usb_endpoint_num(pendp_desc),
++					  usb_endpoint_num(pendp_desc),
+ 					  pendp_desc->bInterval);
+ 				pdvobjpriv->RtInPipe[pdvobjpriv->RtNumInPipes] =
+-					RT_usb_endpoint_num(pendp_desc);
++					usb_endpoint_num(pendp_desc);
+ 				pdvobjpriv->RtNumInPipes++;
+ 			} else if (RT_usb_endpoint_is_bulk_out(pendp_desc)) {
+ 				DBG_8723A("RT_usb_endpoint_is_bulk_out = %x\n",
+-					  RT_usb_endpoint_num(pendp_desc));
++					  usb_endpoint_num(pendp_desc));
+ 				pdvobjpriv->RtOutPipe[pdvobjpriv->RtNumOutPipes] =
+-					RT_usb_endpoint_num(pendp_desc);
++					usb_endpoint_num(pendp_desc);
+ 				pdvobjpriv->RtNumOutPipes++;
+ 			}
+-			pdvobjpriv->ep_num[i] = RT_usb_endpoint_num(pendp_desc);
++			pdvobjpriv->ep_num[i] = usb_endpoint_num(pendp_desc);
+ 		}
+ 	}
+ 	DBG_8723A("nr_endpoint =%d, in_num =%d, out_num =%d\n\n",

Added: dists/sid/linux/debian/patches/features/all/r8723au/0248-staging-rtl8723au-usb_dvobj_init-Remove-unused-varia.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0248-staging-rtl8723au-usb_dvobj_init-Remove-unused-varia.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,33 @@
+From: Jes Sorensen <Jes.Sorensen at redhat.com>
+Date: Thu, 31 Jul 2014 10:36:45 +0200
+Subject: [248/249] staging: rtl8723au: usb_dvobj_init(): Remove unused
+ variable 'pdev_desc'
+Origin: https://git.kernel.org/linus/bd2dec915e0aa1280d477fd4d08e28f90df321e0
+
+Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/os_dep/usb_intf.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+index c5ff1b8..865743e 100644
+--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c
++++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c
+@@ -91,7 +91,6 @@ static int rtw_deinit_intf_priv(struct dvobj_priv *dvobj)
+ static struct dvobj_priv *usb_dvobj_init(struct usb_interface *usb_intf)
+ {
+ 	struct dvobj_priv *pdvobjpriv;
+-	struct usb_device_descriptor *pdev_desc;
+ 	struct usb_host_config	 *phost_conf;
+ 	struct usb_config_descriptor *pconf_desc;
+ 	struct usb_host_interface *phost_iface;
+@@ -119,8 +118,6 @@ static struct dvobj_priv *usb_dvobj_init(struct usb_interface *usb_intf)
+ 	pdvobjpriv->RtNumInPipes = 0;
+ 	pdvobjpriv->RtNumOutPipes = 0;
+ 
+-	pdev_desc = &pusbd->descriptor;
+-
+ 	phost_conf = pusbd->actconfig;
+ 	pconf_desc = &phost_conf->desc;
+ 

Added: dists/sid/linux/debian/patches/features/all/r8723au/0249-staging-rtl8723au-Fix-static-symbol-sparse-warning.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/features/all/r8723au/0249-staging-rtl8723au-Fix-static-symbol-sparse-warning.patch	Sun Oct 26 00:59:13 2014	(r21973)
@@ -0,0 +1,58 @@
+From: Miguel Oliveira <cmroliv at gmail.com>
+Date: Fri, 1 Aug 2014 17:54:39 +0100
+Subject: [249/249] staging: rtl8723au: Fix static symbol sparse warning
+Origin: https://git.kernel.org/linus/1a4493c55594842fa75a91ba95c73056a29f25e6
+
+Fix sparse warning:
+drivers/staging/rtl8723au/core/rtw_efuse.c:579:5: warning: symbol 'efuse_GetCurrentSize23a' was not declared. Should it be static?
+by removing efuse_GetCurrentSize23a since its never used
+
+Signed-off-by: Miguel Oliveira <cmroliv at gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/staging/rtl8723au/core/rtw_efuse.c | 25 -------------------------
+ 1 file changed, 25 deletions(-)
+
+diff --git a/drivers/staging/rtl8723au/core/rtw_efuse.c b/drivers/staging/rtl8723au/core/rtw_efuse.c
+index 345bff8..fe092c5 100644
+--- a/drivers/staging/rtl8723au/core/rtw_efuse.c
++++ b/drivers/staging/rtl8723au/core/rtw_efuse.c
+@@ -100,22 +100,6 @@ static void Efuse_PowerSwitch(struct rtw_adapter *padapter,
+ 	}
+ }
+ 
+-/*-----------------------------------------------------------------------------
+- * Function:	efuse_GetCurrentSize23a
+- *
+- * Overview:	Get current efuse size!!!
+- *
+- * Input:       NONE
+- *
+- * Output:      NONE
+- *
+- * Return:      NONE
+- *
+- * Revised History:
+- * When			Who		Remark
+- * 11/16/2008	MHC		Create Version 0.
+- *
+- *---------------------------------------------------------------------------*/
+ u16
+ Efuse_GetCurrentSize23a(struct rtw_adapter *pAdapter, u8 efuseType)
+ {
+@@ -576,15 +560,6 @@ u16 efuse_GetMaxSize23a(struct rtw_adapter *padapter)
+ 	return max_size;
+ }
+ /*  */
+-int efuse_GetCurrentSize23a(struct rtw_adapter *padapter, u16 *size)
+-{
+-	Efuse_PowerSwitch(padapter, false, true);
+-	*size = Efuse_GetCurrentSize23a(padapter, EFUSE_WIFI);
+-	Efuse_PowerSwitch(padapter, false, false);
+-
+-	return _SUCCESS;
+-}
+-/*  */
+ int rtw_efuse_map_read23a(struct rtw_adapter *padapter,
+ 			  u16 addr, u16 cnts, u8 *data)
+ {

Modified: dists/sid/linux/debian/patches/series
==============================================================================
--- dists/sid/linux/debian/patches/series	Sat Oct 25 23:26:41 2014	(r21972)
+++ dists/sid/linux/debian/patches/series	Sun Oct 26 00:59:13 2014	(r21973)
@@ -135,6 +135,255 @@
 debian/revert-staging-sm7xxfb-remove-driver.patch
 features/all/sfc-Adding-PCI-ID-for-Solarflare-7000-series-40G-net.patch
 features/all/sfc-Add-40G-link-capability-decoding.patch
+
+# Update r8723au to 3.17
+features/all/r8723au/0001-staging-rtl8723au-rtw_get_wps_ie23a-Remove-unused-de.patch
+features/all/r8723au/0002-staging-rtl8723au-rtw_mlme_ext.c-Convert-rtw_get_wps.patch
+features/all/r8723au/0003-staging-rtl8723au-rtw_mlme.c-Convert-rtw_get_wps_ie2.patch
+features/all/r8723au/0004-staging-rtl8723au-ioctl_cfg80211.c-Convert-rtw_get_w.patch
+features/all/r8723au/0005-staging-rtl8723au-rtw_ap.c-Convert-from-rtw_get_wps_.patch
+features/all/r8723au/0006-staging-rtl8723au-Remove-obsolete-rtw_get_wps_ie23a.patch
+features/all/r8723au/0009-staging-rtl8723au-rtw_mlme_ext.c-Fix-up-some-of-the-.patch
+features/all/r8723au/0010-staging-rtl8723au-rtw_mlme.c-Remove-some-tab-and-par.patch
+features/all/r8723au/0011-staging-rtl8723au-Use-struct-ieee80211_mcs_info-to-d.patch
+features/all/r8723au/0012-staging-rtl8723au-Use-struct-ieee80211_ht_cap-and-as.patch
+features/all/r8723au/0013-staging-rtl8723au-Use-correct-struct-for-WLAN_EID_HT.patch
+features/all/r8723au/0014-staging-rtl8723au-Eliminate-struct-HT_info_element.patch
+features/all/r8723au/0015-staging-rtl8723au-Don-t-carry-ht_cap_info-and-ht_par.patch
+features/all/r8723au/0016-staging-rtl8723au-rtw_check_bcn_info23a-Use-capabili.patch
+features/all/r8723au/0017-staging-rtl8723au-Remmove-buddy-adapter-linking.patch
+features/all/r8723au/0018-staging-rtl8723au-Rewrite-update_beacon23a_info-tto-.patch
+features/all/r8723au/0019-staging-rtl8723au-collect_bss_info23a-Collect-beacon.patch
+features/all/r8723au/0020-staging-rtl8723au-collect_bss_info23a-ieee80211_mgmt.patch
+features/all/r8723au/0021-staging-rtl8723au-rtw_update_ht_cap23a-Use-correct-m.patch
+features/all/r8723au/0022-staging-rtl8723au-rtw_get_bcn_info23a-Use-cfg80211_-.patch
+features/all/r8723au/0023-staging-rtl8723au-rtw_wlan_util.c-Use-cfg80211_-to-d.patch
+features/all/r8723au/0024-staging-rtl8723au-Remove-obsolete-rtw_get_sec_ie23a.patch
+features/all/r8723au/0025-staging-rtl8723au-Declare-rtw_get_wpa-2-_cipher_suit.patch
+features/all/r8723au/0026-staging-rtl8723au-Make-WMM_param_handler23a-and-HT_c.patch
+features/all/r8723au/0027-staging-rtl8723au-OnAssocRsp23a-Use-cfg80211_-to-par.patch
+features/all/r8723au/0028-staging-rtl8723au-Remove-WMM_-defines.patch
+features/all/r8723au/0029-staging-rtl8723au-Make-struct-ht_priv.ht_option-a-bo.patch
+features/all/r8723au/0030-staging-rtl8723au-Be-consistent-in-how-htpriv.ht_opt.patch
+features/all/r8723au/0031-staging-rtl8723au-Make-struct-htpriv.ampdu_enable-a-.patch
+features/all/r8723au/0032-staging-rtl8723au-issue_auth-Convert-to-using-struct.patch
+features/all/r8723au/0033-staging-rtl8723au-issue_assocrsp-Use-struct-ieee8021.patch
+features/all/r8723au/0034-staging-rtl8723au-_issue_deauth-Use-struct-ieee80211.patch
+features/all/r8723au/0035-staging-rtl8723au-issue_action_spct_ch_switch23a-Use.patch
+features/all/r8723au/0036-staging-rtl8723au-issue_action_BSSCoexistPacket-Use-.patch
+features/all/r8723au/0037-staging-rtl8723au-Do-not-xmit-BSS-Coexistence-manage.patch
+features/all/r8723au/0038-staging-rtl8723au-Let-cfg80211-handle-public-action-.patch
+features/all/r8723au/0039-staging-rtl8723au-ioctl_cfg80211.c-Use-struct-ieee80.patch
+features/all/r8723au/0040-staging-rtl8723au-issue_action_BA23a-Use-struct-ieee.patch
+features/all/r8723au/0041-staging-rtl8723au-Remove-obsolete-rtw_set_fixed_ie23.patch
+features/all/r8723au/0042-staging-rtl8723au-Remove-duplicate-defines-of-IEEE80.patch
+features/all/r8723au/0043-staging-rtl8723au-Remove-unused-defines-WEP_KEY_LEN-.patch
+features/all/r8723au/0044-staging-rtl8723au-Remove-some-unused-80211-header-pa.patch
+features/all/r8723au/0045-staging-rtl8723au-rtw_check_bcn_info23a-Use-ether_ad.patch
+features/all/r8723au/0046-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-make-a.patch
+features/all/r8723au/0047-staging-rtl8723au-rtw_check_bcn_info23a-Don-t-search.patch
+features/all/r8723au/0048-staging-rtl8723au-Declare-rtw_update_scanned_network.patch
+features/all/r8723au/0049-staging-rtl8723au-rtw_survey_event_cb23a-Use-the-cor.patch
+features/all/r8723au/0050-staging-rtl8723au-Do-not-embed-struct-wlan_bssid_ex-.patch
+features/all/r8723au/0051-staging-rtl8723au-Allocate-struct-wlan_bssid_ex-in-c.patch
+features/all/r8723au/0052-staging-rtl8723au-collect_bss_info-Don-t-memset-what.patch
+features/all/r8723au/0053-staging-rtl8723au-free_scanqueue-Use-_rtw_free_netwo.patch
+features/all/r8723au/0054-staging-rtl8723au-rtw_stadel_event_callback23a-Remov.patch
+features/all/r8723au/0055-staging-rtl8723au-OnAuth23a-Use-ether_addr_copy.patch
+features/all/r8723au/0056-staging-rtl8723au-Get-rid-of-IW_ESSID_MAX_SIZE.patch
+features/all/r8723au/0057-staging-rtl8723au-Make-rtw_is_same_ibss23a-return-bo.patch
+features/all/r8723au/0058-staging-rtl8723au-cfg80211_rtw_connect-Check-correct.patch
+features/all/r8723au/0059-staging-rtl8723au-Fold-rtw_set_802_11_authentication.patch
+features/all/r8723au/0060-staging-rtl8723au-Move-rtw_set_802_11_ssid23a-to-ioc.patch
+features/all/r8723au/0061-staging-rtl8723au-cfg80211_rtw_connect-Clean-up-vari.patch
+features/all/r8723au/0062-staging-rtl8723au-cfg80211_rtw_connect-Remove-obfusc.patch
+features/all/r8723au/0063-staging-rtl8723au-cfg80211_rtw_connect-Simplify-ssid.patch
+features/all/r8723au/0064-staging-rtl8723au-Pass-a-struct-wlan_network-to-rtw_.patch
+features/all/r8723au/0065-staging-rtl8723au-rtw_set_ssid-This-is-never-called-.patch
+features/all/r8723au/0066-staging-rtl8723au-rtw_cfg80211_add_wep-Use-WLAN_KEY_.patch
+features/all/r8723au/0067-staging-rtl8723au-rtw_do_join23a-Use-correct-error-r.patch
+features/all/r8723au/0068-staging-rtl8723au-Minor-debug-message-fixup.patch
+features/all/r8723au/0069-staging-rtl8723au-Don-t-prepend-debug-console-messag.patch
+features/all/r8723au/0070-staging-rtl8723au-Introduce-rtw_select_candidate_fro.patch
+features/all/r8723au/0071-staging-rtl8723au-Introduce-rtw_do_join_network.patch
+features/all/r8723au/0072-staging-rtl8723au-rtw_do_join23a-Use-__func__-to-get.patch
+features/all/r8723au/0073-staging-rtl8723au-rtw_surveydone_event_callback23a-R.patch
+features/all/r8723au/0074-staging-rtl8723au-Consolidate-duplicate-adhoc-joinin.patch
+features/all/r8723au/0075-staging-rtl8723au-Remove-no-op-rtw_get_encrypt_decry.patch
+features/all/r8723au/0076-staging-rtl8723au-to_join-will-no-be-true-if-_FW_LIN.patch
+features/all/r8723au/0077-staging-rtl8723au-rtw_surveydone_event_callback23a-W.patch
+features/all/r8723au/0078-staging-rtl8723au-rtw_select_and_join_from_scanned_q.patch
+features/all/r8723au/0079-staging-rtl8723au-rtw_set_ssid-Use-rtw_do_join_netwo.patch
+features/all/r8723au/0080-staging-rtl8723au-rtw_do_join23a-Don-t-start-scannin.patch
+features/all/r8723au/0081-staging-rtl8723au-Move-rtw_do_join23a-to-rtw_mlme.c-.patch
+features/all/r8723au/0082-staging-rtl8723au-rtw_get_cur_max_rate23a-Remove-dup.patch
+features/all/r8723au/0083-staging-rtl8723au-rtw_get_cur_max_rate23a-We-are-in-.patch
+features/all/r8723au/0084-staging-rtl8723au-Move-rtw_get_cur_max_rate23a-to-io.patch
+features/all/r8723au/0085-staging-rtl8723au-rtw_set_802_11_bssid23a_list_scan-.patch
+features/all/r8723au/0086-staging-rtl8723au-Don-t-run-regular-scans-in-the-dri.patch
+features/all/r8723au/0087-staging-rtl8723au-Quiet-unused-variable-warning-when.patch
+features/all/r8723au/0088-staging-rtl8723au-Move-FillH2CCmd-prototype-to-rtl87.patch
+features/all/r8723au/0089-staging-rtl8723au-rtw_cfg80211_set_wpa_ie-Avoid-poin.patch
+features/all/r8723au/0090-staging-rtl8723au-Add-compiler-check-for-Wtype-limit.patch
+features/all/r8723au/0091-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch
+features/all/r8723au/0092-staging-rtl8723au-Remove-redundant-casting-in-rtw_ml.patch
+features/all/r8723au/0093-staging-rtl8723au-rtw_cfg80211_inform_bss-timestamp-.patch
+features/all/r8723au/0094-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-cfg802.patch
+features/all/r8723au/0095-staging-rtl8723au-Save-timestamp-for-network-in-coll.patch
+features/all/r8723au/0096-staging-rtl8723au-rtw_cfg80211_inform_bss-Report-the.patch
+features/all/r8723au/0097-staging-rtl8723au-collect_bss_info-Save-capability-i.patch
+features/all/r8723au/0098-staging-rtl8723au-rtw_cfg80211_inform_bss-Use-the-ca.patch
+features/all/r8723au/0099-staging-rtl8723au-struct-wlan_bssid_ex-Rename-Beacon.patch
+features/all/r8723au/0100-staging-rtl8723au-rtw_add_beacon-Replace-magic-const.patch
+features/all/r8723au/0101-staging-rtl8723au-Update-bss-beacon-info-in-rtw_add_.patch
+features/all/r8723au/0102-staging-rtl8723au-is_same_network23a-Use-the-capabil.patch
+features/all/r8723au/0103-staging-rtl8723au-ConstructBeacon-Use-struct-ieee802.patch
+features/all/r8723au/0104-staging-rtl8723au-issue_beacon23a-Do-not-copy-IEs-in.patch
+features/all/r8723au/0105-staging-rtl8723au-issue_beacon23a-Use-struct-ieee802.patch
+features/all/r8723au/0106-staging-rtl8723au-issue_probersp-Do-not-copy-the-IEs.patch
+features/all/r8723au/0107-staging-rtl8723au-issue_assocrsp-Use-capability-from.patch
+features/all/r8723au/0108-staging-rtl8723au-issue_assocreq-Use-struct-ieee8021.patch
+features/all/r8723au/0109-staging-rtl8723au-rtw_get_bcn_info23a-Use-capability.patch
+features/all/r8723au/0110-staging-rtl8723au-rtw_get_bcn_info23a-Use-__func__-i.patch
+features/all/r8723au/0111-staging-rtl8723au-Remove-last-users-of-rtw_get_capab.patch
+features/all/r8723au/0112-staging-rtl8723au-Eliminate-last-rtw_get_beacon_inte.patch
+features/all/r8723au/0113-staging-rtl8723au-struct-mlme_priv-wps_beacon_ie-is-.patch
+features/all/r8723au/0114-staging-rtl8723au-Remove-unused-mlme_priv-wps_assoc_.patch
+features/all/r8723au/0115-staging-rtl8723au-Remove-unused-struct-mlme_priv-wps.patch
+features/all/r8723au/0116-staging-rtl8723au-Remove-obsolete-mlme_priv-p2p_-ent.patch
+features/all/r8723au/0117-staging-rtl8723au-Remove-unused-struct-mlme_priv-wfd.patch
+features/all/r8723au/0118-staging-rtl8723au-Remove-write-only-struct-security_.patch
+features/all/r8723au/0119-staging-rtl8723au-Remove-hopefully-last-duplicate-de.patch
+features/all/r8723au/0120-staging-rtl8723au-rtw_survey_event_cb23a-Remember-to.patch
+features/all/r8723au/0121-staging-rtl8723au-rtw_joinbss_update_network23a-upda.patch
+features/all/r8723au/0122-staging-rtl8723au-issue_probersp-Don-t-insert-beacon.patch
+features/all/r8723au/0123-staging-rtl8723au-issue_probersp-No-need-to-calculat.patch
+features/all/r8723au/0124-staging-rtl8723au-Remove-unused-size-defines-for-mgm.patch
+features/all/r8723au/0125-staging-rtl8723au-Remove-usage-of-_-RE-ASOCREQ_IE_OF.patch
+features/all/r8723au/0126-staging-rtl8723au-Remove-unused-IE-offset-defines.patch
+features/all/r8723au/0127-staging-rtl8723au-rtw_get_cur_max_rate-Use-_FIXED_IE.patch
+features/all/r8723au/0128-staging-rtl8723au-rtw_add_beacon-Construct-a-full-be.patch
+features/all/r8723au/0129-staging-rtl8723au-rtw_check_beacon_data23a-Capabilit.patch
+features/all/r8723au/0130-staging-rtl8723au-Use-_FIXED_IE_LEN_-instead-of-hard.patch
+features/all/r8723au/0131-staging-rtl8723au-ConstructProbeRsp-Use-struct-ieee8.patch
+features/all/r8723au/0132-staging-rtl8723au-Remove-no-op-CheckFwRsvdPageConten.patch
+features/all/r8723au/0133-staging-rtl8723au-Remove-unused-dump_txrpt_ccx_8723a.patch
+features/all/r8723au/0134-staging-rtl8723au-issue_beacon23a-Fix-another-case-i.patch
+features/all/r8723au/0135-staging-rtl8723au-issue_beacon23a-Determine-ie-buffe.patch
+features/all/r8723au/0136-staging-rtl8723au-rtw_generate_ie23a-update-network-.patch
+features/all/r8723au/0137-staging-rtl8723au-Stop-carrying-half-the-beacon-fram.patch
+features/all/r8723au/0138-staging-rtl8723au-Get-rid-of-obsolete-_FIXED_IE_LENG.patch
+features/all/r8723au/0139-staging-rtl8723au-Remove-unused-define-EID_BSSIntole.patch
+features/all/r8723au/0140-staging-rtl8723au-Remove-unused-define-P80211CAPTURE.patch
+features/all/r8723au/0141-staging-rtl8723au-rtw_get_wps_attr_content23a-Remove.patch
+features/all/r8723au/0142-staging-rtl8723au-Remove-unused-RSN_VERSION_BSD23A.patch
+features/all/r8723au/0143-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch
+features/all/r8723au/0144-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-is-.patch
+features/all/r8723au/0145-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch
+features/all/r8723au/0146-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Sto.patch
+features/all/r8723au/0147-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Use.patch
+features/all/r8723au/0148-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-a.patch
+features/all/r8723au/0149-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch
+features/all/r8723au/0150-staging-rtl8723au-rtw_cfg80211_set_encryption-Use-ke.patch
+features/all/r8723au/0151-staging-rtl8723au-rtw_cfg80211_set_encryption-Obtain.patch
+features/all/r8723au/0152-staging-rtl8723au-rtw_cfg80211_set_encryption-Pass-k.patch
+features/all/r8723au/0153-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-Pas.patch
+features/all/r8723au/0154-staging-rtl8723au-rtw_cfg80211_ap_set_encryption-obt.patch
+features/all/r8723au/0155-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch
+features/all/r8723au/0156-staging-rtl8723au-Stop-setting-ieee_parm-arguments-t.patch
+features/all/r8723au/0157-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-N.patch
+features/all/r8723au/0158-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-A.patch
+features/all/r8723au/0159-staging-rtl8723au-rtw_cfg80211_-ap_-set_encryption-S.patch
+features/all/r8723au/0160-staging-rtl8723au-Remove-obsolete-struct-ieee_parm.patch
+features/all/r8723au/0161-staging-rtl8723au-Validate-keys-in-cfg80211_rtw_add_.patch
+features/all/r8723au/0162-staging-rtl8723au-Eliminate-set_wep_key-and-call-set.patch
+features/all/r8723au/0163-staging-rtl8723au-rtw_restruct_wmm_ie23a-Use-cfg8021.patch
+features/all/r8723au/0164-staging-rtl8723au-rtw_append_pmkid-Adjust-for-IEs-ar.patch
+features/all/r8723au/0165-staging-rtl8723au-Only-validate-vendor-specific-ies-.patch
+features/all/r8723au/0166-staging-rtl8723au-OnAssocReq23a-Use-cfg80211_find_ve.patch
+features/all/r8723au/0167-staging-rtl8723au-fix-sparse-warning.patch
+features/all/r8723au/0168-staging-rtl8723au-usb_ops_linux.c-Add-blank-line-bet.patch
+features/all/r8723au/0169-staging-rtl8723au-rtw_sta_mgt.c-Use-ether_addr_-copy.patch
+features/all/r8723au/0170-staging-rtl8723au-rtw_sta_mgt.c-One-copy-of-the-broa.patch
+features/all/r8723au/0171-staging-rtl8723au-rtw_allow_stainfo23a-Make-hwaddr-a.patch
+features/all/r8723au/0172-staging-rtl8723au-Remove-unused-rtw_sreset_get_wifi_.patch
+features/all/r8723au/0173-staging-rtl8723au-Wifi_Error_Status-isn-t-used-for-a.patch
+features/all/r8723au/0174-staging-rtl8723au-sreset_priv-dbg_trigger_point-is-n.patch
+features/all/r8723au/0175-staging-rtl8723au-Remove-no-op-rtl8723a_sreset_linke.patch
+features/all/r8723au/0176-staging-rtl8723au-Remove-unused-rtw_pwr_wakeup_ex.patch
+features/all/r8723au/0177-staging-rtl8723au-Clean-up-rtw_pm_set_ips23a.patch
+features/all/r8723au/0178-staging-rtl8723au-Fold-power_saving_wk_hdl-into-rtw_.patch
+features/all/r8723au/0179-staging-rtl8723au-Remove-unused-pwrctrl_priv-brfoffb.patch
+features/all/r8723au/0180-staging-rtl8723au-Remove-unused-variables-from-struc.patch
+features/all/r8723au/0181-staging-rtl8723au-pnp_bstop_trx-is-never-set.patch
+features/all/r8723au/0182-staging-rtl8723au-pwrctrl_priv-ps_flag-is-never-set.patch
+features/all/r8723au/0183-staging-rtl8723au-Remove-never-set-struct-rtw_adapte.patch
+features/all/r8723au/0184-staging-rtl8723au-Sanitize-USB-read-write-functions.patch
+features/all/r8723au/0185-staging-rtl8723au-Simplify-_BlockWrite-based-on-sane.patch
+features/all/r8723au/0186-staging-rtl8723au-Remove-unnecessary-null-test-befor.patch
+features/all/r8723au/0187-staging-rtl8723au-Remove-horrendous-code-obfuscation.patch
+features/all/r8723au/0188-staging-rtl8723au-Call-to-ODM_ConfigRFWithHeaderFile.patch
+features/all/r8723au/0189-staging-rtl8723au-Eliminate-wrapper-ODM_ConfigRFWith.patch
+features/all/r8723au/0190-staging-rtl8723au-Remove-zero-value-calculation-adde.patch
+features/all/r8723au/0191-staging-rtl8723au-Remove-pointless-wrappers-for-call.patch
+features/all/r8723au/0192-staging-rtl8723au-Remove-unused-ODM_ReadAndConfig_PH.patch
+features/all/r8723au/0193-staging-rtl8723au-Remove-ugly-wrapper-ODM_ConfigBBWi.patch
+features/all/r8723au/0194-staging-rtl8723au-Remove-unused-ODM_MacStatusQuery23.patch
+features/all/r8723au/0195-staging-rtl8723au-Remove-obfuscating-wrapper-ODM_Con.patch
+features/all/r8723au/0196-staging-rtl8723au-Remove-unncessary-wrapper-PHY_RFCo.patch
+features/all/r8723au/0197-staging-rtl8723au-Eliminate-Set_MSR-wrapper-call.patch
+features/all/r8723au/0198-staging-rtl8723au-Reduce-number-of-duplicate-defines.patch
+features/all/r8723au/0199-staging-rtl8723au-Use-rtl8723au_set_media_status-to-.patch
+features/all/r8723au/0200-staging-rtl8723au-Corrections-in-the-coding-style.patch
+features/all/r8723au/0201-staging-rtl8723au-Remove-write-only-variable-UsbRxHi.patch
+features/all/r8723au/0202-staging-rtl8723au-Remove-no-op-usb_AggSetting.patch
+features/all/r8723au/0203-staging-rtl8723au-Remove-no-op-_InitOperation_mode-f.patch
+features/all/r8723au/0204-staging-rtl8723au-Remove-RegBcnCtrlVal.patch
+features/all/r8723au/0205-staging-rtl8723au-Use-proper-name-REG_CAMCMD-and-rem.patch
+features/all/r8723au/0206-staging-rtl8723au-rtl8723a_InitBeaconParameters-Remo.patch
+features/all/r8723au/0207-staging-rtl8723au-ODM_IC_11N_SERIES-is-always-true-f.patch
+features/all/r8723au/0208-staging-rtl8723au-Remove-unused-odm_RegDefine11AC.h.patch
+features/all/r8723au/0209-staging-rtl8723au-Remove-pointless-IS_STA_VALID-macr.patch
+features/all/r8723au/0210-staging-rtl8723au-Fold-odm_EdcaTurboCheck23aCE23a-in.patch
+features/all/r8723au/0211-staging-rtl8723au-Declare-odm_EdcaTurbo-functions-st.patch
+features/all/r8723au/0212-staging-rtl8723au-bDMInitialGainEnable-is-always-tru.patch
+features/all/r8723au/0213-staging-rtl8723au-Remove-unused-DefaultInitialGain-a.patch
+features/all/r8723au/0214-staging-rtl8723au-Remove-some-redundant-check-for-hw.patch
+features/all/r8723au/0215-staging-rtl8723au-Remove-no-op-rtl8723a_deinit_dm_pr.patch
+features/all/r8723au/0216-staging-rtl8723au-Remove-no-op-function-dm_CheckStat.patch
+features/all/r8723au/0217-staging-rtl8723au-Remove-write-only-struct-dm_priv-D.patch
+features/all/r8723au/0218-staging-rtl8723au-Remove-write-only-variables-struct.patch
+features/all/r8723au/0219-staging-rtl8723au-Remove-ODM_CMNINFO_-RT-X_UNI-and-r.patch
+features/all/r8723au/0220-staging-rtl8723au-Remove-useless-ODM_CMNINFO_-WM_MOD.patch
+features/all/r8723au/0221-staging-rtl8723au-Remove-another-pile-of-useless-ODM.patch
+features/all/r8723au/0222-staging-rtl8723au-Remove-another-pile-of-awful-unuse.patch
+features/all/r8723au/0223-staging-rtl8723au-We-don-t-need-two-APIs-to-set-pHal.patch
+features/all/r8723au/0224-staging-rtl8723au-ODM_DMWatchdog23a-Take-a-struct-ha.patch
+features/all/r8723au/0225-staging-rtl8723au-Eliminate-ugly-ODM_CMNINFO_SEC_CHN.patch
+features/all/r8723au/0226-staging-rtl8723au-Eliminate-ODM_CMNINFO_BW-usage.patch
+features/all/r8723au/0227-staging-rtl8723au-Eliminate-ODM_CMNINFO_CHNL-usage.patch
+features/all/r8723au/0228-staging-rtl8723au-Eliminate-ODM_CMNINFO_SCAN-related.patch
+features/all/r8723au/0229-staging-rtl8723au-Eliminate-ODM_CMNINFO_POWER_SAVING.patch
+features/all/r8723au/0230-staging-rtl8723au-Eliminate-obsolete-odm_CmnInfoHook.patch
+features/all/r8723au/0231-staging-rtl8723au-Remove-obsolete-ODM23a_CmnInfoHook.patch
+features/all/r8723au/0232-staging-rtl8723au-Merge-Init_ODM_ComInfo_8723a-into-.patch
+features/all/r8723au/0233-staging-rtl8723au-odm_CommonInfoSelfInit23a-Use-prop.patch
+features/all/r8723au/0234-staging-rtl8723au-Remove-a-pile-of-fluff-for-calling.patch
+features/all/r8723au/0235-staging-rtl8723au-Fold-rtl8723a_set_nav_upper-into-r.patch
+features/all/r8723au/0236-staging-rtl8723au-Reduce-wrapper-layers-around-hal_-.patch
+features/all/r8723au/0237-staging-rtl8723au-Fold-rtw_resume_process23a-into-rt.patch
+features/all/r8723au/0239-staging-rtl8723au-Fix-typo-in-rtw_mlme_ext.c.patch
+features/all/r8723au/0240-staging-rtl8723au-Fix-typo-in-rtw_mlme.c.patch
+features/all/r8723au/0241-staging-rtl8723au-Fix-typo-in-rtw_xmit.c.patch
+features/all/r8723au/0242-staging-rtl8723au-Fix-typo-in-rtw_ap.c.patch
+features/all/r8723au/0243-staging-rtl8723au-Fix-typo-in-rtl8723au-core.patch
+features/all/r8723au/0244-staging-rtl8723au-RSSI_test-is-never-set.patch
+features/all/r8723au/0245-staging-rtl8723au-Remove-two-never-set-variables.patch
+features/all/r8723au/0246-staging-rtl8723au-Remove-never-set-struct-pwrctrl_pr.patch
+features/all/r8723au/0247-staging-rtl8723au-Do-not-duplicate-kernel-provided-U.patch
+features/all/r8723au/0248-staging-rtl8723au-usb_dvobj_init-Remove-unused-varia.patch
+features/all/r8723au/0249-staging-rtl8723au-Fix-static-symbol-sparse-warning.patch
+
 bugfix/s390/s390-3215-fix-tty-output-containing-tabs.patch
 bugfix/all/fold-swapping-d_name.hash-into-switch_names.patch
 bugfix/all/vfs-Don-t-exchange-short-filenames-unconditionally.patch



More information about the Kernel-svn-changes mailing list