Skip to contentSkip to conversation

rt2x00: Enable PA_PE bits in TX_PIN_CFG according to active band.

PATCH In review Ivo van Doorn 2 participants 3 messages May 18, 2011 – May 19, 2011 Networking drivers (wireless)

lore
Share & tools
lore
#0 lore raw

PATCH 1/7 rt2x00: Enable PA_PE bits in TX_PIN_CFG according to active band.

From: Gertjan van Wingerde <[email protected]>

(split off from the earlier RT35xx patch submitted by Shiang)

There's no point in enabling the PA_PE bits for the bands that we are not active on.

---
 drivers/net/wireless/rt2x00/rt2800lib.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
drivers/net/wireless/rt2x00/rt2800lib.c +4 -2
index 93fb674..1cad89e 100644
@@ -1795,8 +1795,10 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
 
 	/* Turn on unused PA or LNA when not using 1T or 1R */
 	if (rt2x00dev->default_ant.tx_chain_num == 2) {
-		rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_A1_EN, 1);
-		rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_G1_EN, 1);
+		rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_A1_EN,
+				   rf->channel > 14);
+		rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_G1_EN,
+				   rf->channel <= 14);
 	}
 
 	/* Turn on unused PA or LNA when not using 1T or 1R */
Signature · 1 line
1.7.2.3
#1 lore raw

Gertjan, Ivo,

Minor nit

Quoted 5 lines · Ivo van Doorn
drivers/net/wireless/rt2x00/rt2800lib.c +0 -0
index 93fb674..1cad89e 100644

drivers/net/wireless/rt2x00/rt2800lib.c static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, · line 1801

Quoted 9 lines
drivers/net/wireless/rt2x00/rt2800lib.c +4 -2
@@ -1795,8 +1795,10 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
 
        /* Turn on unused PA or LNA when not using 1T or 1R */
        if (rt2x00dev->default_ant.tx_chain_num == 2) {
-               rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_A1_EN, 1);
-               rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_G1_EN, 1);
+               rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_A1_EN,
+                                  rf->channel > 14);
+               rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_G1_EN,
+                                  rf->channel <= 14);

Aren't there better ways to determine the band from the channel?

I recall that there were some patches floating around relating to supporting Japanese channels (802.11j ?) which (IIRC) use channel 14 in both bands - I'm not sure if this is applicable here, but would it not be better to get the actual band from mac/cfg80211 and switch based on that instead of on the channel number?

Thanks,

Signature · 5 lines
Julian Calaby

Email: [email protected]
Profile: http://www.google.com/profiles/julian.calaby/
.Plan: http://sites.google.com/site/juliancalaby/
#2 lore raw

Hi,

Quoted 18 lines · Ivo van Doorn
Quoted 5 lines
drivers/net/wireless/rt2x00/rt2800lib.c +0 -0
index 93fb674..1cad89e 100644

drivers/net/wireless/rt2x00/rt2800lib.c static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, · line 1801

Quoted 9 lines
drivers/net/wireless/rt2x00/rt2800lib.c +4 -2
@@ -1795,8 +1795,10 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
 
        /* Turn on unused PA or LNA when not using 1T or 1R */
        if (rt2x00dev->default_ant.tx_chain_num == 2) {
-               rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_A1_EN, 1);
-               rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_G1_EN, 1);
+               rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_A1_EN,
+                                  rf->channel > 14);
+               rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_G1_EN,
+                                  rf->channel <= 14);

Aren't there better ways to determine the band from the channel?

Quoted 5 lines

I recall that there were some patches floating around relating to supporting Japanese channels (802.11j ?) which (IIRC) use channel 14 in both bands - I'm not sure if this is applicable here, but would it not be better to get the actual band from mac/cfg80211 and switch based on that instead of on the channel number?

True, but we have to review this for the entire driver, we have several places where we check the channel rather then the band. And even then we have a FIXME somewhere (not sure who added it), which states that our registrations of the bands are also possibly incorrect.

On the other hand, it also depends on the Ralink chips as well, I am not even sure they support this channel 14 on both bands feature.

Ivo