diff options
| author | John W. Linville <linville@tuxdriver.com> | 2011-08-26 10:33:51 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2011-08-26 10:33:51 -0400 |
| commit | e2e6be56df37c371f564e127c154036b0c2211a1 (patch) | |
| tree | 6687fc0340c20a76972bcaf5c665364c1074aee8 /drivers | |
| parent | bc909d9ddbf7778371e36a651d6e4194b1cc7d4c (diff) | |
| parent | 8b2a3827bb12430d932cd479b22d906baf08c212 (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/bcma/main.c | 12 | ||||
| -rw-r--r-- | drivers/bluetooth/ath3k.c | 1 | ||||
| -rw-r--r-- | drivers/bluetooth/btusb.c | 13 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/main.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00usb.c | 14 | ||||
| -rw-r--r-- | drivers/net/wireless/wl12xx/main.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/wl12xx/sdio.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/wl12xx/testmode.c | 45 |
10 files changed, 34 insertions, 64 deletions
diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c index 873e2e4ac55f..73b7b1a18fab 100644 --- a/drivers/bcma/main.c +++ b/drivers/bcma/main.c | |||
| @@ -15,6 +15,7 @@ MODULE_LICENSE("GPL"); | |||
| 15 | static int bcma_bus_match(struct device *dev, struct device_driver *drv); | 15 | static int bcma_bus_match(struct device *dev, struct device_driver *drv); |
| 16 | static int bcma_device_probe(struct device *dev); | 16 | static int bcma_device_probe(struct device *dev); |
| 17 | static int bcma_device_remove(struct device *dev); | 17 | static int bcma_device_remove(struct device *dev); |
| 18 | static int bcma_device_uevent(struct device *dev, struct kobj_uevent_env *env); | ||
| 18 | 19 | ||
| 19 | static ssize_t manuf_show(struct device *dev, struct device_attribute *attr, char *buf) | 20 | static ssize_t manuf_show(struct device *dev, struct device_attribute *attr, char *buf) |
| 20 | { | 21 | { |
| @@ -49,6 +50,7 @@ static struct bus_type bcma_bus_type = { | |||
| 49 | .match = bcma_bus_match, | 50 | .match = bcma_bus_match, |
| 50 | .probe = bcma_device_probe, | 51 | .probe = bcma_device_probe, |
| 51 | .remove = bcma_device_remove, | 52 | .remove = bcma_device_remove, |
| 53 | .uevent = bcma_device_uevent, | ||
| 52 | .dev_attrs = bcma_device_attrs, | 54 | .dev_attrs = bcma_device_attrs, |
| 53 | }; | 55 | }; |
| 54 | 56 | ||
| @@ -227,6 +229,16 @@ static int bcma_device_remove(struct device *dev) | |||
| 227 | return 0; | 229 | return 0; |
| 228 | } | 230 | } |
| 229 | 231 | ||
| 232 | static int bcma_device_uevent(struct device *dev, struct kobj_uevent_env *env) | ||
| 233 | { | ||
| 234 | struct bcma_device *core = container_of(dev, struct bcma_device, dev); | ||
| 235 | |||
| 236 | return add_uevent_var(env, | ||
| 237 | "MODALIAS=bcma:m%04Xid%04Xrev%02Xcl%02X", | ||
| 238 | core->id.manuf, core->id.id, | ||
| 239 | core->id.rev, core->id.class); | ||
| 240 | } | ||
| 241 | |||
| 230 | static int __init bcma_modinit(void) | 242 | static int __init bcma_modinit(void) |
| 231 | { | 243 | { |
| 232 | int err; | 244 | int err; |
diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c index a5854735bb2e..db7cb8111fbe 100644 --- a/drivers/bluetooth/ath3k.c +++ b/drivers/bluetooth/ath3k.c | |||
| @@ -63,6 +63,7 @@ static struct usb_device_id ath3k_table[] = { | |||
| 63 | /* Atheros AR3011 with sflash firmware*/ | 63 | /* Atheros AR3011 with sflash firmware*/ |
| 64 | { USB_DEVICE(0x0CF3, 0x3002) }, | 64 | { USB_DEVICE(0x0CF3, 0x3002) }, |
| 65 | { USB_DEVICE(0x13d3, 0x3304) }, | 65 | { USB_DEVICE(0x13d3, 0x3304) }, |
| 66 | { USB_DEVICE(0x0930, 0x0215) }, | ||
| 66 | 67 | ||
| 67 | /* Atheros AR9285 Malbec with sflash firmware */ | 68 | /* Atheros AR9285 Malbec with sflash firmware */ |
| 68 | { USB_DEVICE(0x03F0, 0x311D) }, | 69 | { USB_DEVICE(0x03F0, 0x311D) }, |
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 91d13a9e8c65..3ef476070baf 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c | |||
| @@ -106,6 +106,7 @@ static struct usb_device_id blacklist_table[] = { | |||
| 106 | /* Atheros 3011 with sflash firmware */ | 106 | /* Atheros 3011 with sflash firmware */ |
| 107 | { USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE }, | 107 | { USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE }, |
| 108 | { USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE }, | 108 | { USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE }, |
| 109 | { USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE }, | ||
| 109 | 110 | ||
| 110 | /* Atheros AR9285 Malbec with sflash firmware */ | 111 | /* Atheros AR9285 Malbec with sflash firmware */ |
| 111 | { USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE }, | 112 | { USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE }, |
| @@ -256,7 +257,9 @@ static void btusb_intr_complete(struct urb *urb) | |||
| 256 | 257 | ||
| 257 | err = usb_submit_urb(urb, GFP_ATOMIC); | 258 | err = usb_submit_urb(urb, GFP_ATOMIC); |
| 258 | if (err < 0) { | 259 | if (err < 0) { |
| 259 | if (err != -EPERM) | 260 | /* -EPERM: urb is being killed; |
| 261 | * -ENODEV: device got disconnected */ | ||
| 262 | if (err != -EPERM && err != -ENODEV) | ||
| 260 | BT_ERR("%s urb %p failed to resubmit (%d)", | 263 | BT_ERR("%s urb %p failed to resubmit (%d)", |
| 261 | hdev->name, urb, -err); | 264 | hdev->name, urb, -err); |
| 262 | usb_unanchor_urb(urb); | 265 | usb_unanchor_urb(urb); |
| @@ -341,7 +344,9 @@ static void btusb_bulk_complete(struct urb *urb) | |||
| 341 | 344 | ||
| 342 | err = usb_submit_urb(urb, GFP_ATOMIC); | 345 | err = usb_submit_urb(urb, GFP_ATOMIC); |
| 343 | if (err < 0) { | 346 | if (err < 0) { |
| 344 | if (err != -EPERM) | 347 | /* -EPERM: urb is being killed; |
| 348 | * -ENODEV: device got disconnected */ | ||
| 349 | if (err != -EPERM && err != -ENODEV) | ||
| 345 | BT_ERR("%s urb %p failed to resubmit (%d)", | 350 | BT_ERR("%s urb %p failed to resubmit (%d)", |
| 346 | hdev->name, urb, -err); | 351 | hdev->name, urb, -err); |
| 347 | usb_unanchor_urb(urb); | 352 | usb_unanchor_urb(urb); |
| @@ -431,7 +436,9 @@ static void btusb_isoc_complete(struct urb *urb) | |||
| 431 | 436 | ||
| 432 | err = usb_submit_urb(urb, GFP_ATOMIC); | 437 | err = usb_submit_urb(urb, GFP_ATOMIC); |
| 433 | if (err < 0) { | 438 | if (err < 0) { |
| 434 | if (err != -EPERM) | 439 | /* -EPERM: urb is being killed; |
| 440 | * -ENODEV: device got disconnected */ | ||
| 441 | if (err != -EPERM && err != -ENODEV) | ||
| 435 | BT_ERR("%s urb %p failed to resubmit (%d)", | 442 | BT_ERR("%s urb %p failed to resubmit (%d)", |
| 436 | hdev->name, urb, -err); | 443 | hdev->name, urb, -err); |
| 437 | usb_unanchor_urb(urb); | 444 | usb_unanchor_urb(urb); |
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c index c34bef1bf2b0..1b9400371eaf 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | |||
| @@ -69,7 +69,7 @@ static int ar9003_hw_power_interpolate(int32_t x, | |||
| 69 | static const struct ar9300_eeprom ar9300_default = { | 69 | static const struct ar9300_eeprom ar9300_default = { |
| 70 | .eepromVersion = 2, | 70 | .eepromVersion = 2, |
| 71 | .templateVersion = 2, | 71 | .templateVersion = 2, |
| 72 | .macAddr = {1, 2, 3, 4, 5, 6}, | 72 | .macAddr = {0, 2, 3, 4, 5, 6}, |
| 73 | .custData = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 73 | .custData = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 74 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | 74 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, |
| 75 | .baseEepHeader = { | 75 | .baseEepHeader = { |
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index 9098aaad97a9..6530694a59ae 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c | |||
| @@ -2283,7 +2283,11 @@ static void ath9k_set_coverage_class(struct ieee80211_hw *hw, u8 coverage_class) | |||
| 2283 | 2283 | ||
| 2284 | mutex_lock(&sc->mutex); | 2284 | mutex_lock(&sc->mutex); |
| 2285 | ah->coverage_class = coverage_class; | 2285 | ah->coverage_class = coverage_class; |
| 2286 | |||
| 2287 | ath9k_ps_wakeup(sc); | ||
| 2286 | ath9k_hw_init_global_settings(ah); | 2288 | ath9k_hw_init_global_settings(ah); |
| 2289 | ath9k_ps_restore(sc); | ||
| 2290 | |||
| 2287 | mutex_unlock(&sc->mutex); | 2291 | mutex_unlock(&sc->mutex); |
| 2288 | } | 2292 | } |
| 2289 | 2293 | ||
diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c index 0122930b14c7..0474e6638d21 100644 --- a/drivers/net/wireless/ath/carl9170/main.c +++ b/drivers/net/wireless/ath/carl9170/main.c | |||
| @@ -1066,8 +1066,10 @@ static int carl9170_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, | |||
| 1066 | * the high througput speed in 802.11n networks. | 1066 | * the high througput speed in 802.11n networks. |
| 1067 | */ | 1067 | */ |
| 1068 | 1068 | ||
| 1069 | if (!is_main_vif(ar, vif)) | 1069 | if (!is_main_vif(ar, vif)) { |
| 1070 | mutex_lock(&ar->mutex); | ||
| 1070 | goto err_softw; | 1071 | goto err_softw; |
| 1072 | } | ||
| 1071 | 1073 | ||
| 1072 | /* | 1074 | /* |
| 1073 | * While the hardware supports *catch-all* key, for offloading | 1075 | * While the hardware supports *catch-all* key, for offloading |
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c index 7fbb55c9da82..1e31050dafc9 100644 --- a/drivers/net/wireless/rt2x00/rt2x00usb.c +++ b/drivers/net/wireless/rt2x00/rt2x00usb.c | |||
| @@ -871,18 +871,8 @@ int rt2x00usb_suspend(struct usb_interface *usb_intf, pm_message_t state) | |||
| 871 | { | 871 | { |
| 872 | struct ieee80211_hw *hw = usb_get_intfdata(usb_intf); | 872 | struct ieee80211_hw *hw = usb_get_intfdata(usb_intf); |
| 873 | struct rt2x00_dev *rt2x00dev = hw->priv; | 873 | struct rt2x00_dev *rt2x00dev = hw->priv; |
| 874 | int retval; | ||
| 875 | |||
| 876 | retval = rt2x00lib_suspend(rt2x00dev, state); | ||
| 877 | if (retval) | ||
| 878 | return retval; | ||
| 879 | 874 | ||
| 880 | /* | 875 | return rt2x00lib_suspend(rt2x00dev, state); |
| 881 | * Decrease usbdev refcount. | ||
| 882 | */ | ||
| 883 | usb_put_dev(interface_to_usbdev(usb_intf)); | ||
| 884 | |||
| 885 | return 0; | ||
| 886 | } | 876 | } |
| 887 | EXPORT_SYMBOL_GPL(rt2x00usb_suspend); | 877 | EXPORT_SYMBOL_GPL(rt2x00usb_suspend); |
| 888 | 878 | ||
| @@ -891,8 +881,6 @@ int rt2x00usb_resume(struct usb_interface *usb_intf) | |||
| 891 | struct ieee80211_hw *hw = usb_get_intfdata(usb_intf); | 881 | struct ieee80211_hw *hw = usb_get_intfdata(usb_intf); |
| 892 | struct rt2x00_dev *rt2x00dev = hw->priv; | 882 | struct rt2x00_dev *rt2x00dev = hw->priv; |
| 893 | 883 | ||
| 894 | usb_get_dev(interface_to_usbdev(usb_intf)); | ||
| 895 | |||
| 896 | return rt2x00lib_resume(rt2x00dev); | 884 | return rt2x00lib_resume(rt2x00dev); |
| 897 | } | 885 | } |
| 898 | EXPORT_SYMBOL_GPL(rt2x00usb_resume); | 886 | EXPORT_SYMBOL_GPL(rt2x00usb_resume); |
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c index e58c22d21e39..b70ae40ad660 100644 --- a/drivers/net/wireless/wl12xx/main.c +++ b/drivers/net/wireless/wl12xx/main.c | |||
| @@ -4283,6 +4283,7 @@ int wl1271_init_ieee80211(struct wl1271 *wl) | |||
| 4283 | wl->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | | 4283 | wl->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | |
| 4284 | BIT(NL80211_IFTYPE_ADHOC) | BIT(NL80211_IFTYPE_AP); | 4284 | BIT(NL80211_IFTYPE_ADHOC) | BIT(NL80211_IFTYPE_AP); |
| 4285 | wl->hw->wiphy->max_scan_ssids = 1; | 4285 | wl->hw->wiphy->max_scan_ssids = 1; |
| 4286 | wl->hw->wiphy->max_sched_scan_ssids = 1; | ||
| 4286 | /* | 4287 | /* |
| 4287 | * Maximum length of elements in scanning probe request templates | 4288 | * Maximum length of elements in scanning probe request templates |
| 4288 | * should be the maximum length possible for a template, without | 4289 | * should be the maximum length possible for a template, without |
diff --git a/drivers/net/wireless/wl12xx/sdio.c b/drivers/net/wireless/wl12xx/sdio.c index 5cf18c2c23f0..fb1fd5af75ea 100644 --- a/drivers/net/wireless/wl12xx/sdio.c +++ b/drivers/net/wireless/wl12xx/sdio.c | |||
| @@ -164,7 +164,7 @@ static int wl1271_sdio_power_on(struct wl1271 *wl) | |||
| 164 | /* If enabled, tell runtime PM not to power off the card */ | 164 | /* If enabled, tell runtime PM not to power off the card */ |
| 165 | if (pm_runtime_enabled(&func->dev)) { | 165 | if (pm_runtime_enabled(&func->dev)) { |
| 166 | ret = pm_runtime_get_sync(&func->dev); | 166 | ret = pm_runtime_get_sync(&func->dev); |
| 167 | if (ret) | 167 | if (ret < 0) |
| 168 | goto out; | 168 | goto out; |
| 169 | } else { | 169 | } else { |
| 170 | /* Runtime PM is disabled: power up the card manually */ | 170 | /* Runtime PM is disabled: power up the card manually */ |
diff --git a/drivers/net/wireless/wl12xx/testmode.c b/drivers/net/wireless/wl12xx/testmode.c index 88add68bd9ac..4ae8effaee22 100644 --- a/drivers/net/wireless/wl12xx/testmode.c +++ b/drivers/net/wireless/wl12xx/testmode.c | |||
| @@ -36,7 +36,6 @@ enum wl1271_tm_commands { | |||
| 36 | WL1271_TM_CMD_TEST, | 36 | WL1271_TM_CMD_TEST, |
| 37 | WL1271_TM_CMD_INTERROGATE, | 37 | WL1271_TM_CMD_INTERROGATE, |
| 38 | WL1271_TM_CMD_CONFIGURE, | 38 | WL1271_TM_CMD_CONFIGURE, |
| 39 | WL1271_TM_CMD_NVS_PUSH, | ||
| 40 | WL1271_TM_CMD_SET_PLT_MODE, | 39 | WL1271_TM_CMD_SET_PLT_MODE, |
| 41 | WL1271_TM_CMD_RECOVER, | 40 | WL1271_TM_CMD_RECOVER, |
| 42 | 41 | ||
| @@ -190,48 +189,6 @@ static int wl1271_tm_cmd_configure(struct wl1271 *wl, struct nlattr *tb[]) | |||
| 190 | return 0; | 189 | return 0; |
| 191 | } | 190 | } |
| 192 | 191 | ||
| 193 | static int wl1271_tm_cmd_nvs_push(struct wl1271 *wl, struct nlattr *tb[]) | ||
| 194 | { | ||
| 195 | int ret = 0; | ||
| 196 | size_t len; | ||
| 197 | void *buf; | ||
| 198 | |||
| 199 | wl1271_debug(DEBUG_TESTMODE, "testmode cmd nvs push"); | ||
| 200 | |||
| 201 | if (!tb[WL1271_TM_ATTR_DATA]) | ||
| 202 | return -EINVAL; | ||
| 203 | |||
| 204 | buf = nla_data(tb[WL1271_TM_ATTR_DATA]); | ||
| 205 | len = nla_len(tb[WL1271_TM_ATTR_DATA]); | ||
| 206 | |||
| 207 | mutex_lock(&wl->mutex); | ||
| 208 | |||
| 209 | kfree(wl->nvs); | ||
| 210 | |||
| 211 | if ((wl->chip.id == CHIP_ID_1283_PG20) && | ||
| 212 | (len != sizeof(struct wl128x_nvs_file))) | ||
| 213 | return -EINVAL; | ||
| 214 | else if (len != sizeof(struct wl1271_nvs_file)) | ||
| 215 | return -EINVAL; | ||
| 216 | |||
| 217 | wl->nvs = kzalloc(len, GFP_KERNEL); | ||
| 218 | if (!wl->nvs) { | ||
| 219 | wl1271_error("could not allocate memory for the nvs file"); | ||
| 220 | ret = -ENOMEM; | ||
| 221 | goto out; | ||
| 222 | } | ||
| 223 | |||
| 224 | memcpy(wl->nvs, buf, len); | ||
| 225 | wl->nvs_len = len; | ||
| 226 | |||
| 227 | wl1271_debug(DEBUG_TESTMODE, "testmode pushed nvs"); | ||
| 228 | |||
| 229 | out: | ||
| 230 | mutex_unlock(&wl->mutex); | ||
| 231 | |||
| 232 | return ret; | ||
| 233 | } | ||
| 234 | |||
| 235 | static int wl1271_tm_cmd_set_plt_mode(struct wl1271 *wl, struct nlattr *tb[]) | 192 | static int wl1271_tm_cmd_set_plt_mode(struct wl1271 *wl, struct nlattr *tb[]) |
| 236 | { | 193 | { |
| 237 | u32 val; | 194 | u32 val; |
| @@ -288,8 +245,6 @@ int wl1271_tm_cmd(struct ieee80211_hw *hw, void *data, int len) | |||
| 288 | return wl1271_tm_cmd_interrogate(wl, tb); | 245 | return wl1271_tm_cmd_interrogate(wl, tb); |
| 289 | case WL1271_TM_CMD_CONFIGURE: | 246 | case WL1271_TM_CMD_CONFIGURE: |
| 290 | return wl1271_tm_cmd_configure(wl, tb); | 247 | return wl1271_tm_cmd_configure(wl, tb); |
| 291 | case WL1271_TM_CMD_NVS_PUSH: | ||
| 292 | return wl1271_tm_cmd_nvs_push(wl, tb); | ||
| 293 | case WL1271_TM_CMD_SET_PLT_MODE: | 248 | case WL1271_TM_CMD_SET_PLT_MODE: |
| 294 | return wl1271_tm_cmd_set_plt_mode(wl, tb); | 249 | return wl1271_tm_cmd_set_plt_mode(wl, tb); |
| 295 | case WL1271_TM_CMD_RECOVER: | 250 | case WL1271_TM_CMD_RECOVER: |
