Fixing rt2500pci

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Ivo van Doorn <ivdoorn@...>
Cc: <linux-kernel@...>, <linux-wireless@...>
Date: Wednesday, July 30, 2008 - 1:08 am

In kernel version 2.6.26-rc9 my wireless LAN card worked; but in the
released 2.6.26, my RaLink rt2500 card wouldn't associate.

Git-bisect led me to this patch:

	61486e0f68d1f8966c09b734566a187d42d65c54
	rt2x00: Remove ieee80211_tx_control argument from write_tx_desc()

I believe that there are two problems with that patch.  Setting the Tx
Length has been removed inadvertently, and one of the conditions for
when to set ifs to IFS_SIFS has also been removed.

This patch fixes those things, and with it my card works again.

Signed-off-by: Peter Chubb <peterc@gelato.unsw.edu.au>

diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
index 1724ce9..4ba2165 100644
--- a/drivers/net/wireless/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/rt2x00/rt2500pci.c
@@ -1198,6 +1198,7 @@ static void rt2500pci_write_tx_desc(struct rt2x00_dev *rt2x00dev,
 	rt2x00_set_field32(&word, TXD_W0_IFS, txdesc->ifs);
 	rt2x00_set_field32(&word, TXD_W0_RETRY_MODE,
 			   test_bit(ENTRY_TXD_RETRY_MODE, &txdesc->flags));
+	rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, skbdesc->data_len);
 	rt2x00_set_field32(&word, TXD_W0_CIPHER_ALG, CIPHER_NONE);
 	rt2x00_desc_write(txd, 0, word);
 }
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index e1368f7..a11d6ff 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -691,7 +691,8 @@ void rt2x00lib_write_tx_desc(struct rt2x00_dev *rt2x00dev,
 	 * Set ifs to IFS_SIFS when the this is not the first fragment,
 	 * or this fragment came after RTS/CTS.
 	 */
-	if (test_bit(ENTRY_TXD_RTS_FRAME, &txdesc.flags)) {
+	if ((seq_ctrl & IEEE80211_SCTL_FRAG)  ||
+		test_bit(ENTRY_TXD_RTS_FRAME, &txdesc.flags)) {
 		txdesc.ifs = IFS_SIFS;
 	} else if (control->flags & IEEE80211_TXCTL_FIRST_FRAGMENT) {
 		__set_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc.flags);

--
Dr Peter Chubb  http://www.gelato.unsw.edu.au  peterc AT gelato.unsw.edu.au
http://www.ertos.nicta.com.au           ERTOS within National ICT Australia
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Fixing rt2500pci, Peter Chubb, (Wed Jul 30, 1:08 am)
Re: Fixing rt2500pci, Ivo van Doorn, (Wed Jul 30, 3:05 pm)
Re: Fixing rt2500pci, Peter Chubb, (Thu Jul 31, 12:07 am)
Re: Fixing rt2500pci, Peter Chubb, (Mon Aug 4, 11:01 pm)
Re: Fixing rt2500pci, Ivo van Doorn, (Tue Aug 5, 2:44 pm)
Re: Fixing rt2500pci, Peter Chubb, (Tue Aug 5, 9:10 pm)
Re: Fixing rt2500pci, Peter Chubb, (Tue Aug 5, 5:01 pm)
Re: Fixing rt2500pci, Ivo van Doorn, (Wed Jul 30, 3:15 pm)
Re: Fixing rt2500pci [PATCH], Peter Chubb, (Wed Jul 30, 8:56 pm)
Re: Fixing rt2500pci [PATCH], Ivo van Doorn, (Tue Aug 12, 6:01 am)
Re: [stable] Fixing rt2500pci [PATCH], Greg KH, (Sat Aug 16, 7:32 pm)
Re: [stable] Fixing rt2500pci [PATCH], Ivo van Doorn, (Sun Aug 17, 4:58 am)
Re: Fixing rt2500pci [PATCH], Ivo van Doorn, (Thu Jul 31, 3:21 am)
Re: Fixing rt2500pci [PATCH], Peter Chubb, (Wed Jul 30, 10:11 pm)
Re: Fixing rt2500pci [PATCH], John Daiker, (Thu Jul 31, 5:51 pm)