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;
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.
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;
}
}
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.
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;
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
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;
}
}
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;
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;
}
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;
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
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;
}
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
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
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
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]
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
Chuck Ebbert wrote:
> On 01/10/2008 03:28 PM, Randy Dunlap wrote:
>>
>> 0x80 && 0x40 -> 0
>
> 1
duh. ack.
--
~Randy
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)); }