Index: drivers/net/wireless/ath/ath9k/gpio.c =================================================================== Index: drivers/net/wireless/ath/ath10k/mac.c =================================================================== --- drivers/net/wireless/ath/ath10k/mac.c (revision 2910) +++ drivers/net/wireless/ath/ath10k/mac.c (working copy) @@ -539,10 +539,14 @@ case NL80211_CHAN_WIDTH_80: phymode = MODE_11AC_VHT80; break; + case NL80211_CHAN_WIDTH_160: + phymode = MODE_11AC_VHT160; + break; + case NL80211_CHAN_WIDTH_80P80: + phymode = MODE_11AC_VHT80_80; + break; case NL80211_CHAN_WIDTH_5: case NL80211_CHAN_WIDTH_10: - case NL80211_CHAN_WIDTH_80P80: - case NL80211_CHAN_WIDTH_160: phymode = MODE_UNKNOWN; break; } @@ -2499,6 +2503,8 @@ !ath10k_peer_assoc_h_vht_masked(vht_mcs_mask)) { if (sta->bandwidth == IEEE80211_STA_RX_BW_80) phymode = MODE_11AC_VHT80; + else if (sta->bandwidth == IEEE80211_STA_RX_BW_160) + phymode = MODE_11AC_VHT160; else if (sta->bandwidth == IEEE80211_STA_RX_BW_40) phymode = MODE_11AC_VHT40; else if (sta->bandwidth == IEEE80211_STA_RX_BW_20) @@ -4185,6 +4191,10 @@ vht_cap.cap |= val; } + if (ar->vht_cap_info & IEEE80211_VHT_CAP_SHORT_GI_160) { + vht_cap.cap |= IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ; + vht_cap.cap |= IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ; + } mcs_map = 0; for (i = 0; i < 8; i++) { @@ -6798,6 +6808,9 @@ bw = WMI_PEER_CHWIDTH_80MHZ; break; case IEEE80211_STA_RX_BW_160: + bw = WMI_PEER_CHWIDTH_160MHZ; + break; + default: ath10k_warn(ar, "Invalid bandwidth %d in rc update for %pM\n", sta->bandwidth, sta->addr); bw = WMI_PEER_CHWIDTH_20MHZ; Index: drivers/net/wireless/ath/ath10k/htt_rx.c =================================================================== --- drivers/net/wireless/ath/ath10k/htt_rx.c (revision 2910) +++ drivers/net/wireless/ath/ath10k/htt_rx.c (working copy) @@ -707,6 +707,10 @@ /* 80MHZ */ case 2: status->vht_flag |= RX_VHT_FLAG_80MHZ; + break; + case 3: + status->vht_flag |= RX_VHT_FLAG_160MHZ; + break; } status->flag |= RX_FLAG_VHT; @@ -2193,6 +2197,8 @@ case MODE_11AC_VHT20: case MODE_11AC_VHT40: case MODE_11AC_VHT80: + case MODE_11AC_VHT160: + case MODE_11AC_VHT80_80: band = NL80211_BAND_5GHZ; break; case MODE_11G: Index: drivers/net/wireless/ath/ath10k/wmi.h =================================================================== --- drivers/net/wireless/ath/ath10k/wmi.h (revision 2910) +++ drivers/net/wireless/ath/ath10k/wmi.h (working copy) @@ -1723,8 +1723,10 @@ MODE_11AC_VHT20_2G = 11, MODE_11AC_VHT40_2G = 12, MODE_11AC_VHT80_2G = 13, - MODE_UNKNOWN = 14, - MODE_MAX = 14 + MODE_11AC_VHT80_80 = 14, + MODE_11AC_VHT160 = 15, + MODE_UNKNOWN = 16, + MODE_MAX = 16 }; static inline const char *ath10k_wmi_phymode_str(enum wmi_phy_mode mode) @@ -1752,6 +1754,10 @@ return "11ac-vht40"; case MODE_11AC_VHT80: return "11ac-vht80"; + case MODE_11AC_VHT160: + return "11ac-vht160"; + case MODE_11AC_VHT80_80: + return "11ac-vht80+80"; case MODE_11AC_VHT20_2G: return "11ac-vht20-2g"; case MODE_11AC_VHT40_2G: @@ -5748,6 +5754,7 @@ WMI_PEER_CHWIDTH_20MHZ = 0, WMI_PEER_CHWIDTH_40MHZ = 1, WMI_PEER_CHWIDTH_80MHZ = 2, + WMI_PEER_CHWIDTH_160MHZ = 3, }; enum wmi_peer_param { Index: compat/backport-4.5.c =================================================================== \ No newline at end of file Index: backport-include/backport/leds-disabled.h =================================================================== Index: backport-include/linux/leds.h =================================================================== Index: net/wireless/db.txt ===================================================================