mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	mac80211: update to version based on 4.19-rc4
This updates mac80211 to backports based on kernel 4.19-rc4. I plan to integrate all the patches which are in this tar into upstream backports soon. I used the backports generated from this code: https://github.com/hauke/backports/commits/wip2 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
		
							parent
							
								
									61b5b4971e
								
							
						
					
					
						commit
						db90c243a0
					
				@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk
 | 
			
		||||
 | 
			
		||||
PKG_NAME:=mac80211
 | 
			
		||||
 | 
			
		||||
PKG_VERSION:=v4.18.5
 | 
			
		||||
PKG_VERSION:=4.19-rc4-1
 | 
			
		||||
PKG_RELEASE:=1
 | 
			
		||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
 | 
			
		||||
PKG_HASH:=9c13660e98b9397260266f98c9db76bdad2b48462cb376b5862dfbd18369edf2
 | 
			
		||||
PKG_SOURCE_URL:=https://hauke-m.de/files/
 | 
			
		||||
PKG_HASH:=5502add3ecfae4c75177f069450297d3e0d980f190206a7a71f3887c67cefee4
 | 
			
		||||
 | 
			
		||||
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
 | 
			
		||||
PKG_SOURCE:=backports-$(PKG_VERSION).tar.gz
 | 
			
		||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
 | 
			
		||||
PKG_BUILD_PARALLEL:=1
 | 
			
		||||
 | 
			
		||||
@ -856,7 +856,7 @@ endef
 | 
			
		||||
define KernelPackage/hermes-pcmcia
 | 
			
		||||
  $(call KernelPackage/mac80211/Default)
 | 
			
		||||
  TITLE:=Hermes based PCMCIA adaptors
 | 
			
		||||
  DEPENDS:=@PCMCIA_SUPPORT +kmod-hermes @BROKEN
 | 
			
		||||
  DEPENDS:=@PCMCIA_SUPPORT +kmod-hermes
 | 
			
		||||
  FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco_cs.ko
 | 
			
		||||
  AUTOLOAD:=$(call AutoProbe,orinoco_cs)
 | 
			
		||||
endef
 | 
			
		||||
@ -1116,7 +1116,7 @@ endef
 | 
			
		||||
define KernelPackage/mt7601u
 | 
			
		||||
  $(call KernelPackage/mac80211/Default)
 | 
			
		||||
  TITLE:=MT7601U-based USB dongles Wireless Driver
 | 
			
		||||
  DEPENDS+= @BROKEN +kmod-mac80211 +@DRIVER_11N_SUPPORT @USB_SUPPORT +kmod-usb-core +mt7601u-firmware
 | 
			
		||||
  DEPENDS+= +kmod-mac80211 +@DRIVER_11N_SUPPORT @USB_SUPPORT +kmod-usb-core +mt7601u-firmware
 | 
			
		||||
  FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko
 | 
			
		||||
  AUTOLOAD:=$(call AutoProbe,mt7601u)
 | 
			
		||||
endef
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,5 @@
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/Kconfig
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/Kconfig
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/Kconfig
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/Kconfig
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/Kconfig
 | 
			
		||||
@@ -85,6 +85,12 @@ config ATH10K_TRACING
 | 
			
		||||
 	---help---
 | 
			
		||||
 	  Select this to ath10k use tracing infrastructure.
 | 
			
		||||
@ -15,10 +13,8 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/Kconfig
 | 
			
		||||
 config ATH10K_DFS_CERTIFIED
 | 
			
		||||
 	bool "Atheros DFS support for certified platforms"
 | 
			
		||||
 	depends on ATH10K && CFG80211_CERTIFICATION_ONUS
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/Makefile
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/Makefile
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/Makefile
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/Makefile
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/Makefile
 | 
			
		||||
@@ -18,7 +18,7 @@ ath10k_core-y += mac.o \
 | 
			
		||||
 ath10k_core-$(CPTCFG_ATH10K_SPECTRAL) += spectral.o
 | 
			
		||||
 ath10k_core-$(CPTCFG_NL80211_TESTMODE) += testmode.o
 | 
			
		||||
@ -28,10 +24,8 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/Makefile
 | 
			
		||||
 ath10k_core-$(CPTCFG_MAC80211_DEBUGFS) += debugfs_sta.o
 | 
			
		||||
 ath10k_core-$(CONFIG_PM) += wow.o
 | 
			
		||||
 ath10k_core-$(CONFIG_DEV_COREDUMP) += coredump.o
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/thermal.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/thermal.h
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/thermal.h
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/thermal.h
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/thermal.h
 | 
			
		||||
@@ -36,7 +36,7 @@ struct ath10k_thermal {
 | 
			
		||||
 	int temperature;
 | 
			
		||||
 };
 | 
			
		||||
@ -41,11 +35,9 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/thermal.h
 | 
			
		||||
 int ath10k_thermal_register(struct ath10k *ar);
 | 
			
		||||
 void ath10k_thermal_unregister(struct ath10k *ar);
 | 
			
		||||
 void ath10k_thermal_event_temperature(struct ath10k *ar, int temperature);
 | 
			
		||||
Index: backports-v4.18-rc7/local-symbols
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/local-symbols
 | 
			
		||||
+++ backports-v4.18-rc7/local-symbols
 | 
			
		||||
@@ -144,6 +144,7 @@ ATH10K_SNOC=
 | 
			
		||||
--- a/local-symbols
 | 
			
		||||
+++ b/local-symbols
 | 
			
		||||
@@ -140,6 +140,7 @@ ATH10K_SNOC=
 | 
			
		||||
 ATH10K_DEBUG=
 | 
			
		||||
 ATH10K_DEBUGFS=
 | 
			
		||||
 ATH10K_SPECTRAL=
 | 
			
		||||
 | 
			
		||||
@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
@@ -1394,8 +1394,12 @@ static bool ath9k_hw_set_reset(struct at
 | 
			
		||||
@@ -1421,8 +1421,12 @@ static bool ath9k_hw_set_reset(struct at
 | 
			
		||||
 	if (!AR_SREV_9100(ah))
 | 
			
		||||
 		REG_WRITE(ah, AR_RC, 0);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
@@ -1271,39 +1271,56 @@ void ath9k_hw_get_delta_slope_vals(struc
 | 
			
		||||
@@ -1298,39 +1298,56 @@ void ath9k_hw_get_delta_slope_vals(struc
 | 
			
		||||
 	*coef_exponent = coef_exp - 16;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -94,7 +94,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 	return true;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -1356,24 +1373,24 @@ static bool ath9k_hw_set_reset(struct at
 | 
			
		||||
@@ -1383,24 +1400,24 @@ static bool ath9k_hw_set_reset(struct at
 | 
			
		||||
 			rst_flags |= AR_RTC_RC_MAC_COLD;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -1,21 +0,0 @@
 | 
			
		||||
From: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
Date: Mon, 11 Jul 2016 12:07:40 +0200
 | 
			
		||||
Subject: [PATCH] ath9k_hw: set spectral scan enable bit on trigger for
 | 
			
		||||
 AR9003+
 | 
			
		||||
 | 
			
		||||
AR9002 code and QCA AR9003+ code do the same.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
 | 
			
		||||
@@ -1800,6 +1800,8 @@ static void ar9003_hw_spectral_scan_conf
 | 
			
		||||
 
 | 
			
		||||
 static void ar9003_hw_spectral_scan_trigger(struct ath_hw *ah)
 | 
			
		||||
 {
 | 
			
		||||
+	REG_SET_BIT(ah, AR_PHY_SPECTRAL_SCAN,
 | 
			
		||||
+		    AR_PHY_SPECTRAL_SCAN_ENABLE);
 | 
			
		||||
 	/* Activate spectral scan */
 | 
			
		||||
 	REG_SET_BIT(ah, AR_PHY_SPECTRAL_SCAN,
 | 
			
		||||
 		    AR_PHY_SPECTRAL_SCAN_ACTIVE);
 | 
			
		||||
@ -1,27 +0,0 @@
 | 
			
		||||
From: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
Date: Tue, 27 Dec 2016 23:16:23 +0100
 | 
			
		||||
Subject: [PATCH] ath9k: don't run periodic and nf calibation at the same
 | 
			
		||||
 time
 | 
			
		||||
 | 
			
		||||
The checks already prevents periodic cal from being started while noise
 | 
			
		||||
floor calibration runs. It is missing checks for the other way around.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/ar9002_calib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/ar9002_calib.c
 | 
			
		||||
@@ -676,10 +676,10 @@ static int ar9002_hw_calibrate(struct at
 | 
			
		||||
 			return 0;
 | 
			
		||||
 
 | 
			
		||||
 		ah->cal_list_curr = currCal = currCal->calNext;
 | 
			
		||||
-		if (currCal->calState == CAL_WAITING) {
 | 
			
		||||
+		if (currCal->calState == CAL_WAITING)
 | 
			
		||||
 			ath9k_hw_reset_calibration(ah, currCal);
 | 
			
		||||
-			return 0;
 | 
			
		||||
-		}
 | 
			
		||||
+
 | 
			
		||||
+		return 0;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 	/* Do NF cal only at longer intervals */
 | 
			
		||||
@ -8,17 +8,17 @@ This reverts commit 71f5137bf010c6faffab50c0ec15374c59c4a411.
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
@@ -2935,7 +2935,8 @@ void ath9k_hw_apply_txpower(struct ath_h
 | 
			
		||||
@@ -2962,7 +2962,8 @@ void ath9k_hw_apply_txpower(struct ath_h
 | 
			
		||||
 {
 | 
			
		||||
 	struct ath_regulatory *reg = ath9k_hw_regulatory(ah);
 | 
			
		||||
 	struct ieee80211_channel *channel;
 | 
			
		||||
-	int chan_pwr, new_pwr;
 | 
			
		||||
+	int chan_pwr, new_pwr, max_gain;
 | 
			
		||||
+	int ant_gain, ant_reduction = 0;
 | 
			
		||||
 	u16 ctl = NO_CTL;
 | 
			
		||||
 
 | 
			
		||||
 	if (!chan)
 | 
			
		||||
 		return;
 | 
			
		||||
@@ -2943,10 +2944,15 @@ void ath9k_hw_apply_txpower(struct ath_h
 | 
			
		||||
@@ -2974,9 +2975,14 @@ void ath9k_hw_apply_txpower(struct ath_h
 | 
			
		||||
 	channel = chan->chan;
 | 
			
		||||
 	chan_pwr = min_t(int, channel->max_power * 2, MAX_RATE_POWER);
 | 
			
		||||
 	new_pwr = min_t(int, chan_pwr, reg->power_limit);
 | 
			
		||||
@ -28,8 +28,7 @@ This reverts commit 71f5137bf010c6faffab50c0ec15374c59c4a411.
 | 
			
		||||
+	if (ant_gain > max_gain)
 | 
			
		||||
+		ant_reduction = ant_gain - max_gain;
 | 
			
		||||
 
 | 
			
		||||
 	ah->eep_ops->set_txpower(ah, chan,
 | 
			
		||||
 				 ath9k_regd_get_ctl(reg, chan),
 | 
			
		||||
 	ah->eep_ops->set_txpower(ah, chan, ctl,
 | 
			
		||||
-				 get_antenna_gain(ah, chan), new_pwr, test);
 | 
			
		||||
+				 ant_reduction, new_pwr, test);
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
@ -1,50 +0,0 @@
 | 
			
		||||
From: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
Date: Sun, 28 Aug 2016 13:13:01 +0200
 | 
			
		||||
Subject: [PATCH] ath9k: fix moredata bit in PS buffered frame release
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/xmit.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
 | 
			
		||||
@@ -1659,6 +1659,22 @@ void ath_tx_aggr_wakeup(struct ath_softc
 | 
			
		||||
 	}
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
+
 | 
			
		||||
+static void
 | 
			
		||||
+ath9k_set_moredata(struct ath_softc *sc, struct ath_buf *bf, bool val)
 | 
			
		||||
+{
 | 
			
		||||
+	struct ieee80211_hdr *hdr;
 | 
			
		||||
+	u16 mask = cpu_to_le16(IEEE80211_FCTL_MOREDATA);
 | 
			
		||||
+	u16 mask_val = mask * val;
 | 
			
		||||
+
 | 
			
		||||
+	hdr = (struct ieee80211_hdr *) bf->bf_mpdu->data;
 | 
			
		||||
+	if ((hdr->frame_control & mask) != mask_val) {
 | 
			
		||||
+		hdr->frame_control = (hdr->frame_control & ~mask) | mask_val;
 | 
			
		||||
+		dma_sync_single_for_device(sc->dev, bf->bf_buf_addr,
 | 
			
		||||
+			sizeof(*hdr), DMA_TO_DEVICE);
 | 
			
		||||
+	}
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
 void ath9k_release_buffered_frames(struct ieee80211_hw *hw,
 | 
			
		||||
 				   struct ieee80211_sta *sta,
 | 
			
		||||
 				   u16 tids, int nframes,
 | 
			
		||||
@@ -1689,6 +1705,7 @@ void ath9k_release_buffered_frames(struc
 | 
			
		||||
 			if (!bf)
 | 
			
		||||
 				break;
 | 
			
		||||
 
 | 
			
		||||
+			ath9k_set_moredata(sc, bf, true);
 | 
			
		||||
 			list_add_tail(&bf->list, &bf_q);
 | 
			
		||||
 			ath_set_rates(tid->an->vif, tid->an->sta, bf);
 | 
			
		||||
 			if (bf_isampdu(bf)) {
 | 
			
		||||
@@ -1712,6 +1729,9 @@ void ath9k_release_buffered_frames(struc
 | 
			
		||||
 	if (list_empty(&bf_q))
 | 
			
		||||
 		return;
 | 
			
		||||
 
 | 
			
		||||
+	if (!more_data)
 | 
			
		||||
+		ath9k_set_moredata(sc, bf_tail, false);
 | 
			
		||||
+
 | 
			
		||||
 	info = IEEE80211_SKB_CB(bf_tail->bf_mpdu);
 | 
			
		||||
 	info->flags |= IEEE80211_TX_STATUS_EOSP;
 | 
			
		||||
 
 | 
			
		||||
@ -1,22 +0,0 @@
 | 
			
		||||
From: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
Date: Sun, 28 Aug 2016 13:13:42 +0200
 | 
			
		||||
Subject: [PATCH] ath9k: clear potentially stale EOSP status bit in
 | 
			
		||||
 intermediate queues
 | 
			
		||||
 | 
			
		||||
Prevents spurious ieee80211_sta_eosp calls.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/xmit.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
 | 
			
		||||
@@ -969,7 +969,8 @@ ath_tx_get_tid_subframe(struct ath_softc
 | 
			
		||||
 		bf->bf_lastbf = bf;
 | 
			
		||||
 
 | 
			
		||||
 		tx_info = IEEE80211_SKB_CB(skb);
 | 
			
		||||
-		tx_info->flags &= ~IEEE80211_TX_CTL_CLEAR_PS_FILT;
 | 
			
		||||
+		tx_info->flags &= ~(IEEE80211_TX_CTL_CLEAR_PS_FILT |
 | 
			
		||||
+				    IEEE80211_TX_STATUS_EOSP);
 | 
			
		||||
 
 | 
			
		||||
 		/*
 | 
			
		||||
 		 * No aggregation session is running, but there may be frames
 | 
			
		||||
@ -1,19 +0,0 @@
 | 
			
		||||
From: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
Date: Sun, 28 Aug 2016 13:23:27 +0200
 | 
			
		||||
Subject: [PATCH] ath9k: report tx status on EOSP
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/xmit.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
 | 
			
		||||
@@ -86,7 +86,8 @@ static void ath_tx_status(struct ieee802
 | 
			
		||||
 	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
 | 
			
		||||
 	struct ieee80211_sta *sta = info->status.status_driver_data[0];
 | 
			
		||||
 
 | 
			
		||||
-	if (info->flags & IEEE80211_TX_CTL_REQ_TX_STATUS) {
 | 
			
		||||
+	if (info->flags & (IEEE80211_TX_CTL_REQ_TX_STATUS |
 | 
			
		||||
+			   IEEE80211_TX_STATUS_EOSP)) {
 | 
			
		||||
 		ieee80211_tx_status(hw, skb);
 | 
			
		||||
 		return;
 | 
			
		||||
 	}
 | 
			
		||||
@ -1,114 +0,0 @@
 | 
			
		||||
From: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
Date: Tue, 30 Aug 2016 12:44:08 +0200
 | 
			
		||||
Subject: [PATCH] ath9k: fix block-ack window tracking issues
 | 
			
		||||
 | 
			
		||||
Ensure that a buffer gets tracked as part of the block-ack window as
 | 
			
		||||
soon as it's dequeued from the tid for the first time. Ensure that
 | 
			
		||||
double calls to ath_tx_addto_baw (e.g. on retransmission) don't cause
 | 
			
		||||
any issues.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/xmit.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
 | 
			
		||||
@@ -62,7 +62,7 @@ static void ath_tx_rc_status(struct ath_
 | 
			
		||||
 			     struct ath_tx_status *ts, int nframes, int nbad,
 | 
			
		||||
 			     int txok);
 | 
			
		||||
 static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid,
 | 
			
		||||
-			      int seqno);
 | 
			
		||||
+			      struct ath_buf *bf);
 | 
			
		||||
 static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
 | 
			
		||||
 					   struct ath_txq *txq,
 | 
			
		||||
 					   struct ath_atx_tid *tid,
 | 
			
		||||
@@ -296,7 +296,7 @@ static void ath_tx_flush_tid(struct ath_
 | 
			
		||||
 		}
 | 
			
		||||
 
 | 
			
		||||
 		if (fi->baw_tracked) {
 | 
			
		||||
-			ath_tx_update_baw(sc, tid, bf->bf_state.seqno);
 | 
			
		||||
+			ath_tx_update_baw(sc, tid, bf);
 | 
			
		||||
 			sendbar = true;
 | 
			
		||||
 		}
 | 
			
		||||
 
 | 
			
		||||
@@ -312,10 +312,15 @@ static void ath_tx_flush_tid(struct ath_
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid,
 | 
			
		||||
-			      int seqno)
 | 
			
		||||
+			      struct ath_buf *bf)
 | 
			
		||||
 {
 | 
			
		||||
+	struct ath_frame_info *fi = get_frame_info(bf->bf_mpdu);
 | 
			
		||||
+	u16 seqno = bf->bf_state.seqno;
 | 
			
		||||
 	int index, cindex;
 | 
			
		||||
 
 | 
			
		||||
+	if (!fi->baw_tracked)
 | 
			
		||||
+		return;
 | 
			
		||||
+
 | 
			
		||||
 	index  = ATH_BA_INDEX(tid->seq_start, seqno);
 | 
			
		||||
 	cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1);
 | 
			
		||||
 
 | 
			
		||||
@@ -336,6 +341,9 @@ static void ath_tx_addto_baw(struct ath_
 | 
			
		||||
 	u16 seqno = bf->bf_state.seqno;
 | 
			
		||||
 	int index, cindex;
 | 
			
		||||
 
 | 
			
		||||
+	if (fi->baw_tracked)
 | 
			
		||||
+		return;
 | 
			
		||||
+
 | 
			
		||||
 	index  = ATH_BA_INDEX(tid->seq_start, seqno);
 | 
			
		||||
 	cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1);
 | 
			
		||||
 	__set_bit(cindex, tid->tx_buf);
 | 
			
		||||
@@ -612,7 +620,7 @@ static void ath_tx_complete_aggr(struct
 | 
			
		||||
 			 * complete the acked-ones/xretried ones; update
 | 
			
		||||
 			 * block-ack window
 | 
			
		||||
 			 */
 | 
			
		||||
-			ath_tx_update_baw(sc, tid, seqno);
 | 
			
		||||
+			ath_tx_update_baw(sc, tid, bf);
 | 
			
		||||
 
 | 
			
		||||
 			if (rc_update && (acked_cnt == 1 || txfail_cnt == 1)) {
 | 
			
		||||
 				memcpy(tx_info->control.rates, rates, sizeof(rates));
 | 
			
		||||
@@ -642,7 +650,7 @@ static void ath_tx_complete_aggr(struct
 | 
			
		||||
 				 * run out of tx buf.
 | 
			
		||||
 				 */
 | 
			
		||||
 				if (!tbf) {
 | 
			
		||||
-					ath_tx_update_baw(sc, tid, seqno);
 | 
			
		||||
+					ath_tx_update_baw(sc, tid, bf);
 | 
			
		||||
 
 | 
			
		||||
 					ath_tx_complete_buf(sc, bf, txq,
 | 
			
		||||
 							    &bf_head, NULL, ts,
 | 
			
		||||
@@ -1011,11 +1019,14 @@ ath_tx_get_tid_subframe(struct ath_softc
 | 
			
		||||
 
 | 
			
		||||
 			INIT_LIST_HEAD(&bf_head);
 | 
			
		||||
 			list_add(&bf->list, &bf_head);
 | 
			
		||||
-			ath_tx_update_baw(sc, tid, seqno);
 | 
			
		||||
+			ath_tx_update_baw(sc, tid, bf);
 | 
			
		||||
 			ath_tx_complete_buf(sc, bf, txq, &bf_head, NULL, &ts, 0);
 | 
			
		||||
 			continue;
 | 
			
		||||
 		}
 | 
			
		||||
 
 | 
			
		||||
+		if (bf_isampdu(bf))
 | 
			
		||||
+			ath_tx_addto_baw(sc, tid, bf);
 | 
			
		||||
+
 | 
			
		||||
 		return bf;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@@ -1073,8 +1084,6 @@ ath_tx_form_aggr(struct ath_softc *sc, s
 | 
			
		||||
 		bf->bf_next = NULL;
 | 
			
		||||
 
 | 
			
		||||
 		/* link buffers of this frame to the aggregate */
 | 
			
		||||
-		if (!fi->baw_tracked)
 | 
			
		||||
-			ath_tx_addto_baw(sc, tid, bf);
 | 
			
		||||
 		bf->bf_state.ndelim = ndelim;
 | 
			
		||||
 
 | 
			
		||||
 		list_add_tail(&bf->list, bf_q);
 | 
			
		||||
@@ -1710,10 +1719,8 @@ void ath9k_release_buffered_frames(struc
 | 
			
		||||
 			ath9k_set_moredata(sc, bf, true);
 | 
			
		||||
 			list_add_tail(&bf->list, &bf_q);
 | 
			
		||||
 			ath_set_rates(tid->an->vif, tid->an->sta, bf);
 | 
			
		||||
-			if (bf_isampdu(bf)) {
 | 
			
		||||
-				ath_tx_addto_baw(sc, tid, bf);
 | 
			
		||||
+			if (bf_isampdu(bf))
 | 
			
		||||
 				bf->bf_state.bf_type &= ~BUF_AGGR;
 | 
			
		||||
-			}
 | 
			
		||||
 			if (bf_tail)
 | 
			
		||||
 				bf_tail->bf_next = bf;
 | 
			
		||||
 
 | 
			
		||||
@ -1,47 +0,0 @@
 | 
			
		||||
From: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
Date: Wed, 22 Mar 2017 20:37:04 +0100
 | 
			
		||||
Subject: [PATCH] ath9k_hw: fix channel maximum power level test
 | 
			
		||||
 | 
			
		||||
The tx power applied by set_txpower is limited by the CTL (conformance
 | 
			
		||||
test limit) entries in the EEPROM. These can change based on the user
 | 
			
		||||
configured regulatory domain.
 | 
			
		||||
Depending on the EEPROM data this can cause the tx power to become too
 | 
			
		||||
limited, if the original regdomain CTLs impose lowr limits than the CTLs
 | 
			
		||||
of the user configured regdomain.
 | 
			
		||||
 | 
			
		||||
To fix this issue, set the initial channel limits without any CTL
 | 
			
		||||
restrictions and only apply the CTL at run time when setting the channel
 | 
			
		||||
and the real tx power.
 | 
			
		||||
 | 
			
		||||
Cc: stable@vger.kernel.org
 | 
			
		||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
@@ -2937,10 +2937,14 @@ void ath9k_hw_apply_txpower(struct ath_h
 | 
			
		||||
 	struct ieee80211_channel *channel;
 | 
			
		||||
 	int chan_pwr, new_pwr, max_gain;
 | 
			
		||||
 	int ant_gain, ant_reduction = 0;
 | 
			
		||||
+	u16 ctl = NO_CTL;
 | 
			
		||||
 
 | 
			
		||||
 	if (!chan)
 | 
			
		||||
 		return;
 | 
			
		||||
 
 | 
			
		||||
+	if (!test)
 | 
			
		||||
+		ctl = ath9k_regd_get_ctl(reg, chan);
 | 
			
		||||
+
 | 
			
		||||
 	channel = chan->chan;
 | 
			
		||||
 	chan_pwr = min_t(int, channel->max_power * 2, MAX_RATE_POWER);
 | 
			
		||||
 	new_pwr = min_t(int, chan_pwr, reg->power_limit);
 | 
			
		||||
@@ -2950,9 +2954,7 @@ void ath9k_hw_apply_txpower(struct ath_h
 | 
			
		||||
 	if (ant_gain > max_gain)
 | 
			
		||||
 		ant_reduction = ant_gain - max_gain;
 | 
			
		||||
 
 | 
			
		||||
-	ah->eep_ops->set_txpower(ah, chan,
 | 
			
		||||
-				 ath9k_regd_get_ctl(reg, chan),
 | 
			
		||||
-				 ant_reduction, new_pwr, test);
 | 
			
		||||
+	ah->eep_ops->set_txpower(ah, chan, ctl, ant_reduction, new_pwr, test);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit, bool test)
 | 
			
		||||
@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
@@ -2954,6 +2954,10 @@ void ath9k_hw_apply_txpower(struct ath_h
 | 
			
		||||
@@ -2981,6 +2981,10 @@ void ath9k_hw_apply_txpower(struct ath_h
 | 
			
		||||
 	if (ant_gain > max_gain)
 | 
			
		||||
 		ant_reduction = ant_gain - max_gain;
 | 
			
		||||
 
 | 
			
		||||
@ -19,6 +19,6 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
+	if (reg->region == NL80211_DFS_FCC)
 | 
			
		||||
+		ant_reduction = max_t(int, ant_reduction - 6, 0);
 | 
			
		||||
+
 | 
			
		||||
 	ah->eep_ops->set_txpower(ah, chan, ctl, ant_reduction, new_pwr, test);
 | 
			
		||||
 	ah->eep_ops->set_txpower(ah, chan, ctl,
 | 
			
		||||
 				 ant_reduction, new_pwr, test);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -1,41 +0,0 @@
 | 
			
		||||
From: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
Date: Sun, 23 Jul 2017 14:58:22 +0200
 | 
			
		||||
Subject: [PATCH] ath9k: fix more-data flag for buffered multicast
 | 
			
		||||
 packets
 | 
			
		||||
 | 
			
		||||
The flag needs to be cleared for the last packet in the list, not the
 | 
			
		||||
first one. Fixes some issues with multicast packet loss for powersave
 | 
			
		||||
clients connected to an ath9k AP.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/xmit.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
 | 
			
		||||
@@ -2436,7 +2436,6 @@ void ath_tx_cabq(struct ieee80211_hw *hw
 | 
			
		||||
 		.txq = sc->beacon.cabq
 | 
			
		||||
 	};
 | 
			
		||||
 	struct ath_tx_info info = {};
 | 
			
		||||
-	struct ieee80211_hdr *hdr;
 | 
			
		||||
 	struct ath_buf *bf_tail = NULL;
 | 
			
		||||
 	struct ath_buf *bf;
 | 
			
		||||
 	LIST_HEAD(bf_q);
 | 
			
		||||
@@ -2480,15 +2479,10 @@ void ath_tx_cabq(struct ieee80211_hw *hw
 | 
			
		||||
 	if (list_empty(&bf_q))
 | 
			
		||||
 		return;
 | 
			
		||||
 
 | 
			
		||||
-	bf = list_first_entry(&bf_q, struct ath_buf, list);
 | 
			
		||||
-	hdr = (struct ieee80211_hdr *) bf->bf_mpdu->data;
 | 
			
		||||
-
 | 
			
		||||
-	if (hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_MOREDATA)) {
 | 
			
		||||
-		hdr->frame_control &= ~cpu_to_le16(IEEE80211_FCTL_MOREDATA);
 | 
			
		||||
-		dma_sync_single_for_device(sc->dev, bf->bf_buf_addr,
 | 
			
		||||
-			sizeof(*hdr), DMA_TO_DEVICE);
 | 
			
		||||
-	}
 | 
			
		||||
+	bf = list_last_entry(&bf_q, struct ath_buf, list);
 | 
			
		||||
+	ath9k_set_moredata(sc, bf, false);
 | 
			
		||||
 
 | 
			
		||||
+	bf = list_first_entry(&bf_q, struct ath_buf, list);
 | 
			
		||||
 	ath_txq_lock(sc, txctl.txq);
 | 
			
		||||
 	ath_tx_fill_desc(sc, bf, txctl.txq, 0);
 | 
			
		||||
 	ath_tx_txqaddbuf(sc, txctl.txq, &bf_q, false);
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ath/Makefile
 | 
			
		||||
+++ b/drivers/net/wireless/ath/Makefile
 | 
			
		||||
@@ -13,10 +13,10 @@ ath-objs :=	main.o \
 | 
			
		||||
@@ -14,10 +14,10 @@ ath-objs :=	main.o \
 | 
			
		||||
 		regd.o \
 | 
			
		||||
 		hw.o \
 | 
			
		||||
 		key.o \
 | 
			
		||||
@ -14,7 +14,7 @@
 | 
			
		||||
 CFLAGS_trace.o := -I$(src)
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath.h
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath.h
 | 
			
		||||
@@ -318,14 +318,7 @@ void _ath_dbg(struct ath_common *common,
 | 
			
		||||
@@ -316,14 +316,7 @@ void _ath_dbg(struct ath_common *common,
 | 
			
		||||
 #endif /* CPTCFG_ATH_DEBUG */
 | 
			
		||||
 
 | 
			
		||||
 /** Returns string describing opmode, or NULL if unknown mode. */
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
@@ -47,7 +47,7 @@ int ath9k_modparam_nohwcrypt;
 | 
			
		||||
@@ -48,7 +48,7 @@ int ath9k_modparam_nohwcrypt;
 | 
			
		||||
 module_param_named(nohwcrypt, ath9k_modparam_nohwcrypt, int, 0444);
 | 
			
		||||
 MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption");
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -82,7 +82,7 @@
 | 
			
		||||
 	---help---
 | 
			
		||||
--- a/local-symbols
 | 
			
		||||
+++ b/local-symbols
 | 
			
		||||
@@ -87,6 +87,7 @@ ADM8211=
 | 
			
		||||
@@ -84,6 +84,7 @@ ADM8211=
 | 
			
		||||
 ATH_COMMON=
 | 
			
		||||
 WLAN_VENDOR_ATH=
 | 
			
		||||
 ATH_DEBUG=
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/net/wireless/reg.c
 | 
			
		||||
+++ b/net/wireless/reg.c
 | 
			
		||||
@@ -2860,6 +2860,8 @@ void regulatory_hint_country_ie(struct w
 | 
			
		||||
@@ -2980,6 +2980,8 @@ void regulatory_hint_country_ie(struct w
 | 
			
		||||
 	enum environment_cap env = ENVIRON_ANY;
 | 
			
		||||
 	struct regulatory_request *request = NULL, *lr;
 | 
			
		||||
 
 | 
			
		||||
@ -9,7 +9,7 @@
 | 
			
		||||
 	/* IE len must be evenly divisible by 2 */
 | 
			
		||||
 	if (country_ie_len & 0x01)
 | 
			
		||||
 		return;
 | 
			
		||||
@@ -3066,6 +3068,7 @@ static void restore_regulatory_settings(
 | 
			
		||||
@@ -3186,6 +3188,7 @@ static void restore_regulatory_settings(
 | 
			
		||||
 
 | 
			
		||||
 void regulatory_hint_disconnect(void)
 | 
			
		||||
 {
 | 
			
		||||
 | 
			
		||||
@ -8,15 +8,15 @@
 | 
			
		||||
 	FRANCE_RES = 0x31,
 | 
			
		||||
 	FCC3_FCCA = 0x3A,
 | 
			
		||||
 	FCC3_WORLD = 0x3B,
 | 
			
		||||
@@ -167,6 +168,7 @@ static struct reg_dmn_pair_mapping regDo
 | 
			
		||||
@@ -172,6 +173,7 @@ static struct reg_dmn_pair_mapping regDo
 | 
			
		||||
 	{FCC2_WORLD, CTL_FCC, CTL_ETSI},
 | 
			
		||||
 	{FCC2_ETSIC, CTL_FCC, CTL_ETSI},
 | 
			
		||||
 	{FCC3_FCCA, CTL_FCC, CTL_FCC},
 | 
			
		||||
+	{FCC3_FCCA_2, CTL_FCC, CTL_FCC},
 | 
			
		||||
 	{FCC3_WORLD, CTL_FCC, CTL_ETSI},
 | 
			
		||||
 	{FCC3_ETSIC, CTL_FCC, CTL_ETSI},
 | 
			
		||||
 	{FCC4_FCCA, CTL_FCC, CTL_FCC},
 | 
			
		||||
 	{FCC5_FCCA, CTL_FCC, CTL_FCC},
 | 
			
		||||
@@ -463,6 +465,7 @@ static struct country_code_to_enum_rd al
 | 
			
		||||
@@ -483,6 +485,7 @@ static struct country_code_to_enum_rd al
 | 
			
		||||
 	{CTRY_UAE, NULL1_WORLD, "AE"},
 | 
			
		||||
 	{CTRY_UNITED_KINGDOM, ETSI1_WORLD, "GB"},
 | 
			
		||||
 	{CTRY_UNITED_STATES, FCC3_FCCA, "US"},
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
@@ -777,6 +777,7 @@ static const struct ieee80211_iface_limi
 | 
			
		||||
@@ -833,6 +833,7 @@ static const struct ieee80211_iface_limi
 | 
			
		||||
 				 BIT(NL80211_IFTYPE_AP) },
 | 
			
		||||
 	{ .max = 1,	.types = BIT(NL80211_IFTYPE_P2P_CLIENT) |
 | 
			
		||||
 				 BIT(NL80211_IFTYPE_P2P_GO) },
 | 
			
		||||
 | 
			
		||||
@ -9,10 +9,8 @@ Other devices will need to be added to the switch in  write_file_bwmode
 | 
			
		||||
drivers/net/wireless/ath/ath5k/debug.c |   86 ++++++++++++++++++++++++++++++++
 | 
			
		||||
 1 files changed, 86 insertions(+), 0 deletions(-)
 | 
			
		||||
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath5k/debug.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath5k/debug.c
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath5k/debug.c
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath5k/debug.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath5k/debug.c
 | 
			
		||||
@@ -822,6 +822,97 @@ static const struct file_operations fops
 | 
			
		||||
 	.llseek = default_llseek,
 | 
			
		||||
 };
 | 
			
		||||
@ -120,10 +118,8 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath5k/debug.c
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 /* functions used in other places */
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath5k/ath5k.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath5k/ath5k.h
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath5k/ath5k.h
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath5k/ath5k.h
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath5k/ath5k.h
 | 
			
		||||
@@ -1372,6 +1372,7 @@ struct ath5k_hw {
 | 
			
		||||
 	u8			ah_coverage_class;
 | 
			
		||||
 	bool			ah_ack_bitrate_high;
 | 
			
		||||
@ -132,10 +128,8 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath5k/ath5k.h
 | 
			
		||||
 	bool			ah_short_slot;
 | 
			
		||||
 
 | 
			
		||||
 	/* Antenna Control */
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath5k/base.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath5k/base.c
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath5k/base.c
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath5k/base.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath5k/base.c
 | 
			
		||||
@@ -466,6 +466,9 @@ ath5k_chan_set(struct ath5k_hw *ah, stru
 | 
			
		||||
 		return -EINVAL;
 | 
			
		||||
 	}
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,5 @@
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
@@ -1144,25 +1144,25 @@ static int __init ath9k_init(void)
 | 
			
		||||
 {
 | 
			
		||||
 	int error;
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
@@ -390,13 +390,8 @@ static void ath9k_hw_init_config(struct
 | 
			
		||||
@@ -392,13 +392,8 @@ static void ath9k_hw_init_config(struct
 | 
			
		||||
 
 | 
			
		||||
 	ah->config.rx_intr_mitigation = true;
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -64,7 +64,7 @@
 | 
			
		||||
 	debugfs_create_devm_seqfile(sc->dev, "interrupt", sc->debug.debugfs_phy,
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath.h
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath.h
 | 
			
		||||
@@ -151,6 +151,7 @@ struct ath_common {
 | 
			
		||||
@@ -149,6 +149,7 @@ struct ath_common {
 | 
			
		||||
 	int debug_mask;
 | 
			
		||||
 	enum ath_device_state state;
 | 
			
		||||
 	unsigned long op_flags;
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
@@ -647,6 +647,7 @@ int ath9k_hw_init(struct ath_hw *ah)
 | 
			
		||||
@@ -649,6 +649,7 @@ int ath9k_hw_init(struct ath_hw *ah)
 | 
			
		||||
 
 | 
			
		||||
 	/* These are all the AR5008/AR9001/AR9002/AR9003 hardware family of chipsets */
 | 
			
		||||
 	switch (ah->hw_version.devid) {
 | 
			
		||||
@ -20,7 +20,7 @@
 | 
			
		||||
 #define AR9160_DEVID_PCI	0x0027
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/pci.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/pci.c
 | 
			
		||||
@@ -773,6 +773,7 @@ static const struct pci_device_id ath_pc
 | 
			
		||||
@@ -774,6 +774,7 @@ static const struct pci_device_id ath_pc
 | 
			
		||||
 	  .driver_data = ATH9K_PCI_BT_ANT_DIV },
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -181,7 +181,7 @@
 | 
			
		||||
 
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
@@ -1000,7 +1000,7 @@ int ath9k_init_device(u16 devid, struct
 | 
			
		||||
@@ -1056,7 +1056,7 @@ int ath9k_init_device(u16 devid, struct
 | 
			
		||||
 
 | 
			
		||||
 #ifdef CPTCFG_MAC80211_LEDS
 | 
			
		||||
 	/* must be initialized before ieee80211_register_hw */
 | 
			
		||||
 | 
			
		||||
@ -75,7 +75,7 @@
 | 
			
		||||
 struct ath9k_hw_version {
 | 
			
		||||
 	u32 magic;
 | 
			
		||||
 	u16 devid;
 | 
			
		||||
@@ -806,6 +812,8 @@ struct ath_hw {
 | 
			
		||||
@@ -808,6 +814,8 @@ struct ath_hw {
 | 
			
		||||
 	u32 ah_flags;
 | 
			
		||||
 	s16 nf_override;
 | 
			
		||||
 
 | 
			
		||||
@ -84,7 +84,7 @@
 | 
			
		||||
 	bool reset_power_on;
 | 
			
		||||
 	bool htc_reset_init;
 | 
			
		||||
 
 | 
			
		||||
@@ -1068,6 +1076,7 @@ void ath9k_hw_check_nav(struct ath_hw *a
 | 
			
		||||
@@ -1073,6 +1081,7 @@ void ath9k_hw_check_nav(struct ath_hw *a
 | 
			
		||||
 bool ath9k_hw_check_alive(struct ath_hw *ah);
 | 
			
		||||
 
 | 
			
		||||
 bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode);
 | 
			
		||||
@ -94,7 +94,7 @@
 | 
			
		||||
 struct ath_gen_timer *ath_gen_timer_alloc(struct ath_hw *ah,
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
@@ -1842,6 +1842,20 @@ u32 ath9k_hw_get_tsf_offset(struct times
 | 
			
		||||
@@ -1869,6 +1869,20 @@ u32 ath9k_hw_get_tsf_offset(struct times
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL(ath9k_hw_get_tsf_offset);
 | 
			
		||||
 
 | 
			
		||||
@ -115,7 +115,7 @@
 | 
			
		||||
 int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
 | 
			
		||||
 		   struct ath9k_hw_cal_data *caldata, bool fastcc)
 | 
			
		||||
 {
 | 
			
		||||
@@ -2050,6 +2064,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
 | 
			
		||||
@@ -2077,6 +2091,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
 | 
			
		||||
 		ar9003_hw_disable_phy_restart(ah);
 | 
			
		||||
 
 | 
			
		||||
 	ath9k_hw_apply_gpio_override(ah);
 | 
			
		||||
 | 
			
		||||
@ -55,7 +55,7 @@
 | 
			
		||||
 	ops->spectral_scan_config = ar9003_hw_spectral_scan_config;
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
@@ -765,7 +765,8 @@ static void ath9k_init_txpower_limits(st
 | 
			
		||||
@@ -821,7 +821,8 @@ static void ath9k_init_txpower_limits(st
 | 
			
		||||
 	if (ah->caps.hw_caps & ATH9K_HW_CAP_5GHZ)
 | 
			
		||||
 		ath9k_init_band_txpower(sc, NL80211_BAND_5GHZ);
 | 
			
		||||
 
 | 
			
		||||
@ -65,7 +65,7 @@
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 static const struct ieee80211_iface_limit if_limits[] = {
 | 
			
		||||
@@ -960,6 +961,18 @@ static void ath9k_set_hw_capab(struct at
 | 
			
		||||
@@ -1016,6 +1017,18 @@ static void ath9k_set_hw_capab(struct at
 | 
			
		||||
 	wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -84,7 +84,7 @@
 | 
			
		||||
 int ath9k_init_device(u16 devid, struct ath_softc *sc,
 | 
			
		||||
 		    const struct ath_bus_ops *bus_ops)
 | 
			
		||||
 {
 | 
			
		||||
@@ -1005,6 +1018,8 @@ int ath9k_init_device(u16 devid, struct
 | 
			
		||||
@@ -1061,6 +1074,8 @@ int ath9k_init_device(u16 devid, struct
 | 
			
		||||
 		ARRAY_SIZE(ath9k_tpt_blink));
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
@ -110,7 +110,7 @@
 | 
			
		||||
 static inline void ath9k_hw_set_bt_ant_diversity(struct ath_hw *ah, bool enable)
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
 | 
			
		||||
@@ -1322,9 +1322,30 @@ void ar5008_hw_init_rate_txpower(struct
 | 
			
		||||
@@ -1324,9 +1324,30 @@ void ar5008_hw_init_rate_txpower(struct
 | 
			
		||||
 	}
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -141,7 +141,7 @@
 | 
			
		||||
 	static const u32 ar5416_cca_regs[6] = {
 | 
			
		||||
 		AR_PHY_CCA,
 | 
			
		||||
 		AR_PHY_CH1_CCA,
 | 
			
		||||
@@ -1339,6 +1360,8 @@ int ar5008_hw_attach_phy_ops(struct ath_
 | 
			
		||||
@@ -1341,6 +1362,8 @@ int ar5008_hw_attach_phy_ops(struct ath_
 | 
			
		||||
 	if (ret)
 | 
			
		||||
 	    return ret;
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
 | 
			
		||||
@@ -246,6 +246,19 @@ void ath9k_hw_get_channel_centers(struct
 | 
			
		||||
@@ -248,6 +248,19 @@ void ath9k_hw_get_channel_centers(struct
 | 
			
		||||
 		centers->synth_center + (extoff * HT40_CHANNEL_CENTER_SHIFT);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -20,7 +20,7 @@
 | 
			
		||||
 /******************/
 | 
			
		||||
 /* Chip Revisions */
 | 
			
		||||
 /******************/
 | 
			
		||||
@@ -1414,6 +1427,9 @@ static bool ath9k_hw_set_reset(struct at
 | 
			
		||||
@@ -1441,6 +1454,9 @@ static bool ath9k_hw_set_reset(struct at
 | 
			
		||||
 		udelay(50);
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@ -30,7 +30,7 @@
 | 
			
		||||
 	return true;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -1513,6 +1529,9 @@ static bool ath9k_hw_chip_reset(struct a
 | 
			
		||||
@@ -1540,6 +1556,9 @@ static bool ath9k_hw_chip_reset(struct a
 | 
			
		||||
 		ar9003_hw_internal_regulator_apply(ah);
 | 
			
		||||
 	ath9k_hw_init_pll(ah, chan);
 | 
			
		||||
 
 | 
			
		||||
@ -40,7 +40,7 @@
 | 
			
		||||
 	return true;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -1820,8 +1839,14 @@ static int ath9k_hw_do_fastcc(struct ath
 | 
			
		||||
@@ -1847,8 +1866,14 @@ static int ath9k_hw_do_fastcc(struct ath
 | 
			
		||||
 	if (AR_SREV_9271(ah))
 | 
			
		||||
 		ar9002_hw_load_ani_reg(ah, chan);
 | 
			
		||||
 
 | 
			
		||||
@ -55,7 +55,7 @@
 | 
			
		||||
 	return -EINVAL;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -2075,6 +2100,9 @@ int ath9k_hw_reset(struct ath_hw *ah, st
 | 
			
		||||
@@ -2102,6 +2127,9 @@ int ath9k_hw_reset(struct ath_hw *ah, st
 | 
			
		||||
 		ath9k_hw_set_radar_params(ah);
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
 | 
			
		||||
@@ -951,55 +951,6 @@ static bool ar5008_hw_ani_control_new(st
 | 
			
		||||
@@ -953,55 +953,6 @@ static bool ar5008_hw_ani_control_new(st
 | 
			
		||||
 		 * on == 0 means more noise imm
 | 
			
		||||
 		 */
 | 
			
		||||
 		u32 on = param ? 1 : 0;
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
 | 
			
		||||
@@ -571,6 +571,12 @@ static int ath9k_of_init(struct ath_soft
 | 
			
		||||
@@ -627,6 +627,12 @@ static int ath9k_of_init(struct ath_soft
 | 
			
		||||
 
 | 
			
		||||
 	ath_dbg(common, CONFIG, "parsing configuration from OF node\n");
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -365,7 +365,7 @@
 | 
			
		||||
 	 * semi-random values after suspend/resume.
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/Makefile
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/Makefile
 | 
			
		||||
@@ -16,6 +16,7 @@ ath9k-$(CPTCFG_ATH9K_DFS_CERTIFIED) += d
 | 
			
		||||
@@ -17,6 +17,7 @@ ath9k-$(CPTCFG_ATH9K_DFS_CERTIFIED) += d
 | 
			
		||||
 ath9k-$(CPTCFG_ATH9K_TX99) += tx99.o
 | 
			
		||||
 ath9k-$(CPTCFG_ATH9K_WOW) += wow.o
 | 
			
		||||
 ath9k-$(CPTCFG_ATH9K_HWRNG) += rng.o
 | 
			
		||||
@ -386,7 +386,7 @@
 | 
			
		||||
 #endif /* _LINUX_ATH9K_PLATFORM_H */
 | 
			
		||||
--- a/local-symbols
 | 
			
		||||
+++ b/local-symbols
 | 
			
		||||
@@ -114,6 +114,7 @@ ATH9K_WOW=
 | 
			
		||||
@@ -111,6 +111,7 @@ ATH9K_WOW=
 | 
			
		||||
 ATH9K_RFKILL=
 | 
			
		||||
 ATH9K_CHANNEL_CONTEXT=
 | 
			
		||||
 ATH9K_PCOEM=
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,9 @@
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/ahb.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/ahb.c
 | 
			
		||||
@@ -19,7 +19,15 @@
 | 
			
		||||
 #include <linux/nl80211.h>
 | 
			
		||||
@@ -20,7 +20,15 @@
 | 
			
		||||
 #include <linux/platform_device.h>
 | 
			
		||||
 #include <linux/module.h>
 | 
			
		||||
 #include <linux/mod_devicetable.h>
 | 
			
		||||
+#include <linux/of_device.h>
 | 
			
		||||
 #include "ath9k.h"
 | 
			
		||||
+#include <linux/ath9k_platform.h>
 | 
			
		||||
@ -16,7 +16,7 @@
 | 
			
		||||
 
 | 
			
		||||
 static const struct platform_device_id ath9k_platform_id_table[] = {
 | 
			
		||||
 	{
 | 
			
		||||
@@ -68,6 +76,235 @@ static const struct ath_bus_ops ath_ahb_
 | 
			
		||||
@@ -69,6 +77,235 @@ static const struct ath_bus_ops ath_ahb_
 | 
			
		||||
 	.eeprom_read = ath_ahb_eeprom_read,
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
@ -252,7 +252,7 @@
 | 
			
		||||
 static int ath_ahb_probe(struct platform_device *pdev)
 | 
			
		||||
 {
 | 
			
		||||
 	void __iomem *mem;
 | 
			
		||||
@@ -79,6 +316,17 @@ static int ath_ahb_probe(struct platform
 | 
			
		||||
@@ -80,6 +317,17 @@ static int ath_ahb_probe(struct platform
 | 
			
		||||
 	int ret = 0;
 | 
			
		||||
 	struct ath_hw *ah;
 | 
			
		||||
 	char hw_name[64];
 | 
			
		||||
@ -270,7 +270,7 @@
 | 
			
		||||
 
 | 
			
		||||
 	if (!dev_get_platdata(&pdev->dev)) {
 | 
			
		||||
 		dev_err(&pdev->dev, "no platform data specified\n");
 | 
			
		||||
@@ -121,13 +369,16 @@ static int ath_ahb_probe(struct platform
 | 
			
		||||
@@ -122,13 +370,16 @@ static int ath_ahb_probe(struct platform
 | 
			
		||||
 	sc->mem = mem;
 | 
			
		||||
 	sc->irq = irq;
 | 
			
		||||
 
 | 
			
		||||
@ -288,7 +288,7 @@
 | 
			
		||||
 	if (ret) {
 | 
			
		||||
 		dev_err(&pdev->dev, "failed to initialize device\n");
 | 
			
		||||
 		goto err_irq;
 | 
			
		||||
@@ -158,6 +409,9 @@ static int ath_ahb_remove(struct platfor
 | 
			
		||||
@@ -159,6 +410,9 @@ static int ath_ahb_remove(struct platfor
 | 
			
		||||
 		free_irq(sc->irq, sc);
 | 
			
		||||
 		ieee80211_free_hw(sc->hw);
 | 
			
		||||
 	}
 | 
			
		||||
@ -298,7 +298,7 @@
 | 
			
		||||
 
 | 
			
		||||
 	return 0;
 | 
			
		||||
 }
 | 
			
		||||
@@ -167,6 +421,9 @@ static struct platform_driver ath_ahb_dr
 | 
			
		||||
@@ -168,6 +422,9 @@ static struct platform_driver ath_ahb_dr
 | 
			
		||||
 	.remove     = ath_ahb_remove,
 | 
			
		||||
 	.driver		= {
 | 
			
		||||
 		.name	= "ath9k",
 | 
			
		||||
 | 
			
		||||
@ -14,7 +14,7 @@ Signed-off-by: Sven Eckelmann <sven@open-mesh.com>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
@@ -2507,6 +2507,16 @@ int ath10k_core_register(struct ath10k *
 | 
			
		||||
@@ -2719,6 +2719,16 @@ int ath10k_core_register(struct ath10k *
 | 
			
		||||
 	ar->chip_id = chip_id;
 | 
			
		||||
 	queue_work(ar->workqueue, &ar->register_work);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
@@ -8122,6 +8122,21 @@ static int ath10k_mac_init_rd(struct ath
 | 
			
		||||
@@ -8282,6 +8282,21 @@ static int ath10k_mac_init_rd(struct ath
 | 
			
		||||
 	return 0;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -22,7 +22,7 @@
 | 
			
		||||
 int ath10k_mac_register(struct ath10k *ar)
 | 
			
		||||
 {
 | 
			
		||||
 	static const u32 cipher_suites[] = {
 | 
			
		||||
@@ -8397,6 +8412,12 @@ int ath10k_mac_register(struct ath10k *a
 | 
			
		||||
@@ -8571,6 +8586,12 @@ int ath10k_mac_register(struct ath10k *a
 | 
			
		||||
 
 | 
			
		||||
 	wiphy_ext_feature_set(ar->hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
@@ -783,7 +783,7 @@ static int ath10k_core_get_board_id_from
 | 
			
		||||
@@ -943,7 +943,7 @@ static int ath10k_core_get_board_id_from
 | 
			
		||||
 	if (ret) {
 | 
			
		||||
 		ath10k_err(ar, "could not execute otp for board id check: %d\n",
 | 
			
		||||
 			   ret);
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,5 @@
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/htt.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/htt.h
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/htt.h
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/htt.h
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/htt.h
 | 
			
		||||
@@ -238,7 +238,7 @@ enum htt_rx_ring_flags {
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/pci.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/pci.c
 | 
			
		||||
@@ -128,7 +128,7 @@ static struct ce_attr host_ce_config_wla
 | 
			
		||||
@@ -142,7 +142,7 @@ static struct ce_attr host_ce_config_wla
 | 
			
		||||
 		.flags = CE_ATTR_FLAGS,
 | 
			
		||||
 		.src_nentries = 0,
 | 
			
		||||
 		.src_sz_max = 2048,
 | 
			
		||||
@ -9,7 +9,7 @@
 | 
			
		||||
 		.recv_cb = ath10k_pci_htt_htc_rx_cb,
 | 
			
		||||
 	},
 | 
			
		||||
 
 | 
			
		||||
@@ -137,7 +137,7 @@ static struct ce_attr host_ce_config_wla
 | 
			
		||||
@@ -151,7 +151,7 @@ static struct ce_attr host_ce_config_wla
 | 
			
		||||
 		.flags = CE_ATTR_FLAGS,
 | 
			
		||||
 		.src_nentries = 0,
 | 
			
		||||
 		.src_sz_max = 2048,
 | 
			
		||||
@ -18,7 +18,7 @@
 | 
			
		||||
 		.recv_cb = ath10k_pci_htc_rx_cb,
 | 
			
		||||
 	},
 | 
			
		||||
 
 | 
			
		||||
@@ -164,7 +164,7 @@ static struct ce_attr host_ce_config_wla
 | 
			
		||||
@@ -178,7 +178,7 @@ static struct ce_attr host_ce_config_wla
 | 
			
		||||
 		.flags = CE_ATTR_FLAGS,
 | 
			
		||||
 		.src_nentries = 0,
 | 
			
		||||
 		.src_sz_max = 512,
 | 
			
		||||
@ -27,7 +27,7 @@
 | 
			
		||||
 		.recv_cb = ath10k_pci_htt_rx_cb,
 | 
			
		||||
 	},
 | 
			
		||||
 
 | 
			
		||||
@@ -189,7 +189,7 @@ static struct ce_attr host_ce_config_wla
 | 
			
		||||
@@ -203,7 +203,7 @@ static struct ce_attr host_ce_config_wla
 | 
			
		||||
 		.flags = CE_ATTR_FLAGS,
 | 
			
		||||
 		.src_nentries = 0,
 | 
			
		||||
 		.src_sz_max = 2048,
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,7 @@ v9: use SM/MS macros from code.h to simplify shift/mask handling
 | 
			
		||||
 3 files changed, 52 insertions(+), 23 deletions(-)
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
@@ -2466,7 +2466,7 @@ static void ath10k_peer_assoc_h_vht(stru
 | 
			
		||||
@@ -2469,7 +2469,7 @@ static void ath10k_peer_assoc_h_vht(stru
 | 
			
		||||
 	const u16 *vht_mcs_mask;
 | 
			
		||||
 	u8 ampdu_factor;
 | 
			
		||||
 	u8 max_nss, vht_mcs;
 | 
			
		||||
@ -32,7 +32,7 @@ v9: use SM/MS macros from code.h to simplify shift/mask handling
 | 
			
		||||
 
 | 
			
		||||
 	if (WARN_ON(ath10k_mac_vif_chan(vif, &def)))
 | 
			
		||||
 		return;
 | 
			
		||||
@@ -2526,23 +2526,45 @@ static void ath10k_peer_assoc_h_vht(stru
 | 
			
		||||
@@ -2529,23 +2529,45 @@ static void ath10k_peer_assoc_h_vht(stru
 | 
			
		||||
 		__le16_to_cpu(vht_cap->vht_mcs.tx_highest);
 | 
			
		||||
 	arg->peer_vht_rates.tx_mcs_set = ath10k_peer_assoc_h_vht_limit(
 | 
			
		||||
 		__le16_to_cpu(vht_cap->vht_mcs.tx_mcs_map), vht_mcs_mask);
 | 
			
		||||
@ -92,7 +92,7 @@ v9: use SM/MS macros from code.h to simplify shift/mask handling
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 static void ath10k_peer_assoc_h_qos(struct ath10k *ar,
 | 
			
		||||
@@ -2694,9 +2716,9 @@ static int ath10k_peer_assoc_prepare(str
 | 
			
		||||
@@ -2697,9 +2719,9 @@ static int ath10k_peer_assoc_prepare(str
 | 
			
		||||
 	ath10k_peer_assoc_h_crypto(ar, vif, sta, arg);
 | 
			
		||||
 	ath10k_peer_assoc_h_rates(ar, vif, sta, arg);
 | 
			
		||||
 	ath10k_peer_assoc_h_ht(ar, vif, sta, arg);
 | 
			
		||||
@ -105,7 +105,7 @@ v9: use SM/MS macros from code.h to simplify shift/mask handling
 | 
			
		||||
 }
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
@@ -7231,12 +7231,7 @@ ath10k_wmi_peer_assoc_fill_10_4(struct a
 | 
			
		||||
@@ -7346,12 +7346,7 @@ ath10k_wmi_peer_assoc_fill_10_4(struct a
 | 
			
		||||
 	struct wmi_10_4_peer_assoc_complete_cmd *cmd = buf;
 | 
			
		||||
 
 | 
			
		||||
 	ath10k_wmi_peer_assoc_fill_10_2(ar, buf, arg);
 | 
			
		||||
@ -121,7 +121,7 @@ v9: use SM/MS macros from code.h to simplify shift/mask handling
 | 
			
		||||
 static int
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/wmi.h
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
 | 
			
		||||
@@ -6306,7 +6306,19 @@ struct wmi_10_2_peer_assoc_complete_cmd
 | 
			
		||||
@@ -6357,7 +6357,19 @@ struct wmi_10_2_peer_assoc_complete_cmd
 | 
			
		||||
 	__le32 info0; /* WMI_PEER_ASSOC_INFO0_ */
 | 
			
		||||
 } __packed;
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@ v2: fix trailing whitespace issue and fix some typos within the commit note
 | 
			
		||||
 2 files changed, 8 insertions(+), 10 deletions(-)
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
@@ -4445,13 +4445,6 @@ static struct ieee80211_sta_vht_cap ath1
 | 
			
		||||
@@ -4473,13 +4473,6 @@ static struct ieee80211_sta_vht_cap ath1
 | 
			
		||||
 		vht_cap.cap |= val;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@ -29,7 +29,7 @@ v2: fix trailing whitespace issue and fix some typos within the commit note
 | 
			
		||||
 		if ((i < ar->num_rf_chains) && (ar->cfg_tx_chainmask & BIT(i)))
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
@@ -1672,13 +1672,18 @@ void ath10k_wmi_put_wmi_channel(struct w
 | 
			
		||||
@@ -1677,13 +1677,18 @@ void ath10k_wmi_put_wmi_channel(struct w
 | 
			
		||||
 		flags |= WMI_CHAN_FLAG_HT40_PLUS;
 | 
			
		||||
 	if (arg->chan_radar)
 | 
			
		||||
 		flags |= WMI_CHAN_FLAG_DFS;
 | 
			
		||||
 | 
			
		||||
@ -83,10 +83,8 @@ v13:
 | 
			
		||||
 12 files changed, 314 insertions(+), 1 deletion(-)
 | 
			
		||||
 create mode 100644 drivers/net/wireless/ath/ath10k/leds.c
 | 
			
		||||
 create mode 100644 drivers/net/wireless/ath/ath10k/leds.h
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/Kconfig
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/Kconfig
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/Kconfig
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/Kconfig
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/Kconfig
 | 
			
		||||
@@ -69,6 +69,16 @@ config ATH10K_DEBUGFS
 | 
			
		||||
 
 | 
			
		||||
 	  If unsure, say Y to make it easier to debug problems.
 | 
			
		||||
@ -104,10 +102,8 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/Kconfig
 | 
			
		||||
 config ATH10K_SPECTRAL
 | 
			
		||||
 	bool "Atheros ath10k spectral scan support"
 | 
			
		||||
 	depends on ATH10K_DEBUGFS
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/Makefile
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/Makefile
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/Makefile
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/Makefile
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/Makefile
 | 
			
		||||
@@ -19,6 +19,7 @@ ath10k_core-$(CPTCFG_ATH10K_SPECTRAL) +=
 | 
			
		||||
 ath10k_core-$(CPTCFG_NL80211_TESTMODE) += testmode.o
 | 
			
		||||
 ath10k_core-$(CPTCFG_ATH10K_TRACING) += trace.o
 | 
			
		||||
@ -116,11 +112,9 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/Makefile
 | 
			
		||||
 ath10k_core-$(CPTCFG_MAC80211_DEBUGFS) += debugfs_sta.o
 | 
			
		||||
 ath10k_core-$(CONFIG_PM) += wow.o
 | 
			
		||||
 ath10k_core-$(CONFIG_DEV_COREDUMP) += coredump.o
 | 
			
		||||
Index: backports-v4.18-rc7/local-symbols
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/local-symbols
 | 
			
		||||
+++ backports-v4.18-rc7/local-symbols
 | 
			
		||||
@@ -147,6 +147,7 @@ ATH10K_DEBUG=
 | 
			
		||||
--- a/local-symbols
 | 
			
		||||
+++ b/local-symbols
 | 
			
		||||
@@ -143,6 +143,7 @@ ATH10K_DEBUG=
 | 
			
		||||
 ATH10K_DEBUGFS=
 | 
			
		||||
 ATH10K_SPECTRAL=
 | 
			
		||||
 ATH10K_THERMAL=
 | 
			
		||||
@ -128,10 +122,8 @@ Index: backports-v4.18-rc7/local-symbols
 | 
			
		||||
 ATH10K_TRACING=
 | 
			
		||||
 ATH10K_DFS_CERTIFIED=
 | 
			
		||||
 WCN36XX=
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
@@ -34,6 +34,7 @@
 | 
			
		||||
 #include "testmode.h"
 | 
			
		||||
 #include "wmi-ops.h"
 | 
			
		||||
@ -140,7 +132,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
 
 | 
			
		||||
 unsigned int ath10k_debug_mask;
 | 
			
		||||
 static unsigned int ath10k_cryptmode_param;
 | 
			
		||||
@@ -66,6 +67,7 @@ static const struct ath10k_hw_params ath
 | 
			
		||||
@@ -64,6 +65,7 @@ static const struct ath10k_hw_params ath
 | 
			
		||||
 		.id = QCA988X_HW_2_0_VERSION,
 | 
			
		||||
 		.dev_id = QCA988X_2_0_DEVICE_ID,
 | 
			
		||||
 		.name = "qca988x hw2.0",
 | 
			
		||||
@ -156,7 +148,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
 		.patch_load_addr = QCA9887_HW_1_0_PATCH_LOAD_ADDR,
 | 
			
		||||
 		.uart_pin = 7,
 | 
			
		||||
 		.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
 | 
			
		||||
@@ -288,6 +291,7 @@ static const struct ath10k_hw_params ath
 | 
			
		||||
@@ -293,6 +296,7 @@ static const struct ath10k_hw_params ath
 | 
			
		||||
 		.id = QCA99X0_HW_2_0_DEV_VERSION,
 | 
			
		||||
 		.dev_id = QCA99X0_2_0_DEVICE_ID,
 | 
			
		||||
 		.name = "qca99x0 hw2.0",
 | 
			
		||||
@ -164,7 +156,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
 		.patch_load_addr = QCA99X0_HW_2_0_PATCH_LOAD_ADDR,
 | 
			
		||||
 		.uart_pin = 7,
 | 
			
		||||
 		.otp_exe_param = 0x00000700,
 | 
			
		||||
@@ -325,6 +329,7 @@ static const struct ath10k_hw_params ath
 | 
			
		||||
@@ -331,6 +335,7 @@ static const struct ath10k_hw_params ath
 | 
			
		||||
 		.id = QCA9984_HW_1_0_DEV_VERSION,
 | 
			
		||||
 		.dev_id = QCA9984_1_0_DEVICE_ID,
 | 
			
		||||
 		.name = "qca9984/qca9994 hw1.0",
 | 
			
		||||
@ -172,7 +164,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
 		.patch_load_addr = QCA9984_HW_1_0_PATCH_LOAD_ADDR,
 | 
			
		||||
 		.uart_pin = 7,
 | 
			
		||||
 		.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
 | 
			
		||||
@@ -367,6 +372,7 @@ static const struct ath10k_hw_params ath
 | 
			
		||||
@@ -374,6 +379,7 @@ static const struct ath10k_hw_params ath
 | 
			
		||||
 		.id = QCA9888_HW_2_0_DEV_VERSION,
 | 
			
		||||
 		.dev_id = QCA9888_2_0_DEVICE_ID,
 | 
			
		||||
 		.name = "qca9888 hw2.0",
 | 
			
		||||
@ -180,7 +172,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
 		.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
 | 
			
		||||
 		.uart_pin = 7,
 | 
			
		||||
 		.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
 | 
			
		||||
@@ -2428,6 +2434,10 @@ int ath10k_core_start(struct ath10k *ar,
 | 
			
		||||
@@ -2440,6 +2446,10 @@ int ath10k_core_start(struct ath10k *ar,
 | 
			
		||||
 	if (status)
 | 
			
		||||
 		goto err_hif_stop;
 | 
			
		||||
 
 | 
			
		||||
@ -191,7 +183,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
 	return 0;
 | 
			
		||||
 
 | 
			
		||||
 err_hif_stop:
 | 
			
		||||
@@ -2682,9 +2692,18 @@ static void ath10k_core_register_work(st
 | 
			
		||||
@@ -2694,9 +2704,18 @@ static void ath10k_core_register_work(st
 | 
			
		||||
 		goto err_spectral_destroy;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@ -210,7 +202,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
 err_spectral_destroy:
 | 
			
		||||
 	ath10k_spectral_destroy(ar);
 | 
			
		||||
 err_debug_destroy:
 | 
			
		||||
@@ -2728,6 +2747,8 @@ void ath10k_core_unregister(struct ath10
 | 
			
		||||
@@ -2740,6 +2759,8 @@ void ath10k_core_unregister(struct ath10
 | 
			
		||||
 	if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
 | 
			
		||||
 		return;
 | 
			
		||||
 
 | 
			
		||||
@ -219,10 +211,8 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.c
 | 
			
		||||
 	ath10k_thermal_unregister(ar);
 | 
			
		||||
 	/* Stop spectral before unregistering from mac80211 to remove the
 | 
			
		||||
 	 * relayfs debugfs file cleanly. Otherwise the parent debugfs tree
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/core.h
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.h
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/core.h
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/core.h
 | 
			
		||||
@@ -25,6 +25,7 @@
 | 
			
		||||
 #include <linux/pci.h>
 | 
			
		||||
 #include <linux/uuid.h>
 | 
			
		||||
@ -231,7 +221,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.h
 | 
			
		||||
 
 | 
			
		||||
 #include "htt.h"
 | 
			
		||||
 #include "htc.h"
 | 
			
		||||
@@ -902,7 +903,6 @@ struct ath10k {
 | 
			
		||||
@@ -908,7 +909,6 @@ struct ath10k {
 | 
			
		||||
 	u32 low_5ghz_chan;
 | 
			
		||||
 	u32 high_5ghz_chan;
 | 
			
		||||
 	bool ani_enabled;
 | 
			
		||||
@ -239,7 +229,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.h
 | 
			
		||||
 	bool p2p;
 | 
			
		||||
 
 | 
			
		||||
 	struct {
 | 
			
		||||
@@ -1093,6 +1093,13 @@ struct ath10k {
 | 
			
		||||
@@ -1099,6 +1099,13 @@ struct ath10k {
 | 
			
		||||
 	} testmode;
 | 
			
		||||
 
 | 
			
		||||
 	struct {
 | 
			
		||||
@ -253,10 +243,8 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/core.h
 | 
			
		||||
 		/* protected by data_lock */
 | 
			
		||||
 		u32 fw_crash_counter;
 | 
			
		||||
 		u32 fw_warm_reset_counter;
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/hw.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/hw.h
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/hw.h
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/hw.h
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/hw.h
 | 
			
		||||
@@ -504,6 +504,7 @@ struct ath10k_hw_params {
 | 
			
		||||
 	const char *name;
 | 
			
		||||
 	u32 patch_load_addr;
 | 
			
		||||
@ -265,10 +253,8 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/hw.h
 | 
			
		||||
 	u32 otp_exe_param;
 | 
			
		||||
 
 | 
			
		||||
 	/* Type of hw cycle counter wraparound logic, for more info
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/leds.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/leds.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/leds.c
 | 
			
		||||
@@ -0,0 +1,103 @@
 | 
			
		||||
+/*
 | 
			
		||||
+ * Copyright (c) 2005-2011 Atheros Communications Inc.
 | 
			
		||||
@ -373,10 +359,8 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/leds.c
 | 
			
		||||
+	led_classdev_unregister(&ar->leds.cdev);
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/leds.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/leds.h
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/leds.h
 | 
			
		||||
@@ -0,0 +1,41 @@
 | 
			
		||||
+/*
 | 
			
		||||
+ * Copyright (c) 2018, The Linux Foundation. All rights reserved.
 | 
			
		||||
@ -419,10 +403,8 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/leds.h
 | 
			
		||||
+
 | 
			
		||||
+#endif
 | 
			
		||||
+#endif /* _LEDS_H_ */
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
@@ -33,6 +33,7 @@
 | 
			
		||||
 #include "wmi-tlv.h"
 | 
			
		||||
 #include "wmi-ops.h"
 | 
			
		||||
@ -431,11 +413,9 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
 
 | 
			
		||||
 /*********/
 | 
			
		||||
 /* Rates */
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi-ops.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/wmi-ops.h
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi-ops.h
 | 
			
		||||
@@ -214,7 +214,10 @@ struct wmi_ops {
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/wmi-ops.h
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/wmi-ops.h
 | 
			
		||||
@@ -216,7 +216,10 @@ struct wmi_ops {
 | 
			
		||||
 	struct sk_buff *(*gen_echo)(struct ath10k *ar, u32 value);
 | 
			
		||||
 	struct sk_buff *(*gen_pdev_get_tpc_table_cmdid)(struct ath10k *ar,
 | 
			
		||||
 							u32 param);
 | 
			
		||||
@ -446,7 +426,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi-ops.h
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
 int ath10k_wmi_cmd_send(struct ath10k *ar, struct sk_buff *skb, u32 cmd_id);
 | 
			
		||||
@@ -1042,6 +1045,35 @@ ath10k_wmi_force_fw_hang(struct ath10k *
 | 
			
		||||
@@ -1054,6 +1057,35 @@ ath10k_wmi_force_fw_hang(struct ath10k *
 | 
			
		||||
 	return ath10k_wmi_cmd_send(ar, skb, ar->wmi.cmd->force_fw_hang_cmdid);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -482,11 +462,9 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi-ops.h
 | 
			
		||||
 static inline int
 | 
			
		||||
 ath10k_wmi_dbglog_cfg(struct ath10k *ar, u64 module_enable, u32 log_level)
 | 
			
		||||
 {
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi-tlv.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/wmi-tlv.c
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi-tlv.c
 | 
			
		||||
@@ -3909,6 +3909,8 @@ static const struct wmi_ops wmi_tlv_ops
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
 | 
			
		||||
@@ -3976,6 +3976,8 @@ static const struct wmi_ops wmi_tlv_ops
 | 
			
		||||
 	.gen_echo = ath10k_wmi_tlv_op_gen_echo,
 | 
			
		||||
 	.gen_vdev_spectral_conf = ath10k_wmi_tlv_op_gen_vdev_spectral_conf,
 | 
			
		||||
 	.gen_vdev_spectral_enable = ath10k_wmi_tlv_op_gen_vdev_spectral_enable,
 | 
			
		||||
@ -495,11 +473,9 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi-tlv.c
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
 static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
@@ -7115,6 +7115,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
@@ -7166,6 +7166,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
 | 
			
		||||
 	return skb;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -549,7 +525,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
 static struct sk_buff *
 | 
			
		||||
 ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
 | 
			
		||||
 			     enum wmi_sta_ps_mode psmode)
 | 
			
		||||
@@ -8726,6 +8769,9 @@ static const struct wmi_ops wmi_ops = {
 | 
			
		||||
@@ -8777,6 +8820,9 @@ static const struct wmi_ops wmi_ops = {
 | 
			
		||||
 	.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
 | 
			
		||||
 	.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
 | 
			
		||||
 	.gen_echo = ath10k_wmi_op_gen_echo,
 | 
			
		||||
@ -559,7 +535,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
 	/* .gen_bcn_tmpl not implemented */
 | 
			
		||||
 	/* .gen_prb_tmpl not implemented */
 | 
			
		||||
 	/* .gen_p2p_go_bcn_ie not implemented */
 | 
			
		||||
@@ -8796,6 +8842,8 @@ static const struct wmi_ops wmi_10_1_ops
 | 
			
		||||
@@ -8847,6 +8893,8 @@ static const struct wmi_ops wmi_10_1_ops
 | 
			
		||||
 	.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
 | 
			
		||||
 	.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
 | 
			
		||||
 	.gen_echo = ath10k_wmi_op_gen_echo,
 | 
			
		||||
@ -568,7 +544,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
 	/* .gen_bcn_tmpl not implemented */
 | 
			
		||||
 	/* .gen_prb_tmpl not implemented */
 | 
			
		||||
 	/* .gen_p2p_go_bcn_ie not implemented */
 | 
			
		||||
@@ -8867,6 +8915,8 @@ static const struct wmi_ops wmi_10_2_ops
 | 
			
		||||
@@ -8918,6 +8966,8 @@ static const struct wmi_ops wmi_10_2_ops
 | 
			
		||||
 	.gen_delba_send = ath10k_wmi_op_gen_delba_send,
 | 
			
		||||
 	.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
 | 
			
		||||
 	.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
 | 
			
		||||
@ -577,7 +553,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
 	/* .gen_pdev_enable_adaptive_cca not implemented */
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
@@ -8937,6 +8987,8 @@ static const struct wmi_ops wmi_10_2_4_o
 | 
			
		||||
@@ -8988,6 +9038,8 @@ static const struct wmi_ops wmi_10_2_4_o
 | 
			
		||||
 	.gen_pdev_enable_adaptive_cca =
 | 
			
		||||
 		ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
 | 
			
		||||
 	.get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
 | 
			
		||||
@ -586,7 +562,7 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
 	/* .gen_bcn_tmpl not implemented */
 | 
			
		||||
 	/* .gen_prb_tmpl not implemented */
 | 
			
		||||
 	/* .gen_p2p_go_bcn_ie not implemented */
 | 
			
		||||
@@ -9016,6 +9068,8 @@ static const struct wmi_ops wmi_10_4_ops
 | 
			
		||||
@@ -9067,6 +9119,8 @@ static const struct wmi_ops wmi_10_4_ops
 | 
			
		||||
 	.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
 | 
			
		||||
 	.gen_echo = ath10k_wmi_op_gen_echo,
 | 
			
		||||
 	.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
 | 
			
		||||
@ -595,11 +571,9 @@ Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi.c
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
 int ath10k_wmi_attach(struct ath10k *ar)
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/ath/ath10k/wmi.h
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/ath/ath10k/wmi.h
 | 
			
		||||
@@ -2941,6 +2941,41 @@ enum wmi_10_4_feature_mask {
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/wmi.h
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
 | 
			
		||||
@@ -2942,6 +2942,41 @@ enum wmi_10_4_feature_mask {
 | 
			
		||||
 
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -16,7 +16,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/core.h
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/core.h
 | 
			
		||||
@@ -1055,6 +1055,10 @@ struct ath10k {
 | 
			
		||||
@@ -1144,6 +1144,10 @@ struct ath10k {
 | 
			
		||||
 	struct ath10k_radar_found_info last_radar_info;
 | 
			
		||||
 	struct work_struct radar_confirmation_work;
 | 
			
		||||
 
 | 
			
		||||
@ -42,7 +42,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
 | 
			
		||||
 	if (ret)
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
@@ -8429,7 +8429,7 @@ int ath10k_mac_register(struct ath10k *a
 | 
			
		||||
@@ -8603,7 +8603,7 @@ int ath10k_mac_register(struct ath10k *a
 | 
			
		||||
 	wiphy_ext_feature_set(ar->hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
 | 
			
		||||
 
 | 
			
		||||
 #ifdef CPTCFG_MAC80211_LEDS
 | 
			
		||||
 | 
			
		||||
@ -21,7 +21,7 @@ Forwarded: https://patchwork.kernel.org/patch/10549245/
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
 | 
			
		||||
@@ -17,6 +17,7 @@
 | 
			
		||||
@@ -18,6 +18,7 @@
 | 
			
		||||
 
 | 
			
		||||
 #include "mac.h"
 | 
			
		||||
 
 | 
			
		||||
@ -29,7 +29,7 @@ Forwarded: https://patchwork.kernel.org/patch/10549245/
 | 
			
		||||
 #include <net/mac80211.h>
 | 
			
		||||
 #include <linux/etherdevice.h>
 | 
			
		||||
 #include <linux/acpi.h>
 | 
			
		||||
@@ -8230,6 +8231,7 @@ int ath10k_mac_register(struct ath10k *a
 | 
			
		||||
@@ -8390,6 +8391,7 @@ int ath10k_mac_register(struct ath10k *a
 | 
			
		||||
 		ar->hw->wiphy->bands[NL80211_BAND_5GHZ] = band;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/broadcom/b43/b43.h
 | 
			
		||||
+++ b/drivers/net/wireless/broadcom/b43/b43.h
 | 
			
		||||
@@ -839,6 +839,7 @@ struct b43_wldev {
 | 
			
		||||
@@ -840,6 +840,7 @@ struct b43_wldev {
 | 
			
		||||
 	bool qos_enabled;		/* TRUE, if QoS is used. */
 | 
			
		||||
 	bool hwcrypto_enabled;		/* TRUE, if HW crypto acceleration is enabled. */
 | 
			
		||||
 	bool use_pio;			/* TRUE if next init should use PIO */
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/broadcom/b43/Makefile
 | 
			
		||||
+++ b/drivers/net/wireless/broadcom/b43/Makefile
 | 
			
		||||
@@ -17,7 +17,7 @@ b43-$(CPTCFG_B43_PHY_AC)	+= phy_ac.o
 | 
			
		||||
@@ -18,7 +18,7 @@ b43-$(CPTCFG_B43_PHY_AC)	+= phy_ac.o
 | 
			
		||||
 b43-y				+= sysfs.o
 | 
			
		||||
 b43-y				+= xmit.o
 | 
			
		||||
 b43-y				+= dma.o
 | 
			
		||||
@ -26,7 +26,7 @@
 | 
			
		||||
 	}
 | 
			
		||||
--- a/drivers/net/wireless/broadcom/b43/pio.h
 | 
			
		||||
+++ b/drivers/net/wireless/broadcom/b43/pio.h
 | 
			
		||||
@@ -150,7 +150,7 @@ static inline void b43_piorx_write32(str
 | 
			
		||||
@@ -151,7 +151,7 @@ static inline void b43_piorx_write32(str
 | 
			
		||||
 	b43_write32(q->dev, q->mmio_base + offset, value);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -35,7 +35,7 @@
 | 
			
		||||
 int b43_pio_init(struct b43_wldev *dev);
 | 
			
		||||
 void b43_pio_free(struct b43_wldev *dev);
 | 
			
		||||
 
 | 
			
		||||
@@ -161,5 +161,37 @@ void b43_pio_rx(struct b43_pio_rxqueue *
 | 
			
		||||
@@ -162,5 +162,37 @@ void b43_pio_rx(struct b43_pio_rxqueue *
 | 
			
		||||
 
 | 
			
		||||
 void b43_pio_tx_suspend(struct b43_wldev *dev);
 | 
			
		||||
 void b43_pio_tx_resume(struct b43_wldev *dev);
 | 
			
		||||
@ -82,5 +82,5 @@
 | 
			
		||||
-	bool
 | 
			
		||||
+	bool "Broadcom 43xx PIO support"
 | 
			
		||||
 	depends on B43 && B43_SSB
 | 
			
		||||
 	select SSB_BLOCKIO
 | 
			
		||||
 	depends on SSB_BLOCKIO
 | 
			
		||||
 	default y
 | 
			
		||||
 | 
			
		||||
@ -120,7 +120,7 @@
 | 
			
		||||
 	SET_IEEE80211_DEV(hw, dev->dev);
 | 
			
		||||
--- a/drivers/net/wireless/broadcom/b43/b43.h
 | 
			
		||||
+++ b/drivers/net/wireless/broadcom/b43/b43.h
 | 
			
		||||
@@ -840,6 +840,8 @@ struct b43_wldev {
 | 
			
		||||
@@ -841,6 +841,8 @@ struct b43_wldev {
 | 
			
		||||
 	bool hwcrypto_enabled;		/* TRUE, if HW crypto acceleration is enabled. */
 | 
			
		||||
 	bool use_pio;			/* TRUE if next init should use PIO */
 | 
			
		||||
 	int gpiomask;			/* GPIO LED mask as a module parameter */
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/broadcom/b43/dma.h
 | 
			
		||||
+++ b/drivers/net/wireless/broadcom/b43/dma.h
 | 
			
		||||
@@ -169,7 +169,7 @@ struct b43_dmadesc_generic {
 | 
			
		||||
@@ -170,7 +170,7 @@ struct b43_dmadesc_generic {
 | 
			
		||||
 
 | 
			
		||||
 /* DMA engine tuning knobs */
 | 
			
		||||
 #define B43_TXRING_SLOTS		256
 | 
			
		||||
 | 
			
		||||
@ -7,10 +7,8 @@ See: http://projectable.me/optimize-my-pi-wi-fi/
 | 
			
		||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
Index: backports-v4.18-rc7/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
 | 
			
		||||
+++ backports-v4.18-rc7/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
 | 
			
		||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
 | 
			
		||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
 | 
			
		||||
@@ -70,7 +70,11 @@ static int brcmf_fcmode;
 | 
			
		||||
 module_param_named(fcmode, brcmf_fcmode, int, 0);
 | 
			
		||||
 MODULE_PARM_DESC(fcmode, "Mode of firmware signalled flow control");
 | 
			
		||||
 | 
			
		||||
@ -1,13 +1,8 @@
 | 
			
		||||
Index: backports-v4.18-rc7/compat/Makefile
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/compat/Makefile
 | 
			
		||||
+++ backports-v4.18-rc7/compat/Makefile
 | 
			
		||||
@@ -70,8 +70,6 @@ quiet_cmd_build_OID_registry = GEN     $
 | 
			
		||||
 	cmd_build_OID_registry = perl $(src)/build_OID_registry $< $@
 | 
			
		||||
 compat-$(CPTCFG_BPAUTO_ASN1_DECODER) += lib-asn1_decoder.o
 | 
			
		||||
 compat-$(CPTCFG_BPAUTO_BUILD_SYSTEM_DATA_VERIFICATION) += lib-oid_registry.o
 | 
			
		||||
--- a/compat/Makefile
 | 
			
		||||
+++ b/compat/Makefile
 | 
			
		||||
@@ -79,5 +79,3 @@ obj-$(CPTCFG_BPAUTO_BUILD_CORDIC) += cor
 | 
			
		||||
 compat-$(CPTCFG_BPAUTO_PUBLIC_KEY) += 
 | 
			
		||||
 compat-$(CPTCFG_BPAUTO_BUCKET_LOCKS) += lib-bucket_locks.o
 | 
			
		||||
 compat-$(CPTCFG_BPAUTO_PKCS7) += 
 | 
			
		||||
-skcipher-objs += crypto-skcipher.o
 | 
			
		||||
-obj-$(CPTCFG_BPAUTO_CRYPTO_SKCIPHER) += skcipher.o
 | 
			
		||||
 compat-$(CPTCFG_BPAUTO_BUILD_WANT_DEV_COREDUMP) += drivers-base-devcoredump.o
 | 
			
		||||
 compat-$(CPTCFG_BPAUTO_RHASHTABLE) += lib-rhashtable.o
 | 
			
		||||
 cordic-objs += lib-cordic.o
 | 
			
		||||
 | 
			
		||||
@ -1,10 +0,0 @@
 | 
			
		||||
--- a/compat/backport-4.12.c
 | 
			
		||||
+++ b/compat/backport-4.12.c
 | 
			
		||||
@@ -225,6 +225,7 @@ int bp_extack_genl_register_family(struc
 | 
			
		||||
 
 | 
			
		||||
 	/* copy this since the family might access it directly */
 | 
			
		||||
 	family->attrbuf = copy->family.attrbuf;
 | 
			
		||||
+	family->mcgrp_offset = copy->family.mcgrp_offset;
 | 
			
		||||
 
 | 
			
		||||
 	mutex_lock(&copies_mutex);
 | 
			
		||||
 	list_add_tail(©->list, &copies_list);
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
--- a/net/wireless/Kconfig
 | 
			
		||||
+++ b/net/wireless/Kconfig
 | 
			
		||||
@@ -181,7 +181,7 @@ config CFG80211_WEXT_EXPORT
 | 
			
		||||
 	  wext compatibility symbols to be exported.
 | 
			
		||||
@@ -185,7 +185,7 @@ config CFG80211_WEXT_EXPORT
 | 
			
		||||
 endif # CFG80211
 | 
			
		||||
 
 | 
			
		||||
 config LIB80211
 | 
			
		||||
-	tristate
 | 
			
		||||
@ -9,7 +9,7 @@
 | 
			
		||||
 	depends on m
 | 
			
		||||
 	default n
 | 
			
		||||
 	help
 | 
			
		||||
@@ -191,15 +191,15 @@ config LIB80211
 | 
			
		||||
@@ -195,15 +195,15 @@ config LIB80211
 | 
			
		||||
 	  Drivers should select this themselves if needed.
 | 
			
		||||
 
 | 
			
		||||
 config LIB80211_CRYPT_WEP
 | 
			
		||||
 | 
			
		||||
@ -1,132 +0,0 @@
 | 
			
		||||
--- a/local-symbols
 | 
			
		||||
+++ b/local-symbols
 | 
			
		||||
@@ -388,45 +388,6 @@ USB_IPHETH=
 | 
			
		||||
 USB_SIERRA_NET=
 | 
			
		||||
 USB_VL600=
 | 
			
		||||
 USB_NET_CH9200=
 | 
			
		||||
-SSB_POSSIBLE=
 | 
			
		||||
-SSB=
 | 
			
		||||
-SSB_SPROM=
 | 
			
		||||
-SSB_BLOCKIO=
 | 
			
		||||
-SSB_PCIHOST_POSSIBLE=
 | 
			
		||||
-SSB_PCIHOST=
 | 
			
		||||
-SSB_B43_PCI_BRIDGE=
 | 
			
		||||
-SSB_PCMCIAHOST_POSSIBLE=
 | 
			
		||||
-SSB_PCMCIAHOST=
 | 
			
		||||
-SSB_SDIOHOST_POSSIBLE=
 | 
			
		||||
-SSB_SDIOHOST=
 | 
			
		||||
-SSB_HOST_SOC=
 | 
			
		||||
-SSB_SILENT=
 | 
			
		||||
-SSB_DEBUG=
 | 
			
		||||
-SSB_SERIAL=
 | 
			
		||||
-SSB_DRIVER_PCICORE_POSSIBLE=
 | 
			
		||||
-SSB_DRIVER_PCICORE=
 | 
			
		||||
-SSB_PCICORE_HOSTMODE=
 | 
			
		||||
-SSB_DRIVER_MIPS=
 | 
			
		||||
-SSB_SFLASH=
 | 
			
		||||
-SSB_EMBEDDED=
 | 
			
		||||
-SSB_DRIVER_EXTIF=
 | 
			
		||||
-SSB_DRIVER_GIGE=
 | 
			
		||||
-SSB_DRIVER_GPIO=
 | 
			
		||||
-BCMA_POSSIBLE=
 | 
			
		||||
-BCMA=
 | 
			
		||||
-BCMA_BLOCKIO=
 | 
			
		||||
-BCMA_HOST_PCI_POSSIBLE=
 | 
			
		||||
-BCMA_HOST_PCI=
 | 
			
		||||
-BCMA_HOST_SOC=
 | 
			
		||||
-BCMA_DRIVER_PCI=
 | 
			
		||||
-BCMA_DRIVER_PCI_HOSTMODE=
 | 
			
		||||
-BCMA_DRIVER_MIPS=
 | 
			
		||||
-BCMA_PFLASH=
 | 
			
		||||
-BCMA_SFLASH=
 | 
			
		||||
-BCMA_NFLASH=
 | 
			
		||||
-BCMA_DRIVER_GMAC_CMN=
 | 
			
		||||
-BCMA_DRIVER_GPIO=
 | 
			
		||||
-BCMA_DEBUG=
 | 
			
		||||
 NFC=
 | 
			
		||||
 NFC_DIGITAL=
 | 
			
		||||
 NFC_NCI=
 | 
			
		||||
--- a/drivers/net/wireless/broadcom/b43/main.c
 | 
			
		||||
+++ b/drivers/net/wireless/broadcom/b43/main.c
 | 
			
		||||
@@ -2876,7 +2876,7 @@ static struct ssb_device *b43_ssb_gpio_d
 | 
			
		||||
 {
 | 
			
		||||
 	struct ssb_bus *bus = dev->dev->sdev->bus;
 | 
			
		||||
 
 | 
			
		||||
-#ifdef CPTCFG_SSB_DRIVER_PCICORE
 | 
			
		||||
+#ifdef CONFIG_SSB_DRIVER_PCICORE
 | 
			
		||||
 	return (bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev);
 | 
			
		||||
 #else
 | 
			
		||||
 	return bus->chipco.dev;
 | 
			
		||||
@@ -4893,7 +4893,7 @@ static int b43_wireless_core_init(struct
 | 
			
		||||
 	}
 | 
			
		||||
 	if (sprom->boardflags_lo & B43_BFL_XTAL_NOSLOW)
 | 
			
		||||
 		hf |= B43_HF_DSCRQ; /* Disable slowclock requests from ucode. */
 | 
			
		||||
-#if defined(CPTCFG_B43_SSB) && defined(CPTCFG_SSB_DRIVER_PCICORE)
 | 
			
		||||
+#if defined(CPTCFG_B43_SSB) && defined(CONFIG_SSB_DRIVER_PCICORE)
 | 
			
		||||
 	if (dev->dev->bus_type == B43_BUS_SSB &&
 | 
			
		||||
 	    dev->dev->sdev->bus->bustype == SSB_BUSTYPE_PCI &&
 | 
			
		||||
 	    dev->dev->sdev->bus->pcicore.dev->id.revision <= 10)
 | 
			
		||||
--- a/drivers/net/wireless/broadcom/b43legacy/main.c
 | 
			
		||||
+++ b/drivers/net/wireless/broadcom/b43legacy/main.c
 | 
			
		||||
@@ -1937,7 +1937,7 @@ static int b43legacy_gpio_init(struct b4
 | 
			
		||||
 	if (dev->dev->id.revision >= 2)
 | 
			
		||||
 		mask  |= 0x0010; /* FIXME: This is redundant. */
 | 
			
		||||
 
 | 
			
		||||
-#ifdef CPTCFG_SSB_DRIVER_PCICORE
 | 
			
		||||
+#ifdef CONFIG_SSB_DRIVER_PCICORE
 | 
			
		||||
 	pcidev = bus->pcicore.dev;
 | 
			
		||||
 #endif
 | 
			
		||||
 	gpiodev = bus->chipco.dev ? : pcidev;
 | 
			
		||||
@@ -1956,7 +1956,7 @@ static void b43legacy_gpio_cleanup(struc
 | 
			
		||||
 	struct ssb_bus *bus = dev->dev->bus;
 | 
			
		||||
 	struct ssb_device *gpiodev, *pcidev = NULL;
 | 
			
		||||
 
 | 
			
		||||
-#ifdef CPTCFG_SSB_DRIVER_PCICORE
 | 
			
		||||
+#ifdef CONFIG_SSB_DRIVER_PCICORE
 | 
			
		||||
 	pcidev = bus->pcicore.dev;
 | 
			
		||||
 #endif
 | 
			
		||||
 	gpiodev = bus->chipco.dev ? : pcidev;
 | 
			
		||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/Makefile
 | 
			
		||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/Makefile
 | 
			
		||||
@@ -42,6 +42,6 @@ brcmsmac-y := \
 | 
			
		||||
 	brcms_trace_events.o \
 | 
			
		||||
 	debug.o
 | 
			
		||||
 
 | 
			
		||||
-brcmsmac-$(CPTCFG_BCMA_DRIVER_GPIO) += led.o
 | 
			
		||||
+brcmsmac-$(CONFIG_BCMA_DRIVER_GPIO) += led.o
 | 
			
		||||
 
 | 
			
		||||
 obj-$(CPTCFG_BRCMSMAC)	+= brcmsmac.o
 | 
			
		||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/led.h
 | 
			
		||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/led.h
 | 
			
		||||
@@ -22,7 +22,7 @@ struct brcms_led {
 | 
			
		||||
 	bool active_low;
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
-#ifdef CPTCFG_BCMA_DRIVER_GPIO
 | 
			
		||||
+#ifdef CONFIG_BCMA_DRIVER_GPIO
 | 
			
		||||
 void brcms_led_unregister(struct brcms_info *wl);
 | 
			
		||||
 int brcms_led_register(struct brcms_info *wl);
 | 
			
		||||
 #else
 | 
			
		||||
--- a/Kconfig.sources
 | 
			
		||||
+++ b/Kconfig.sources
 | 
			
		||||
@@ -9,9 +9,6 @@ source "$BACKPORT_DIR/drivers/net/wirele
 | 
			
		||||
 #source "$BACKPORT_DIR/drivers/net/ethernet/Kconfig"
 | 
			
		||||
 source "$BACKPORT_DIR/drivers/net/usb/Kconfig"
 | 
			
		||||
 
 | 
			
		||||
-source "$BACKPORT_DIR/drivers/ssb/Kconfig"
 | 
			
		||||
-source "$BACKPORT_DIR/drivers/bcma/Kconfig"
 | 
			
		||||
-
 | 
			
		||||
 source "$BACKPORT_DIR/net/nfc/Kconfig"
 | 
			
		||||
 
 | 
			
		||||
 #source "$BACKPORT_DIR/drivers/media/Kconfig"
 | 
			
		||||
--- a/Makefile.kernel
 | 
			
		||||
+++ b/Makefile.kernel
 | 
			
		||||
@@ -42,8 +42,6 @@ obj-$(CPTCFG_MAC80211) += net/mac80211/
 | 
			
		||||
 obj-$(CPTCFG_WLAN) += drivers/net/wireless/
 | 
			
		||||
 #obj-$(CPTCFG_BT) += net/bluetooth/
 | 
			
		||||
 #obj-$(CPTCFG_BT) += drivers/bluetooth/
 | 
			
		||||
-obj-$(CPTCFG_SSB) += drivers/ssb/
 | 
			
		||||
-obj-$(CPTCFG_BCMA) += drivers/bcma/
 | 
			
		||||
 #obj-$(CPTCFG_ETHERNET) += drivers/net/ethernet/
 | 
			
		||||
 obj-$(CPTCFG_USB_NET_RNDIS_WLAN) += drivers/net/usb/
 | 
			
		||||
 obj-$(CPTCFG_NFC) += net/nfc/
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/marvell/mwl8k.c
 | 
			
		||||
+++ b/drivers/net/wireless/marvell/mwl8k.c
 | 
			
		||||
@@ -5681,6 +5681,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
 | 
			
		||||
@@ -5686,6 +5686,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
 | 
			
		||||
 MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API));
 | 
			
		||||
 
 | 
			
		||||
 static const struct pci_device_id mwl8k_pci_id_table[] = {
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/marvell/libertas/cfg.c
 | 
			
		||||
+++ b/drivers/net/wireless/marvell/libertas/cfg.c
 | 
			
		||||
@@ -2040,6 +2040,8 @@ struct wireless_dev *lbs_cfg_alloc(struc
 | 
			
		||||
@@ -2041,6 +2041,8 @@ struct wireless_dev *lbs_cfg_alloc(struc
 | 
			
		||||
 		goto err_wiphy_new;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/marvell/libertas/cfg.c
 | 
			
		||||
+++ b/drivers/net/wireless/marvell/libertas/cfg.c
 | 
			
		||||
@@ -2116,6 +2116,8 @@ int lbs_cfg_register(struct lbs_private
 | 
			
		||||
@@ -2117,6 +2117,8 @@ int lbs_cfg_register(struct lbs_private
 | 
			
		||||
 	wdev->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites);
 | 
			
		||||
 	wdev->wiphy->reg_notifier = lbs_reg_notifier;
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/marvell/mwl8k.c
 | 
			
		||||
+++ b/drivers/net/wireless/marvell/mwl8k.c
 | 
			
		||||
@@ -6266,6 +6266,8 @@ static int mwl8k_probe(struct pci_dev *p
 | 
			
		||||
@@ -6271,6 +6271,8 @@ static int mwl8k_probe(struct pci_dev *p
 | 
			
		||||
 
 | 
			
		||||
 	priv->running_bsses = 0;
 | 
			
		||||
 
 | 
			
		||||
@ -9,7 +9,7 @@
 | 
			
		||||
 	return rc;
 | 
			
		||||
 
 | 
			
		||||
 err_stop_firmware:
 | 
			
		||||
@@ -6299,8 +6301,6 @@ static void mwl8k_remove(struct pci_dev
 | 
			
		||||
@@ -6304,8 +6306,6 @@ static void mwl8k_remove(struct pci_dev
 | 
			
		||||
 		return;
 | 
			
		||||
 	priv = hw->priv;
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -9403,6 +9403,7 @@ static int rt2800_probe_rt(struct rt2x00
 | 
			
		||||
@@ -9409,6 +9409,7 @@ static int rt2800_probe_rt(struct rt2x00
 | 
			
		||||
 	case RT3390:
 | 
			
		||||
 	case RT3572:
 | 
			
		||||
 	case RT3593:
 | 
			
		||||
 | 
			
		||||
@ -31,7 +31,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 #define RF5362				0x5362
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -8981,6 +8981,66 @@ static const struct rf_channel rf_vals_3
 | 
			
		||||
@@ -8987,6 +8987,66 @@ static const struct rf_channel rf_vals_3
 | 
			
		||||
 	{14,   0xF0,	 2,  0x18},
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
@ -98,7 +98,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 static const struct rf_channel rf_vals_5592_xtal20[] = {
 | 
			
		||||
 	/* Channel, N, K, mod, R */
 | 
			
		||||
 	{1, 482, 4, 10, 3},
 | 
			
		||||
@@ -9244,6 +9304,11 @@ static int rt2800_probe_hw_mode(struct r
 | 
			
		||||
@@ -9250,6 +9310,11 @@ static int rt2800_probe_hw_mode(struct r
 | 
			
		||||
 		spec->channels = rf_vals_3x;
 | 
			
		||||
 		break;
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -4881,6 +4881,7 @@ void rt2800_vco_calibration(struct rt2x0
 | 
			
		||||
@@ -4884,6 +4884,7 @@ void rt2800_vco_calibration(struct rt2x0
 | 
			
		||||
 	case RF3053:
 | 
			
		||||
 	case RF3070:
 | 
			
		||||
 	case RF3290:
 | 
			
		||||
@ -18,7 +18,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 	case RF5350:
 | 
			
		||||
 	case RF5360:
 | 
			
		||||
 	case RF5362:
 | 
			
		||||
@@ -9426,6 +9427,7 @@ static int rt2800_probe_hw_mode(struct r
 | 
			
		||||
@@ -9432,6 +9433,7 @@ static int rt2800_probe_hw_mode(struct r
 | 
			
		||||
 	case RF3053:
 | 
			
		||||
 	case RF3070:
 | 
			
		||||
 	case RF3290:
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -2713,6 +2713,211 @@ static void rt2800_config_channel_rf3053
 | 
			
		||||
@@ -2716,6 +2716,211 @@ static void rt2800_config_channel_rf3053
 | 
			
		||||
 	}
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -223,7 +223,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 #define POWER_BOUND		0x27
 | 
			
		||||
 #define POWER_BOUND_5G		0x2b
 | 
			
		||||
 
 | 
			
		||||
@@ -3570,6 +3775,9 @@ static void rt2800_config_channel(struct
 | 
			
		||||
@@ -3573,6 +3778,9 @@ static void rt2800_config_channel(struct
 | 
			
		||||
 	case RF3322:
 | 
			
		||||
 		rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info);
 | 
			
		||||
 		break;
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -8906,6 +8906,7 @@ static int rt2800_init_eeprom(struct rt2
 | 
			
		||||
@@ -8910,6 +8910,7 @@ static int rt2800_init_eeprom(struct rt2
 | 
			
		||||
 	case RF3290:
 | 
			
		||||
 	case RF3320:
 | 
			
		||||
 	case RF3322:
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
 | 
			
		||||
@@ -1727,6 +1727,20 @@
 | 
			
		||||
@@ -1728,6 +1728,20 @@
 | 
			
		||||
 #define TX_PWR_CFG_9B_STBC_MCS7		FIELD32(0x000000ff)
 | 
			
		||||
 
 | 
			
		||||
 /*
 | 
			
		||||
@ -35,7 +35,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 #define RX_FILTER_CFG			0x1400
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -5509,6 +5509,12 @@ static int rt2800_init_registers(struct
 | 
			
		||||
@@ -5512,6 +5512,12 @@ static int rt2800_init_registers(struct
 | 
			
		||||
 			rt2800_register_write(rt2x00dev, TX_SW_CFG2,
 | 
			
		||||
 					      0x00000000);
 | 
			
		||||
 		}
 | 
			
		||||
@ -48,7 +48,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 	} else if (rt2x00_rt(rt2x00dev, RT5390) ||
 | 
			
		||||
 		   rt2x00_rt(rt2x00dev, RT5392) ||
 | 
			
		||||
 		   rt2x00_rt(rt2x00dev, RT6352)) {
 | 
			
		||||
@@ -5722,6 +5728,11 @@ static int rt2800_init_registers(struct
 | 
			
		||||
@@ -5725,6 +5731,11 @@ static int rt2800_init_registers(struct
 | 
			
		||||
 	reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002;
 | 
			
		||||
 	rt2800_register_write(rt2x00dev, TXOP_HLDR_ET, reg);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -6349,6 +6349,47 @@ static void rt2800_init_bbp_3593(struct
 | 
			
		||||
@@ -6352,6 +6352,47 @@ static void rt2800_init_bbp_3593(struct
 | 
			
		||||
 		rt2800_bbp_write(rt2x00dev, 103, 0xc0);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -59,7 +59,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 static void rt2800_init_bbp_53xx(struct rt2x00_dev *rt2x00dev)
 | 
			
		||||
 {
 | 
			
		||||
 	int ant, div_mode;
 | 
			
		||||
@@ -6792,6 +6833,9 @@ static void rt2800_init_bbp(struct rt2x0
 | 
			
		||||
@@ -6796,6 +6837,9 @@ static void rt2800_init_bbp(struct rt2x0
 | 
			
		||||
 	case RT3593:
 | 
			
		||||
 		rt2800_init_bbp_3593(rt2x00dev);
 | 
			
		||||
 		return;
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
 | 
			
		||||
@@ -2311,6 +2311,7 @@ struct mac_iveiv_entry {
 | 
			
		||||
@@ -2312,6 +2312,7 @@ struct mac_iveiv_entry {
 | 
			
		||||
 /*
 | 
			
		||||
  * RFCSR 2:
 | 
			
		||||
  */
 | 
			
		||||
@ -21,7 +21,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 #define RFCSR2_TX2_EN_MT7620		FIELD8(0x20)
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -7707,6 +7707,144 @@ static void rt2800_init_rfcsr_5350(struc
 | 
			
		||||
@@ -7711,6 +7711,144 @@ static void rt2800_init_rfcsr_5350(struc
 | 
			
		||||
 	rt2800_rfcsr_write(rt2x00dev, 63, 0x00);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -166,7 +166,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev)
 | 
			
		||||
 {
 | 
			
		||||
 	rt2800_rf_init_calibration(rt2x00dev, 2);
 | 
			
		||||
@@ -8549,6 +8687,9 @@ static void rt2800_init_rfcsr(struct rt2
 | 
			
		||||
@@ -8553,6 +8691,9 @@ static void rt2800_init_rfcsr(struct rt2
 | 
			
		||||
 	case RT3390:
 | 
			
		||||
 		rt2800_init_rfcsr_3390(rt2x00dev);
 | 
			
		||||
 		break;
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -9083,6 +9083,8 @@ static int rt2800_init_eeprom(struct rt2
 | 
			
		||||
@@ -9087,6 +9087,8 @@ static int rt2800_init_eeprom(struct rt2
 | 
			
		||||
 		rf = rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID);
 | 
			
		||||
 	else if (rt2x00_rt(rt2x00dev, RT3352))
 | 
			
		||||
 		rf = RF3322;
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -3738,6 +3738,36 @@ static char rt2800_txpower_to_dev(struct
 | 
			
		||||
@@ -3741,6 +3741,36 @@ static char rt2800_txpower_to_dev(struct
 | 
			
		||||
 		return clamp_t(char, txpower, MIN_A_TXPOWER, MAX_A_TXPOWER);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -47,7 +47,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
 				  struct ieee80211_conf *conf,
 | 
			
		||||
 				  struct rf_channel *rf,
 | 
			
		||||
@@ -3756,6 +3786,12 @@ static void rt2800_config_channel(struct
 | 
			
		||||
@@ -3759,6 +3789,12 @@ static void rt2800_config_channel(struct
 | 
			
		||||
 			rt2800_txpower_to_dev(rt2x00dev, rf->channel,
 | 
			
		||||
 					      info->default_power3);
 | 
			
		||||
 
 | 
			
		||||
@ -60,7 +60,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 	switch (rt2x00dev->chip.rf) {
 | 
			
		||||
 	case RF2020:
 | 
			
		||||
 	case RF3020:
 | 
			
		||||
@@ -3860,6 +3896,15 @@ static void rt2800_config_channel(struct
 | 
			
		||||
@@ -3863,6 +3899,15 @@ static void rt2800_config_channel(struct
 | 
			
		||||
 		rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
 | 
			
		||||
 		rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain);
 | 
			
		||||
 		rt2800_bbp_write(rt2x00dev, 77, 0x98);
 | 
			
		||||
@ -76,7 +76,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 	} else {
 | 
			
		||||
 		rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain);
 | 
			
		||||
 		rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
 | 
			
		||||
@@ -3873,6 +3918,7 @@ static void rt2800_config_channel(struct
 | 
			
		||||
@@ -3876,6 +3921,7 @@ static void rt2800_config_channel(struct
 | 
			
		||||
 		    !rt2x00_rt(rt2x00dev, RT6352)) {
 | 
			
		||||
 			if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
 | 
			
		||||
 				rt2800_bbp_write(rt2x00dev, 82, 0x62);
 | 
			
		||||
@ -84,7 +84,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 				rt2800_bbp_write(rt2x00dev, 75, 0x46);
 | 
			
		||||
 			} else {
 | 
			
		||||
 				if (rt2x00_rt(rt2x00dev, RT3593))
 | 
			
		||||
@@ -3881,19 +3927,22 @@ static void rt2800_config_channel(struct
 | 
			
		||||
@@ -3884,19 +3930,22 @@ static void rt2800_config_channel(struct
 | 
			
		||||
 					rt2800_bbp_write(rt2x00dev, 82, 0x84);
 | 
			
		||||
 				rt2800_bbp_write(rt2x00dev, 75, 0x50);
 | 
			
		||||
 			}
 | 
			
		||||
@ -110,7 +110,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 			rt2800_bbp_write(rt2x00dev, 83, 0x9a);
 | 
			
		||||
 
 | 
			
		||||
 		if (rt2x00_has_cap_external_lna_a(rt2x00dev))
 | 
			
		||||
@@ -4019,6 +4068,23 @@ static void rt2800_config_channel(struct
 | 
			
		||||
@@ -4022,6 +4071,23 @@ static void rt2800_config_channel(struct
 | 
			
		||||
 
 | 
			
		||||
 		rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -3725,13 +3725,15 @@ static char rt2800_txpower_to_dev(struct
 | 
			
		||||
@@ -3728,13 +3728,15 @@ static char rt2800_txpower_to_dev(struct
 | 
			
		||||
 				  unsigned int channel,
 | 
			
		||||
 				  char txpower)
 | 
			
		||||
 {
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -5111,7 +5111,8 @@ static void rt2800_config_txpower(struct
 | 
			
		||||
@@ -5114,7 +5114,8 @@ static void rt2800_config_txpower(struct
 | 
			
		||||
 				  struct ieee80211_channel *chan,
 | 
			
		||||
 				  int power_level)
 | 
			
		||||
 {
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -8965,7 +8965,8 @@ static u8 rt2800_get_txmixer_gain_24g(st
 | 
			
		||||
@@ -8969,7 +8969,8 @@ static u8 rt2800_get_txmixer_gain_24g(st
 | 
			
		||||
 {
 | 
			
		||||
 	u16 word;
 | 
			
		||||
 
 | 
			
		||||
@ -21,7 +21,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 		return 0;
 | 
			
		||||
 
 | 
			
		||||
 	word = rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_BG);
 | 
			
		||||
@@ -8979,7 +8980,8 @@ static u8 rt2800_get_txmixer_gain_5g(str
 | 
			
		||||
@@ -8983,7 +8984,8 @@ static u8 rt2800_get_txmixer_gain_5g(str
 | 
			
		||||
 {
 | 
			
		||||
 	u16 word;
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -2017,7 +2017,8 @@ void rt2800_config_ant(struct rt2x00_dev
 | 
			
		||||
@@ -2020,7 +2020,8 @@ void rt2800_config_ant(struct rt2x00_dev
 | 
			
		||||
 	rt2800_bbp_write(rt2x00dev, 3, r3);
 | 
			
		||||
 	rt2800_bbp_write(rt2x00dev, 1, r1);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -2040,7 +2040,8 @@ static void rt2800_config_lna_gain(struc
 | 
			
		||||
@@ -2043,7 +2043,8 @@ static void rt2800_config_lna_gain(struc
 | 
			
		||||
 		eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_LNA);
 | 
			
		||||
 		lna_gain = rt2x00_get_field16(eeprom, EEPROM_LNA_A0);
 | 
			
		||||
 	} else if (libconf->rf.channel <= 128) {
 | 
			
		||||
@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 			eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2);
 | 
			
		||||
 			lna_gain = rt2x00_get_field16(eeprom,
 | 
			
		||||
 						      EEPROM_EXT_LNA2_A1);
 | 
			
		||||
@@ -2050,7 +2051,8 @@ static void rt2800_config_lna_gain(struc
 | 
			
		||||
@@ -2053,7 +2054,8 @@ static void rt2800_config_lna_gain(struc
 | 
			
		||||
 						      EEPROM_RSSI_BG2_LNA_A1);
 | 
			
		||||
 		}
 | 
			
		||||
 	} else {
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -5364,7 +5364,8 @@ static u8 rt2800_get_default_vgc(struct
 | 
			
		||||
@@ -5367,7 +5367,8 @@ static u8 rt2800_get_default_vgc(struct
 | 
			
		||||
 		else
 | 
			
		||||
 			vgc = 0x2e + rt2x00dev->lna_gain;
 | 
			
		||||
 	} else { /* 5GHZ band */
 | 
			
		||||
@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 			vgc = 0x20 + (rt2x00dev->lna_gain * 5) / 3;
 | 
			
		||||
 		else if (rt2x00_rt(rt2x00dev, RT5592))
 | 
			
		||||
 			vgc = 0x24 + (2 * rt2x00dev->lna_gain);
 | 
			
		||||
@@ -5384,7 +5385,8 @@ static inline void rt2800_set_vgc(struct
 | 
			
		||||
@@ -5387,7 +5388,8 @@ static inline void rt2800_set_vgc(struct
 | 
			
		||||
 {
 | 
			
		||||
 	if (qual->vgc_level != vgc_level) {
 | 
			
		||||
 		if (rt2x00_rt(rt2x00dev, RT3572) ||
 | 
			
		||||
@ -30,7 +30,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 			rt2800_bbp_write_with_rx_chain(rt2x00dev, 66,
 | 
			
		||||
 						       vgc_level);
 | 
			
		||||
 		} else if (rt2x00_rt(rt2x00dev, RT5592)) {
 | 
			
		||||
@@ -5431,6 +5433,11 @@ void rt2800_link_tuner(struct rt2x00_dev
 | 
			
		||||
@@ -5434,6 +5436,11 @@ void rt2800_link_tuner(struct rt2x00_dev
 | 
			
		||||
 		}
 | 
			
		||||
 		break;
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -9098,7 +9098,8 @@ static int rt2800_validate_eeprom(struct
 | 
			
		||||
@@ -9102,7 +9102,8 @@ static int rt2800_validate_eeprom(struct
 | 
			
		||||
 	word = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2);
 | 
			
		||||
 	if (abs(rt2x00_get_field16(word, EEPROM_RSSI_BG2_OFFSET2)) > 10)
 | 
			
		||||
 		rt2x00_set_field16(&word, EEPROM_RSSI_BG2_OFFSET2, 0);
 | 
			
		||||
@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 		if (rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0x00 ||
 | 
			
		||||
 		    rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0xff)
 | 
			
		||||
 			rt2x00_set_field16(&word, EEPROM_RSSI_BG2_LNA_A1,
 | 
			
		||||
@@ -9118,7 +9119,8 @@ static int rt2800_validate_eeprom(struct
 | 
			
		||||
@@ -9122,7 +9123,8 @@ static int rt2800_validate_eeprom(struct
 | 
			
		||||
 	word = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2);
 | 
			
		||||
 	if (abs(rt2x00_get_field16(word, EEPROM_RSSI_A2_OFFSET2)) > 10)
 | 
			
		||||
 		rt2x00_set_field16(&word, EEPROM_RSSI_A2_OFFSET2, 0);
 | 
			
		||||
@ -30,7 +30,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 		if (rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0x00 ||
 | 
			
		||||
 		    rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0xff)
 | 
			
		||||
 			rt2x00_set_field16(&word, EEPROM_RSSI_A2_LNA_A2,
 | 
			
		||||
@@ -9126,7 +9128,8 @@ static int rt2800_validate_eeprom(struct
 | 
			
		||||
@@ -9130,7 +9132,8 @@ static int rt2800_validate_eeprom(struct
 | 
			
		||||
 	}
 | 
			
		||||
 	rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A2, word);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -4354,6 +4354,9 @@ static u8 rt2800_compensate_txpower(stru
 | 
			
		||||
@@ -4357,6 +4357,9 @@ static u8 rt2800_compensate_txpower(stru
 | 
			
		||||
 	if (rt2x00_rt(rt2x00dev, RT3593))
 | 
			
		||||
 		return min_t(u8, txpower, 0xc);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/local-symbols
 | 
			
		||||
+++ b/local-symbols
 | 
			
		||||
@@ -299,6 +299,7 @@ RT2X00_LIB_FIRMWARE=
 | 
			
		||||
@@ -305,6 +305,7 @@ RT2X00_LIB_FIRMWARE=
 | 
			
		||||
 RT2X00_LIB_CRYPTO=
 | 
			
		||||
 RT2X00_LIB_LEDS=
 | 
			
		||||
 RT2X00_LIB_DEBUGFS=
 | 
			
		||||
@ -38,7 +38,7 @@
 | 
			
		||||
 	default y if (RT2X00_LIB=y && LEDS_CLASS=y) || (RT2X00_LIB=m && LEDS_CLASS!=n)
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/Makefile
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/Makefile
 | 
			
		||||
@@ -7,6 +7,7 @@ rt2x00lib-$(CPTCFG_RT2X00_LIB_DEBUGFS)	+
 | 
			
		||||
@@ -8,6 +8,7 @@ rt2x00lib-$(CPTCFG_RT2X00_LIB_DEBUGFS)	+
 | 
			
		||||
 rt2x00lib-$(CPTCFG_RT2X00_LIB_CRYPTO)	+= rt2x00crypto.o
 | 
			
		||||
 rt2x00lib-$(CPTCFG_RT2X00_LIB_FIRMWARE)	+= rt2x00firmware.o
 | 
			
		||||
 rt2x00lib-$(CPTCFG_RT2X00_LIB_LEDS)	+= rt2x00leds.o
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800soc.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800soc.c
 | 
			
		||||
@@ -234,10 +234,17 @@ static int rt2800soc_probe(struct platfo
 | 
			
		||||
@@ -232,10 +232,17 @@ static int rt2800soc_probe(struct platfo
 | 
			
		||||
 	return rt2x00soc_probe(pdev, &rt2800soc_ops);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,7 @@
 | 
			
		||||
 
 | 
			
		||||
 #include "rt2x00.h"
 | 
			
		||||
 #include "rt2800lib.h"
 | 
			
		||||
@@ -9285,6 +9286,17 @@ static int rt2800_init_eeprom(struct rt2
 | 
			
		||||
@@ -9291,6 +9292,17 @@ static int rt2800_init_eeprom(struct rt2
 | 
			
		||||
 	rt2800_init_led(rt2x00dev, &rt2x00dev->led_assoc, LED_TYPE_ASSOC);
 | 
			
		||||
 	rt2800_init_led(rt2x00dev, &rt2x00dev->led_qual, LED_TYPE_QUALITY);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
 | 
			
		||||
@@ -2749,6 +2749,7 @@ enum rt2800_eeprom_word {
 | 
			
		||||
@@ -2750,6 +2750,7 @@ enum rt2800_eeprom_word {
 | 
			
		||||
 #define EEPROM_NIC_CONF2_RX_STREAM	FIELD16(0x000f)
 | 
			
		||||
 #define EEPROM_NIC_CONF2_TX_STREAM	FIELD16(0x00f0)
 | 
			
		||||
 #define EEPROM_NIC_CONF2_CRYSTAL	FIELD16(0x0600)
 | 
			
		||||
@ -25,7 +25,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 | 
			
		||||
  * EEPROM LNA
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -4120,6 +4120,61 @@ static void rt2800_config_channel(struct
 | 
			
		||||
@@ -4123,6 +4123,61 @@ static void rt2800_config_channel(struct
 | 
			
		||||
 		rt2800_iq_calibrate(rt2x00dev, rf->channel);
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@ -87,7 +87,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 | 
			
		||||
 	bbp = rt2800_bbp_read(rt2x00dev, 4);
 | 
			
		||||
 	rt2x00_set_field8(&bbp, BBP4_BANDWIDTH, 2 * conf_is_ht40(conf));
 | 
			
		||||
 	rt2800_bbp_write(rt2x00dev, 4, bbp);
 | 
			
		||||
@@ -9314,7 +9369,8 @@ static int rt2800_init_eeprom(struct rt2
 | 
			
		||||
@@ -9320,7 +9375,8 @@ static int rt2800_init_eeprom(struct rt2
 | 
			
		||||
 	 */
 | 
			
		||||
 	eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1);
 | 
			
		||||
 
 | 
			
		||||
@ -97,7 +97,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 | 
			
		||||
 		if (rt2x00_get_field16(eeprom,
 | 
			
		||||
 		    EEPROM_NIC_CONF1_EXTERNAL_TX0_PA_3352))
 | 
			
		||||
 		    __set_bit(CAPABILITY_EXTERNAL_PA_TX0,
 | 
			
		||||
@@ -9325,6 +9381,18 @@ static int rt2800_init_eeprom(struct rt2
 | 
			
		||||
@@ -9331,6 +9387,18 @@ static int rt2800_init_eeprom(struct rt2
 | 
			
		||||
 			      &rt2x00dev->cap_flags);
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -4133,38 +4133,22 @@ static void rt2800_config_channel(struct
 | 
			
		||||
@@ -4136,38 +4136,22 @@ static void rt2800_config_channel(struct
 | 
			
		||||
 			reg |= 0x00000101;
 | 
			
		||||
 			rt2800_register_write(rt2x00dev, RF_BYPASS3, reg);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -14,11 +14,9 @@ Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
 | 
			
		||||
 .../net/wireless/ralink/rt2x00/rt2800usb.c    | 143 +-----------------
 | 
			
		||||
 3 files changed, 145 insertions(+), 139 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
index a567bc273ffc..9f2835729016 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -957,6 +957,47 @@ static void rt2800_rate_from_status(struct skb_frame_desc *skbdesc,
 | 
			
		||||
@@ -960,6 +960,47 @@ static void rt2800_rate_from_status(stru
 | 
			
		||||
 	skbdesc->tx_rate_flags = flags;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -66,7 +64,7 @@ index a567bc273ffc..9f2835729016 100644
 | 
			
		||||
 void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
 | 
			
		||||
 			 bool match)
 | 
			
		||||
 {
 | 
			
		||||
@@ -1059,6 +1100,103 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
 | 
			
		||||
@@ -1062,6 +1103,103 @@ void rt2800_txdone_entry(struct queue_en
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL_GPL(rt2800_txdone_entry);
 | 
			
		||||
 
 | 
			
		||||
@ -170,11 +168,9 @@ index a567bc273ffc..9f2835729016 100644
 | 
			
		||||
 static unsigned int rt2800_hw_beacon_base(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
 					  unsigned int index)
 | 
			
		||||
 {
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
 | 
			
		||||
index 51d9c2a932cc..0dff2c7b3010 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
 | 
			
		||||
@@ -195,6 +195,9 @@ void rt2800_process_rxwi(struct queue_entry *entry, struct rxdone_entry_desc *tx
 | 
			
		||||
@@ -206,6 +206,9 @@ void rt2800_process_rxwi(struct queue_en
 | 
			
		||||
 
 | 
			
		||||
 void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
 | 
			
		||||
 			 bool match);
 | 
			
		||||
@ -184,11 +180,9 @@ index 51d9c2a932cc..0dff2c7b3010 100644
 | 
			
		||||
 
 | 
			
		||||
 void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc);
 | 
			
		||||
 void rt2800_clear_beacon(struct queue_entry *entry);
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
 | 
			
		||||
index 98a7313fea4a..19eabf16147b 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
 | 
			
		||||
@@ -116,35 +116,6 @@ static bool rt2800usb_txstatus_pending(struct rt2x00_dev *rt2x00dev)
 | 
			
		||||
@@ -116,35 +116,6 @@ static bool rt2800usb_txstatus_pending(s
 | 
			
		||||
 	return false;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -224,7 +218,7 @@ index 98a7313fea4a..19eabf16147b 100644
 | 
			
		||||
 #define TXSTATUS_READ_INTERVAL 1000000
 | 
			
		||||
 
 | 
			
		||||
 static bool rt2800usb_tx_sta_fifo_read_completed(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
@@ -171,7 +142,7 @@ static bool rt2800usb_tx_sta_fifo_read_completed(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
@@ -171,7 +142,7 @@ static bool rt2800usb_tx_sta_fifo_read_c
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 	/* Check if there is any entry that timedout waiting on TX status */
 | 
			
		||||
@ -233,7 +227,7 @@ index 98a7313fea4a..19eabf16147b 100644
 | 
			
		||||
 		queue_work(rt2x00dev->workqueue, &rt2x00dev->txdone_work);
 | 
			
		||||
 
 | 
			
		||||
 	if (rt2800usb_txstatus_pending(rt2x00dev)) {
 | 
			
		||||
@@ -501,123 +472,17 @@ static int rt2800usb_get_tx_data_len(struct queue_entry *entry)
 | 
			
		||||
@@ -501,123 +472,17 @@ static int rt2800usb_get_tx_data_len(str
 | 
			
		||||
 /*
 | 
			
		||||
  * TX control handlers
 | 
			
		||||
  */
 | 
			
		||||
@ -360,6 +354,3 @@ index 98a7313fea4a..19eabf16147b 100644
 | 
			
		||||
 
 | 
			
		||||
 		/*
 | 
			
		||||
 		 * The hw may delay sending the packet after DMA complete
 | 
			
		||||
-- 
 | 
			
		||||
2.18.0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -19,11 +19,9 @@ Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
 | 
			
		||||
 .../net/wireless/ralink/rt2x00/rt2x00queue.c  |   1 +
 | 
			
		||||
 2 files changed, 9 insertions(+), 172 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
 | 
			
		||||
index e1a7ed7e4892..aa8449a5e8fe 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
 | 
			
		||||
@@ -175,161 +175,6 @@ static void rt2800mmio_wakeup(struct rt2x00_dev *rt2x00dev)
 | 
			
		||||
@@ -175,161 +175,6 @@ static void rt2800mmio_wakeup(struct rt2
 | 
			
		||||
 	rt2800_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -185,7 +183,7 @@ index e1a7ed7e4892..aa8449a5e8fe 100644
 | 
			
		||||
 static inline void rt2800mmio_enable_interrupt(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
 					       struct rt2x00_field32 irq_field)
 | 
			
		||||
 {
 | 
			
		||||
@@ -349,14 +194,14 @@ static inline void rt2800mmio_enable_interrupt(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
@@ -349,14 +194,14 @@ static inline void rt2800mmio_enable_int
 | 
			
		||||
 void rt2800mmio_txstatus_tasklet(unsigned long data)
 | 
			
		||||
 {
 | 
			
		||||
 	struct rt2x00_dev *rt2x00dev = (struct rt2x00_dev *)data;
 | 
			
		||||
@ -207,7 +205,7 @@ index e1a7ed7e4892..aa8449a5e8fe 100644
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL_GPL(rt2800mmio_txstatus_tasklet);
 | 
			
		||||
 
 | 
			
		||||
@@ -440,10 +285,6 @@ static void rt2800mmio_txstatus_interrupt(struct rt2x00_dev *rt2x00dev)
 | 
			
		||||
@@ -440,10 +285,6 @@ static void rt2800mmio_txstatus_interrup
 | 
			
		||||
 	 * because we can schedule the tasklet multiple times (when the
 | 
			
		||||
 	 * interrupt fires again during tx status processing).
 | 
			
		||||
 	 *
 | 
			
		||||
@ -218,7 +216,7 @@ index e1a7ed7e4892..aa8449a5e8fe 100644
 | 
			
		||||
 	 * Since we have only one producer and one consumer we don't
 | 
			
		||||
 	 * need to lock the kfifo.
 | 
			
		||||
 	 */
 | 
			
		||||
@@ -485,13 +326,8 @@ irqreturn_t rt2800mmio_interrupt(int irq, void *dev_instance)
 | 
			
		||||
@@ -485,13 +326,8 @@ irqreturn_t rt2800mmio_interrupt(int irq
 | 
			
		||||
 	 */
 | 
			
		||||
 	mask = ~reg;
 | 
			
		||||
 
 | 
			
		||||
@ -233,11 +231,9 @@ index e1a7ed7e4892..aa8449a5e8fe 100644
 | 
			
		||||
 
 | 
			
		||||
 	if (rt2x00_get_field32(reg, INT_SOURCE_CSR_PRE_TBTT))
 | 
			
		||||
 		tasklet_hi_schedule(&rt2x00dev->pretbtt_tasklet);
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
 | 
			
		||||
index 710e9641552e..6e8beb7ea350 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
 | 
			
		||||
@@ -113,6 +113,7 @@ int rt2x00queue_map_txskb(struct queue_entry *entry)
 | 
			
		||||
@@ -113,6 +113,7 @@ int rt2x00queue_map_txskb(struct queue_e
 | 
			
		||||
 		return -ENOMEM;
 | 
			
		||||
 
 | 
			
		||||
 	skbdesc->flags |= SKBDESC_DMA_MAPPED_TX;
 | 
			
		||||
@ -245,6 +241,3 @@ index 710e9641552e..6e8beb7ea350 100644
 | 
			
		||||
 	return 0;
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL_GPL(rt2x00queue_map_txskb);
 | 
			
		||||
-- 
 | 
			
		||||
2.18.0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -15,11 +15,9 @@ Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
 | 
			
		||||
 drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 1 +
 | 
			
		||||
 4 files changed, 12 insertions(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
index 9f2835729016..0c56c7dca55f 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -1158,11 +1158,18 @@ bool rt2800_txstatus_timeout(struct rt2x00_dev *rt2x00dev)
 | 
			
		||||
@@ -1161,11 +1161,18 @@ bool rt2800_txstatus_timeout(struct rt2x
 | 
			
		||||
 	struct data_queue *queue;
 | 
			
		||||
 	struct queue_entry *entry;
 | 
			
		||||
 
 | 
			
		||||
@ -38,11 +36,9 @@ index 9f2835729016..0c56c7dca55f 100644
 | 
			
		||||
 	return false;
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL_GPL(rt2800_txstatus_timeout);
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
 | 
			
		||||
index aa8449a5e8fe..d0426314c2df 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
 | 
			
		||||
@@ -197,7 +197,8 @@ void rt2800mmio_txstatus_tasklet(unsigned long data)
 | 
			
		||||
@@ -197,7 +197,8 @@ void rt2800mmio_txstatus_tasklet(unsigne
 | 
			
		||||
 
 | 
			
		||||
 	rt2800_txdone(rt2x00dev);
 | 
			
		||||
 
 | 
			
		||||
@ -52,11 +48,9 @@ index aa8449a5e8fe..d0426314c2df 100644
 | 
			
		||||
 
 | 
			
		||||
 	if (test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
 | 
			
		||||
 		rt2800mmio_enable_interrupt(rt2x00dev,
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
index a279a4363bc1..af062cda4a23 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
@@ -980,6 +980,8 @@ struct rt2x00_dev {
 | 
			
		||||
@@ -988,6 +988,8 @@ struct rt2x00_dev {
 | 
			
		||||
 	 */
 | 
			
		||||
 	DECLARE_KFIFO_PTR(txstatus_fifo, u32);
 | 
			
		||||
 
 | 
			
		||||
@ -65,11 +59,9 @@ index a279a4363bc1..af062cda4a23 100644
 | 
			
		||||
 	/*
 | 
			
		||||
 	 * Timer to ensure tx status reports are read (rt2800usb).
 | 
			
		||||
 	 */
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
 | 
			
		||||
index 6e8beb7ea350..92ddc19e7bf7 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
 | 
			
		||||
@@ -1039,6 +1039,7 @@ void rt2x00queue_start_queues(struct rt2x00_dev *rt2x00dev)
 | 
			
		||||
@@ -1039,6 +1039,7 @@ void rt2x00queue_start_queues(struct rt2
 | 
			
		||||
 	 */
 | 
			
		||||
 	tx_queue_for_each(rt2x00dev, queue)
 | 
			
		||||
 		rt2x00queue_start_queue(queue);
 | 
			
		||||
@ -77,6 +69,3 @@ index 6e8beb7ea350..92ddc19e7bf7 100644
 | 
			
		||||
 
 | 
			
		||||
 	rt2x00queue_start_queue(rt2x00dev->rx);
 | 
			
		||||
 }
 | 
			
		||||
-- 
 | 
			
		||||
2.18.0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -16,11 +16,9 @@ Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
 | 
			
		||||
 .../net/wireless/ralink/rt2x00/rt2x00mac.c    |  4 +++
 | 
			
		||||
 3 files changed, 26 insertions(+), 10 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
index 0c56c7dca55f..595cb9c90b81 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -1137,36 +1137,47 @@ void rt2800_txdone(struct rt2x00_dev *rt2x00dev)
 | 
			
		||||
@@ -1140,36 +1140,47 @@ void rt2800_txdone(struct rt2x00_dev *rt
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL_GPL(rt2800_txdone);
 | 
			
		||||
 
 | 
			
		||||
@ -77,7 +75,7 @@ index 0c56c7dca55f..595cb9c90b81 100644
 | 
			
		||||
 			return true;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@@ -1195,7 +1206,7 @@ void rt2800_txdone_nostatus(struct rt2x00_dev *rt2x00dev)
 | 
			
		||||
@@ -1198,7 +1209,7 @@ void rt2800_txdone_nostatus(struct rt2x0
 | 
			
		||||
 				break;
 | 
			
		||||
 
 | 
			
		||||
 			if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags) ||
 | 
			
		||||
@ -86,11 +84,9 @@ index 0c56c7dca55f..595cb9c90b81 100644
 | 
			
		||||
 				rt2x00lib_txdone_noinfo(entry, TXDONE_FAILURE);
 | 
			
		||||
 			else
 | 
			
		||||
 				break;
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
index af062cda4a23..4b1744e9fb78 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
@@ -665,6 +665,7 @@ enum rt2x00_state_flags {
 | 
			
		||||
@@ -667,6 +667,7 @@ enum rt2x00_state_flags {
 | 
			
		||||
 	DEVICE_STATE_STARTED,
 | 
			
		||||
 	DEVICE_STATE_ENABLED_RADIO,
 | 
			
		||||
 	DEVICE_STATE_SCANNING,
 | 
			
		||||
@ -98,11 +94,9 @@ index af062cda4a23..4b1744e9fb78 100644
 | 
			
		||||
 
 | 
			
		||||
 	/*
 | 
			
		||||
 	 * Driver configuration
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
 | 
			
		||||
index fa2fd64084ac..2825560e2424 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
 | 
			
		||||
@@ -720,8 +720,12 @@ void rt2x00mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		||||
@@ -720,8 +720,12 @@ void rt2x00mac_flush(struct ieee80211_hw
 | 
			
		||||
 	if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
 | 
			
		||||
 		return;
 | 
			
		||||
 
 | 
			
		||||
@ -115,6 +109,3 @@ index fa2fd64084ac..2825560e2424 100644
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL_GPL(rt2x00mac_flush);
 | 
			
		||||
 
 | 
			
		||||
-- 
 | 
			
		||||
2.18.0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -14,11 +14,9 @@ Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
 | 
			
		||||
 .../net/wireless/ralink/rt2x00/rt2800pci.c    |   2 +-
 | 
			
		||||
 4 files changed, 99 insertions(+), 38 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
index 595cb9c90b81..9e7b8933d30c 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -1147,7 +1147,7 @@ static inline bool rt2800_entry_txstatus_timeout(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
@@ -1150,7 +1150,7 @@ static inline bool rt2800_entry_txstatus
 | 
			
		||||
 		return false;
 | 
			
		||||
 
 | 
			
		||||
 	if (test_bit(DEVICE_STATE_FLUSHING, &rt2x00dev->flags))
 | 
			
		||||
@ -27,7 +25,7 @@ index 595cb9c90b81..9e7b8933d30c 100644
 | 
			
		||||
 	else
 | 
			
		||||
 		tout = msecs_to_jiffies(2000);
 | 
			
		||||
 
 | 
			
		||||
@@ -1163,15 +1163,13 @@ bool rt2800_txstatus_timeout(struct rt2x00_dev *rt2x00dev)
 | 
			
		||||
@@ -1166,15 +1166,13 @@ bool rt2800_txstatus_timeout(struct rt2x
 | 
			
		||||
 {
 | 
			
		||||
 	struct data_queue *queue;
 | 
			
		||||
 	struct queue_entry *entry;
 | 
			
		||||
@ -48,11 +46,9 @@ index 595cb9c90b81..9e7b8933d30c 100644
 | 
			
		||||
 
 | 
			
		||||
 	rt2x00dev->last_nostatus_check = jiffies;
 | 
			
		||||
 
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
 | 
			
		||||
index d0426314c2df..7d83dabb913d 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
 | 
			
		||||
@@ -191,21 +191,6 @@ static inline void rt2800mmio_enable_interrupt(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
@@ -191,21 +191,6 @@ static inline void rt2800mmio_enable_int
 | 
			
		||||
 	spin_unlock_irq(&rt2x00dev->irqmask_lock);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -74,7 +70,7 @@ index d0426314c2df..7d83dabb913d 100644
 | 
			
		||||
 void rt2800mmio_pretbtt_tasklet(unsigned long data)
 | 
			
		||||
 {
 | 
			
		||||
 	struct rt2x00_dev *rt2x00dev = (struct rt2x00_dev *)data;
 | 
			
		||||
@@ -270,12 +255,26 @@ void rt2800mmio_autowake_tasklet(unsigned long data)
 | 
			
		||||
@@ -270,12 +255,26 @@ void rt2800mmio_autowake_tasklet(unsigne
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL_GPL(rt2800mmio_autowake_tasklet);
 | 
			
		||||
 
 | 
			
		||||
@ -104,7 +100,7 @@ index d0426314c2df..7d83dabb913d 100644
 | 
			
		||||
 	 * The TX_FIFO_STATUS interrupt needs special care. We should
 | 
			
		||||
 	 * read TX_STA_FIFO but we should do it immediately as otherwise
 | 
			
		||||
 	 * the register can overflow and we would lose status reports.
 | 
			
		||||
@@ -286,25 +285,37 @@ static void rt2800mmio_txstatus_interrupt(struct rt2x00_dev *rt2x00dev)
 | 
			
		||||
@@ -286,25 +285,37 @@ static void rt2800mmio_txstatus_interrup
 | 
			
		||||
 	 * because we can schedule the tasklet multiple times (when the
 | 
			
		||||
 	 * interrupt fires again during tx status processing).
 | 
			
		||||
 	 *
 | 
			
		||||
@ -151,7 +147,7 @@ index d0426314c2df..7d83dabb913d 100644
 | 
			
		||||
 irqreturn_t rt2800mmio_interrupt(int irq, void *dev_instance)
 | 
			
		||||
 {
 | 
			
		||||
 	struct rt2x00_dev *rt2x00dev = dev_instance;
 | 
			
		||||
@@ -327,8 +338,10 @@ irqreturn_t rt2800mmio_interrupt(int irq, void *dev_instance)
 | 
			
		||||
@@ -327,8 +338,10 @@ irqreturn_t rt2800mmio_interrupt(int irq
 | 
			
		||||
 	 */
 | 
			
		||||
 	mask = ~reg;
 | 
			
		||||
 
 | 
			
		||||
@ -164,7 +160,7 @@ index d0426314c2df..7d83dabb913d 100644
 | 
			
		||||
 
 | 
			
		||||
 	if (rt2x00_get_field32(reg, INT_SOURCE_CSR_PRE_TBTT))
 | 
			
		||||
 		tasklet_hi_schedule(&rt2x00dev->pretbtt_tasklet);
 | 
			
		||||
@@ -453,6 +466,55 @@ void rt2800mmio_kick_queue(struct data_queue *queue)
 | 
			
		||||
@@ -453,6 +466,55 @@ void rt2800mmio_kick_queue(struct data_q
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL_GPL(rt2800mmio_kick_queue);
 | 
			
		||||
 
 | 
			
		||||
@ -220,11 +216,9 @@ index d0426314c2df..7d83dabb913d 100644
 | 
			
		||||
 void rt2800mmio_stop_queue(struct data_queue *queue)
 | 
			
		||||
 {
 | 
			
		||||
 	struct rt2x00_dev *rt2x00dev = queue->rt2x00dev;
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.h b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.h
 | 
			
		||||
index b63312ce3f27..3a513273f414 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.h
 | 
			
		||||
@@ -148,6 +148,7 @@ void rt2800mmio_toggle_irq(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
@@ -148,6 +148,7 @@ void rt2800mmio_toggle_irq(struct rt2x00
 | 
			
		||||
 /* Queue handlers */
 | 
			
		||||
 void rt2800mmio_start_queue(struct data_queue *queue);
 | 
			
		||||
 void rt2800mmio_kick_queue(struct data_queue *queue);
 | 
			
		||||
@ -232,11 +226,9 @@ index b63312ce3f27..3a513273f414 100644
 | 
			
		||||
 void rt2800mmio_stop_queue(struct data_queue *queue);
 | 
			
		||||
 void rt2800mmio_queue_init(struct data_queue *queue);
 | 
			
		||||
 
 | 
			
		||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800pci.c b/drivers/net/wireless/ralink/rt2x00/rt2800pci.c
 | 
			
		||||
index 71b1affc3885..0291441ac548 100644
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800pci.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800pci.c
 | 
			
		||||
@@ -364,7 +364,7 @@ static const struct rt2x00lib_ops rt2800pci_rt2x00_ops = {
 | 
			
		||||
@@ -364,7 +364,7 @@ static const struct rt2x00lib_ops rt2800
 | 
			
		||||
 	.start_queue		= rt2800mmio_start_queue,
 | 
			
		||||
 	.kick_queue		= rt2800mmio_kick_queue,
 | 
			
		||||
 	.stop_queue		= rt2800mmio_stop_queue,
 | 
			
		||||
@ -245,6 +237,3 @@ index 71b1affc3885..0291441ac548 100644
 | 
			
		||||
 	.write_tx_desc		= rt2800mmio_write_tx_desc,
 | 
			
		||||
 	.write_tx_data		= rt2800_write_tx_data,
 | 
			
		||||
 	.write_beacon		= rt2800_write_beacon,
 | 
			
		||||
-- 
 | 
			
		||||
2.18.0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -16,7 +16,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -8717,6 +8717,24 @@ static void rt2800_init_rfcsr_6352(struc
 | 
			
		||||
@@ -8875,6 +8875,24 @@ static void rt2800_init_rfcsr_6352(struc
 | 
			
		||||
 	rt2800_rfcsr_write_chanreg(rt2x00dev, 58, 0x02);
 | 
			
		||||
 	rt2800_rfcsr_write_chanreg(rt2x00dev, 60, 0xC7);
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -7652,6 +7652,58 @@ static void rt2800_init_rfcsr_5592(struc
 | 
			
		||||
@@ -8331,6 +8331,58 @@ static void rt2800_init_rfcsr_5592(struc
 | 
			
		||||
 	rt2800_led_open_drain_enable(rt2x00dev);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -59,7 +59,7 @@
 | 
			
		||||
 static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
 				       bool set_bw, bool is_ht40)
 | 
			
		||||
 {
 | 
			
		||||
@@ -8259,6 +8311,7 @@ static void rt2800_init_rfcsr_6352(struc
 | 
			
		||||
@@ -8956,6 +9008,7 @@ static void rt2800_init_rfcsr_6352(struc
 | 
			
		||||
 	rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x00);
 | 
			
		||||
 	rt2800_rfcsr_write_dccal(rt2x00dev, 17, 0x7C);
 | 
			
		||||
 
 | 
			
		||||
@ -69,7 +69,7 @@
 | 
			
		||||
 }
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
 | 
			
		||||
@@ -227,6 +227,7 @@ void rt2800_link_tuner(struct rt2x00_dev
 | 
			
		||||
@@ -242,6 +242,7 @@ void rt2800_link_tuner(struct rt2x00_dev
 | 
			
		||||
 		       const u32 count);
 | 
			
		||||
 void rt2800_gain_calibration(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
@ -79,7 +79,7 @@
 | 
			
		||||
 void rt2800_disable_radio(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
@@ -570,6 +570,7 @@ struct rt2x00lib_ops {
 | 
			
		||||
@@ -572,6 +572,7 @@ struct rt2x00lib_ops {
 | 
			
		||||
 			    struct link_qual *qual, const u32 count);
 | 
			
		||||
 	void (*gain_calibration) (struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 	void (*vco_calibration) (struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -7704,6 +7704,160 @@ void rt2800_rf_self_txdc_cal(struct rt2x
 | 
			
		||||
@@ -8383,6 +8383,160 @@ void rt2800_rf_self_txdc_cal(struct rt2x
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL_GPL(rt2800_rf_self_txdc_cal);
 | 
			
		||||
 
 | 
			
		||||
@ -161,7 +161,7 @@
 | 
			
		||||
 static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
 				       bool set_bw, bool is_ht40)
 | 
			
		||||
 {
 | 
			
		||||
@@ -8311,6 +8465,7 @@ static void rt2800_init_rfcsr_6352(struc
 | 
			
		||||
@@ -9008,6 +9162,7 @@ static void rt2800_init_rfcsr_6352(struc
 | 
			
		||||
 	rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x00);
 | 
			
		||||
 	rt2800_rfcsr_write_dccal(rt2x00dev, 17, 0x7C);
 | 
			
		||||
 
 | 
			
		||||
@ -171,7 +171,7 @@
 | 
			
		||||
 	rt2800_bw_filter_calibration(rt2x00dev, false);
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
 | 
			
		||||
@@ -228,6 +228,8 @@ void rt2800_link_tuner(struct rt2x00_dev
 | 
			
		||||
@@ -243,6 +243,8 @@ void rt2800_link_tuner(struct rt2x00_dev
 | 
			
		||||
 void rt2800_gain_calibration(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 void rt2800_rf_self_txdc_cal(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
@ -182,7 +182,7 @@
 | 
			
		||||
 void rt2800_disable_radio(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
@@ -571,6 +571,8 @@ struct rt2x00lib_ops {
 | 
			
		||||
@@ -573,6 +573,8 @@ struct rt2x00lib_ops {
 | 
			
		||||
 	void (*gain_calibration) (struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 	void (*vco_calibration) (struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 	void (*rf_self_txdc_cal) (struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -7858,6 +7858,71 @@ void rt2800_r_calibration(struct rt2x00_
 | 
			
		||||
@@ -8537,6 +8537,71 @@ void rt2800_r_calibration(struct rt2x00_
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL_GPL(rt2800_r_calibration);
 | 
			
		||||
 
 | 
			
		||||
@ -72,7 +72,7 @@
 | 
			
		||||
 static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
 				       bool set_bw, bool is_ht40)
 | 
			
		||||
 {
 | 
			
		||||
@@ -8467,6 +8532,7 @@ static void rt2800_init_rfcsr_6352(struc
 | 
			
		||||
@@ -9164,6 +9229,7 @@ static void rt2800_init_rfcsr_6352(struc
 | 
			
		||||
 
 | 
			
		||||
 	rt2800_r_calibration(rt2x00dev);
 | 
			
		||||
 	rt2800_rf_self_txdc_cal(rt2x00dev);
 | 
			
		||||
@ -82,7 +82,7 @@
 | 
			
		||||
 }
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
 | 
			
		||||
@@ -230,6 +230,7 @@ void rt2800_vco_calibration(struct rt2x0
 | 
			
		||||
@@ -245,6 +245,7 @@ void rt2800_vco_calibration(struct rt2x0
 | 
			
		||||
 void rt2800_rf_self_txdc_cal(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 int rt2800_calcrcalibrationcode(struct rt2x00_dev *rt2x00dev, int d1, int d2);
 | 
			
		||||
 void rt2800_r_calibration(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
@ -92,7 +92,7 @@
 | 
			
		||||
 void rt2800_disable_radio(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
@@ -573,6 +573,7 @@ struct rt2x00lib_ops {
 | 
			
		||||
@@ -575,6 +575,7 @@ struct rt2x00lib_ops {
 | 
			
		||||
 	void (*rf_self_txdc_cal) (struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 	int (*calcrcalibrationcode) (struct rt2x00_dev *rt2x00dev, int d1, int d2);
 | 
			
		||||
 	void (*r_calibration) (struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -7923,6 +7923,386 @@ void rt2800_rxdcoc_calibration(struct rt
 | 
			
		||||
@@ -8602,6 +8602,386 @@ void rt2800_rxdcoc_calibration(struct rt
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL_GPL(rt2800_rxdcoc_calibration);
 | 
			
		||||
 
 | 
			
		||||
@ -387,7 +387,7 @@
 | 
			
		||||
 static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
 				       bool set_bw, bool is_ht40)
 | 
			
		||||
 {
 | 
			
		||||
@@ -8535,6 +8915,7 @@ static void rt2800_init_rfcsr_6352(struc
 | 
			
		||||
@@ -9232,6 +9612,7 @@ static void rt2800_init_rfcsr_6352(struc
 | 
			
		||||
 	rt2800_rxdcoc_calibration(rt2x00dev);
 | 
			
		||||
 	rt2800_bw_filter_calibration(rt2x00dev, true);
 | 
			
		||||
 	rt2800_bw_filter_calibration(rt2x00dev, false);
 | 
			
		||||
@ -397,7 +397,7 @@
 | 
			
		||||
 static void rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
 | 
			
		||||
@@ -231,6 +231,7 @@ void rt2800_rf_self_txdc_cal(struct rt2x
 | 
			
		||||
@@ -246,6 +246,7 @@ void rt2800_rf_self_txdc_cal(struct rt2x
 | 
			
		||||
 int rt2800_calcrcalibrationcode(struct rt2x00_dev *rt2x00dev, int d1, int d2);
 | 
			
		||||
 void rt2800_r_calibration(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 void rt2800_rxdcoc_calibration(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
@ -407,7 +407,7 @@
 | 
			
		||||
 void rt2800_disable_radio(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
@@ -574,6 +574,7 @@ struct rt2x00lib_ops {
 | 
			
		||||
@@ -576,6 +576,7 @@ struct rt2x00lib_ops {
 | 
			
		||||
 	int (*calcrcalibrationcode) (struct rt2x00_dev *rt2x00dev, int d1, int d2);
 | 
			
		||||
 	void (*r_calibration) (struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 	void (*rxdcoc_calibration) (struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
 | 
			
		||||
@@ -8303,6 +8303,957 @@ restore_value:
 | 
			
		||||
@@ -8982,6 +8982,957 @@ restore_value:
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL_GPL(rt2800_rxiq_calibration);
 | 
			
		||||
 
 | 
			
		||||
@ -958,7 +958,7 @@
 | 
			
		||||
 static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
 | 
			
		||||
 				       bool set_bw, bool is_ht40)
 | 
			
		||||
 {
 | 
			
		||||
@@ -8915,6 +9866,7 @@ static void rt2800_init_rfcsr_6352(struc
 | 
			
		||||
@@ -9612,6 +10563,7 @@ static void rt2800_init_rfcsr_6352(struc
 | 
			
		||||
 	rt2800_rxdcoc_calibration(rt2x00dev);
 | 
			
		||||
 	rt2800_bw_filter_calibration(rt2x00dev, true);
 | 
			
		||||
 	rt2800_bw_filter_calibration(rt2x00dev, false);
 | 
			
		||||
@ -985,7 +985,7 @@
 | 
			
		||||
 
 | 
			
		||||
 /* RT2800 driver data structure */
 | 
			
		||||
 struct rt2800_drv_data {
 | 
			
		||||
@@ -232,6 +242,7 @@ int rt2800_calcrcalibrationcode(struct r
 | 
			
		||||
@@ -247,6 +257,7 @@ int rt2800_calcrcalibrationcode(struct r
 | 
			
		||||
 void rt2800_r_calibration(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 void rt2800_rxdcoc_calibration(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 void rt2800_rxiq_calibration(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
@ -995,7 +995,7 @@
 | 
			
		||||
 void rt2800_disable_radio(struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
 | 
			
		||||
@@ -575,6 +575,7 @@ struct rt2x00lib_ops {
 | 
			
		||||
@@ -577,6 +577,7 @@ struct rt2x00lib_ops {
 | 
			
		||||
 	void (*r_calibration) (struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 	void (*rxdcoc_calibration) (struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 	void (*rxiq_calibration) (struct rt2x00_dev *rt2x00dev);
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/net/mac80211/Makefile
 | 
			
		||||
+++ b/net/mac80211/Makefile
 | 
			
		||||
@@ -6,7 +6,6 @@ mac80211-y := \
 | 
			
		||||
@@ -7,7 +7,6 @@ mac80211-y := \
 | 
			
		||||
 	driver-ops.o \
 | 
			
		||||
 	sta_info.o \
 | 
			
		||||
 	wep.o \
 | 
			
		||||
@ -8,7 +8,7 @@
 | 
			
		||||
 	wpa.o \
 | 
			
		||||
 	scan.o offchannel.o \
 | 
			
		||||
 	ht.o agg-tx.o agg-rx.o \
 | 
			
		||||
@@ -16,8 +15,8 @@ mac80211-y := \
 | 
			
		||||
@@ -18,8 +17,8 @@ mac80211-y := \
 | 
			
		||||
 	rate.o \
 | 
			
		||||
 	michael.o \
 | 
			
		||||
 	tkip.o \
 | 
			
		||||
@ -385,7 +385,7 @@
 | 
			
		||||
 #endif /* AES_GCM_H */
 | 
			
		||||
--- a/net/mac80211/wpa.c
 | 
			
		||||
+++ b/net/mac80211/wpa.c
 | 
			
		||||
@@ -306,7 +306,8 @@ ieee80211_crypto_tkip_decrypt(struct iee
 | 
			
		||||
@@ -314,7 +314,8 @@ ieee80211_crypto_tkip_decrypt(struct iee
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
@ -395,7 +395,7 @@
 | 
			
		||||
 {
 | 
			
		||||
 	__le16 mask_fc;
 | 
			
		||||
 	int a4_included, mgmt;
 | 
			
		||||
@@ -336,14 +337,8 @@ static void ccmp_special_blocks(struct s
 | 
			
		||||
@@ -344,14 +345,8 @@ static void ccmp_special_blocks(struct s
 | 
			
		||||
 	else
 | 
			
		||||
 		qos_tid = 0;
 | 
			
		||||
 
 | 
			
		||||
@ -412,7 +412,7 @@
 | 
			
		||||
 
 | 
			
		||||
 	/* Nonce: Nonce Flags | A2 | PN
 | 
			
		||||
 	 * Nonce Flags: Priority (b0..b3) | Management (b4) | Reserved (b5..b7)
 | 
			
		||||
@@ -351,6 +346,8 @@ static void ccmp_special_blocks(struct s
 | 
			
		||||
@@ -359,6 +354,8 @@ static void ccmp_special_blocks(struct s
 | 
			
		||||
 	b_0[1] = qos_tid | (mgmt << 4);
 | 
			
		||||
 	memcpy(&b_0[2], hdr->addr2, ETH_ALEN);
 | 
			
		||||
 	memcpy(&b_0[8], pn, IEEE80211_CCMP_PN_LEN);
 | 
			
		||||
@ -421,7 +421,7 @@
 | 
			
		||||
 
 | 
			
		||||
 	/* AAD (extra authenticate-only data) / masked 802.11 header
 | 
			
		||||
 	 * FC | A1 | A2 | A3 | SC | [A4] | [QC] */
 | 
			
		||||
@@ -407,7 +404,7 @@ static int ccmp_encrypt_skb(struct ieee8
 | 
			
		||||
@@ -415,7 +412,7 @@ static int ccmp_encrypt_skb(struct ieee8
 | 
			
		||||
 	u8 *pos;
 | 
			
		||||
 	u8 pn[6];
 | 
			
		||||
 	u64 pn64;
 | 
			
		||||
@ -430,7 +430,7 @@
 | 
			
		||||
 	u8 b_0[AES_BLOCK_SIZE];
 | 
			
		||||
 
 | 
			
		||||
 	if (info->control.hw_key &&
 | 
			
		||||
@@ -462,9 +459,11 @@ static int ccmp_encrypt_skb(struct ieee8
 | 
			
		||||
@@ -470,9 +467,11 @@ static int ccmp_encrypt_skb(struct ieee8
 | 
			
		||||
 		return 0;
 | 
			
		||||
 
 | 
			
		||||
 	pos += IEEE80211_CCMP_HDR_LEN;
 | 
			
		||||
@ -445,7 +445,7 @@
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
@@ -537,13 +536,13 @@ ieee80211_crypto_ccmp_decrypt(struct iee
 | 
			
		||||
@@ -545,13 +544,13 @@ ieee80211_crypto_ccmp_decrypt(struct iee
 | 
			
		||||
 			u8 aad[2 * AES_BLOCK_SIZE];
 | 
			
		||||
 			u8 b_0[AES_BLOCK_SIZE];
 | 
			
		||||
 			/* hardware didn't decrypt/verify MIC */
 | 
			
		||||
@ -461,7 +461,7 @@
 | 
			
		||||
 				return RX_DROP_UNUSABLE;
 | 
			
		||||
 		}
 | 
			
		||||
 
 | 
			
		||||
@@ -639,7 +638,7 @@ static int gcmp_encrypt_skb(struct ieee8
 | 
			
		||||
@@ -646,7 +645,7 @@ static int gcmp_encrypt_skb(struct ieee8
 | 
			
		||||
 	u8 *pos;
 | 
			
		||||
 	u8 pn[6];
 | 
			
		||||
 	u64 pn64;
 | 
			
		||||
@ -470,7 +470,7 @@
 | 
			
		||||
 	u8 j_0[AES_BLOCK_SIZE];
 | 
			
		||||
 
 | 
			
		||||
 	if (info->control.hw_key &&
 | 
			
		||||
@@ -696,8 +695,10 @@ static int gcmp_encrypt_skb(struct ieee8
 | 
			
		||||
@@ -703,8 +702,10 @@ static int gcmp_encrypt_skb(struct ieee8
 | 
			
		||||
 
 | 
			
		||||
 	pos += IEEE80211_GCMP_HDR_LEN;
 | 
			
		||||
 	gcmp_special_blocks(skb, pn, j_0, aad);
 | 
			
		||||
@ -483,7 +483,7 @@
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 ieee80211_tx_result
 | 
			
		||||
@@ -1121,9 +1122,9 @@ ieee80211_crypto_aes_gmac_encrypt(struct
 | 
			
		||||
@@ -1127,9 +1128,9 @@ ieee80211_crypto_aes_gmac_encrypt(struct
 | 
			
		||||
 	struct ieee80211_key *key = tx->key;
 | 
			
		||||
 	struct ieee80211_mmie_16 *mmie;
 | 
			
		||||
 	struct ieee80211_hdr *hdr;
 | 
			
		||||
@ -495,7 +495,7 @@
 | 
			
		||||
 
 | 
			
		||||
 	if (WARN_ON(skb_queue_len(&tx->skbs) != 1))
 | 
			
		||||
 		return TX_DROP;
 | 
			
		||||
@@ -1169,7 +1170,7 @@ ieee80211_crypto_aes_gmac_decrypt(struct
 | 
			
		||||
@@ -1175,7 +1176,7 @@ ieee80211_crypto_aes_gmac_decrypt(struct
 | 
			
		||||
 	struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
 | 
			
		||||
 	struct ieee80211_key *key = rx->key;
 | 
			
		||||
 	struct ieee80211_mmie_16 *mmie;
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@ Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnects
 | 
			
		||||
 | 
			
		||||
--- a/net/mac80211/cfg.c
 | 
			
		||||
+++ b/net/mac80211/cfg.c
 | 
			
		||||
@@ -1058,7 +1058,6 @@ static int ieee80211_stop_ap(struct wiph
 | 
			
		||||
@@ -1063,7 +1063,6 @@ static int ieee80211_stop_ap(struct wiph
 | 
			
		||||
 	sdata->u.ap.driver_smps_mode = IEEE80211_SMPS_OFF;
 | 
			
		||||
 
 | 
			
		||||
 	__sta_info_flush(sdata, true);
 | 
			
		||||
 | 
			
		||||
@ -21,7 +21,7 @@ Disable FILS support, since it pulls in crypto hash support
 | 
			
		||||
  * Copyright 2016, Qualcomm Atheros, Inc.
 | 
			
		||||
--- a/net/mac80211/main.c
 | 
			
		||||
+++ b/net/mac80211/main.c
 | 
			
		||||
@@ -550,7 +550,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_
 | 
			
		||||
@@ -570,7 +570,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_
 | 
			
		||||
 			   NL80211_FEATURE_MAC_ON_CREATE |
 | 
			
		||||
 			   NL80211_FEATURE_USERSPACE_MPM |
 | 
			
		||||
 			   NL80211_FEATURE_FULL_AP_CLIENT_STATE;
 | 
			
		||||
@ -29,4 +29,4 @@ Disable FILS support, since it pulls in crypto hash support
 | 
			
		||||
+#if 0 /* LINUX_VERSION_IS_GEQ(4,3,0) */
 | 
			
		||||
 	wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_FILS_STA);
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
 	wiphy_ext_feature_set(wiphy,
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/net/mac80211/tx.c
 | 
			
		||||
+++ b/net/mac80211/tx.c
 | 
			
		||||
@@ -3750,6 +3750,12 @@ out:
 | 
			
		||||
@@ -3787,6 +3787,12 @@ out:
 | 
			
		||||
 netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
 | 
			
		||||
 				       struct net_device *dev)
 | 
			
		||||
 {
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/net/mac80211/main.c
 | 
			
		||||
+++ b/net/mac80211/main.c
 | 
			
		||||
@@ -292,7 +292,7 @@ void ieee80211_restart_hw(struct ieee802
 | 
			
		||||
@@ -315,7 +315,7 @@ void ieee80211_restart_hw(struct ieee802
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL(ieee80211_restart_hw);
 | 
			
		||||
 
 | 
			
		||||
@ -9,7 +9,7 @@
 | 
			
		||||
 static int ieee80211_ifa_changed(struct notifier_block *nb,
 | 
			
		||||
 				 unsigned long data, void *arg)
 | 
			
		||||
 {
 | 
			
		||||
@@ -351,7 +351,7 @@ static int ieee80211_ifa_changed(struct
 | 
			
		||||
@@ -374,7 +374,7 @@ static int ieee80211_ifa_changed(struct
 | 
			
		||||
 }
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
@ -18,9 +18,9 @@
 | 
			
		||||
 static int ieee80211_ifa6_changed(struct notifier_block *nb,
 | 
			
		||||
 				  unsigned long data, void *arg)
 | 
			
		||||
 {
 | 
			
		||||
@@ -1114,14 +1114,14 @@ int ieee80211_register_hw(struct ieee802
 | 
			
		||||
 	if (result)
 | 
			
		||||
 		goto fail_flows;
 | 
			
		||||
@@ -1168,14 +1168,14 @@ int ieee80211_register_hw(struct ieee802
 | 
			
		||||
 
 | 
			
		||||
 	rtnl_unlock();
 | 
			
		||||
 
 | 
			
		||||
-#ifdef CONFIG_INET
 | 
			
		||||
+#ifdef __disabled__CONFIG_INET
 | 
			
		||||
@ -35,7 +35,7 @@
 | 
			
		||||
 	local->ifa6_notifier.notifier_call = ieee80211_ifa6_changed;
 | 
			
		||||
 	result = register_inet6addr_notifier(&local->ifa6_notifier);
 | 
			
		||||
 	if (result)
 | 
			
		||||
@@ -1130,13 +1130,13 @@ int ieee80211_register_hw(struct ieee802
 | 
			
		||||
@@ -1184,13 +1184,13 @@ int ieee80211_register_hw(struct ieee802
 | 
			
		||||
 
 | 
			
		||||
 	return 0;
 | 
			
		||||
 
 | 
			
		||||
@ -51,8 +51,8 @@
 | 
			
		||||
+#if defined(__disabled__CONFIG_INET) || defined(__disabled__CONFIG_IPV6)
 | 
			
		||||
  fail_ifa:
 | 
			
		||||
 #endif
 | 
			
		||||
 	ieee80211_txq_teardown_flows(local);
 | 
			
		||||
@@ -1166,10 +1166,10 @@ void ieee80211_unregister_hw(struct ieee
 | 
			
		||||
 	rtnl_lock();
 | 
			
		||||
@@ -1220,10 +1220,10 @@ void ieee80211_unregister_hw(struct ieee
 | 
			
		||||
 	tasklet_kill(&local->tx_pending_tasklet);
 | 
			
		||||
 	tasklet_kill(&local->tasklet);
 | 
			
		||||
 
 | 
			
		||||
@ -64,4 +64,4 @@
 | 
			
		||||
+#if IS_ENABLED(__disabled__CONFIG_IPV6)
 | 
			
		||||
 	unregister_inet6addr_notifier(&local->ifa6_notifier);
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
 	ieee80211_txq_teardown_flows(local);
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/net/mac80211/cfg.c
 | 
			
		||||
+++ b/net/mac80211/cfg.c
 | 
			
		||||
@@ -2215,7 +2215,7 @@ static int ieee80211_scan(struct wiphy *
 | 
			
		||||
@@ -2229,7 +2229,7 @@ static int ieee80211_scan(struct wiphy *
 | 
			
		||||
 		 * the  frames sent while scanning on other channel will be
 | 
			
		||||
 		 * lost)
 | 
			
		||||
 		 */
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
 | 
			
		||||
 | 
			
		||||
--- a/net/mac80211/ieee80211_i.h
 | 
			
		||||
+++ b/net/mac80211/ieee80211_i.h
 | 
			
		||||
@@ -177,6 +177,7 @@ struct ieee80211_tx_data {
 | 
			
		||||
@@ -179,6 +179,7 @@ struct ieee80211_tx_data {
 | 
			
		||||
 	struct ieee80211_tx_rate rate;
 | 
			
		||||
 
 | 
			
		||||
 	unsigned int flags;
 | 
			
		||||
@ -39,7 +39,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
 | 
			
		||||
 	/* internal error, why isn't DONTFRAG set? */
 | 
			
		||||
 	if (WARN_ON(skb->len + FCS_LEN <= frag_threshold))
 | 
			
		||||
 		return TX_DROP;
 | 
			
		||||
@@ -1175,6 +1173,8 @@ ieee80211_tx_prepare(struct ieee80211_su
 | 
			
		||||
@@ -1174,6 +1172,8 @@ ieee80211_tx_prepare(struct ieee80211_su
 | 
			
		||||
 
 | 
			
		||||
 	hdr = (struct ieee80211_hdr *) skb->data;
 | 
			
		||||
 
 | 
			
		||||
@ -48,7 +48,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
 | 
			
		||||
 	if (likely(sta)) {
 | 
			
		||||
 		if (!IS_ERR(sta))
 | 
			
		||||
 			tx->sta = sta;
 | 
			
		||||
@@ -3468,6 +3468,7 @@ begin:
 | 
			
		||||
@@ -3497,6 +3497,7 @@ begin:
 | 
			
		||||
 	tx.local = local;
 | 
			
		||||
 	tx.skb = skb;
 | 
			
		||||
 	tx.sdata = vif_to_sdata(info->control.vif);
 | 
			
		||||
@ -56,7 +56,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
 | 
			
		||||
 
 | 
			
		||||
 	if (txq->sta)
 | 
			
		||||
 		tx.sta = container_of(txq->sta, struct sta_info, sta);
 | 
			
		||||
@@ -3796,6 +3797,7 @@ ieee80211_build_data_template(struct iee
 | 
			
		||||
@@ -3833,6 +3834,7 @@ ieee80211_build_data_template(struct iee
 | 
			
		||||
 	hdr = (void *)skb->data;
 | 
			
		||||
 	tx.sta = sta_info_get(sdata, hdr->addr1);
 | 
			
		||||
 	tx.skb = skb;
 | 
			
		||||
@ -66,7 +66,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
 | 
			
		||||
 		rcu_read_unlock();
 | 
			
		||||
--- a/net/mac80211/util.c
 | 
			
		||||
+++ b/net/mac80211/util.c
 | 
			
		||||
@@ -1232,6 +1232,7 @@ void ieee80211_send_auth(struct ieee8021
 | 
			
		||||
@@ -1290,6 +1290,7 @@ void ieee80211_send_auth(struct ieee8021
 | 
			
		||||
 	struct ieee80211_local *local = sdata->local;
 | 
			
		||||
 	struct sk_buff *skb;
 | 
			
		||||
 	struct ieee80211_mgmt *mgmt;
 | 
			
		||||
@ -74,7 +74,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
 | 
			
		||||
 	int err;
 | 
			
		||||
 
 | 
			
		||||
 	/* 24 + 6 = header + auth_algo + auth_transaction + status_code */
 | 
			
		||||
@@ -1255,8 +1256,10 @@ void ieee80211_send_auth(struct ieee8021
 | 
			
		||||
@@ -1313,8 +1314,10 @@ void ieee80211_send_auth(struct ieee8021
 | 
			
		||||
 		skb_put_data(skb, extra, extra_len);
 | 
			
		||||
 
 | 
			
		||||
 	if (auth_alg == WLAN_AUTH_SHARED_KEY && transaction == 3) {
 | 
			
		||||
@ -164,7 +164,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
 | 
			
		||||
 	if (skb->len < hdrlen)
 | 
			
		||||
 		return TX_DROP;
 | 
			
		||||
 
 | 
			
		||||
@@ -187,7 +187,6 @@ mic_fail_no_key:
 | 
			
		||||
@@ -195,7 +195,6 @@ mic_fail_no_key:
 | 
			
		||||
 
 | 
			
		||||
 static int tkip_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb)
 | 
			
		||||
 {
 | 
			
		||||
@ -172,7 +172,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
 | 
			
		||||
 	struct ieee80211_key *key = tx->key;
 | 
			
		||||
 	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
 | 
			
		||||
 	unsigned int hdrlen;
 | 
			
		||||
@@ -202,7 +201,7 @@ static int tkip_encrypt_skb(struct ieee8
 | 
			
		||||
@@ -210,7 +209,7 @@ static int tkip_encrypt_skb(struct ieee8
 | 
			
		||||
 		return 0;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@ -181,7 +181,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
 | 
			
		||||
 	len = skb->len - hdrlen;
 | 
			
		||||
 
 | 
			
		||||
 	if (info->control.hw_key)
 | 
			
		||||
@@ -420,7 +419,7 @@ static int ccmp_encrypt_skb(struct ieee8
 | 
			
		||||
@@ -428,7 +427,7 @@ static int ccmp_encrypt_skb(struct ieee8
 | 
			
		||||
 		return 0;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@ -190,7 +190,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
 | 
			
		||||
 	len = skb->len - hdrlen;
 | 
			
		||||
 
 | 
			
		||||
 	if (info->control.hw_key)
 | 
			
		||||
@@ -653,7 +652,7 @@ static int gcmp_encrypt_skb(struct ieee8
 | 
			
		||||
@@ -660,7 +659,7 @@ static int gcmp_encrypt_skb(struct ieee8
 | 
			
		||||
 		return 0;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@ -199,7 +199,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
 | 
			
		||||
 	len = skb->len - hdrlen;
 | 
			
		||||
 
 | 
			
		||||
 	if (info->control.hw_key)
 | 
			
		||||
@@ -793,7 +792,6 @@ static ieee80211_tx_result
 | 
			
		||||
@@ -800,7 +799,6 @@ static ieee80211_tx_result
 | 
			
		||||
 ieee80211_crypto_cs_encrypt(struct ieee80211_tx_data *tx,
 | 
			
		||||
 			    struct sk_buff *skb)
 | 
			
		||||
 {
 | 
			
		||||
@ -207,7 +207,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
 | 
			
		||||
 	struct ieee80211_key *key = tx->key;
 | 
			
		||||
 	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
 | 
			
		||||
 	int hdrlen;
 | 
			
		||||
@@ -809,8 +807,7 @@ ieee80211_crypto_cs_encrypt(struct ieee8
 | 
			
		||||
@@ -816,8 +814,7 @@ ieee80211_crypto_cs_encrypt(struct ieee8
 | 
			
		||||
 		     pskb_expand_head(skb, iv_len, 0, GFP_ATOMIC)))
 | 
			
		||||
 		return TX_DROP;
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -21,11 +21,9 @@ wep/tkip/ccmp.
 | 
			
		||||
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
Index: backports-v4.18-rc7/include/net/mac80211.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/include/net/mac80211.h
 | 
			
		||||
+++ backports-v4.18-rc7/include/net/mac80211.h
 | 
			
		||||
@@ -2084,6 +2084,9 @@ struct ieee80211_txq {
 | 
			
		||||
--- a/include/net/mac80211.h
 | 
			
		||||
+++ b/include/net/mac80211.h
 | 
			
		||||
@@ -2127,6 +2127,9 @@ struct ieee80211_txq {
 | 
			
		||||
  * @IEEE80211_HW_DOESNT_SUPPORT_QOS_NDP: The driver (or firmware) doesn't
 | 
			
		||||
  *	support QoS NDP for AP probing - that's most likely a driver bug.
 | 
			
		||||
  *
 | 
			
		||||
@ -35,7 +33,7 @@ Index: backports-v4.18-rc7/include/net/mac80211.h
 | 
			
		||||
  * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
 | 
			
		||||
  */
 | 
			
		||||
 enum ieee80211_hw_flags {
 | 
			
		||||
@@ -2129,6 +2132,7 @@ enum ieee80211_hw_flags {
 | 
			
		||||
@@ -2172,6 +2175,7 @@ enum ieee80211_hw_flags {
 | 
			
		||||
 	IEEE80211_HW_SUPPORTS_TDLS_BUFFER_STA,
 | 
			
		||||
 	IEEE80211_HW_DEAUTH_NEED_MGD_TX_PREP,
 | 
			
		||||
 	IEEE80211_HW_DOESNT_SUPPORT_QOS_NDP,
 | 
			
		||||
@ -43,10 +41,8 @@ Index: backports-v4.18-rc7/include/net/mac80211.h
 | 
			
		||||
 
 | 
			
		||||
 	/* keep last, obviously */
 | 
			
		||||
 	NUM_IEEE80211_HW_FLAGS
 | 
			
		||||
Index: backports-v4.18-rc7/net/mac80211/debugfs.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/net/mac80211/debugfs.c
 | 
			
		||||
+++ backports-v4.18-rc7/net/mac80211/debugfs.c
 | 
			
		||||
--- a/net/mac80211/debugfs.c
 | 
			
		||||
+++ b/net/mac80211/debugfs.c
 | 
			
		||||
@@ -214,6 +214,7 @@ static const char *hw_flag_names[] = {
 | 
			
		||||
 	FLAG(SUPPORTS_TDLS_BUFFER_STA),
 | 
			
		||||
 	FLAG(DEAUTH_NEED_MGD_TX_PREP),
 | 
			
		||||
@ -55,11 +51,9 @@ Index: backports-v4.18-rc7/net/mac80211/debugfs.c
 | 
			
		||||
 #undef FLAG
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
Index: backports-v4.18-rc7/net/mac80211/ieee80211_i.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/net/mac80211/ieee80211_i.h
 | 
			
		||||
+++ backports-v4.18-rc7/net/mac80211/ieee80211_i.h
 | 
			
		||||
@@ -1550,6 +1550,29 @@ ieee80211_vif_get_num_mcast_if(struct ie
 | 
			
		||||
--- a/net/mac80211/ieee80211_i.h
 | 
			
		||||
+++ b/net/mac80211/ieee80211_i.h
 | 
			
		||||
@@ -1557,6 +1557,29 @@ ieee80211_vif_get_num_mcast_if(struct ie
 | 
			
		||||
 	return -1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -89,10 +83,8 @@ Index: backports-v4.18-rc7/net/mac80211/ieee80211_i.h
 | 
			
		||||
 u64 ieee80211_calculate_rx_timestamp(struct ieee80211_local *local,
 | 
			
		||||
 				     struct ieee80211_rx_status *status,
 | 
			
		||||
 				     unsigned int mpdu_len,
 | 
			
		||||
Index: backports-v4.18-rc7/net/mac80211/sta_info.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/net/mac80211/sta_info.h
 | 
			
		||||
+++ backports-v4.18-rc7/net/mac80211/sta_info.h
 | 
			
		||||
--- a/net/mac80211/sta_info.h
 | 
			
		||||
+++ b/net/mac80211/sta_info.h
 | 
			
		||||
@@ -301,7 +301,7 @@ struct ieee80211_fast_tx {
 | 
			
		||||
 	u8 hdr_len;
 | 
			
		||||
 	u8 sa_offs, da_offs, pn_offs;
 | 
			
		||||
@ -102,10 +94,8 @@ Index: backports-v4.18-rc7/net/mac80211/sta_info.h
 | 
			
		||||
 	       sizeof(rfc1042_header)] __aligned(2);
 | 
			
		||||
 
 | 
			
		||||
 	struct rcu_head rcu_head;
 | 
			
		||||
Index: backports-v4.18-rc7/net/mac80211/status.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/net/mac80211/status.c
 | 
			
		||||
+++ backports-v4.18-rc7/net/mac80211/status.c
 | 
			
		||||
--- a/net/mac80211/status.c
 | 
			
		||||
+++ b/net/mac80211/status.c
 | 
			
		||||
@@ -653,9 +653,22 @@ void ieee80211_tx_monitor(struct ieee802
 | 
			
		||||
 	struct sk_buff *skb2;
 | 
			
		||||
 	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
 | 
			
		||||
@ -129,10 +119,8 @@ Index: backports-v4.18-rc7/net/mac80211/status.c
 | 
			
		||||
 	/* send frame to monitor interfaces now */
 | 
			
		||||
 	rtap_len = ieee80211_tx_radiotap_len(info);
 | 
			
		||||
 	if (WARN_ON_ONCE(skb_headroom(skb) < rtap_len)) {
 | 
			
		||||
Index: backports-v4.18-rc7/net/mac80211/tkip.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/net/mac80211/tkip.c
 | 
			
		||||
+++ backports-v4.18-rc7/net/mac80211/tkip.c
 | 
			
		||||
--- a/net/mac80211/tkip.c
 | 
			
		||||
+++ b/net/mac80211/tkip.c
 | 
			
		||||
@@ -201,10 +201,12 @@ void ieee80211_get_tkip_p2k(struct ieee8
 | 
			
		||||
 {
 | 
			
		||||
 	struct ieee80211_key *key = (struct ieee80211_key *)
 | 
			
		||||
@ -147,11 +135,9 @@ Index: backports-v4.18-rc7/net/mac80211/tkip.c
 | 
			
		||||
 	u32 iv32 = get_unaligned_le32(&data[4]);
 | 
			
		||||
 	u16 iv16 = data[2] | (data[0] << 8);
 | 
			
		||||
 
 | 
			
		||||
Index: backports-v4.18-rc7/net/mac80211/tx.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/net/mac80211/tx.c
 | 
			
		||||
+++ backports-v4.18-rc7/net/mac80211/tx.c
 | 
			
		||||
@@ -1169,8 +1169,7 @@ ieee80211_tx_prepare(struct ieee80211_su
 | 
			
		||||
--- a/net/mac80211/tx.c
 | 
			
		||||
+++ b/net/mac80211/tx.c
 | 
			
		||||
@@ -1171,8 +1171,7 @@ ieee80211_tx_prepare(struct ieee80211_su
 | 
			
		||||
 	info->flags &= ~IEEE80211_TX_INTFL_NEED_TXPROCESSING;
 | 
			
		||||
 
 | 
			
		||||
 	hdr = (struct ieee80211_hdr *) skb->data;
 | 
			
		||||
@ -161,7 +147,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c
 | 
			
		||||
 
 | 
			
		||||
 	if (likely(sta)) {
 | 
			
		||||
 		if (!IS_ERR(sta))
 | 
			
		||||
@@ -2200,7 +2199,7 @@ netdev_tx_t ieee80211_monitor_start_xmit
 | 
			
		||||
@@ -2205,7 +2204,7 @@ netdev_tx_t ieee80211_monitor_start_xmit
 | 
			
		||||
 		goto fail;
 | 
			
		||||
 
 | 
			
		||||
 	hdr = (struct ieee80211_hdr *)(skb->data + len_rthdr);
 | 
			
		||||
@ -170,7 +156,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c
 | 
			
		||||
 
 | 
			
		||||
 	if (skb->len < len_rthdr + hdrlen)
 | 
			
		||||
 		goto fail;
 | 
			
		||||
@@ -2418,7 +2417,7 @@ static struct sk_buff *ieee80211_build_h
 | 
			
		||||
@@ -2423,7 +2422,7 @@ static struct sk_buff *ieee80211_build_h
 | 
			
		||||
 	struct ieee80211_chanctx_conf *chanctx_conf;
 | 
			
		||||
 	struct ieee80211_sub_if_data *ap_sdata;
 | 
			
		||||
 	enum nl80211_band band;
 | 
			
		||||
@ -179,7 +165,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c
 | 
			
		||||
 
 | 
			
		||||
 	if (IS_ERR(sta))
 | 
			
		||||
 		sta = NULL;
 | 
			
		||||
@@ -2638,6 +2637,9 @@ static struct sk_buff *ieee80211_build_h
 | 
			
		||||
@@ -2643,6 +2642,9 @@ static struct sk_buff *ieee80211_build_h
 | 
			
		||||
 		hdrlen += 2;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@ -189,7 +175,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c
 | 
			
		||||
 	/*
 | 
			
		||||
 	 * Drop unicast frames to unauthorised stations unless they are
 | 
			
		||||
 	 * EAPOL frames from the local station.
 | 
			
		||||
@@ -2718,6 +2720,7 @@ static struct sk_buff *ieee80211_build_h
 | 
			
		||||
@@ -2723,6 +2725,7 @@ static struct sk_buff *ieee80211_build_h
 | 
			
		||||
 
 | 
			
		||||
 	skb_pull(skb, skip_header_bytes);
 | 
			
		||||
 	head_need = hdrlen + encaps_len + meshhdrlen - skb_headroom(skb);
 | 
			
		||||
@ -197,7 +183,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c
 | 
			
		||||
 
 | 
			
		||||
 	/*
 | 
			
		||||
 	 * So we need to modify the skb header and hence need a copy of
 | 
			
		||||
@@ -2750,6 +2753,9 @@ static struct sk_buff *ieee80211_build_h
 | 
			
		||||
@@ -2755,6 +2758,9 @@ static struct sk_buff *ieee80211_build_h
 | 
			
		||||
 		memcpy(skb_push(skb, meshhdrlen), &mesh_hdr, meshhdrlen);
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
@ -207,7 +193,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c
 | 
			
		||||
 	if (ieee80211_is_data_qos(fc)) {
 | 
			
		||||
 		__le16 *qos_control;
 | 
			
		||||
 
 | 
			
		||||
@@ -2925,6 +2931,9 @@ void ieee80211_check_fast_xmit(struct st
 | 
			
		||||
@@ -2930,6 +2936,9 @@ void ieee80211_check_fast_xmit(struct st
 | 
			
		||||
 		fc |= cpu_to_le16(IEEE80211_STYPE_QOS_DATA);
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@ -217,7 +203,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c
 | 
			
		||||
 	/* We store the key here so there's no point in using rcu_dereference()
 | 
			
		||||
 	 * but that's fine because the code that changes the pointers will call
 | 
			
		||||
 	 * this function after doing so. For a single CPU that would be enough,
 | 
			
		||||
@@ -3513,7 +3522,7 @@ begin:
 | 
			
		||||
@@ -3524,7 +3533,7 @@ begin:
 | 
			
		||||
 
 | 
			
		||||
 		if (tx.key &&
 | 
			
		||||
 		    (tx.key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_IV))
 | 
			
		||||
@ -226,11 +212,9 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c
 | 
			
		||||
 
 | 
			
		||||
 		ieee80211_xmit_fast_finish(sta->sdata, sta, pn_offs,
 | 
			
		||||
 					   tx.key, skb);
 | 
			
		||||
Index: backports-v4.18-rc7/net/mac80211/util.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/net/mac80211/util.c
 | 
			
		||||
+++ backports-v4.18-rc7/net/mac80211/util.c
 | 
			
		||||
@@ -1274,6 +1274,7 @@ void ieee80211_send_auth(struct ieee8021
 | 
			
		||||
--- a/net/mac80211/util.c
 | 
			
		||||
+++ b/net/mac80211/util.c
 | 
			
		||||
@@ -1288,6 +1288,7 @@ void ieee80211_send_auth(struct ieee8021
 | 
			
		||||
 			 u32 tx_flags)
 | 
			
		||||
 {
 | 
			
		||||
 	struct ieee80211_local *local = sdata->local;
 | 
			
		||||
@ -238,7 +222,7 @@ Index: backports-v4.18-rc7/net/mac80211/util.c
 | 
			
		||||
 	struct sk_buff *skb;
 | 
			
		||||
 	struct ieee80211_mgmt *mgmt;
 | 
			
		||||
 	unsigned int hdrlen;
 | 
			
		||||
@@ -1300,7 +1301,7 @@ void ieee80211_send_auth(struct ieee8021
 | 
			
		||||
@@ -1314,7 +1315,7 @@ void ieee80211_send_auth(struct ieee8021
 | 
			
		||||
 		skb_put_data(skb, extra, extra_len);
 | 
			
		||||
 
 | 
			
		||||
 	if (auth_alg == WLAN_AUTH_SHARED_KEY && transaction == 3) {
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ Signed-off-by: Chaitanya TK <chaitanya.mgit@gmail.com>
 | 
			
		||||
 | 
			
		||||
--- a/include/linux/ieee80211.h
 | 
			
		||||
+++ b/include/linux/ieee80211.h
 | 
			
		||||
@@ -1556,6 +1556,7 @@ struct ieee80211_vht_operation {
 | 
			
		||||
@@ -1659,6 +1659,7 @@ struct ieee80211_mu_edca_param_set {
 | 
			
		||||
 #define IEEE80211_VHT_CAP_RXSTBC_3				0x00000300
 | 
			
		||||
 #define IEEE80211_VHT_CAP_RXSTBC_4				0x00000400
 | 
			
		||||
 #define IEEE80211_VHT_CAP_RXSTBC_MASK				0x00000700
 | 
			
		||||
 | 
			
		||||
@ -8,10 +8,8 @@ debugfs entries are cleaned up by debugfs_remove_recursive already.
 | 
			
		||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel.c
 | 
			
		||||
+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel.c
 | 
			
		||||
--- a/net/mac80211/rc80211_minstrel.c
 | 
			
		||||
+++ b/net/mac80211/rc80211_minstrel.c
 | 
			
		||||
@@ -689,8 +689,8 @@ minstrel_alloc(struct ieee80211_hw *hw,
 | 
			
		||||
 
 | 
			
		||||
 #ifdef CPTCFG_MAC80211_DEBUGFS
 | 
			
		||||
@ -41,10 +39,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel.c
 | 
			
		||||
 #endif
 | 
			
		||||
 	.get_expected_throughput = minstrel_get_expected_throughput,
 | 
			
		||||
 };
 | 
			
		||||
Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel.h
 | 
			
		||||
+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel.h
 | 
			
		||||
--- a/net/mac80211/rc80211_minstrel.h
 | 
			
		||||
+++ b/net/mac80211/rc80211_minstrel.h
 | 
			
		||||
@@ -109,11 +109,6 @@ struct minstrel_sta_info {
 | 
			
		||||
 
 | 
			
		||||
 	/* sampling table */
 | 
			
		||||
@ -73,10 +69,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel.h
 | 
			
		||||
 
 | 
			
		||||
 /* Recalculate success probabilities and counters for a given rate using EWMA */
 | 
			
		||||
 void minstrel_calc_rate_stats(struct minstrel_rate_stats *mrs);
 | 
			
		||||
Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_debugfs.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel_debugfs.c
 | 
			
		||||
+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel_debugfs.c
 | 
			
		||||
--- a/net/mac80211/rc80211_minstrel_debugfs.c
 | 
			
		||||
+++ b/net/mac80211/rc80211_minstrel_debugfs.c
 | 
			
		||||
@@ -214,19 +214,7 @@ minstrel_add_sta_debugfs(void *priv, voi
 | 
			
		||||
 {
 | 
			
		||||
 	struct minstrel_sta_info *mi = priv_sta;
 | 
			
		||||
@ -100,10 +94,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_debugfs.c
 | 
			
		||||
+	debugfs_create_file("rc_stats_csv", S_IRUGO, dir, mi,
 | 
			
		||||
+			    &minstrel_stat_csv_fops);
 | 
			
		||||
 }
 | 
			
		||||
Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel_ht.c
 | 
			
		||||
+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.c
 | 
			
		||||
--- a/net/mac80211/rc80211_minstrel_ht.c
 | 
			
		||||
+++ b/net/mac80211/rc80211_minstrel_ht.c
 | 
			
		||||
@@ -1393,7 +1393,6 @@ static const struct rate_control_ops mac
 | 
			
		||||
 	.free = minstrel_ht_free,
 | 
			
		||||
 #ifdef CPTCFG_MAC80211_DEBUGFS
 | 
			
		||||
@ -112,10 +104,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.c
 | 
			
		||||
 #endif
 | 
			
		||||
 	.get_expected_throughput = minstrel_ht_get_expected_throughput,
 | 
			
		||||
 };
 | 
			
		||||
Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel_ht.h
 | 
			
		||||
+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.h
 | 
			
		||||
--- a/net/mac80211/rc80211_minstrel_ht.h
 | 
			
		||||
+++ b/net/mac80211/rc80211_minstrel_ht.h
 | 
			
		||||
@@ -110,17 +110,12 @@ struct minstrel_ht_sta_priv {
 | 
			
		||||
 		struct minstrel_ht_sta ht;
 | 
			
		||||
 		struct minstrel_sta_info legacy;
 | 
			
		||||
@ -134,10 +124,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.h
 | 
			
		||||
 int minstrel_ht_get_tp_avg(struct minstrel_ht_sta *mi, int group, int rate,
 | 
			
		||||
 			   int prob_ewma);
 | 
			
		||||
 
 | 
			
		||||
Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht_debugfs.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel_ht_debugfs.c
 | 
			
		||||
+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht_debugfs.c
 | 
			
		||||
--- a/net/mac80211/rc80211_minstrel_ht_debugfs.c
 | 
			
		||||
+++ b/net/mac80211/rc80211_minstrel_ht_debugfs.c
 | 
			
		||||
@@ -303,17 +303,8 @@ minstrel_ht_add_sta_debugfs(void *priv,
 | 
			
		||||
 {
 | 
			
		||||
 	struct minstrel_ht_sta_priv *msp = priv_sta;
 | 
			
		||||
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue
	
	Block a user