rpms/kernel/F-12 linux-2.6-ath9k-fixes.patch, NONE, 1.1 kernel.spec, 1.1945, 1.1946

John W. Linville linville at fedoraproject.org
Wed Dec 2 20:51:22 UTC 2009


Author: linville

Update of /cvs/pkgs/rpms/kernel/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv24856

Modified Files:
	kernel.spec 
Added Files:
	linux-2.6-ath9k-fixes.patch 
Log Message:
ath9k: add fixes suggested by upstream maintainer

linux-2.6-ath9k-fixes.patch:
 ath9k.h |    3 +++
 hw.c    |   11 ++++++++++-
 hw.h    |    1 +
 mac.c   |   38 ++++++++++++++++++++++++++++++++++++--
 mac.h   |   14 +++++++++++++-
 main.c  |   18 +++++++++++++++++-
 rc.c    |   12 ++++++++----
 reg.h   |   15 ++++++++++++---
 xmit.c  |   26 +++++++++++++++++++++++++-
 9 files changed, 125 insertions(+), 13 deletions(-)

--- NEW FILE linux-2.6-ath9k-fixes.patch ---
Backports of the following commits pending for 2.6.33...

commit f4709fdf683e1ed37b321c258b614ebe39752bf3
Author: Luis R. Rodriguez <lrodriguez at atheros.com>
Date:   Tue Nov 24 21:37:57 2009 -0500

    ath9k: Fix maximum tx fifo settings for single stream devices
    
    Atheros single stream AR9285 and AR9271 have half the PCU TX FIFO
    buffer size of that of dual stream devices. Dual stream devices
    have a max PCU TX FIFO size of 8 KB while single stream devices
    have 4 KB. Single stream devices have an issue though and require
    hardware only to use half of the amount of its capable PCU TX FIFO
    size, 2 KB and this requires a change in software.
    
    Technically a change would not have been required (except for frame
    burst considerations of 128 bytes) if these devices would have been
    able to use the full 4 KB of the PCU TX FIFO size but our systems
    engineers recommend 2 KB to be used only. We enforce this through
    software by reducing the max frame triggger level to 2 KB.
    
    Fixing the max frame trigger level should then have a few benefits:
    
      * The PER will now be adjusted as designed for underruns when the
        max trigger level is reached. This should help alleviate the
        bus as the rate control algorithm chooses a slower rate which
        should ensure frames are transmitted properly under high system
        bus load.
    
      * The poll we use on our TX queues should now trigger and work
        as designed for single stream devices. The hardware passes
        data from each TX queue on the PCU TX FIFO queue respecting each
        queue's priority. The new trigger level ensures this seeding of
        the PCU TX FIFO queue occurs as designed which could mean avoiding
        false resets and actually reseting hw correctly when a TX queue
        is indeed stuck.
    
      * Some undocumented / unsupported behaviour could have been triggered
        when the max trigger level level was being set to 4 KB on single
        stream devices. Its not clear what this issue was to me yet.
    
    Cc: Kyungwan Nam <kyungwan.nam at atheros.com>
    Cc: Bennyam Malavazi <bennyam.malavazi at atheros.com>
    Cc: Stephen Chen <stephen.chen at atheros.com>
    Cc: Shan Palanisamy <shan.palanisamy at atheros.com>
    Cc: Paul Shaw <paul.shaw at atheros.com>
    Signed-off-by: Vasanthakumar Thiagarajan <vasanth at atheros.com>
    Signed-off-by: Luis R. Rodriguez <lrodriguez at atheros.com>
    Signed-off-by: John W. Linville <linville at tuxdriver.com>

commit e7824a50662f7f79b1a739f705b4d906c31cf221
Author: Luis R. Rodriguez <lrodriguez at atheros.com>
Date:   Tue Nov 24 02:53:25 2009 -0500

    ath9k: fix processing of TX PS null data frames
    
    When mac80211 was telling us to go into Powersave we listened
    and immediately turned RX off. This meant hardware would not
    see the ACKs from the AP we're associated with and hardware
    we'd end up retransmiting the null data frame in a loop
    helplessly.
    
    Fix this by keeping track of the transmitted nullfunc frames
    and only when we are sure the AP has sent back an ACK do we
    go ahead and shut RX off.
    
    Signed-off-by: Vasanthakumar Thiagarajan <vasanth at atheros.com>
    Signed-off-by: Vivek Natarajan <Vivek.Natarajan at atheros.com>
    Signed-off-by: Luis R. Rodriguez <lrodriguez at atheros.com>
    Signed-off-by: John W. Linville <linville at tuxdriver.com>

commit 332c556633b8c5fb4e890b1783122f2315526590
Author: Sujith <Sujith.Manoharan at atheros.com>
Date:   Fri Oct 9 09:51:28 2009 +0530

    ath9k: Fix TX hang poll routine
    
    When TX is hung, the chip is reset. Ensure that
    the chip is awake by using the PS wrappers.
    
    Signed-off-by: Sujith <Sujith.Manoharan at atheros.com>
    Signed-off-by: John W. Linville <linville at tuxdriver.com>

diff -up linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/ath9k.h.orig linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/ath9k.h
--- linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/ath9k.h.orig	2009-09-09 18:13:59.000000000 -0400
+++ linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/ath9k.h	2009-12-02 15:24:37.000000000 -0500
@@ -137,6 +137,7 @@ struct ath_buf {
 	dma_addr_t bf_daddr;		/* physical addr of desc */
 	dma_addr_t bf_buf_addr;		/* physical addr of data buffer */
 	bool bf_stale;
+	bool bf_isnullfunc;
 	u16 bf_flags;
 	struct ath_buf_state bf_state;
 	dma_addr_t bf_dmacontext;
@@ -506,6 +507,8 @@ struct ath_led {
 #define SC_OP_WAIT_FOR_PSPOLL_DATA BIT(17)
 #define SC_OP_WAIT_FOR_TX_ACK   BIT(18)
 #define SC_OP_BEACON_SYNC       BIT(19)
+#define SC_OP_NULLFUNC_COMPLETED BIT(22)
+#define SC_OP_PS_ENABLED	BIT(23)
 
 struct ath_bus_ops {
 	void		(*read_cachesize)(struct ath_softc *sc, int *csz);
diff -up linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/hw.c.orig linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/hw.c
--- linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/hw.c.orig	2009-09-09 18:13:59.000000000 -0400
+++ linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/hw.c	2009-12-02 15:13:27.000000000 -0500
@@ -657,6 +657,11 @@ static struct ath_hw *ath9k_hw_do_attach
 	DPRINTF(sc, ATH_DBG_RESET, "serialize_regmode is %d\n",
 		ah->config.serialize_regmode);
 
+	if (AR_SREV_9285(ah))
+		ah->config.max_txtrig_level = MAX_TX_FIFO_THRESHOLD >> 1;
+	else
+		ah->config.max_txtrig_level = MAX_TX_FIFO_THRESHOLD;
+
 	if ((ah->hw_version.macVersion != AR_SREV_VERSION_5416_PCI) &&
 	    (ah->hw_version.macVersion != AR_SREV_VERSION_5416_PCIE) &&
 	    (ah->hw_version.macVersion != AR_SREV_VERSION_9160) &&
@@ -3367,7 +3372,11 @@ void ath9k_hw_fill_cap_info(struct ath_h
 		pCap->keycache_size = AR_KEYTABLE_SIZE;
 
 	pCap->hw_caps |= ATH9K_HW_CAP_FASTCC;
-	pCap->tx_triglevel_max = MAX_TX_FIFO_THRESHOLD;
+
+	if (AR_SREV_9285(ah))
+		pCap->tx_triglevel_max = MAX_TX_FIFO_THRESHOLD >> 1;
+	else
+		pCap->tx_triglevel_max = MAX_TX_FIFO_THRESHOLD;
 
 	if (AR_SREV_9285_10_OR_LATER(ah))
 		pCap->num_gpio_pins = AR9285_NUM_GPIO;
diff -up linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/hw.h.orig linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/hw.h
--- linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/hw.h.orig	2009-09-09 18:13:59.000000000 -0400
+++ linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/hw.h	2009-12-02 15:08:03.000000000 -0500
@@ -205,6 +205,7 @@ struct ath9k_ops_config {
 #define AR_SPUR_FEEQ_BOUND_HT20 10
 	int spurmode;
 	u16 spurchans[AR_EEPROM_MODAL_SPURS][2];
+	u8 max_txtrig_level;
 };
 
 enum ath9k_int {
diff -up linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/mac.c.orig linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/mac.c
--- linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/mac.c.orig	2009-09-09 18:13:59.000000000 -0400
+++ linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/mac.c	2009-12-02 15:13:56.000000000 -0500
@@ -70,12 +70,37 @@ u32 ath9k_hw_numtxpending(struct ath_hw 
 	return npend;
 }
 
+/**
+ * ath9k_hw_updatetxtriglevel - adjusts the frame trigger level
+ *
+ * @ah: atheros hardware struct
+ * @bIncTrigLevel: whether or not the frame trigger level should be updated
+ *
+ * The frame trigger level specifies the minimum number of bytes,
+ * in units of 64 bytes, that must be DMA'ed into the PCU TX FIFO
+ * before the PCU will initiate sending the frame on the air. This can
+ * mean we initiate transmit before a full frame is on the PCU TX FIFO.
+ * Resets to 0x1 (meaning 64 bytes or a full frame, whichever occurs
+ * first)
+ *
+ * Caution must be taken to ensure to set the frame trigger level based
+ * on the DMA request size. For example if the DMA request size is set to
+ * 128 bytes the trigger level cannot exceed 6 * 64 = 384. This is because
+ * there need to be enough space in the tx FIFO for the requested transfer
+ * size. Hence the tx FIFO will stop with 512 - 128 = 384 bytes. If we set
+ * the threshold to a value beyond 6, then the transmit will hang.
+ *
+ * Current dual   stream devices have a PCU TX FIFO size of 8 KB.
+ * Current single stream devices have a PCU TX FIFO size of 4 KB, however,
+ * there is a hardware issue which forces us to use 2 KB instead so the
+ * frame trigger level must not exceed 2 KB for these chipsets.
+ */
 bool ath9k_hw_updatetxtriglevel(struct ath_hw *ah, bool bIncTrigLevel)
 {
 	u32 txcfg, curLevel, newLevel;
 	enum ath9k_int omask;
 
-	if (ah->tx_trig_level >= MAX_TX_FIFO_THRESHOLD)
+	if (ah->tx_trig_level >= ah->config.max_txtrig_level)
 		return false;
 
 	omask = ath9k_hw_set_interrupts(ah, ah->mask_reg & ~ATH9K_INT_GLOBAL);
@@ -84,7 +109,7 @@ bool ath9k_hw_updatetxtriglevel(struct a
 	curLevel = MS(txcfg, AR_FTRIG);
 	newLevel = curLevel;
 	if (bIncTrigLevel) {
-		if (curLevel < MAX_TX_FIFO_THRESHOLD)
+		if (curLevel < ah->config.max_txtrig_level)
 			newLevel++;
 	} else if (curLevel > MIN_TX_FIFO_THRESHOLD)
 		newLevel--;
@@ -229,6 +254,8 @@ int ath9k_hw_txprocdesc(struct ath_hw *a
 	ds->ds_txstat.ts_status = 0;
 	ds->ds_txstat.ts_flags = 0;
 
+	if (ads->ds_txstatus1 & AR_FrmXmitOK)
+		ds->ds_txstat.ts_status |= ATH9K_TX_ACKED;
 	if (ads->ds_txstatus1 & AR_ExcessiveRetries)
 		ds->ds_txstat.ts_status |= ATH9K_TXERR_XRETRY;
 	if (ads->ds_txstatus1 & AR_Filtered)
@@ -889,6 +916,13 @@ bool ath9k_hw_setuprxdesc(struct ath_hw 
 	return true;
 }
 
+/*
+ * This can stop or re-enables RX.
+ *
+ * If bool is set this will kill any frame which is currently being
+ * transferred between the MAC and baseband and also prevent any new
+ * frames from getting started.
+ */
 bool ath9k_hw_setrxabort(struct ath_hw *ah, bool set)
 {
 	u32 reg;
diff -up linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/mac.h.orig linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/mac.h
--- linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/mac.h.orig	2009-09-09 18:13:59.000000000 -0400
+++ linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/mac.h	2009-12-02 15:13:56.000000000 -0500
@@ -76,6 +76,7 @@
 #define ATH9K_TXERR_FIFO           0x04
 #define ATH9K_TXERR_XTXOP          0x08
 #define ATH9K_TXERR_TIMER_EXPIRED  0x10
+#define ATH9K_TX_ACKED		   0x20
 
 #define ATH9K_TX_BA                0x01
 #define ATH9K_TX_PWRMGMT           0x02
@@ -85,9 +86,15 @@
 #define ATH9K_TX_SW_ABORTED        0x40
 #define ATH9K_TX_SW_FILTERED       0x80
 
+/* 64 bytes */
 #define MIN_TX_FIFO_THRESHOLD   0x1
+
+/*
+ * Single stream device AR9285 and AR9271 require 2 KB
+ * to work around a hardware issue, all other devices
+ * have can use the max 4 KB limit.
+ */
 #define MAX_TX_FIFO_THRESHOLD   ((4096 / 64) - 1)
-#define INIT_TX_FIFO_THRESHOLD  MIN_TX_FIFO_THRESHOLD
 
 struct ath_tx_status {
 	u32 ts_tstamp;
@@ -380,6 +387,11 @@ struct ar5416_desc {
 #define AR_TxBaStatus       0x40000000
 #define AR_TxStatusRsvd01   0x80000000
 
+/*
+ * AR_FrmXmitOK - Frame transmission success flag. If set, the frame was
+ * transmitted successfully. If clear, no ACK or BA was received to indicate
+ * successful transmission when we were expecting an ACK or BA.
+ */
 #define AR_FrmXmitOK            0x00000001
 #define AR_ExcessiveRetries     0x00000002
 #define AR_FIFOUnderrun         0x00000004
diff -up linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/main.c.orig linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/main.c
--- linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/main.c.orig	2009-09-09 18:13:59.000000000 -0400
+++ linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/main.c	2009-12-02 15:23:02.000000000 -0500
@@ -2252,8 +2252,15 @@ static int ath9k_config(struct ieee80211
 
 	mutex_lock(&sc->mutex);
 
+	/*
+	 * We just prepare to enable PS. We have to wait until our AP has
+	 * ACK'd our null data frame to disable RX otherwise we'll ignore
+	 * those ACKs and end up retransmitting the same null data frames.
+	 * IEEE80211_CONF_CHANGE_PS is only passed by mac80211 for STA mode.
+	 */
 	if (changed & IEEE80211_CONF_CHANGE_PS) {
 		if (conf->flags & IEEE80211_CONF_PS) {
+			sc->sc_flags |= SC_OP_PS_ENABLED;
 			if (!(ah->caps.hw_caps &
 			      ATH9K_HW_CAP_AUTOSLEEP)) {
 				if ((sc->imask & ATH9K_INT_TIM_TIMER) == 0) {
@@ -2261,11 +2268,20 @@ static int ath9k_config(struct ieee80211
 					ath9k_hw_set_interrupts(sc->sc_ah,
 							sc->imask);
 				}
+			}
+			/*
+			 * At this point we know hardware has received an ACK
+			 * of a previously sent null data frame.
+			 */
+			if ((sc->sc_flags & SC_OP_NULLFUNC_COMPLETED)) {
+				sc->sc_flags &= ~SC_OP_NULLFUNC_COMPLETED;
+				ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_NETWORK_SLEEP);
 				ath9k_hw_setrxabort(sc->sc_ah, 1);
 			}
-			ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_NETWORK_SLEEP);
 		} else {
 			ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_AWAKE);
+			sc->sc_flags &= ~(SC_OP_PS_ENABLED |
+					  SC_OP_NULLFUNC_COMPLETED);
 			if (!(ah->caps.hw_caps &
 			      ATH9K_HW_CAP_AUTOSLEEP)) {
 				ath9k_hw_setrxabort(sc->sc_ah, 0);
diff -up linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/rc.c.orig linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/rc.c
--- linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/rc.c.orig	2009-09-09 18:13:59.000000000 -0400
+++ linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/rc.c	2009-12-02 15:11:15.000000000 -0500
@@ -1519,10 +1519,14 @@ static void ath_tx_status(void *priv, st
 		goto exit;
 
 	/*
-	 * If underrun error is seen assume it as an excessive retry only
-	 * if prefetch trigger level have reached the max (0x3f for 5416)
-	 * Adjust the long retry as if the frame was tried ATH_11N_TXMAXTRY
-	 * times. This affects how ratectrl updates PER for the failed rate.
+	 * If an underrun error is seen assume it as an excessive retry only
+	 * if max frame trigger level has been reached (2 KB for singel stream,
+	 * and 4 KB for dual stream). Adjust the long retry as if the frame was
+	 * tried hw->max_rate_tries times to affect how ratectrl updates PER for
+	 * the failed rate. In case of congestion on the bus penalizing these
+	 * type of underruns should help hardware actually transmit new frames
+	 * successfully by eventually preferring slower rates. This itself
+	 * should also alleviate congestion on the bus.
 	 */
 	if (tx_info_priv->tx.ts_flags &
 	    (ATH9K_TX_DATA_UNDERRUN | ATH9K_TX_DELIM_UNDERRUN) &&
diff -up linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/reg.h.orig linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/reg.h
--- linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/reg.h.orig	2009-09-09 18:13:59.000000000 -0400
+++ linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/reg.h	2009-12-02 15:13:56.000000000 -0500
@@ -1216,13 +1216,22 @@ enum {
 #define AR_MCAST_FIL0       0x8040
 #define AR_MCAST_FIL1       0x8044
 
+/*
+ * AR_DIAG_SW - Register which can be used for diagnostics and testing purposes.
+ *
+ * The force RX abort (AR_DIAG_RX_ABORT, bit 25) can be used in conjunction with
+ * RX block (AR_DIAG_RX_DIS, bit 5) to help fast channel change to shut down
+ * receive. The force RX abort bit will kill any frame which is currently being
+ * transferred between the MAC and baseband. The RX block bit (AR_DIAG_RX_DIS)
+ * will prevent any new frames from getting started.
+ */
 #define AR_DIAG_SW                  0x8048
 #define AR_DIAG_CACHE_ACK           0x00000001
 #define AR_DIAG_ACK_DIS             0x00000002
 #define AR_DIAG_CTS_DIS             0x00000004
 #define AR_DIAG_ENCRYPT_DIS         0x00000008
 #define AR_DIAG_DECRYPT_DIS         0x00000010
-#define AR_DIAG_RX_DIS              0x00000020
+#define AR_DIAG_RX_DIS              0x00000020 /* RX block */
 #define AR_DIAG_LOOP_BACK           0x00000040
 #define AR_DIAG_CORR_FCS            0x00000080
 #define AR_DIAG_CHAN_INFO           0x00000100
@@ -1231,12 +1240,12 @@ enum {
 #define AR_DIAG_FRAME_NV0           0x00020000
 #define AR_DIAG_OBS_PT_SEL1         0x000C0000
 #define AR_DIAG_OBS_PT_SEL1_S       18
-#define AR_DIAG_FORCE_RX_CLEAR      0x00100000
+#define AR_DIAG_FORCE_RX_CLEAR      0x00100000 /* force rx_clear high */
 #define AR_DIAG_IGNORE_VIRT_CS      0x00200000
 #define AR_DIAG_FORCE_CH_IDLE_HIGH  0x00400000
 #define AR_DIAG_EIFS_CTRL_ENA       0x00800000
 #define AR_DIAG_DUAL_CHAIN_INFO     0x01000000
-#define AR_DIAG_RX_ABORT            0x02000000
+#define AR_DIAG_RX_ABORT            0x02000000 /* Force RX abort */
 #define AR_DIAG_SATURATE_CYCLE_CNT  0x04000000
 #define AR_DIAG_OBS_PT_SEL2         0x08000000
 #define AR_DIAG_RX_CLEAR_CTL_LOW    0x10000000
diff -up linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/xmit.c.orig linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/xmit.c
--- linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/xmit.c.orig	2009-09-09 18:13:59.000000000 -0400
+++ linux-2.6.31.noarch/drivers/net/wireless/ath/ath9k/xmit.c	2009-12-02 15:29:20.000000000 -0500
@@ -434,8 +434,11 @@ static void ath_tx_complete_aggr(struct 
 
 	rcu_read_unlock();
 
-	if (needreset)
+	if (needreset) {
+		ath9k_ps_wakeup(sc);
 		ath_reset(sc, false);
+		ath9k_ps_restore(sc);
+	}
 }
 
 static u32 ath_lookup_rate(struct ath_softc *sc, struct ath_buf *bf,
@@ -1587,6 +1590,14 @@ static int ath_tx_setup_buffer(struct ie
 	}
 
 	bf->bf_buf_addr = bf->bf_dmacontext;
+
+	/* tag if this is a nullfunc frame to enable PS when AP acks it */
+	if (ieee80211_is_nullfunc(fc) && ieee80211_has_pm(fc)) {
+		bf->bf_isnullfunc = true;
+		sc->sc_flags &= ~SC_OP_NULLFUNC_COMPLETED;
+	} else
+		bf->bf_isnullfunc = false;
+
 	return 0;
 }
 
@@ -1996,6 +2007,19 @@ static void ath_tx_processq(struct ath_s
 			txq->axq_gatingds = NULL;
 
 		/*
+		 * We now know the nullfunc frame has been ACKed so we
+		 * can disable RX.
+		 */
+		if (bf->bf_isnullfunc &&
+		    (ds->ds_txstat.ts_status & ATH9K_TX_ACKED)) {
+			if ((sc->sc_flags & SC_OP_PS_ENABLED)) {
+				ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_NETWORK_SLEEP);
+				ath9k_hw_setrxabort(sc->sc_ah, 1);
+			} else
+				sc->sc_flags |= SC_OP_NULLFUNC_COMPLETED;
+		}
+
+		/*
 		 * Remove ath_buf's of the same transmit unit from txq,
 		 * however leave the last descriptor back as the holding
 		 * descriptor for hw.


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/kernel.spec,v
retrieving revision 1.1945
retrieving revision 1.1946
diff -u -p -r1.1945 -r1.1946
--- kernel.spec	2 Dec 2009 07:34:17 -0000	1.1945
+++ kernel.spec	2 Dec 2009 20:51:22 -0000	1.1946
@@ -680,6 +680,7 @@ Patch670: linux-2.6-ata-quirk.patch
 Patch671: linux-2.6-ahci-export-capabilities.patch
 
 Patch680: prism54-remove-pci-dev-table.patch
+Patch681: linux-2.6-ath9k-fixes.patch
 
 Patch800: linux-2.6-crash-driver.patch
 
@@ -1386,6 +1387,9 @@ ApplyPatch linux-2.6-ahci-export-capabil
 # prism54: remove pci modinfo device table
 ApplyPatch prism54-remove-pci-dev-table.patch
 
+# ath9k: add fixes suggested by upstream maintainer
+ApplyPatch linux-2.6-ath9k-fixes.patch
+
 # /dev/crash driver.
 ApplyPatch linux-2.6-crash-driver.patch
 
@@ -2155,6 +2159,9 @@ fi
 # and build.
 
 %changelog
+* Wed Dec 02 2009 John W. Linville <linville at redhat.com> 2.6.31.6-160
+- ath9k: add fixes suggested by upstream maintainer
+
 * Wed Dec 02 2009 Dave Airlie <airlied at redhat.com> 2.6.31.6-159
 - drm-radeon-misc-fixes.patch: r400 LVDS, r600 digital dpms, cursor fix, tv property
 




More information about the scm-commits mailing list