* [PATCH] rt2x00: Use rt2x00usb_register_multiwrite()
@ 2009-03-04 21:25 Ivo van Doorn
2009-03-08 14:17 ` Ivo van Doorn
0 siblings, 1 reply; 2+ messages in thread
From: Ivo van Doorn @ 2009-03-04 21:25 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, rt2400-devel
>From 26f9e08ed236c602fa92b9de93b272f78cc4026b Mon Sep 17 00:00:00 2001
rt2x00usb.h contains a wrapper for writing multiple
bytes to the hardware in a single action. Replace
all individual calls to rt2x00usb_vendor_request_buff
with rt2x00usb_register_multiwrite.
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
drivers/net/wireless/rt2x00/rt2500usb.c | 9 ++-------
drivers/net/wireless/rt2x00/rt73usb.c | 31 ++++++++-----------------------
2 files changed, 10 insertions(+), 30 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index 9e630e7..164deb9 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
@@ -348,7 +348,6 @@ static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev,
struct rt2x00lib_crypto *crypto,
struct ieee80211_key_conf *key)
{
- int timeout;
u32 mask;
u16 reg;
@@ -376,12 +375,8 @@ static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev,
* rt2x00usb_vendor_request() to send the key to the hardware.
*/
reg = KEY_ENTRY(key->hw_key_idx);
- timeout = REGISTER_TIMEOUT32(sizeof(crypto->key));
- rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
- USB_VENDOR_REQUEST_OUT, reg,
- crypto->key,
- sizeof(crypto->key),
- timeout);
+ rt2500usb_register_multiwrite(rt2x00dev, reg,
+ crypto->key, sizeof(crypto->key));
/*
* The driver does not support the IV/EIV generation
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index 24fdfdf..80ceb16 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -273,7 +273,6 @@ static int rt73usb_config_shared_key(struct rt2x00_dev *rt2x00dev,
{
struct hw_key_entry key_entry;
struct rt2x00_field32 field;
- int timeout;
u32 mask;
u32 reg;
@@ -309,12 +308,8 @@ static int rt73usb_config_shared_key(struct rt2x00_dev *rt2x00dev,
sizeof(key_entry.rx_mic));
reg = SHARED_KEY_ENTRY(key->hw_key_idx);
- timeout = REGISTER_TIMEOUT32(sizeof(key_entry));
- rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
- USB_VENDOR_REQUEST_OUT, reg,
- &key_entry,
- sizeof(key_entry),
- timeout);
+ rt2x00usb_register_multiwrite(rt2x00dev, reg,
+ &key_entry, sizeof(key_entry));
/*
* The cipher types are stored over 2 registers.
@@ -375,7 +370,6 @@ static int rt73usb_config_pairwise_key(struct rt2x00_dev *rt2x00dev,
{
struct hw_pairwise_ta_entry addr_entry;
struct hw_key_entry key_entry;
- int timeout;
u32 mask;
u32 reg;
@@ -410,12 +404,8 @@ static int rt73usb_config_pairwise_key(struct rt2x00_dev *rt2x00dev,
sizeof(key_entry.rx_mic));
reg = PAIRWISE_KEY_ENTRY(key->hw_key_idx);
- timeout = REGISTER_TIMEOUT32(sizeof(key_entry));
- rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
- USB_VENDOR_REQUEST_OUT, reg,
- &key_entry,
- sizeof(key_entry),
- timeout);
+ rt2x00usb_register_multiwrite(rt2x00dev, reg,
+ &key_entry, sizeof(key_entry));
/*
* Send the address and cipher type to the hardware register.
@@ -1112,11 +1102,8 @@ static int rt73usb_load_firmware(struct rt2x00_dev *rt2x00dev,
/*
* Write firmware to device.
*/
- rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
- USB_VENDOR_REQUEST_OUT,
- FIRMWARE_IMAGE_BASE,
- data, len,
- REGISTER_TIMEOUT32(len));
+ rt2x00usb_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE,
+ (void *)data, len);
/*
* Send firmware request to device to load firmware,
@@ -1554,10 +1541,8 @@ static void rt73usb_write_beacon(struct queue_entry *entry)
* Write entire beacon with descriptor to register.
*/
beacon_base = HW_BEACON_OFFSET(entry->entry_idx);
- rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
- USB_VENDOR_REQUEST_OUT, beacon_base,
- entry->skb->data, entry->skb->len,
- REGISTER_TIMEOUT32(entry->skb->len));
+ rt2x00usb_register_multiwrite(rt2x00dev, beacon_base,
+ entry->skb->data, entry->skb->len);
/*
* Clean up the beacon skb.
--
1.5.6.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] rt2x00: Use rt2x00usb_register_multiwrite()
2009-03-04 21:25 [PATCH] rt2x00: Use rt2x00usb_register_multiwrite() Ivo van Doorn
@ 2009-03-08 14:17 ` Ivo van Doorn
0 siblings, 0 replies; 2+ messages in thread
From: Ivo van Doorn @ 2009-03-08 14:17 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, rt2400-devel
John,
Please revert below patch (932dec0edbccaf0f4b599df424cad40e04fe8ae1)
it breaks practically everything in rt2500usb and rt73usb (beaconing, HW crypto
and firmware loading)
Thanks,
Ivo
On Wednesday 04 March 2009, Ivo van Doorn wrote:
> From 26f9e08ed236c602fa92b9de93b272f78cc4026b Mon Sep 17 00:00:00 2001
> rt2x00usb.h contains a wrapper for writing multiple
> bytes to the hardware in a single action. Replace
> all individual calls to rt2x00usb_vendor_request_buff
> with rt2x00usb_register_multiwrite.
>
> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
> ---
> drivers/net/wireless/rt2x00/rt2500usb.c | 9 ++-------
> drivers/net/wireless/rt2x00/rt73usb.c | 31 ++++++++-----------------------
> 2 files changed, 10 insertions(+), 30 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
> index 9e630e7..164deb9 100644
> --- a/drivers/net/wireless/rt2x00/rt2500usb.c
> +++ b/drivers/net/wireless/rt2x00/rt2500usb.c
> @@ -348,7 +348,6 @@ static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev,
> struct rt2x00lib_crypto *crypto,
> struct ieee80211_key_conf *key)
> {
> - int timeout;
> u32 mask;
> u16 reg;
>
> @@ -376,12 +375,8 @@ static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev,
> * rt2x00usb_vendor_request() to send the key to the hardware.
> */
> reg = KEY_ENTRY(key->hw_key_idx);
> - timeout = REGISTER_TIMEOUT32(sizeof(crypto->key));
> - rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
> - USB_VENDOR_REQUEST_OUT, reg,
> - crypto->key,
> - sizeof(crypto->key),
> - timeout);
> + rt2500usb_register_multiwrite(rt2x00dev, reg,
> + crypto->key, sizeof(crypto->key));
>
> /*
> * The driver does not support the IV/EIV generation
> diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
> index 24fdfdf..80ceb16 100644
> --- a/drivers/net/wireless/rt2x00/rt73usb.c
> +++ b/drivers/net/wireless/rt2x00/rt73usb.c
> @@ -273,7 +273,6 @@ static int rt73usb_config_shared_key(struct rt2x00_dev *rt2x00dev,
> {
> struct hw_key_entry key_entry;
> struct rt2x00_field32 field;
> - int timeout;
> u32 mask;
> u32 reg;
>
> @@ -309,12 +308,8 @@ static int rt73usb_config_shared_key(struct rt2x00_dev *rt2x00dev,
> sizeof(key_entry.rx_mic));
>
> reg = SHARED_KEY_ENTRY(key->hw_key_idx);
> - timeout = REGISTER_TIMEOUT32(sizeof(key_entry));
> - rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
> - USB_VENDOR_REQUEST_OUT, reg,
> - &key_entry,
> - sizeof(key_entry),
> - timeout);
> + rt2x00usb_register_multiwrite(rt2x00dev, reg,
> + &key_entry, sizeof(key_entry));
>
> /*
> * The cipher types are stored over 2 registers.
> @@ -375,7 +370,6 @@ static int rt73usb_config_pairwise_key(struct rt2x00_dev *rt2x00dev,
> {
> struct hw_pairwise_ta_entry addr_entry;
> struct hw_key_entry key_entry;
> - int timeout;
> u32 mask;
> u32 reg;
>
> @@ -410,12 +404,8 @@ static int rt73usb_config_pairwise_key(struct rt2x00_dev *rt2x00dev,
> sizeof(key_entry.rx_mic));
>
> reg = PAIRWISE_KEY_ENTRY(key->hw_key_idx);
> - timeout = REGISTER_TIMEOUT32(sizeof(key_entry));
> - rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
> - USB_VENDOR_REQUEST_OUT, reg,
> - &key_entry,
> - sizeof(key_entry),
> - timeout);
> + rt2x00usb_register_multiwrite(rt2x00dev, reg,
> + &key_entry, sizeof(key_entry));
>
> /*
> * Send the address and cipher type to the hardware register.
> @@ -1112,11 +1102,8 @@ static int rt73usb_load_firmware(struct rt2x00_dev *rt2x00dev,
> /*
> * Write firmware to device.
> */
> - rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
> - USB_VENDOR_REQUEST_OUT,
> - FIRMWARE_IMAGE_BASE,
> - data, len,
> - REGISTER_TIMEOUT32(len));
> + rt2x00usb_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE,
> + (void *)data, len);
>
> /*
> * Send firmware request to device to load firmware,
> @@ -1554,10 +1541,8 @@ static void rt73usb_write_beacon(struct queue_entry *entry)
> * Write entire beacon with descriptor to register.
> */
> beacon_base = HW_BEACON_OFFSET(entry->entry_idx);
> - rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
> - USB_VENDOR_REQUEST_OUT, beacon_base,
> - entry->skb->data, entry->skb->len,
> - REGISTER_TIMEOUT32(entry->skb->len));
> + rt2x00usb_register_multiwrite(rt2x00dev, beacon_base,
> + entry->skb->data, entry->skb->len);
>
> /*
> * Clean up the beacon skb.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-03-08 14:17 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-04 21:25 [PATCH] rt2x00: Use rt2x00usb_register_multiwrite() Ivo van Doorn
2009-03-08 14:17 ` Ivo van Doorn
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).