2007-10-26 19:51:30

by Roel Kluin

[permalink] [raw]
Subject: [PATCH] fix 'and' typo's

A few patches with changes to net code. I have sent these to the lkml
previously, but they were not yet merged. I am fairly new to kernel
programming, so it is possible that I make some mistakes. I'll explain my
rationale, please nack if incorrect, an additional bit of explanation is
appreciated even more.

The condition '!x & y,' does make little sense: the '!' has a higher
priority than '&'. It behaves therefore like '!x && y'. In the case
bitanding flags, however, '!(x & y)' appears to be desired.

Warning: the change of '!x & y,' to '!(x & y)' may change behavior. if
not desired, I propose changing this to '!x && y', to make it explicitly
clear.

These '&' typo's can be spotted with:
a="A-Za-z0-9_"
git-grep "\![^$a()]*[$a]\+\([$a.]*\|->\)*\(\[[$a.]*\]\)\?[ \W]*&[^&]\+"

--
Fix priority mistakes similar to '!x & y'

Signed-off-by: Roel Kluin <[email protected]>
---
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index 074055e..e3eca6d 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -6407,7 +6407,7 @@ static int airo_set_encode(struct net_device *dev,
set_wep_key(local, index, NULL, 0, perm, 1);
} else
/* Don't complain if only change the mode */
- if(!dwrq->flags & IW_ENCODE_MODE) {
+ if(!(dwrq->flags & IW_ENCODE_MODE)) {
return -EINVAL;
}
}
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c
index 059ce3f..57cc7e5 100644
--- a/drivers/net/wireless/atmel.c
+++ b/drivers/net/wireless/atmel.c
@@ -1759,7 +1759,7 @@ static int atmel_set_encode(struct net_device *dev,
priv->default_key = index;
} else
/* Don't complain if only change the mode */
- if (!dwrq->flags & IW_ENCODE_MODE) {
+ if (!(dwrq->flags & IW_ENCODE_MODE)) {
return -EINVAL;
}
}
diff --git a/drivers/net/wireless/libertas/wext.c b/drivers/net/wireless/libertas/wext.c
index c6f5aa3..d93438c 100644
--- a/drivers/net/wireless/libertas/wext.c
+++ b/drivers/net/wireless/libertas/wext.c
@@ -1380,7 +1380,7 @@ static int wlan_get_encodeext(struct net_device *dev,
index = adapter->wep_tx_keyidx;
}

- if (!ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY &&
+ if (!(ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY) &&
ext->alg != IW_ENCODE_ALG_WEP) {
if (index != 0 || adapter->mode != IW_MODE_INFRA)
goto out;
diff --git a/drivers/net/wireless/p54common.c b/drivers/net/wireless/p54common.c
index 1437db0..8ee1453 100644
--- a/drivers/net/wireless/p54common.c
+++ b/drivers/net/wireless/p54common.c
@@ -374,7 +374,7 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb)
if ((entry_hdr->magic1 & cpu_to_le16(0x4000)) != 0)
pad = entry_data->align[0];

- if (!status.control.flags & IEEE80211_TXCTL_NO_ACK) {
+ if (!(status.control.flags & IEEE80211_TXCTL_NO_ACK)) {
if (!(payload->status & 0x01))
status.flags |= IEEE80211_TX_STATUS_ACK;
else
diff --git a/drivers/net/wireless/prism54/isl_ioctl.c b/drivers/net/wireless/prism54/isl_ioctl.c
index 6d80ca4..b9d0073 100644
--- a/drivers/net/wireless/prism54/isl_ioctl.c
+++ b/drivers/net/wireless/prism54/isl_ioctl.c
@@ -1118,7 +1118,7 @@ prism54_set_encode(struct net_device *ndev, struct iw_request_info *info,
mgt_set_request(priv, DOT11_OID_DEFKEYID, 0,
&index);
} else {
- if (!dwrq->flags & IW_ENCODE_MODE) {
+ if (!(dwrq->flags & IW_ENCODE_MODE)) {
/* we cannot do anything. Complain. */
return -EINVAL;
}
@@ -2610,7 +2610,7 @@ prism2_ioctl_set_encryption(struct net_device *dev,
mgt_set_request(priv, DOT11_OID_DEFKEYID, 0,
&index);
} else {
- if (!param->u.crypt.flags & IW_ENCODE_MODE) {
+ if (!(param->u.crypt.flags & IW_ENCODE_MODE)) {
/* we cannot do anything. Complain. */
return -EINVAL;
}
diff --git a/drivers/net/wireless/zd1211rw/zd_rf_uw2453.c b/drivers/net/wireless/zd1211rw/zd_rf_uw2453.c
index 857dcf3..3c1cca4 100644
--- a/drivers/net/wireless/zd1211rw/zd_rf_uw2453.c
+++ b/drivers/net/wireless/zd1211rw/zd_rf_uw2453.c
@@ -403,7 +403,7 @@ static int uw2453_init_hw(struct zd_rf *rf)
if (r)
return r;

- if (!intr_status & 0xf) {
+ if (!(intr_status & 0xf)) {
dev_dbg_f(zd_chip_dev(chip),
"PLL locked on configuration %d\n", i);
found_config = i;
diff --git a/net/ieee80211/ieee80211_wx.c b/net/ieee80211/ieee80211_wx.c
index d309e8f..623489a 100644
--- a/net/ieee80211/ieee80211_wx.c
+++ b/net/ieee80211/ieee80211_wx.c
@@ -709,7 +709,7 @@ int ieee80211_wx_get_encodeext(struct ieee80211_device *ieee,
} else
idx = ieee->tx_keyidx;

- if (!ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY &&
+ if (!(ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY) &&
ext->alg != IW_ENCODE_ALG_WEP)
if (idx != 0 || ieee->iw_mode != IW_MODE_INFRA)
return -EINVAL;


2007-10-26 20:15:24

by Roel Kluin

[permalink] [raw]
Subject: Re: [PATCH split 0/8] fix 'and' typo's

Roel Kluin wrote:
> A few patches with changes to net code. I have sent these to the lkml
> previously, but they were not yet merged. I am fairly new to kernel
> programming, so it is possible that I make some mistakes. I'll explain my
> rationale, please nack if incorrect, an additional bit of explanation is
> appreciated even more.
>
> The condition '!x & y,' does make little sense: the '!' has a higher
> priority than '&'. It behaves therefore like '!x && y'. In the case
> bitanding flags, however, '!(x & y)' appears to be desired.
>
> Warning: the change of '!x & y,' to '!(x & y)' may change behavior. if
> not desired, I propose changing this to '!x && y', to make it explicitly
> clear.
>
> These '&' typo's can be spotted with:
> a="A-Za-z0-9_"
> git-grep "\![^$a()]*[$a]\+\([$a.]*\|->\)*\(\[[$a.]*\]\)\?[ \W]*&[^&]\+"

It was suggested to split this up, so here goes.

2007-10-26 20:08:04

by Roel Kluin

[permalink] [raw]
Subject: Re: [PATCH split 1/8] fix 'and' typo's in airo wireless

Fix priority mistakes similar to '!x & y' in airo wireless

Signed-off-by: Roel Kluin <[email protected]>
---
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index 074055e..e3eca6d 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -6407,7 +6407,7 @@ static int airo_set_encode(struct net_device *dev,
set_wep_key(local, index, NULL, 0, perm, 1);
} else
/* Don't complain if only change the mode */
- if(!dwrq->flags & IW_ENCODE_MODE) {
+ if(!(dwrq->flags & IW_ENCODE_MODE)) {
return -EINVAL;
}
}

2007-10-27 00:05:13

by Roel Kluin

[permalink] [raw]
Subject: Re: [PATCH] fix 'and' typo's

Dan Williams wrote:

>> diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
>> index 074055e..e3eca6d 100644
>> --- a/drivers/net/wireless/airo.c

>
> Ack.
>
>> diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c
>> index 059ce3f..57cc7e5 100644
>> --- a/drivers/net/wireless/atmel.c

>
> Ack.
>
>> diff --git a/drivers/net/wireless/libertas/wext.c b/drivers/net/wireless/libertas/wext.c
>> index c6f5aa3..d93438c 100644
>> --- a/drivers/net/wireless/libertas/wext.c

>
> Ack.
>

Thanks.
I have sent them as separate patches to the wireless list as well.

2007-10-26 20:19:13

by Roel Kluin

[permalink] [raw]
Subject: Re: [PATCH split 7/8] fix 'and' typo's in wireless/zd1211rw/zd_rf_uw2453

Fix priority mistakes similar to '!x & y'

Signed-off-by: Roel Kluin <[email protected]>
---
diff --git a/drivers/net/wireless/zd1211rw/zd_rf_uw2453.c b/drivers/net/wireless/zd1211rw/zd_rf_uw2453.c
index 857dcf3..3c1cca4 100644
--- a/drivers/net/wireless/zd1211rw/zd_rf_uw2453.c
+++ b/drivers/net/wireless/zd1211rw/zd_rf_uw2453.c
@@ -403,7 +403,7 @@ static int uw2453_init_hw(struct zd_rf *rf)
if (r)
return r;

- if (!intr_status & 0xf) {
+ if (!(intr_status & 0xf)) {
dev_dbg_f(zd_chip_dev(chip),
"PLL locked on configuration %d\n", i);
found_config = i;

2007-10-26 23:49:47

by Dan Williams

[permalink] [raw]
Subject: Re: [PATCH] fix 'and' typo's

On Fri, 2007-10-26 at 21:51 +0200, Roel Kluin wrote:
> A few patches with changes to net code. I have sent these to the lkml
> previously, but they were not yet merged. I am fairly new to kernel
> programming, so it is possible that I make some mistakes. I'll explain my
> rationale, please nack if incorrect, an additional bit of explanation is
> appreciated even more.
>
> The condition '!x & y,' does make little sense: the '!' has a higher
> priority than '&'. It behaves therefore like '!x && y'. In the case
> bitanding flags, however, '!(x & y)' appears to be desired.
>
> Warning: the change of '!x & y,' to '!(x & y)' may change behavior. if
> not desired, I propose changing this to '!x && y', to make it explicitly
> clear.
>
> These '&' typo's can be spotted with:
> a="A-Za-z0-9_"
> git-grep "\![^$a()]*[$a]\+\([$a.]*\|->\)*\(\[[$a.]*\]\)\?[ \W]*&[^&]\+"
>
> --
> Fix priority mistakes similar to '!x & y'
>
> Signed-off-by: Roel Kluin <[email protected]>
> ---
> diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
> index 074055e..e3eca6d 100644
> --- a/drivers/net/wireless/airo.c
> +++ b/drivers/net/wireless/airo.c
> @@ -6407,7 +6407,7 @@ static int airo_set_encode(struct net_device *dev,
> set_wep_key(local, index, NULL, 0, perm, 1);
> } else
> /* Don't complain if only change the mode */
> - if(!dwrq->flags & IW_ENCODE_MODE) {
> + if(!(dwrq->flags & IW_ENCODE_MODE)) {
> return -EINVAL;
> }
> }

Ack.

> diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c
> index 059ce3f..57cc7e5 100644
> --- a/drivers/net/wireless/atmel.c
> +++ b/drivers/net/wireless/atmel.c
> @@ -1759,7 +1759,7 @@ static int atmel_set_encode(struct net_device *dev,
> priv->default_key = index;
> } else
> /* Don't complain if only change the mode */
> - if (!dwrq->flags & IW_ENCODE_MODE) {
> + if (!(dwrq->flags & IW_ENCODE_MODE)) {
> return -EINVAL;
> }
> }

Ack.

> diff --git a/drivers/net/wireless/libertas/wext.c b/drivers/net/wireless/libertas/wext.c
> index c6f5aa3..d93438c 100644
> --- a/drivers/net/wireless/libertas/wext.c
> +++ b/drivers/net/wireless/libertas/wext.c
> @@ -1380,7 +1380,7 @@ static int wlan_get_encodeext(struct net_device *dev,
> index = adapter->wep_tx_keyidx;
> }
>
> - if (!ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY &&
> + if (!(ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY) &&
> ext->alg != IW_ENCODE_ALG_WEP) {
> if (index != 0 || adapter->mode != IW_MODE_INFRA)
> goto out;

Ack.

> diff --git a/drivers/net/wireless/p54common.c b/drivers/net/wireless/p54common.c
> index 1437db0..8ee1453 100644
> --- a/drivers/net/wireless/p54common.c
> +++ b/drivers/net/wireless/p54common.c
> @@ -374,7 +374,7 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb)
> if ((entry_hdr->magic1 & cpu_to_le16(0x4000)) != 0)
> pad = entry_data->align[0];
>
> - if (!status.control.flags & IEEE80211_TXCTL_NO_ACK) {
> + if (!(status.control.flags & IEEE80211_TXCTL_NO_ACK)) {
> if (!(payload->status & 0x01))
> status.flags |= IEEE80211_TX_STATUS_ACK;
> else
> diff --git a/drivers/net/wireless/prism54/isl_ioctl.c b/drivers/net/wireless/prism54/isl_ioctl.c
> index 6d80ca4..b9d0073 100644
> --- a/drivers/net/wireless/prism54/isl_ioctl.c
> +++ b/drivers/net/wireless/prism54/isl_ioctl.c
> @@ -1118,7 +1118,7 @@ prism54_set_encode(struct net_device *ndev, struct iw_request_info *info,
> mgt_set_request(priv, DOT11_OID_DEFKEYID, 0,
> &index);
> } else {
> - if (!dwrq->flags & IW_ENCODE_MODE) {
> + if (!(dwrq->flags & IW_ENCODE_MODE)) {
> /* we cannot do anything. Complain. */
> return -EINVAL;
> }
> @@ -2610,7 +2610,7 @@ prism2_ioctl_set_encryption(struct net_device *dev,
> mgt_set_request(priv, DOT11_OID_DEFKEYID, 0,
> &index);
> } else {
> - if (!param->u.crypt.flags & IW_ENCODE_MODE) {
> + if (!(param->u.crypt.flags & IW_ENCODE_MODE)) {
> /* we cannot do anything. Complain. */
> return -EINVAL;
> }
> diff --git a/drivers/net/wireless/zd1211rw/zd_rf_uw2453.c b/drivers/net/wireless/zd1211rw/zd_rf_uw2453.c
> index 857dcf3..3c1cca4 100644
> --- a/drivers/net/wireless/zd1211rw/zd_rf_uw2453.c
> +++ b/drivers/net/wireless/zd1211rw/zd_rf_uw2453.c
> @@ -403,7 +403,7 @@ static int uw2453_init_hw(struct zd_rf *rf)
> if (r)
> return r;
>
> - if (!intr_status & 0xf) {
> + if (!(intr_status & 0xf)) {
> dev_dbg_f(zd_chip_dev(chip),
> "PLL locked on configuration %d\n", i);
> found_config = i;
> diff --git a/net/ieee80211/ieee80211_wx.c b/net/ieee80211/ieee80211_wx.c
> index d309e8f..623489a 100644
> --- a/net/ieee80211/ieee80211_wx.c
> +++ b/net/ieee80211/ieee80211_wx.c
> @@ -709,7 +709,7 @@ int ieee80211_wx_get_encodeext(struct ieee80211_device *ieee,
> } else
> idx = ieee->tx_keyidx;
>
> - if (!ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY &&
> + if (!(ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY) &&
> ext->alg != IW_ENCODE_ALG_WEP)
> if (idx != 0 || ieee->iw_mode != IW_MODE_INFRA)
> return -EINVAL;
> -
> 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


2007-10-26 20:09:23

by Roel Kluin

[permalink] [raw]
Subject: Re: [PATCH split 2/8] fix 'and' typo's in atmel wireless

Fix priority mistakes similar to '!x & y' in atmel wireless

Signed-off-by: Roel Kluin <[email protected]>
---
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c
index 059ce3f..57cc7e5 100644
--- a/drivers/net/wireless/atmel.c
+++ b/drivers/net/wireless/atmel.c
@@ -1759,7 +1759,7 @@ static int atmel_set_encode(struct net_device *dev,
priv->default_key = index;
} else
/* Don't complain if only change the mode */
- if (!dwrq->flags & IW_ENCODE_MODE) {
+ if (!(dwrq->flags & IW_ENCODE_MODE)) {
return -EINVAL;
}
}

2007-10-26 20:13:02

by Roel Kluin

[permalink] [raw]
Subject: Re: [PATCH split 3/8] fix 'and' typo's in wireless/libertas/wext

Fix priority mistakes similar to '!x & y' in wireless/libertas/wext

Signed-off-by: Roel Kluin <[email protected]>
---
diff --git a/drivers/net/wireless/libertas/wext.c b/drivers/net/wireless/libertas/wext.c
index c6f5aa3..d93438c 100644
--- a/drivers/net/wireless/libertas/wext.c
+++ b/drivers/net/wireless/libertas/wext.c
@@ -1380,7 +1380,7 @@ static int wlan_get_encodeext(struct net_device *dev,
index = adapter->wep_tx_keyidx;
}

- if (!ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY &&
+ if (!(ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY) &&
ext->alg != IW_ENCODE_ALG_WEP) {
if (index != 0 || adapter->mode != IW_MODE_INFRA)
goto out;

2007-10-26 20:18:13

by Roel Kluin

[permalink] [raw]
Subject: Re: [PATCH split 6/8] fix 'and' typo's

could be an error due to the splitting, of this and the former patch?
Then reply for another one.
--
Fix priority mistakes similar to '!x & y'

Signed-off-by: Roel Kluin <[email protected]>
---
diff --git a/drivers/net/wireless/prism54/isl_ioctl.c b/drivers/net/wireless/prism54/isl_ioctl.c
index 6d80ca4..b9d0073 100644
--- a/drivers/net/wireless/prism54/isl_ioctl.c
+++ b/drivers/net/wireless/prism54/isl_ioctl.c
@@ -2610,7 +2610,7 @@ prism2_ioctl_set_encryption(struct net_device *dev,
mgt_set_request(priv, DOT11_OID_DEFKEYID, 0,
&index);
} else {
- if (!param->u.crypt.flags & IW_ENCODE_MODE) {
+ if (!(param->u.crypt.flags & IW_ENCODE_MODE)) {
/* we cannot do anything. Complain. */
return -EINVAL;
}

2007-10-26 20:20:01

by Roel Kluin

[permalink] [raw]
Subject: Re: [PATCH split 8/8] fix 'and' typo's net/ieee80211/ieee80211_wx

Fix priority mistakes similar to '!x & y'

Signed-off-by: Roel Kluin <[email protected]>
---

diff --git a/net/ieee80211/ieee80211_wx.c b/net/ieee80211/ieee80211_wx.c
index d309e8f..623489a 100644
--- a/net/ieee80211/ieee80211_wx.c
+++ b/net/ieee80211/ieee80211_wx.c
@@ -709,7 +709,7 @@ int ieee80211_wx_get_encodeext(struct ieee80211_device *ieee,
} else
idx = ieee->tx_keyidx;

- if (!ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY &&
+ if (!(ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY) &&
ext->alg != IW_ENCODE_ALG_WEP)
if (idx != 0 || ieee->iw_mode != IW_MODE_INFRA)
return -EINVAL;

2007-10-29 15:11:16

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH split 5/8] fix 'and' typo's wireless/prism54/isl_ioctl (first)

On 10/26/07, Roel Kluin <[email protected]> wrote:
> Fix priority mistakes similar to '!x & y' wireless/prism54/isl_ioctl (first)
>
> Signed-off-by: Roel Kluin <[email protected]>

Acked-by: Luis R. Rodriguez <[email protected]>

Thanks,

Luis

2007-10-26 20:14:26

by Roel Kluin

[permalink] [raw]
Subject: Re: [PATCH split 5/8] fix 'and' typo's wireless/prism54/isl_ioctl (first)

Fix priority mistakes similar to '!x & y' wireless/prism54/isl_ioctl (first)

Signed-off-by: Roel Kluin <[email protected]>
---
diff --git a/drivers/net/wireless/prism54/isl_ioctl.c b/drivers/net/wireless/prism54/isl_ioctl.c
index 6d80ca4..b9d0073 100644
--- a/drivers/net/wireless/prism54/isl_ioctl.c
+++ b/drivers/net/wireless/prism54/isl_ioctl.c
@@ -1118,7 +1118,7 @@ prism54_set_encode(struct net_device *ndev, struct iw_request_info *info,
mgt_set_request(priv, DOT11_OID_DEFKEYID, 0,
&index);
} else {
- if (!dwrq->flags & IW_ENCODE_MODE) {
+ if (!(dwrq->flags & IW_ENCODE_MODE)) {
/* we cannot do anything. Complain. */
return -EINVAL;
}

2007-10-26 20:13:32

by Roel Kluin

[permalink] [raw]
Subject: Re: [PATCH split 4/8] fix 'and' typo's in wireless/p54common

Fix priority mistakes similar to '!x & y' in wireless/p54common

Signed-off-by: Roel Kluin <[email protected]>
---
diff --git a/drivers/net/wireless/p54common.c b/drivers/net/wireless/p54common.c
index 1437db0..8ee1453 100644
--- a/drivers/net/wireless/p54common.c
+++ b/drivers/net/wireless/p54common.c
@@ -374,7 +374,7 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb)
if ((entry_hdr->magic1 & cpu_to_le16(0x4000)) != 0)
pad = entry_data->align[0];

- if (!status.control.flags & IEEE80211_TXCTL_NO_ACK) {
+ if (!(status.control.flags & IEEE80211_TXCTL_NO_ACK)) {
if (!(payload->status & 0x01))
status.flags |= IEEE80211_TX_STATUS_ACK;
else

2008-01-10 20:49:41

by Chuck Ebbert

[permalink] [raw]
Subject: Re: [PATCH wireless/arlan] Replace logical- by bit-and

On 01/10/2008 03:28 PM, Randy Dunlap wrote:
> On Thu, 10 Jan 2008 20:15:53 +0100 Roel Kluin wrote:
>
>> Totally untested patch below from linus' git tree. The && is incorrect, right?
>>
>> from drivers/net/wireless/arlan.h:390:
>> #define ARLAN_POWER 0x40
>> #define ARLAN_ACCESS 0x80
>>
>> Replace logical and by bit-and
>>
>> Signed-off-by: Roel Kluin <[email protected]>
>> ---
>> diff --git a/drivers/net/wireless/arlan.h b/drivers/net/wireless/arlan.h
>> index 3ed1df7..7b7498f 100644
>> --- a/drivers/net/wireless/arlan.h
>> +++ b/drivers/net/wireless/arlan.h
>> @@ -485,7 +485,7 @@ struct arlan_private {
>> #define clearClearInterrupt(dev){\
>> writeControlRegister(dev,readControlRegister(dev) & ~ARLAN_CLEAR_INTERRUPT);}
>> #define setPowerOff(dev){\
>> - writeControlRegister(dev,readControlRegister(dev) | (ARLAN_POWER && ARLAN_ACCESS));\
>> + writeControlRegister(dev, readControlRegister(dev) | (ARLAN_POWER & ARLAN_ACCESS));\
>
> eh? How does that help?
>
> 0x80 && 0x40 -> 0

1

2008-01-10 20:31:08

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH wireless/arlan] Replace logical- by bit-and

On Thu, 10 Jan 2008 20:15:53 +0100 Roel Kluin wrote:

> Totally untested patch below from linus' git tree. The && is incorrect, right?
>
> from drivers/net/wireless/arlan.h:390:
> #define ARLAN_POWER 0x40
> #define ARLAN_ACCESS 0x80
>
> Replace logical and by bit-and
>
> Signed-off-by: Roel Kluin <[email protected]>
> ---
> diff --git a/drivers/net/wireless/arlan.h b/drivers/net/wireless/arlan.h
> index 3ed1df7..7b7498f 100644
> --- a/drivers/net/wireless/arlan.h
> +++ b/drivers/net/wireless/arlan.h
> @@ -485,7 +485,7 @@ struct arlan_private {
> #define clearClearInterrupt(dev){\
> writeControlRegister(dev,readControlRegister(dev) & ~ARLAN_CLEAR_INTERRUPT);}
> #define setPowerOff(dev){\
> - writeControlRegister(dev,readControlRegister(dev) | (ARLAN_POWER && ARLAN_ACCESS));\
> + writeControlRegister(dev, readControlRegister(dev) | (ARLAN_POWER & ARLAN_ACCESS));\

eh? How does that help?

0x80 && 0x40 -> 0
0x80 & 0x40 -> 0

so readControlRegister() | (0)
??

Maybe it should be (ARLAN_POWER | ARLAN_ACCESS), but some
arlan developer or someone with specs should help here...


> writeControlRegister(dev,readControlRegister(dev) & ~ARLAN_ACCESS);}
> #define setPowerOn(dev){\
> writeControlRegister(dev,readControlRegister(dev) & ~(ARLAN_POWER)); }

or am I sleeping()?
---
~Randy

2008-01-10 21:51:26

by John W. Linville

[permalink] [raw]
Subject: Re: [PATCH wireless/arlan] Replace logical- by bit-and

On Thu, Jan 10, 2008 at 01:16:33PM -0800, Randy Dunlap wrote:
> Chuck Ebbert wrote:
>> On 01/10/2008 03:28 PM, Randy Dunlap wrote:
>
>>>
>>> 0x80 && 0x40 -> 0
>>
>> 1
>
> duh. ack.

Well it still seems wrong, changing from an "| 1" to an "| 0".
Anyone still using Arlan that can verify the proper fix (which I'd
guess is changing "&&" to "|")?

John
--
John W. Linville
[email protected]

2008-01-10 22:19:49

by Roel Kluin

[permalink] [raw]
Subject: Re: [PATCH wireless/arlan] Replace logical- by bit-and

Randy Dunlap wrote:
> On Thu, 10 Jan 2008 20:15:53 +0100 Roel Kluin wrote:
>
>> diff --git a/drivers/net/wireless/arlan.h b/drivers/net/wireless/arlan.h
>> index 3ed1df7..7b7498f 100644
>> --- a/drivers/net/wireless/arlan.h
>> +++ b/drivers/net/wireless/arlan.h
>> @@ -485,7 +485,7 @@ struct arlan_private {
>> #define clearClearInterrupt(dev){\
>> writeControlRegister(dev,readControlRegister(dev) & ~ARLAN_CLEAR_INTERRUPT);}
>> #define setPowerOff(dev){\
>> - writeControlRegister(dev,readControlRegister(dev) | (ARLAN_POWER && ARLAN_ACCESS));\
>> + writeControlRegister(dev, readControlRegister(dev) | (ARLAN_POWER & ARLAN_ACCESS));\
>
> eh? How does that help?

Right, sorry, please ignore my patch.

> Maybe it should be (ARLAN_POWER | ARLAN_ACCESS), but some
> arlan developer or someone with specs should help here...

I have CC'd the previous maintainers

2008-01-10 21:19:07

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH wireless/arlan] Replace logical- by bit-and

Chuck Ebbert wrote:
> On 01/10/2008 03:28 PM, Randy Dunlap wrote:

>>
>> 0x80 && 0x40 -> 0
>
> 1

duh. ack.

--
~Randy

2008-01-10 19:44:38

by Roel Kluin

[permalink] [raw]
Subject: [PATCH wireless/arlan] Replace logical- by bit-and

Totally untested patch below from linus' git tree. The && is incorrect, right?

from drivers/net/wireless/arlan.h:390:
#define ARLAN_POWER 0x40
#define ARLAN_ACCESS 0x80

Replace logical and by bit-and

Signed-off-by: Roel Kluin <[email protected]>
---
diff --git a/drivers/net/wireless/arlan.h b/drivers/net/wireless/arlan.h
index 3ed1df7..7b7498f 100644
--- a/drivers/net/wireless/arlan.h
+++ b/drivers/net/wireless/arlan.h
@@ -485,7 +485,7 @@ struct arlan_private {
#define clearClearInterrupt(dev){\
writeControlRegister(dev,readControlRegister(dev) & ~ARLAN_CLEAR_INTERRUPT);}
#define setPowerOff(dev){\
- writeControlRegister(dev,readControlRegister(dev) | (ARLAN_POWER && ARLAN_ACCESS));\
+ writeControlRegister(dev, readControlRegister(dev) | (ARLAN_POWER & ARLAN_ACCESS));\
writeControlRegister(dev,readControlRegister(dev) & ~ARLAN_ACCESS);}
#define setPowerOn(dev){\
writeControlRegister(dev,readControlRegister(dev) & ~(ARLAN_POWER)); }