2011-08-04 17:53:50

by Rajkumar Manoharan

[permalink] [raw]
Subject: [PATCH v3 11/13] ath9k_hw: Disable Walsh spatial spreading for 2 chains

The Walsh bit is disabled for regulatory consideration.

As per the FCC rulings, only transmissions that are completely
non-coherent, are allowed to waive the array gain contribution
to EIRP for multi-transmit configurations. The use of 2-stream
with 2 transmit and use of 3-steam with 3 transmit qualifies
for this spatial multiplexing MIMO classification as long as
the streams are directly mapped to each radio (not Walsh spread
prior to splitting to multiple radios)

Cc: Felix Fietkau <[email protected]>
Signed-off-by: Rajkumar Manoharan <[email protected]>
---
.../net/wireless/ath/ath9k/ar9003_2p2_initvals.h | 2 +-
drivers/net/wireless/ath/ath9k/ar9003_phy.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
index 2339728..28b44b0 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
+++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
@@ -636,7 +636,7 @@ static const u32 ar9300_2p2_baseband_postamble[][5] = {
{0x00009e44, 0x02321e27, 0x02321e27, 0x02291e27, 0x02291e27},
{0x00009e48, 0x5030201a, 0x5030201a, 0x50302012, 0x50302012},
{0x00009fc8, 0x0003f000, 0x0003f000, 0x0001a000, 0x0001a000},
- {0x0000a204, 0x000037c0, 0x000037c4, 0x000037c4, 0x000037c0},
+ {0x0000a204, 0x000036c0, 0x000036c4, 0x000036c4, 0x000036c0},
{0x0000a208, 0x00000104, 0x00000104, 0x00000004, 0x00000004},
{0x0000a22c, 0x01026a2f, 0x01026a2f, 0x01026a2f, 0x01026a2f},
{0x0000a230, 0x0000000a, 0x00000014, 0x00000016, 0x0000000b},
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.c b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
index 1baca8e..c906e9e 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
@@ -482,7 +482,7 @@ static void ar9003_hw_set_channel_regs(struct ath_hw *ah,
(REG_READ(ah, AR_PHY_GEN_CTRL) & AR_PHY_GC_ENABLE_DAC_FIFO);

/* Enable 11n HT, 20 MHz */
- phymode = AR_PHY_GC_HT_EN | AR_PHY_GC_SINGLE_HT_LTF1 | AR_PHY_GC_WALSH |
+ phymode = AR_PHY_GC_HT_EN | AR_PHY_GC_SINGLE_HT_LTF1 |
AR_PHY_GC_SHORT_GI_40 | enableDacFifo;

/* Configure baseband for dynamic 20/40 operation */
--
1.7.6



2011-08-05 07:23:53

by Rajkumar Manoharan

[permalink] [raw]
Subject: Re: [PATCH v3 11/13] ath9k_hw: Disable Walsh spatial spreading for 2 chains

On Fri, Aug 05, 2011 at 02:35:44PM +0800, Adrian Chadd wrote:
> There's already code in the driver that subtracts 3 and 5 dB from the
> max TX power.
>
> Some NICs have value=0 for pwrdecrease2chain and pwrdecrease3chain; I
> have a feeling the EEPROMs in those have been programmed assuming 2 or
> 3 chain TX with the current setting (ie, AR_PHY_FC_WALSH in
> AR_PHY_TURBO). If they've calibrated the EEPROM settings based on that
> bit being set for 2 or 3 chain TX, you may find they're already doing
> the "right" thing. Flipping that bit off (and unconditionally
> subtracting TX power) may result in a lower TX power than regulatory?
>
Those pwrdecrease fields are applicable for AR9280 chips not for AR9003.
> I do suggest that someone with the relevant test equipment do some
> investigation into what the behaviour is of a variety of NICs. I'd
> love to survey what's going on but I'd have to acquire access to a
> spectrum analyser.
>
These changes were done based on our system team's comments.

--
Rajkumar
>
>
> Adrian
>
> On 5 August 2011 10:54, Rajkumar Manoharan <[email protected]> wrote:
> > On Thu, Aug 04, 2011 at 08:23:28PM +0200, Felix Fietkau wrote:
> >> On 2011-08-04 7:54 PM, Rajkumar Manoharan wrote:
> >> >The Walsh bit is disabled for regulatory consideration.
> >> >
> >> >As per the FCC rulings, only transmissions that are completely
> >> >non-coherent, are allowed to waive the array gain contribution
> >> >to EIRP for multi-transmit configurations. The use of 2-stream
> >> >with 2 transmit and use of 3-steam with 3 transmit qualifies
> >> >for this spatial multiplexing MIMO classification as long as
> >> >the streams are directly mapped to each radio (not Walsh spread
> >> >prior to splitting to multiple radios)
> >> I think ath9k does not waive the array gain contribution. I haven't
> >> checked AR9003, but on AR9002 and older, it explicitly includes the
> >> array gain contribution in the tx power limit calculation. I'm not
> >> sure that unconditionally disabling spatial spreading is the right
> >> way to deal with this.
> >>
> > We might violate the FCC rule with 2x2 config(3dB higher at 2-stream)
> > if this bit is enabled. Based on chainmask we can disable Walsh bit.
> > Any comments?
> >
> > --
> > Rajkumar
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> > the body of a message to [email protected]
> > More majordomo info at ?http://vger.kernel.org/majordomo-info.html
> >

2011-08-04 18:23:35

by Felix Fietkau

[permalink] [raw]
Subject: Re: [PATCH v3 11/13] ath9k_hw: Disable Walsh spatial spreading for 2 chains

On 2011-08-04 7:54 PM, Rajkumar Manoharan wrote:
> The Walsh bit is disabled for regulatory consideration.
>
> As per the FCC rulings, only transmissions that are completely
> non-coherent, are allowed to waive the array gain contribution
> to EIRP for multi-transmit configurations. The use of 2-stream
> with 2 transmit and use of 3-steam with 3 transmit qualifies
> for this spatial multiplexing MIMO classification as long as
> the streams are directly mapped to each radio (not Walsh spread
> prior to splitting to multiple radios)
I think ath9k does not waive the array gain contribution. I haven't
checked AR9003, but on AR9002 and older, it explicitly includes the
array gain contribution in the tx power limit calculation. I'm not sure
that unconditionally disabling spatial spreading is the right way to
deal with this.

- Felix

2011-08-05 09:48:57

by Felix Fietkau

[permalink] [raw]
Subject: Re: [PATCH v3 11/13] ath9k_hw: Disable Walsh spatial spreading for 2 chains

On 2011-08-05 10:36 AM, Rajkumar Manoharan wrote:
> On Fri, Aug 05, 2011 at 08:24:53AM +0530, Rajkumar Manoharan wrote:
>> On Thu, Aug 04, 2011 at 08:23:28PM +0200, Felix Fietkau wrote:
>> > On 2011-08-04 7:54 PM, Rajkumar Manoharan wrote:
>> > >The Walsh bit is disabled for regulatory consideration.
>> > >
>> > >As per the FCC rulings, only transmissions that are completely
>> > >non-coherent, are allowed to waive the array gain contribution
>> > >to EIRP for multi-transmit configurations. The use of 2-stream
>> > >with 2 transmit and use of 3-steam with 3 transmit qualifies
>> > >for this spatial multiplexing MIMO classification as long as
>> > >the streams are directly mapped to each radio (not Walsh spread
>> > >prior to splitting to multiple radios)
>> > I think ath9k does not waive the array gain contribution. I haven't
>> > checked AR9003, but on AR9002 and older, it explicitly includes the
>> > array gain contribution in the tx power limit calculation. I'm not
>> > sure that unconditionally disabling spatial spreading is the right
>> > way to deal with this.
>> >
>> We might violate the FCC rule with 2x2 config(3dB higher at 2-stream)
>> if this bit is enabled. Based on chainmask we can disable Walsh bit.
>
> This change does not affect 3x3, since we don't use 2-chain for 2-stream.
> And Walsh mode would follow INI setting for 2x2 or 3x3 config.
The thing is, on many channels the the card is allowed to transmit at up
to 27 dBm, and often the hardware does not even get close to that. Why
limit tx power by disabling this bit in cases where it's not even close
to going over the limit.
How about disabling it only if the combined txpower is within x dBm of
the regulatory limit, or simply adding the same kind of multi-chain
limit calculation that is being used on AR9280?

- Felix

2011-08-05 08:35:42

by Rajkumar Manoharan

[permalink] [raw]
Subject: Re: [PATCH v3 11/13] ath9k_hw: Disable Walsh spatial spreading for 2 chains

On Fri, Aug 05, 2011 at 08:24:53AM +0530, Rajkumar Manoharan wrote:
> On Thu, Aug 04, 2011 at 08:23:28PM +0200, Felix Fietkau wrote:
> > On 2011-08-04 7:54 PM, Rajkumar Manoharan wrote:
> > >The Walsh bit is disabled for regulatory consideration.
> > >
> > >As per the FCC rulings, only transmissions that are completely
> > >non-coherent, are allowed to waive the array gain contribution
> > >to EIRP for multi-transmit configurations. The use of 2-stream
> > >with 2 transmit and use of 3-steam with 3 transmit qualifies
> > >for this spatial multiplexing MIMO classification as long as
> > >the streams are directly mapped to each radio (not Walsh spread
> > >prior to splitting to multiple radios)
> > I think ath9k does not waive the array gain contribution. I haven't
> > checked AR9003, but on AR9002 and older, it explicitly includes the
> > array gain contribution in the tx power limit calculation. I'm not
> > sure that unconditionally disabling spatial spreading is the right
> > way to deal with this.
> >
> We might violate the FCC rule with 2x2 config(3dB higher at 2-stream)
> if this bit is enabled. Based on chainmask we can disable Walsh bit.

This change does not affect 3x3, since we don't use 2-chain for 2-stream.
And Walsh mode would follow INI setting for 2x2 or 3x3 config.

--
Rajkumar

2011-08-05 02:54:36

by Rajkumar Manoharan

[permalink] [raw]
Subject: Re: [PATCH v3 11/13] ath9k_hw: Disable Walsh spatial spreading for 2 chains

On Thu, Aug 04, 2011 at 08:23:28PM +0200, Felix Fietkau wrote:
> On 2011-08-04 7:54 PM, Rajkumar Manoharan wrote:
> >The Walsh bit is disabled for regulatory consideration.
> >
> >As per the FCC rulings, only transmissions that are completely
> >non-coherent, are allowed to waive the array gain contribution
> >to EIRP for multi-transmit configurations. The use of 2-stream
> >with 2 transmit and use of 3-steam with 3 transmit qualifies
> >for this spatial multiplexing MIMO classification as long as
> >the streams are directly mapped to each radio (not Walsh spread
> >prior to splitting to multiple radios)
> I think ath9k does not waive the array gain contribution. I haven't
> checked AR9003, but on AR9002 and older, it explicitly includes the
> array gain contribution in the tx power limit calculation. I'm not
> sure that unconditionally disabling spatial spreading is the right
> way to deal with this.
>
We might violate the FCC rule with 2x2 config(3dB higher at 2-stream)
if this bit is enabled. Based on chainmask we can disable Walsh bit.
Any comments?

--
Rajkumar

2011-08-05 06:35:45

by Adrian Chadd

[permalink] [raw]
Subject: Re: [PATCH v3 11/13] ath9k_hw: Disable Walsh spatial spreading for 2 chains

There's already code in the driver that subtracts 3 and 5 dB from the
max TX power.

Some NICs have value=0 for pwrdecrease2chain and pwrdecrease3chain; I
have a feeling the EEPROMs in those have been programmed assuming 2 or
3 chain TX with the current setting (ie, AR_PHY_FC_WALSH in
AR_PHY_TURBO). If they've calibrated the EEPROM settings based on that
bit being set for 2 or 3 chain TX, you may find they're already doing
the "right" thing. Flipping that bit off (and unconditionally
subtracting TX power) may result in a lower TX power than regulatory?

I do suggest that someone with the relevant test equipment do some
investigation into what the behaviour is of a variety of NICs. I'd
love to survey what's going on but I'd have to acquire access to a
spectrum analyser.



Adrian

On 5 August 2011 10:54, Rajkumar Manoharan <[email protected]> wrote:
> On Thu, Aug 04, 2011 at 08:23:28PM +0200, Felix Fietkau wrote:
>> On 2011-08-04 7:54 PM, Rajkumar Manoharan wrote:
>> >The Walsh bit is disabled for regulatory consideration.
>> >
>> >As per the FCC rulings, only transmissions that are completely
>> >non-coherent, are allowed to waive the array gain contribution
>> >to EIRP for multi-transmit configurations. The use of 2-stream
>> >with 2 transmit and use of 3-steam with 3 transmit qualifies
>> >for this spatial multiplexing MIMO classification as long as
>> >the streams are directly mapped to each radio (not Walsh spread
>> >prior to splitting to multiple radios)
>> I think ath9k does not waive the array gain contribution. I haven't
>> checked AR9003, but on AR9002 and older, it explicitly includes the
>> array gain contribution in the tx power limit calculation. I'm not
>> sure that unconditionally disabling spatial spreading is the right
>> way to deal with this.
>>
> We might violate the FCC rule with 2x2 config(3dB higher at 2-stream)
> if this bit is enabled. Based on chainmask we can disable Walsh bit.
> Any comments?
>
> --
> Rajkumar
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>

2011-08-05 11:50:45

by Adrian Chadd

[permalink] [raw]
Subject: Re: [PATCH v3 11/13] ath9k_hw: Disable Walsh spatial spreading for 2 chains

.. question: are the regulatory limits programmed into the cards
taking this spreading into effect?



Adrian

On 5 August 2011 17:48, Felix Fietkau <[email protected]> wrote:
> On 2011-08-05 10:36 AM, Rajkumar Manoharan wrote:
>>
>> On Fri, Aug 05, 2011 at 08:24:53AM +0530, Rajkumar Manoharan wrote:
>>>
>>> ?On Thu, Aug 04, 2011 at 08:23:28PM +0200, Felix Fietkau wrote:
>>> ?> ?On 2011-08-04 7:54 PM, Rajkumar Manoharan wrote:
>>> ?> ?>The Walsh bit is disabled for regulatory consideration.
>>> ?> ?>
>>> ?> ?>As per the FCC rulings, only transmissions that are completely
>>> ?> ?>non-coherent, are allowed to waive the array gain contribution
>>> ?> ?>to EIRP for multi-transmit configurations. The use of 2-stream
>>> ?> ?>with 2 transmit and use of 3-steam with 3 transmit qualifies
>>> ?> ?>for this spatial multiplexing MIMO classification as long as
>>> ?> ?>the streams are directly mapped to each radio (not Walsh spread
>>> ?> ?>prior to splitting to multiple radios)
>>> ?> ?I think ath9k does not waive the array gain contribution. I haven't
>>> ?> ?checked AR9003, but on AR9002 and older, it explicitly includes the
>>> ?> ?array gain contribution in the tx power limit calculation. I'm not
>>> ?> ?sure that unconditionally disabling spatial spreading is the right
>>> ?> ?way to deal with this.
>>> ?>
>>> ?We might violate the FCC rule with 2x2 config(3dB higher at 2-stream)
>>> ?if this bit is enabled. Based on chainmask we can disable Walsh bit.
>>
>> This change does not affect 3x3, since we don't use 2-chain for 2-stream.
>> And Walsh mode would follow INI setting for 2x2 or 3x3 config.
>
> The thing is, on many channels the the card is allowed to transmit at up to
> 27 dBm, and often the hardware does not even get close to that. Why limit tx
> power by disabling this bit in cases where it's not even close to going over
> the limit.
> How about disabling it only if the combined txpower is within x dBm of the
> regulatory limit, or simply adding the same kind of multi-chain limit
> calculation that is being used on AR9280?
>
> - Felix
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>