diff mbox

question: ATH5K, antenna-mode and fall-throught in ath5k_hw_set_fast_div()

Message ID 200909161220.11538.hs4233@mail.mn-solutions.de (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Holger Schurig Sept. 16, 2009, 10:20 a.m. UTC
Hi !

I have a device (fork-lift-terminal) where there is a PCCARD with
an Atheros chip inside it. The PCCARD has an built-in antenna and
a socket, where a cable goes to the external antenna.

Using madwifi, I always did:

        echo 2 >/proc/sys/dev/wifi0/rxantenna
        echo 2 >/proc/sys/dev/wifi0/txantenna
        echo 0 >/proc/sys/dev/wifi0/diversity

Now, with ath5k I'm planning to do this:


... as long as there is no offical interface for setting antenna
mode. A bit crude, but ... :-)



However, when looking for the antenna-related code-paths, I found
this:

ath5k_hw_set_fast_div(struct ath5k_hw *ah, u8 ee_mode, bool enable)
{
        switch (ee_mode) {
        case AR5K_EEPROM_MODE_11G:
                /* XXX: This is set to
                 * disabled on initvals !!! */
        case AR5K_EEPROM_MODE_11A:
        ...


In my case, ee_mode happens to be AR5K_EEPROM_MODE_11G, but I don't
understand the implication of this comment. Is the XXX something
to worry?  My card is a B/G only card, so I wonder if the
fall-through into the MODE_11A case is ok ?!?

Comments

Nick Kossifidis Sept. 16, 2009, 1:36 p.m. UTC | #1
2009/9/16 Holger Schurig <hs4233@mail.mn-solutions.de>:
> Hi !
>
> I have a device (fork-lift-terminal) where there is a PCCARD with
> an Atheros chip inside it. The PCCARD has an built-in antenna and
> a socket, where a cable goes to the external antenna.
>
> Using madwifi, I always did:
>
>        echo 2 >/proc/sys/dev/wifi0/rxantenna
>        echo 2 >/proc/sys/dev/wifi0/txantenna
>        echo 0 >/proc/sys/dev/wifi0/diversity
>
> Now, with ath5k I'm planning to do this:
>
> --- linux-wl.orig/drivers/net/wireless/ath/ath5k/base.c 2009-09-16 10:43:45.000000000 +0200
> +++ linux-wl/drivers/net/wireless/ath/ath5k/base.c      2009-09-16 10:44:10.000000000 +0200
> @@ -2850,5 +2850,5 @@ ath5k_config(struct ieee80211_hw *hw, u3
>         * then we must allow the user to set how many tx antennas we
>         * have available
>         */
> -       ath5k_hw_set_antenna_mode(ah, AR5K_ANTMODE_DEFAULT);
> +       ath5k_hw_set_antenna_mode(ah, AR5K_ANTMODE_FIXED_B);
>
>
> ... as long as there is no offical interface for setting antenna
> mode. A bit crude, but ... :-)
>

An official interface is on the way, until then that's indeed the way
to switch to a fixed antenna ;-)

>
> However, when looking for the antenna-related code-paths, I found
> this:
>
> ath5k_hw_set_fast_div(struct ath5k_hw *ah, u8 ee_mode, bool enable)
> {
>        switch (ee_mode) {
>        case AR5K_EEPROM_MODE_11G:
>                /* XXX: This is set to
>                 * disabled on initvals !!! */
>        case AR5K_EEPROM_MODE_11A:
>        ...
>
>
> In my case, ee_mode happens to be AR5K_EEPROM_MODE_11G, but I don't
> understand the implication of this comment. Is the XXX something
> to worry?  My card is a B/G only card, so I wonder if the
> fall-through into the MODE_11A case is ok ?!?
>

As you see there is no break there so we treat G and A modes (OFDM)
the same, comment is there to let developers know that
AR5K_PHY_AGCCTL_OFDM_DIV_DIS is already disabled on initvals for G
mode (however AR5K_PHY_FAST_ANT_DIV_EN is enabled so diversity is
enabled) but it doesn't seem to make a difference anyway.
diff mbox

Patch

--- linux-wl.orig/drivers/net/wireless/ath/ath5k/base.c 2009-09-16 10:43:45.000000000 +0200
+++ linux-wl/drivers/net/wireless/ath/ath5k/base.c      2009-09-16 10:44:10.000000000 +0200
@@ -2850,5 +2850,5 @@  ath5k_config(struct ieee80211_hw *hw, u3
         * then we must allow the user to set how many tx antennas we
         * have available
         */
-       ath5k_hw_set_antenna_mode(ah, AR5K_ANTMODE_DEFAULT);
+       ath5k_hw_set_antenna_mode(ah, AR5K_ANTMODE_FIXED_B);