Re: [Rt2400-devel] 2.6.25-rc2 regression in rt61pci wireless driver

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Chris Vine <chris@...>
Cc: Dan Williams <dcbw@...>, <linux-wireless@...>, <linux-kernel@...>, <chris2553@...>, <rt2400-devel@...>
Date: Wednesday, February 20, 2008 - 4:50 pm

On Wednesday 20 February 2008, Chris Vine wrote:

I have an idea, could you try below patch?
Note that while applying it will mention something about a line offset, but that can be ignored.

This could perhaps also fix the TX/RX issue mentioned earlier in the thread, but I am not
quite sure about that.

---
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
index b63bc66..460ef2f 100644
--- a/drivers/net/wireless/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/rt2x00/rt2400pci.c
@@ -953,8 +953,12 @@ static int rt2400pci_set_device_state(struct rt2x00_dev *rt2x00dev,
 		rt2400pci_disable_radio(rt2x00dev);
 		break;
 	case STATE_RADIO_RX_ON:
+	case STATE_RADIO_RX_ON_LINK:
+		rt2400pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
+		break;
 	case STATE_RADIO_RX_OFF:
-		rt2400pci_toggle_rx(rt2x00dev, state);
+	case STATE_RADIO_RX_OFF_LINK:
+		rt2400pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
 		break;
 	case STATE_DEEP_SLEEP:
 	case STATE_SLEEP:
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
index add8aff..ffcd996 100644
--- a/drivers/net/wireless/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/rt2x00/rt2500pci.c
@@ -1106,8 +1106,12 @@ static int rt2500pci_set_device_state(struct rt2x00_dev *rt2x00dev,
 		rt2500pci_disable_radio(rt2x00dev);
 		break;
 	case STATE_RADIO_RX_ON:
+	case STATE_RADIO_RX_ON_LINK:
+		rt2500pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
+		break;
 	case STATE_RADIO_RX_OFF:
-		rt2500pci_toggle_rx(rt2x00dev, state);
+	case STATE_RADIO_RX_OFF_LINK:
+		rt2500pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
 		break;
 	case STATE_DEEP_SLEEP:
 	case STATE_SLEEP:
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index d9643c5..9f59db9 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
@@ -996,8 +996,12 @@ static int rt2500usb_set_device_state(struct rt2x00_dev *rt2x00dev,
 		rt2500usb_disable_radio(rt2x00dev);
 		break;
 	case STATE_RADIO_RX_ON:
+	case STATE_RADIO_RX_ON_LINK:
+		rt2500usb_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
+		break;
 	case STATE_RADIO_RX_OFF:
-		rt2500usb_toggle_rx(rt2x00dev, state);
+	case STATE_RADIO_RX_OFF_LINK:
+		rt2500usb_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
 		break;
 	case STATE_DEEP_SLEEP:
 	case STATE_SLEEP:
diff --git a/drivers/net/wireless/rt2x00/rt2x00config.c b/drivers/net/wireless/rt2x00/rt2x00config.c
index 46888f9..a1d8e33 100644
--- a/drivers/net/wireless/rt2x00/rt2x00config.c
+++ b/drivers/net/wireless/rt2x00/rt2x00config.c
@@ -127,7 +127,7 @@ void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev,
 	 * else the changes will be ignored by the device.
 	 */
 	if (test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
-		rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
+		rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF_LINK);
 
 	/*
 	 * Write new antenna setup to device and reset the link tuner.
@@ -141,7 +141,7 @@ void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev,
 	rt2x00dev->link.ant.active.tx = libconf.ant.tx;
 
 	if (test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
-		rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
+		rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON_LINK);
 }
 
 void rt2x00lib_config(struct rt2x00_dev *rt2x00dev,
diff --git a/drivers/net/wireless/rt2x00/rt2x00reg.h b/drivers/net/wireless/rt2x00/rt2x00reg.h
index add1f09..0325bed 100644
--- a/drivers/net/wireless/rt2x00/rt2x00reg.h
+++ b/drivers/net/wireless/rt2x00/rt2x00reg.h
@@ -85,6 +85,8 @@ enum dev_state {
 	STATE_RADIO_OFF,
 	STATE_RADIO_RX_ON,
 	STATE_RADIO_RX_OFF,
+	STATE_RADIO_RX_ON_LINK,
+	STATE_RADIO_RX_OFF_LINK,
 	STATE_RADIO_IRQ_ON,
 	STATE_RADIO_IRQ_OFF,
 };
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index ca83d94..091fe39 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -1458,8 +1458,12 @@ static int rt61pci_set_device_state(struct rt2x00_dev *rt2x00dev,
 		rt61pci_disable_radio(rt2x00dev);
 		break;
 	case STATE_RADIO_RX_ON:
+	case STATE_RADIO_RX_ON_LINK:
+		rt61pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
+		break;
 	case STATE_RADIO_RX_OFF:
-		rt61pci_toggle_rx(rt2x00dev, state);
+	case STATE_RADIO_RX_OFF_LINK:
+		rt61pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
 		break;
 	case STATE_DEEP_SLEEP:
 	case STATE_SLEEP:
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index 7d6ee97..6546b0d 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -1196,8 +1196,12 @@ static int rt73usb_set_device_state(struct rt2x00_dev *rt2x00dev,
 		rt73usb_disable_radio(rt2x00dev);
 		break;
 	case STATE_RADIO_RX_ON:
+	case STATE_RADIO_RX_ON_LINK:
+		rt73usb_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
+		break;
 	case STATE_RADIO_RX_OFF:
-		rt73usb_toggle_rx(rt2x00dev, state);
+	case STATE_RADIO_RX_OFF_LINK:
+		rt73usb_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
 		break;
 	case STATE_DEEP_SLEEP:
 	case STATE_SLEEP:


--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
2.6.25-rc2 regression in rt61pci wireless driver, Chris Clayton, (Sat Feb 16, 8:06 am)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Ivo van Doorn, (Mon Feb 18, 2:11 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Chris Clayton, (Fri Feb 22, 11:46 am)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Ivo van Doorn, (Fri Feb 22, 3:47 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Chris Clayton, (Mon Feb 25, 5:04 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Ivo Van Doorn, (Mon Feb 25, 6:09 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Chris Clayton, (Tue Feb 26, 3:11 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, John W. Linville, (Tue Feb 26, 3:48 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Chris Clayton, (Tue Feb 26, 5:13 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Stefano Brivio, (Tue Feb 26, 5:38 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Chris Clayton, (Tue Feb 26, 6:36 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Stefano Brivio, (Wed Feb 27, 3:26 am)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, John W. Linville, (Wed Feb 27, 11:51 am)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, John W. Linville, (Wed Feb 27, 1:25 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Stefano Brivio, (Sun Mar 2, 6:33 am)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Chris Clayton, (Sun Mar 2, 11:11 am)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Chris Clayton, (Wed Feb 27, 1:45 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Ivo Van Doorn, (Tue Feb 26, 4:30 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Stefano Brivio, (Tue Feb 26, 5:44 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Chris Clayton, (Mon Feb 18, 6:51 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Ivo van Doorn, (Tue Feb 19, 5:26 am)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Chris Clayton, (Tue Feb 19, 3:00 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Ivo van Doorn, (Tue Feb 19, 3:46 pm)
Re: [Rt2400-devel] 2.6.25-rc2 regression in rt61pci wireless..., Ivo van Doorn, (Wed Feb 20, 4:50 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Chris Clayton, (Tue Feb 19, 4:44 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Ivo van Doorn, (Tue Feb 19, 5:03 pm)
Re: 2.6.25-rc2 regression in rt61pci wireless driver, Ivo van Doorn, (Mon Feb 18, 2:16 pm)