* [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl
@ 2011-07-17 8:30 Rafał Miłecki
2011-07-17 8:30 ` [PATCH 2/4] b43: HT-PHY: switch to channel after enabling radio Rafał Miłecki
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Rafał Miłecki @ 2011-07-17 8:30 UTC (permalink / raw)
To: linux-wireless, John W. Linville; +Cc: b43-dev, Rafał Miłecki
Old masks were causing ugly, delayed lock ups.
Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com>
---
drivers/net/wireless/b43/phy_ht.c | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/net/wireless/b43/phy_ht.c b/drivers/net/wireless/b43/phy_ht.c
index 2982103..0cc293a 100644
--- a/drivers/net/wireless/b43/phy_ht.c
+++ b/drivers/net/wireless/b43/phy_ht.c
@@ -277,12 +277,12 @@ static void b43_phy_ht_op_software_rfkill(struct b43_wldev *dev,
b43err(dev->wl, "MAC not suspended\n");
if (blocked) {
- b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
+ b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
} else {
- b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
- b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x1);
- b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
- b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x2);
+ b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
+ b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, 0, 0x1);
+ b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
+ b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, 0, 0x2);
if (dev->phy.radio_ver == 0x2059)
b43_radio_2059_init(dev);
--
1.7.3.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/4] b43: HT-PHY: switch to channel after enabling radio
2011-07-17 8:30 [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl Rafał Miłecki
@ 2011-07-17 8:30 ` Rafał Miłecki
2011-07-17 8:30 ` [PATCH 3/4] b43: HT-PHY: find channel entry with regs data Rafał Miłecki
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Rafał Miłecki @ 2011-07-17 8:30 UTC (permalink / raw)
To: linux-wireless, John W. Linville; +Cc: b43-dev, Rafał Miłecki
Also change the default channel to 11. This is the first channel closed
driver switches to.
Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com>
---
drivers/net/wireless/b43/phy_ht.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/drivers/net/wireless/b43/phy_ht.c b/drivers/net/wireless/b43/phy_ht.c
index 0cc293a..f903498 100644
--- a/drivers/net/wireless/b43/phy_ht.c
+++ b/drivers/net/wireless/b43/phy_ht.c
@@ -288,6 +288,8 @@ static void b43_phy_ht_op_software_rfkill(struct b43_wldev *dev,
b43_radio_2059_init(dev);
else
B43_WARN_ON(1);
+
+ b43_switch_channel(dev, dev->phy.channel);
}
}
@@ -329,7 +331,7 @@ static int b43_phy_ht_op_switch_channel(struct b43_wldev *dev,
static unsigned int b43_phy_ht_op_get_default_chan(struct b43_wldev *dev)
{
if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
- return 1;
+ return 11;
return 36;
}
--
1.7.3.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/4] b43: HT-PHY: find channel entry with regs data
2011-07-17 8:30 [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl Rafał Miłecki
2011-07-17 8:30 ` [PATCH 2/4] b43: HT-PHY: switch to channel after enabling radio Rafał Miłecki
@ 2011-07-17 8:30 ` Rafał Miłecki
2011-07-17 8:30 ` [PATCH 4/4] b43: HT-PHY: fix typo in 0x2059 radio init Rafał Miłecki
2011-07-17 8:43 ` [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl Michael Büsch
3 siblings, 0 replies; 8+ messages in thread
From: Rafał Miłecki @ 2011-07-17 8:30 UTC (permalink / raw)
To: linux-wireless, John W. Linville; +Cc: b43-dev, Rafał Miłecki
Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com>
---
drivers/net/wireless/b43/radio_2059.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/b43/radio_2059.c b/drivers/net/wireless/b43/radio_2059.c
index 23dea4b..f029f6e 100644
--- a/drivers/net/wireless/b43/radio_2059.c
+++ b/drivers/net/wireless/b43/radio_2059.c
@@ -161,5 +161,14 @@ static const struct b43_phy_ht_channeltab_e_radio2059 b43_phy_ht_channeltab_radi
const struct b43_phy_ht_channeltab_e_radio2059
*b43_phy_ht_get_channeltab_e_r2059(struct b43_wldev *dev, u16 freq)
{
+ const struct b43_phy_ht_channeltab_e_radio2059 *e;
+ unsigned int i;
+
+ e = b43_phy_ht_channeltab_radio2059;
+ for (i = 0; i < ARRAY_SIZE(b43_phy_ht_channeltab_radio2059); i++, e++) {
+ if (e->freq == freq)
+ return e;
+ }
+
return NULL;
}
--
1.7.3.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/4] b43: HT-PHY: fix typo in 0x2059 radio init
2011-07-17 8:30 [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl Rafał Miłecki
2011-07-17 8:30 ` [PATCH 2/4] b43: HT-PHY: switch to channel after enabling radio Rafał Miłecki
2011-07-17 8:30 ` [PATCH 3/4] b43: HT-PHY: find channel entry with regs data Rafał Miłecki
@ 2011-07-17 8:30 ` Rafał Miłecki
2011-07-17 8:43 ` [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl Michael Büsch
3 siblings, 0 replies; 8+ messages in thread
From: Rafał Miłecki @ 2011-07-17 8:30 UTC (permalink / raw)
To: linux-wireless, John W. Linville; +Cc: b43-dev, Rafał Miłecki
Following operation was incorrectly translated:
radio_read(0x0011) -> 0xffff
radio_write(0x0011) <- 0xfff7
Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com>
---
drivers/net/wireless/b43/phy_ht.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/wireless/b43/phy_ht.c b/drivers/net/wireless/b43/phy_ht.c
index f903498..2105f9c 100644
--- a/drivers/net/wireless/b43/phy_ht.c
+++ b/drivers/net/wireless/b43/phy_ht.c
@@ -148,7 +148,7 @@ static void b43_radio_2059_init(struct b43_wldev *dev)
b43_radio_mask(dev, 0x17F, ~0x1);
}
- b43_radio_mask(dev, 0x11, 0x0008);
+ b43_radio_mask(dev, 0x11, ~0x0008);
}
/**************************************************
--
1.7.3.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl
2011-07-17 8:30 [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl Rafał Miłecki
` (2 preceding siblings ...)
2011-07-17 8:30 ` [PATCH 4/4] b43: HT-PHY: fix typo in 0x2059 radio init Rafał Miłecki
@ 2011-07-17 8:43 ` Michael Büsch
2011-07-17 15:05 ` Larry Finger
` (2 more replies)
3 siblings, 3 replies; 8+ messages in thread
From: Michael Büsch @ 2011-07-17 8:43 UTC (permalink / raw)
To: Rafał Miłecki; +Cc: linux-wireless, John W. Linville, b43-dev
On Sun, 17 Jul 2011 10:30:31 +0200
Rafa? Mi?ecki <zajec5@gmail.com> wrote:
> Old masks were causing ugly, delayed lock ups.
>
> Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com>
> ---
> drivers/net/wireless/b43/phy_ht.c | 10 +++++-----
> 1 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/wireless/b43/phy_ht.c b/drivers/net/wireless/b43/phy_ht.c
> index 2982103..0cc293a 100644
> --- a/drivers/net/wireless/b43/phy_ht.c
> +++ b/drivers/net/wireless/b43/phy_ht.c
> @@ -277,12 +277,12 @@ static void b43_phy_ht_op_software_rfkill(struct b43_wldev *dev,
> b43err(dev->wl, "MAC not suspended\n");
>
> if (blocked) {
> - b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
> + b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
> } else {
> - b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
> - b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x1);
> - b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
> - b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x2);
> + b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
> + b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, 0, 0x1);
> + b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
> + b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, 0, 0x2);
>
> if (dev->phy.radio_ver == 0x2059)
> b43_radio_2059_init(dev);
Why are we using mask/maskset here at all, if the mask is zero?
You could just use phy_write.
(And mask() with ~0 should always ring a bell anyway, because it does
nothing except for possible side effects of the register read/write).
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl
2011-07-17 8:43 ` [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl Michael Büsch
@ 2011-07-17 15:05 ` Larry Finger
2011-07-17 16:42 ` Rafał Miłecki
2011-07-17 16:56 ` Rafał Miłecki
2 siblings, 0 replies; 8+ messages in thread
From: Larry Finger @ 2011-07-17 15:05 UTC (permalink / raw)
To: Michael Büsch
Cc: Rafał Miłecki, linux-wireless, John W. Linville,
b43-dev
On 07/17/2011 03:43 AM, Michael B?sch wrote:
> On Sun, 17 Jul 2011 10:30:31 +0200
> Rafa? Mi?ecki<zajec5@gmail.com> wrote:
>
>> Old masks were causing ugly, delayed lock ups.
>>
>> Signed-off-by: Rafa? Mi?ecki<zajec5@gmail.com>
>> ---
>> drivers/net/wireless/b43/phy_ht.c | 10 +++++-----
>> 1 files changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/net/wireless/b43/phy_ht.c b/drivers/net/wireless/b43/phy_ht.c
>> index 2982103..0cc293a 100644
>> --- a/drivers/net/wireless/b43/phy_ht.c
>> +++ b/drivers/net/wireless/b43/phy_ht.c
>> @@ -277,12 +277,12 @@ static void b43_phy_ht_op_software_rfkill(struct b43_wldev *dev,
>> b43err(dev->wl, "MAC not suspended\n");
>>
>> if (blocked) {
>> - b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
>> + b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
>> } else {
>> - b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
>> - b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x1);
>> - b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
>> - b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x2);
>> + b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
>> + b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, 0, 0x1);
>> + b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
>> + b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, 0, 0x2);
>>
>> if (dev->phy.radio_ver == 0x2059)
>> b43_radio_2059_init(dev);
>
> Why are we using mask/maskset here at all, if the mask is zero?
> You could just use phy_write.
>
> (And mask() with ~0 should always ring a bell anyway, because it does
> nothing except for possible side effects of the register read/write).
All of the Broadcom mask and maskset routines are called with the complement of
the mask. It has been a constant battle during the RE work to keep that straight.
Larry
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl
2011-07-17 8:43 ` [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl Michael Büsch
2011-07-17 15:05 ` Larry Finger
@ 2011-07-17 16:42 ` Rafał Miłecki
2011-07-17 16:56 ` Rafał Miłecki
2 siblings, 0 replies; 8+ messages in thread
From: Rafał Miłecki @ 2011-07-17 16:42 UTC (permalink / raw)
To: Michael Büsch; +Cc: linux-wireless, John W. Linville, b43-dev
W dniu 17 lipca 2011 10:43 u?ytkownik Michael B?sch <m@bues.ch> napisa?:
> On Sun, 17 Jul 2011 10:30:31 +0200
> Rafa? Mi?ecki <zajec5@gmail.com> wrote:
>
>> Old masks were causing ugly, delayed lock ups.
>>
>> Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com>
>> ---
>> ?drivers/net/wireless/b43/phy_ht.c | ? 10 +++++-----
>> ?1 files changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/net/wireless/b43/phy_ht.c b/drivers/net/wireless/b43/phy_ht.c
>> index 2982103..0cc293a 100644
>> --- a/drivers/net/wireless/b43/phy_ht.c
>> +++ b/drivers/net/wireless/b43/phy_ht.c
>> @@ -277,12 +277,12 @@ static void b43_phy_ht_op_software_rfkill(struct b43_wldev *dev,
>> ? ? ? ? ? ? ? b43err(dev->wl, "MAC not suspended\n");
>>
>> ? ? ? if (blocked) {
>> - ? ? ? ? ? ? b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
>> + ? ? ? ? ? ? b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
>> ? ? ? } else {
>> - ? ? ? ? ? ? b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
>> - ? ? ? ? ? ? b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x1);
>> - ? ? ? ? ? ? b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
>> - ? ? ? ? ? ? b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x2);
>> + ? ? ? ? ? ? b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
>> + ? ? ? ? ? ? b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, 0, 0x1);
>> + ? ? ? ? ? ? b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
>> + ? ? ? ? ? ? b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, 0, 0x2);
>>
>> ? ? ? ? ? ? ? if (dev->phy.radio_ver == 0x2059)
>> ? ? ? ? ? ? ? ? ? ? ? b43_radio_2059_init(dev);
>
> Why are we using mask/maskset here at all, if the mask is zero?
> You could just use phy_write.
>
> (And mask() with ~0 should always ring a bell anyway, because it does
> nothing except for possible side effects of the register read/write).
Yeah, I implemented it this way as the result of my rush in writing HT
code. We can ignore wl's ops and be smarter in such a cases.
--
Rafa?
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl
2011-07-17 8:43 ` [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl Michael Büsch
2011-07-17 15:05 ` Larry Finger
2011-07-17 16:42 ` Rafał Miłecki
@ 2011-07-17 16:56 ` Rafał Miłecki
2 siblings, 0 replies; 8+ messages in thread
From: Rafał Miłecki @ 2011-07-17 16:56 UTC (permalink / raw)
To: Michael Büsch; +Cc: linux-wireless, John W. Linville, b43-dev
W dniu 17 lipca 2011 10:43 u?ytkownik Michael B?sch <m@bues.ch> napisa?:
> On Sun, 17 Jul 2011 10:30:31 +0200
> Rafa? Mi?ecki <zajec5@gmail.com> wrote:
>
>> Old masks were causing ugly, delayed lock ups.
>>
>> Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com>
>> ---
>> ?drivers/net/wireless/b43/phy_ht.c | ? 10 +++++-----
>> ?1 files changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/net/wireless/b43/phy_ht.c b/drivers/net/wireless/b43/phy_ht.c
>> index 2982103..0cc293a 100644
>> --- a/drivers/net/wireless/b43/phy_ht.c
>> +++ b/drivers/net/wireless/b43/phy_ht.c
>> @@ -277,12 +277,12 @@ static void b43_phy_ht_op_software_rfkill(struct b43_wldev *dev,
>> ? ? ? ? ? ? ? b43err(dev->wl, "MAC not suspended\n");
>>
>> ? ? ? if (blocked) {
>> - ? ? ? ? ? ? b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
>> + ? ? ? ? ? ? b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
>> ? ? ? } else {
>> - ? ? ? ? ? ? b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
>> - ? ? ? ? ? ? b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x1);
>> - ? ? ? ? ? ? b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
>> - ? ? ? ? ? ? b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x2);
>> + ? ? ? ? ? ? b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
>> + ? ? ? ? ? ? b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, 0, 0x1);
>> + ? ? ? ? ? ? b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
>> + ? ? ? ? ? ? b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, 0, 0x2);
>>
>> ? ? ? ? ? ? ? if (dev->phy.radio_ver == 0x2059)
>> ? ? ? ? ? ? ? ? ? ? ? b43_radio_2059_init(dev);
>
> Why are we using mask/maskset here at all, if the mask is zero?
> You could just use phy_write.
>
> (And mask() with ~0 should always ring a bell anyway, because it does
> nothing except for possible side effects of the register read/write).
Well, after re-thinking it, I've some doubts.
Thanks to using maskset we got read after every write. We have no idea
it this is needed or no. What we are really sure is that this part of
code is really sensitive. Writing 0x3 cause horrible lock ups, really
ugly to track.
Should we use read-after-write then? Or maybe just keep wl's dummy way
of operating on this register?
--
Rafa?
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2011-07-17 16:56 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-17 8:30 [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl Rafał Miłecki
2011-07-17 8:30 ` [PATCH 2/4] b43: HT-PHY: switch to channel after enabling radio Rafał Miłecki
2011-07-17 8:30 ` [PATCH 3/4] b43: HT-PHY: find channel entry with regs data Rafał Miłecki
2011-07-17 8:30 ` [PATCH 4/4] b43: HT-PHY: fix typo in 0x2059 radio init Rafał Miłecki
2011-07-17 8:43 ` [PATCH 1/4] b43: HT-PHY: fix masks in radio ctl Michael Büsch
2011-07-17 15:05 ` Larry Finger
2011-07-17 16:42 ` Rafał Miłecki
2011-07-17 16:56 ` Rafał Miłecki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).