[package] mac80211: update compat-wireless to 2009-03-05, add more rt2x00 and ath9k...
[openwrt.git] / package / mac80211 / patches / 308-rt2x00-Use-rt2x00usb_register_multiwrite.patch
1 From 26f9e08ed236c602fa92b9de93b272f78cc4026b Mon Sep 17 00:00:00 2001
2 From: Ivo van Doorn <IvDoorn@gmail.com>
3 Date: Wed, 4 Mar 2009 22:22:15 +0100
4 Subject: [PATCH] rt2x00: Use rt2x00usb_register_multiwrite()
5
6 rt2x00usb.h contains a wrapper for writing multiple
7 bytes to the hardware in a single action. Replace
8 all individual calls to rt2x00usb_vendor_request_buff
9 with rt2x00usb_register_multiwrite.
10
11 Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
12 ---
13  drivers/net/wireless/rt2x00/rt2500usb.c |    9 ++-------
14  drivers/net/wireless/rt2x00/rt73usb.c   |   31 ++++++++-----------------------
15  2 files changed, 10 insertions(+), 30 deletions(-)
16
17 --- a/drivers/net/wireless/rt2x00/rt2500usb.c
18 +++ b/drivers/net/wireless/rt2x00/rt2500usb.c
19 @@ -348,7 +348,6 @@ static int rt2500usb_config_key(struct r
20                                 struct rt2x00lib_crypto *crypto,
21                                 struct ieee80211_key_conf *key)
22  {
23 -       int timeout;
24         u32 mask;
25         u16 reg;
26  
27 @@ -376,12 +375,8 @@ static int rt2500usb_config_key(struct r
28                  * rt2x00usb_vendor_request() to send the key to the hardware.
29                  */
30                 reg = KEY_ENTRY(key->hw_key_idx);
31 -               timeout = REGISTER_TIMEOUT32(sizeof(crypto->key));
32 -               rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
33 -                                                   USB_VENDOR_REQUEST_OUT, reg,
34 -                                                   crypto->key,
35 -                                                   sizeof(crypto->key),
36 -                                                   timeout);
37 +               rt2500usb_register_multiwrite(rt2x00dev, reg,
38 +                                             crypto->key, sizeof(crypto->key));
39  
40                 /*
41                  * The driver does not support the IV/EIV generation
42 --- a/drivers/net/wireless/rt2x00/rt73usb.c
43 +++ b/drivers/net/wireless/rt2x00/rt73usb.c
44 @@ -273,7 +273,6 @@ static int rt73usb_config_shared_key(str
45  {
46         struct hw_key_entry key_entry;
47         struct rt2x00_field32 field;
48 -       int timeout;
49         u32 mask;
50         u32 reg;
51  
52 @@ -309,12 +308,8 @@ static int rt73usb_config_shared_key(str
53                        sizeof(key_entry.rx_mic));
54  
55                 reg = SHARED_KEY_ENTRY(key->hw_key_idx);
56 -               timeout = REGISTER_TIMEOUT32(sizeof(key_entry));
57 -               rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
58 -                                                   USB_VENDOR_REQUEST_OUT, reg,
59 -                                                   &key_entry,
60 -                                                   sizeof(key_entry),
61 -                                                   timeout);
62 +               rt2x00usb_register_multiwrite(rt2x00dev, reg,
63 +                                             &key_entry, sizeof(key_entry));
64  
65                 /*
66                  * The cipher types are stored over 2 registers.
67 @@ -375,7 +370,6 @@ static int rt73usb_config_pairwise_key(s
68  {
69         struct hw_pairwise_ta_entry addr_entry;
70         struct hw_key_entry key_entry;
71 -       int timeout;
72         u32 mask;
73         u32 reg;
74  
75 @@ -410,12 +404,8 @@ static int rt73usb_config_pairwise_key(s
76                        sizeof(key_entry.rx_mic));
77  
78                 reg = PAIRWISE_KEY_ENTRY(key->hw_key_idx);
79 -               timeout = REGISTER_TIMEOUT32(sizeof(key_entry));
80 -               rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
81 -                                                   USB_VENDOR_REQUEST_OUT, reg,
82 -                                                   &key_entry,
83 -                                                   sizeof(key_entry),
84 -                                                   timeout);
85 +               rt2x00usb_register_multiwrite(rt2x00dev, reg,
86 +                                             &key_entry, sizeof(key_entry));
87  
88                 /*
89                  * Send the address and cipher type to the hardware register.
90 @@ -1112,11 +1102,8 @@ static int rt73usb_load_firmware(struct 
91         /*
92          * Write firmware to device.
93          */
94 -       rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
95 -                                           USB_VENDOR_REQUEST_OUT,
96 -                                           FIRMWARE_IMAGE_BASE,
97 -                                           data, len,
98 -                                           REGISTER_TIMEOUT32(len));
99 +       rt2x00usb_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE,
100 +                                     (void *)data, len);
101  
102         /*
103          * Send firmware request to device to load firmware,
104 @@ -1554,10 +1541,8 @@ static void rt73usb_write_beacon(struct 
105          * Write entire beacon with descriptor to register.
106          */
107         beacon_base = HW_BEACON_OFFSET(entry->entry_idx);
108 -       rt2x00usb_vendor_request_large_buff(rt2x00dev, USB_MULTI_WRITE,
109 -                                           USB_VENDOR_REQUEST_OUT, beacon_base,
110 -                                           entry->skb->data, entry->skb->len,
111 -                                           REGISTER_TIMEOUT32(entry->skb->len));
112 +       rt2x00usb_register_multiwrite(rt2x00dev, beacon_base,
113 +                                     entry->skb->data, entry->skb->len);
114  
115         /*
116          * Clean up the beacon skb.