Subject: [PATCH] ath9k: Enable Bluetooth Coexistence support

Signed-off-by: Vasanthakumar Thiagarajan <[email protected]>
---
drivers/net/wireless/ath9k/ath9k.h | 5 +++++
drivers/net/wireless/ath9k/hw.c | 33 +++++++++++++++++++++++++++++++++
drivers/net/wireless/ath9k/main.c | 9 +++++++--
drivers/net/wireless/ath9k/reg.h | 10 ++++++++++
4 files changed, 55 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath9k/ath9k.h b/drivers/net/wireless/ath9k/ath9k.h
index 10c61ed..493351f 100644
--- a/drivers/net/wireless/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath9k/ath9k.h
@@ -198,6 +198,7 @@ enum ath9k_hw_caps {
ATH9K_HW_CAP_AUTOSLEEP = BIT(19),
ATH9K_HW_CAP_4KB_SPLITTRANS = BIT(20),
ATH9K_HW_CAP_WOW_MATCHPATTERN_EXACT = BIT(21),
+ ATH9K_HW_CAP_BT_COEX = BIT(22)
};

enum ath9k_capability_type {
@@ -752,6 +753,7 @@ struct ath9k_node_stats {
#define AR_GPIO_OUTPUT_MUX_AS_OUTPUT 0
#define AR_GPIO_OUTPUT_MUX_AS_PCIE_ATTENTION_LED 1
#define AR_GPIO_OUTPUT_MUX_AS_PCIE_POWER_LED 2
+#define AR_GPIO_OUTPUT_MUX_AS_TX_FRAME 3
#define AR_GPIO_OUTPUT_MUX_AS_MAC_NETWORK_LED 5
#define AR_GPIO_OUTPUT_MUX_AS_MAC_POWER_LED 6

@@ -801,6 +803,8 @@ struct ath_hal {
u16 ah_rfsilent;
u32 ah_rfkill_gpio;
u32 ah_rfkill_polarity;
+ u32 ah_btactive_gpio;
+ u32 ah_wlanactive_gpio;

#ifndef ATH_NF_PER_CHAN
struct ath9k_nfcal_hist nfCalHist[NUM_NF_READINGS];
@@ -1048,5 +1052,6 @@ void ath9k_hw_rxena(struct ath_hal *ah);
void ath9k_hw_startpcureceive(struct ath_hal *ah);
void ath9k_hw_stoppcurecv(struct ath_hal *ah);
bool ath9k_hw_stopdmarecv(struct ath_hal *ah);
+void ath9k_hw_btcoex_enable(struct ath_hal *ah);

#endif
diff --git a/drivers/net/wireless/ath9k/hw.c b/drivers/net/wireless/ath9k/hw.c
index 75ab052..62243ab 100644
--- a/drivers/net/wireless/ath9k/hw.c
+++ b/drivers/net/wireless/ath9k/hw.c
@@ -3308,6 +3308,12 @@ bool ath9k_hw_fill_cap_info(struct ath_hal *ah)
pCap->num_antcfg_2ghz =
ath9k_hw_get_num_ant_config(ah, ATH9K_HAL_FREQ_BAND_2GHZ);

+ if (AR_SREV_9280_10_OR_LATER(ah)) {
+ pCap->hw_caps |= ATH9K_HW_CAP_BT_COEX;
+ ah->ah_btactive_gpio = 6;
+ ah->ah_wlanactive_gpio = 5;
+ }
+
return true;
}

@@ -3802,3 +3808,30 @@ void ath9k_hw_set11nmac2040(struct ath_hal *ah, enum ath9k_ht_macmode mode)

REG_WRITE(ah, AR_2040_MODE, macmode);
}
+
+/***************************/
+/* Bluetooth Coexistence */
+/***************************/
+
+void ath9k_hw_btcoex_enable(struct ath_hal *ah)
+{
+ /* connect bt_active to baseband */
+ REG_CLR_BIT(ah, AR_GPIO_INPUT_EN_VAL,
+ (AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_DEF |
+ AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_DEF));
+
+ REG_SET_BIT(ah, AR_GPIO_INPUT_EN_VAL,
+ AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB);
+
+ /* Set input mux for bt_active to gpio pin */
+ REG_RMW_FIELD(ah, AR_GPIO_INPUT_MUX1,
+ AR_GPIO_INPUT_MUX1_BT_ACTIVE,
+ ah->ah_btactive_gpio);
+
+ /* Configure the desired gpio port for input */
+ ath9k_hw_cfg_gpio_input(ah, ah->ah_btactive_gpio);
+
+ /* Configure the desired GPIO port for TX_FRAME output */
+ ath9k_hw_cfg_output(ah, ah->ah_wlanactive_gpio,
+ AR_GPIO_OUTPUT_MUX_AS_TX_FRAME);
+}
diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c
index 1d916db..44ec2ce 100644
--- a/drivers/net/wireless/ath9k/main.c
+++ b/drivers/net/wireless/ath9k/main.c
@@ -438,12 +438,14 @@ static void ath_ani_calibrate(unsigned long data)
/*
* Update tx/rx chainmask. For legacy association,
* hard code chainmask to 1x1, for 11n association, use
- * the chainmask configuration.
+ * the chainmask configuration, for bt coexistence, use
+ * the chainmask configuration even in legacy mode.
*/
static void ath_update_chainmask(struct ath_softc *sc, int is_ht)
{
sc->sc_flags |= SC_OP_CHAINMASK_UPDATE;
- if (is_ht) {
+ if (is_ht ||
+ (sc->sc_ah->ah_caps.hw_caps & ATH9K_HW_CAP_BT_COEX)) {
sc->sc_tx_chainmask = sc->sc_ah->ah_caps.tx_chainmask;
sc->sc_rx_chainmask = sc->sc_ah->ah_caps.rx_chainmask;
} else {
@@ -1510,6 +1512,9 @@ static int ath_init(u16 devid, struct ath_softc *sc)
sc->sbands[IEEE80211_BAND_5GHZ].band = IEEE80211_BAND_5GHZ;
}

+ if (sc->sc_ah->ah_caps.hw_caps & ATH9K_HW_CAP_BT_COEX)
+ ath9k_hw_btcoex_enable(sc->sc_ah);
+
return 0;
bad2:
/* cleanup tx queues */
diff --git a/drivers/net/wireless/ath9k/reg.h b/drivers/net/wireless/ath9k/reg.h
index 9fedb49..eb493c9 100644
--- a/drivers/net/wireless/ath9k/reg.h
+++ b/drivers/net/wireless/ath9k/reg.h
@@ -894,14 +894,24 @@ enum {
#define AR_GPIO_INTR_POL_VAL_S 0

#define AR_GPIO_INPUT_EN_VAL 0x4054
+#define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_DEF 0x00000004
+#define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_S 2
+#define AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_DEF 0x00000008
+#define AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_S 3
+#define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_DEF 0x00000010
+#define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_S 4
#define AR_GPIO_INPUT_EN_VAL_RFSILENT_DEF 0x00000080
#define AR_GPIO_INPUT_EN_VAL_RFSILENT_DEF_S 7
+#define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB 0x00001000
+#define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB_S 12
#define AR_GPIO_INPUT_EN_VAL_RFSILENT_BB 0x00008000
#define AR_GPIO_INPUT_EN_VAL_RFSILENT_BB_S 15
#define AR_GPIO_RTC_RESET_OVERRIDE_ENABLE 0x00010000
#define AR_GPIO_JTAG_DISABLE 0x00020000

#define AR_GPIO_INPUT_MUX1 0x4058
+#define AR_GPIO_INPUT_MUX1_BT_ACTIVE 0x000f0000
+#define AR_GPIO_INPUT_MUX1_BT_ACTIVE_S 16

#define AR_GPIO_INPUT_MUX2 0x405c
#define AR_GPIO_INPUT_MUX2_CLK25 0x0000000f
--
1.5.5.1



Subject: Re: [PATCH] ath9k: Enable Bluetooth Coexistence support

On Sat, Jan 03, 2009 at 12:22:49AM +0530, Stefanik G=E1bor wrote:
> On Fri, Jan 2, 2009 at 11:05 AM, Vasanthakumar Thiagarajan
> <[email protected]> wrote:
> > Signed-off-by: Vasanthakumar Thiagarajan <[email protected]>
> > ---
> > drivers/net/wireless/ath9k/ath9k.h | 5 +++++
> > drivers/net/wireless/ath9k/hw.c | 33 ++++++++++++++++++++++++=
+++++++++
> > drivers/net/wireless/ath9k/main.c | 9 +++++++--
> > drivers/net/wireless/ath9k/reg.h | 10 ++++++++++
> > 4 files changed, 55 insertions(+), 2 deletions(-)
> >
> > <snip>
>=20
> Probably a NOBTCOEX modparam might be a good idea - when implementing
> BT coexistence in b43, a lot of non-BT-aware cards failed to work
> because the BT GPIO line was connected to the TX preamplifier,
> breaking all TX.

No need for any module parameters for enabling BT coex. It is
already running without any issue on Windows Vista.

Vasanth
>=20
> --
> Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)

2009-01-02 19:32:49

by Michael Büsch

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Enable Bluetooth Coexistence support

On Friday 02 January 2009 20:06:08 Kalle Valo wrote:
> On Fri, Jan 2, 2009 at 8:52 PM, Stefanik G=E1bor <netrolller.3d@gmail=
=2Ecom> wrote:
> > Probably a NOBTCOEX modparam might be a good idea - when implementi=
ng
> > BT coexistence in b43, a lot of non-BT-aware cards failed to work
> > because the BT GPIO line was connected to the TX preamplifier,
> > breaking all TX.
>=20
> It would be nice to have a common interface for this, for example
> through nl80211. Lots of drivers have BT coexistence support. But thi=
s
> is just an idea.

Well, why? If btcoex works correctly (=3D is not buggy), the user does =
not
notice it at all. I see no reason to turn it off. Except if it's buggy.
But then we should simply fix it or always disable it at compiletime, i=
f
it's not possible to fix.

--=20
Greetings, Michael.

2009-01-02 19:29:36

by Michael Büsch

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Enable Bluetooth Coexistence support

On Friday 02 January 2009 19:59:15 Stefanik G=E1bor wrote:
> On Fri, Jan 2, 2009 at 7:56 PM, Michael Buesch <[email protected]> wrote:
> > On Friday 02 January 2009 19:52:49 Stefanik G=E1bor wrote:
> >> On Fri, Jan 2, 2009 at 11:05 AM, Vasanthakumar Thiagarajan
> >> <[email protected]> wrote:
> >> > Signed-off-by: Vasanthakumar Thiagarajan <[email protected]>
> >> > ---
> >> > drivers/net/wireless/ath9k/ath9k.h | 5 +++++
> >> > drivers/net/wireless/ath9k/hw.c | 33 +++++++++++++++++++++=
++++++++++++
> >> > drivers/net/wireless/ath9k/main.c | 9 +++++++--
> >> > drivers/net/wireless/ath9k/reg.h | 10 ++++++++++
> >> > 4 files changed, 55 insertions(+), 2 deletions(-)
> >> >
> >> > <snip>
> >>
> >> Probably a NOBTCOEX modparam might be a good idea - when implement=
ing
> >> BT coexistence in b43, a lot of non-BT-aware cards failed to work
> >
> > And what makes you think that atheros also ships cards with broken =
btcoex support?
>=20
> We can never know what vendors will do

Well, I'd say that applies to any feature.
Should we add modparams for all new features from now on?

I'd say we simply apply this patch and see what happens. Most likely no=
thing,
because the btcoex implementation in the atheros hardware works differe=
ntly anyway.

--=20
Greetings, Michael.

2009-01-02 18:57:31

by Michael Büsch

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Enable Bluetooth Coexistence support

On Friday 02 January 2009 19:52:49 Stefanik G=E1bor wrote:
> On Fri, Jan 2, 2009 at 11:05 AM, Vasanthakumar Thiagarajan
> <[email protected]> wrote:
> > Signed-off-by: Vasanthakumar Thiagarajan <[email protected]>
> > ---
> > drivers/net/wireless/ath9k/ath9k.h | 5 +++++
> > drivers/net/wireless/ath9k/hw.c | 33 ++++++++++++++++++++++++=
+++++++++
> > drivers/net/wireless/ath9k/main.c | 9 +++++++--
> > drivers/net/wireless/ath9k/reg.h | 10 ++++++++++
> > 4 files changed, 55 insertions(+), 2 deletions(-)
> >
> > <snip>
>=20
> Probably a NOBTCOEX modparam might be a good idea - when implementing
> BT coexistence in b43, a lot of non-BT-aware cards failed to work

And what makes you think that atheros also ships cards with broken btco=
ex support?

--=20
Greetings, Michael.

Subject: Re: [PATCH] ath9k: Enable Bluetooth Coexistence support

On Fri, Jan 02, 2009 at 03:35:46PM +0530, Vasanth Thiagarajan wrote:
> Signed-off-by: Vasanthakumar Thiagarajan <[email protected]>
> ---
> drivers/net/wireless/ath9k/ath9k.h | 5 +++++
> drivers/net/wireless/ath9k/hw.c | 33 +++++++++++++++++++++++++++++++++
> drivers/net/wireless/ath9k/main.c | 9 +++++++--
> drivers/net/wireless/ath9k/reg.h | 10 ++++++++++
> 4 files changed, 55 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/ath9k/ath9k.h b/drivers/net/wireless/ath9k/ath9k.h
> index 10c61ed..493351f 100644
> --- a/drivers/net/wireless/ath9k/ath9k.h
> +++ b/drivers/net/wireless/ath9k/ath9k.h
> @@ -198,6 +198,7 @@ enum ath9k_hw_caps {
> ATH9K_HW_CAP_AUTOSLEEP = BIT(19),
> ATH9K_HW_CAP_4KB_SPLITTRANS = BIT(20),
> ATH9K_HW_CAP_WOW_MATCHPATTERN_EXACT = BIT(21),
> + ATH9K_HW_CAP_BT_COEX = BIT(22)
> };
>
> enum ath9k_capability_type {
> @@ -752,6 +753,7 @@ struct ath9k_node_stats {
> #define AR_GPIO_OUTPUT_MUX_AS_OUTPUT 0
> #define AR_GPIO_OUTPUT_MUX_AS_PCIE_ATTENTION_LED 1
> #define AR_GPIO_OUTPUT_MUX_AS_PCIE_POWER_LED 2
> +#define AR_GPIO_OUTPUT_MUX_AS_TX_FRAME 3
> #define AR_GPIO_OUTPUT_MUX_AS_MAC_NETWORK_LED 5
> #define AR_GPIO_OUTPUT_MUX_AS_MAC_POWER_LED 6
>
> @@ -801,6 +803,8 @@ struct ath_hal {
> u16 ah_rfsilent;
> u32 ah_rfkill_gpio;
> u32 ah_rfkill_polarity;
> + u32 ah_btactive_gpio;
> + u32 ah_wlanactive_gpio;
>
> #ifndef ATH_NF_PER_CHAN
> struct ath9k_nfcal_hist nfCalHist[NUM_NF_READINGS];
> @@ -1048,5 +1052,6 @@ void ath9k_hw_rxena(struct ath_hal *ah);
> void ath9k_hw_startpcureceive(struct ath_hal *ah);
> void ath9k_hw_stoppcurecv(struct ath_hal *ah);
> bool ath9k_hw_stopdmarecv(struct ath_hal *ah);
> +void ath9k_hw_btcoex_enable(struct ath_hal *ah);
>
> #endif
> diff --git a/drivers/net/wireless/ath9k/hw.c b/drivers/net/wireless/ath9k/hw.c
> index 75ab052..62243ab 100644
> --- a/drivers/net/wireless/ath9k/hw.c
> +++ b/drivers/net/wireless/ath9k/hw.c
> @@ -3308,6 +3308,12 @@ bool ath9k_hw_fill_cap_info(struct ath_hal *ah)
> pCap->num_antcfg_2ghz =
> ath9k_hw_get_num_ant_config(ah, ATH9K_HAL_FREQ_BAND_2GHZ);
>
> + if (AR_SREV_9280_10_OR_LATER(ah)) {
> + pCap->hw_caps |= ATH9K_HW_CAP_BT_COEX;
> + ah->ah_btactive_gpio = 6;
> + ah->ah_wlanactive_gpio = 5;
> + }
> +
> return true;
> }
>
> @@ -3802,3 +3808,30 @@ void ath9k_hw_set11nmac2040(struct ath_hal *ah, enum ath9k_ht_macmode mode)
>
> REG_WRITE(ah, AR_2040_MODE, macmode);
> }
> +
> +/***************************/
> +/* Bluetooth Coexistence */
> +/***************************/
> +
> +void ath9k_hw_btcoex_enable(struct ath_hal *ah)
> +{
> + /* connect bt_active to baseband */
> + REG_CLR_BIT(ah, AR_GPIO_INPUT_EN_VAL,
> + (AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_DEF |
> + AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_DEF));
> +
> + REG_SET_BIT(ah, AR_GPIO_INPUT_EN_VAL,
> + AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB);
> +
> + /* Set input mux for bt_active to gpio pin */
> + REG_RMW_FIELD(ah, AR_GPIO_INPUT_MUX1,
> + AR_GPIO_INPUT_MUX1_BT_ACTIVE,
> + ah->ah_btactive_gpio);
> +
> + /* Configure the desired gpio port for input */
> + ath9k_hw_cfg_gpio_input(ah, ah->ah_btactive_gpio);
> +
> + /* Configure the desired GPIO port for TX_FRAME output */
> + ath9k_hw_cfg_output(ah, ah->ah_wlanactive_gpio,
> + AR_GPIO_OUTPUT_MUX_AS_TX_FRAME);
> +}
> diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c
> index 1d916db..44ec2ce 100644
> --- a/drivers/net/wireless/ath9k/main.c
> +++ b/drivers/net/wireless/ath9k/main.c
> @@ -438,12 +438,14 @@ static void ath_ani_calibrate(unsigned long data)
> /*
> * Update tx/rx chainmask. For legacy association,
> * hard code chainmask to 1x1, for 11n association, use
> - * the chainmask configuration.
> + * the chainmask configuration, for bt coexistence, use
> + * the chainmask configuration even in legacy mode.
> */
> static void ath_update_chainmask(struct ath_softc *sc, int is_ht)
> {
> sc->sc_flags |= SC_OP_CHAINMASK_UPDATE;
> - if (is_ht) {
> + if (is_ht ||
> + (sc->sc_ah->ah_caps.hw_caps & ATH9K_HW_CAP_BT_COEX)) {
> sc->sc_tx_chainmask = sc->sc_ah->ah_caps.tx_chainmask;
> sc->sc_rx_chainmask = sc->sc_ah->ah_caps.rx_chainmask;
> } else {
> @@ -1510,6 +1512,9 @@ static int ath_init(u16 devid, struct ath_softc *sc)
> sc->sbands[IEEE80211_BAND_5GHZ].band = IEEE80211_BAND_5GHZ;
> }
>
> + if (sc->sc_ah->ah_caps.hw_caps & ATH9K_HW_CAP_BT_COEX)
> + ath9k_hw_btcoex_enable(sc->sc_ah);
> +
> return 0;
> bad2:
> /* cleanup tx queues */
> diff --git a/drivers/net/wireless/ath9k/reg.h b/drivers/net/wireless/ath9k/reg.h
> index 9fedb49..eb493c9 100644
> --- a/drivers/net/wireless/ath9k/reg.h
> +++ b/drivers/net/wireless/ath9k/reg.h
> @@ -894,14 +894,24 @@ enum {
> #define AR_GPIO_INTR_POL_VAL_S 0
>
> #define AR_GPIO_INPUT_EN_VAL 0x4054
> +#define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_DEF 0x00000004
> +#define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_S 2
> +#define AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_DEF 0x00000008
> +#define AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_S 3
> +#define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_DEF 0x00000010
> +#define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_S 4
> #define AR_GPIO_INPUT_EN_VAL_RFSILENT_DEF 0x00000080
> #define AR_GPIO_INPUT_EN_VAL_RFSILENT_DEF_S 7
> +#define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB 0x00001000
> +#define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB_S 12
> #define AR_GPIO_INPUT_EN_VAL_RFSILENT_BB 0x00008000
> #define AR_GPIO_INPUT_EN_VAL_RFSILENT_BB_S 15
> #define AR_GPIO_RTC_RESET_OVERRIDE_ENABLE 0x00010000
> #define AR_GPIO_JTAG_DISABLE 0x00020000
>
> #define AR_GPIO_INPUT_MUX1 0x4058
> +#define AR_GPIO_INPUT_MUX1_BT_ACTIVE 0x000f0000
> +#define AR_GPIO_INPUT_MUX1_BT_ACTIVE_S 16
>
> #define AR_GPIO_INPUT_MUX2 0x405c
> #define AR_GPIO_INPUT_MUX2_CLK25 0x0000000f
> --
> 1.5.5.1
>
> --
> 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

Please hold this one as this introduces some regression on few
platforms.

Thanks,

Vasanth

2009-01-03 20:41:05

by Gábor Stefanik

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Enable Bluetooth Coexistence support

On Sat, Jan 3, 2009 at 9:46 AM, Vasanthakumar Thiagarajan
<[email protected]> wrote:
> On Sat, Jan 03, 2009 at 12:22:49AM +0530, Stefanik G=E1bor wrote:
>> On Fri, Jan 2, 2009 at 11:05 AM, Vasanthakumar Thiagarajan
>> <[email protected]> wrote:
>> > Signed-off-by: Vasanthakumar Thiagarajan <[email protected]>
>> > ---
>> > drivers/net/wireless/ath9k/ath9k.h | 5 +++++
>> > drivers/net/wireless/ath9k/hw.c | 33 +++++++++++++++++++++++=
++++++++++
>> > drivers/net/wireless/ath9k/main.c | 9 +++++++--
>> > drivers/net/wireless/ath9k/reg.h | 10 ++++++++++
>> > 4 files changed, 55 insertions(+), 2 deletions(-)
>> >
>> > <snip>
>>
>> Probably a NOBTCOEX modparam might be a good idea - when implementin=
g
>> BT coexistence in b43, a lot of non-BT-aware cards failed to work
>> because the BT GPIO line was connected to the TX preamplifier,
>> breaking all TX.
>
> No need for any module parameters for enabling BT coex. It is
> already running without any issue on Windows Vista.
>
> Vasanth
>>
>> --
>> Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-=
)
>

Broadcom's BT coex was also running correctly on Windows Vista, but it
still caused problems on Linux.

--=20
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)

2009-01-02 20:03:18

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Enable Bluetooth Coexistence support

On Fri, Jan 2, 2009 at 9:31 PM, Michael Buesch <[email protected]> wrote:
> On Friday 02 January 2009 20:06:08 Kalle Valo wrote:
>> On Fri, Jan 2, 2009 at 8:52 PM, Stefanik G=E1bor <netrolller.3d@gmai=
l.com> wrote:
>> > Probably a NOBTCOEX modparam might be a good idea - when implement=
ing
>> > BT coexistence in b43, a lot of non-BT-aware cards failed to work
>> > because the BT GPIO line was connected to the TX preamplifier,
>> > breaking all TX.
>>
>> It would be nice to have a common interface for this, for example
>> through nl80211. Lots of drivers have BT coexistence support. But th=
is
>> is just an idea.
>
> Well, why? If btcoex works correctly (=3D is not buggy), the user doe=
s not
> notice it at all. I see no reason to turn it off. Except if it's bugg=
y.

Working around buggy implementations was the primary reason why I
suggested this.

> But then we should simply fix it or always disable it at compiletime,=
if
> it's not possible to fix.

It would just make it easier for the users if the drivers would have a
unified interface for this. Having a different modparam for each
driver is ugly.

But this just an idea, let's not waste too much time on this. Someone
(not me) will send a patch if she feels this is a good idea. Most
probably no one will.

Kalle

2009-01-02 19:06:12

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Enable Bluetooth Coexistence support

On Fri, Jan 2, 2009 at 8:52 PM, Stefanik G=E1bor <[email protected]=
om> wrote:
> Probably a NOBTCOEX modparam might be a good idea - when implementing
> BT coexistence in b43, a lot of non-BT-aware cards failed to work
> because the BT GPIO line was connected to the TX preamplifier,
> breaking all TX.

It would be nice to have a common interface for this, for example
through nl80211. Lots of drivers have BT coexistence support. But this
is just an idea.

Kalle

Subject: Re: [PATCH] ath9k: Enable Bluetooth Coexistence support

On Sun, Jan 04, 2009 at 02:11:01AM +0530, Stefanik G=E1bor wrote:

> Broadcom's BT coex was also running correctly on Windows Vista, but i=
t
> still caused problems on Linux.

I dont know about Broadcom BT coex implementation and issues. As far
as Atheros chip is cocerned the BT Coex stuff is fully taken care in
h/w. All I can say is, this BT Coex has gone through enough
throughput testing on BT coex aware/unaware platforms to make sure
it does not break anything both on Linux and Windows. Lets not add=20
any module parameter to enable/disable BT coex for no reason.

Vasanth=20

2009-01-02 18:59:18

by Gábor Stefanik

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Enable Bluetooth Coexistence support

On Fri, Jan 2, 2009 at 7:56 PM, Michael Buesch <[email protected]> wrote:
> On Friday 02 January 2009 19:52:49 Stefanik G=E1bor wrote:
>> On Fri, Jan 2, 2009 at 11:05 AM, Vasanthakumar Thiagarajan
>> <[email protected]> wrote:
>> > Signed-off-by: Vasanthakumar Thiagarajan <[email protected]>
>> > ---
>> > drivers/net/wireless/ath9k/ath9k.h | 5 +++++
>> > drivers/net/wireless/ath9k/hw.c | 33 +++++++++++++++++++++++=
++++++++++
>> > drivers/net/wireless/ath9k/main.c | 9 +++++++--
>> > drivers/net/wireless/ath9k/reg.h | 10 ++++++++++
>> > 4 files changed, 55 insertions(+), 2 deletions(-)
>> >
>> > <snip>
>>
>> Probably a NOBTCOEX modparam might be a good idea - when implementin=
g
>> BT coexistence in b43, a lot of non-BT-aware cards failed to work
>
> And what makes you think that atheros also ships cards with broken bt=
coex support?

We can never know what vendors will do - or does Atheros only allow
reference card designs?
>
> --
> Greetings, Michael.
>



--=20
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)

2009-01-05 17:06:51

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Enable Bluetooth Coexistence support

On Sun, Jan 04, 2009 at 09:27:09PM -0800, Vasanth Thiagarajan wrote:
> On Sun, Jan 04, 2009 at 02:11:01AM +0530, Stefanik G=E1bor wrote:
>=20
> > Broadcom's BT coex was also running correctly on Windows Vista, but=
it
> > still caused problems on Linux.
>=20
> I dont know about Broadcom BT coex implementation and issues. As far
> as Atheros chip is cocerned the BT Coex stuff is fully taken care in
> h/w. All I can say is, this BT Coex has gone through enough
> throughput testing on BT coex aware/unaware platforms to make sure
> it does not break anything both on Linux and Windows. Lets not add
> any module parameter to enable/disable BT coex for no reason.

Broadcom also does not provide support, we do ;) Please also not this i=
s only
enabled for newer chipsets.

Luis

2009-01-02 18:52:51

by Gábor Stefanik

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Enable Bluetooth Coexistence support

On Fri, Jan 2, 2009 at 11:05 AM, Vasanthakumar Thiagarajan
<[email protected]> wrote:
> Signed-off-by: Vasanthakumar Thiagarajan <[email protected]>
> ---
> drivers/net/wireless/ath9k/ath9k.h | 5 +++++
> drivers/net/wireless/ath9k/hw.c | 33 +++++++++++++++++++++++++++++++++
> drivers/net/wireless/ath9k/main.c | 9 +++++++--
> drivers/net/wireless/ath9k/reg.h | 10 ++++++++++
> 4 files changed, 55 insertions(+), 2 deletions(-)
>
> <snip>

Probably a NOBTCOEX modparam might be a good idea - when implementing
BT coexistence in b43, a lot of non-BT-aware cards failed to work
because the BT GPIO line was connected to the TX preamplifier,
breaking all TX.

--
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)