diff options
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/carl9170.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/usb.c | 31 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/pcie.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/ipw2x00/ipw2200.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/mac80211.c | 3 |
6 files changed, 37 insertions, 6 deletions
diff --git a/drivers/net/wireless/ath/carl9170/carl9170.h b/drivers/net/wireless/ath/carl9170/carl9170.h index 8596aba34f96..237d0cda1bcb 100644 --- a/drivers/net/wireless/ath/carl9170/carl9170.h +++ b/drivers/net/wireless/ath/carl9170/carl9170.h | |||
| @@ -256,6 +256,7 @@ struct ar9170 { | |||
| 256 | atomic_t rx_work_urbs; | 256 | atomic_t rx_work_urbs; |
| 257 | atomic_t rx_pool_urbs; | 257 | atomic_t rx_pool_urbs; |
| 258 | kernel_ulong_t features; | 258 | kernel_ulong_t features; |
| 259 | bool usb_ep_cmd_is_bulk; | ||
| 259 | 260 | ||
| 260 | /* firmware settings */ | 261 | /* firmware settings */ |
| 261 | struct completion fw_load_wait; | 262 | struct completion fw_load_wait; |
diff --git a/drivers/net/wireless/ath/carl9170/usb.c b/drivers/net/wireless/ath/carl9170/usb.c index f35c7f30f9a6..c9f93310c0d6 100644 --- a/drivers/net/wireless/ath/carl9170/usb.c +++ b/drivers/net/wireless/ath/carl9170/usb.c | |||
| @@ -621,9 +621,16 @@ int __carl9170_exec_cmd(struct ar9170 *ar, struct carl9170_cmd *cmd, | |||
| 621 | goto err_free; | 621 | goto err_free; |
| 622 | } | 622 | } |
| 623 | 623 | ||
| 624 | usb_fill_int_urb(urb, ar->udev, usb_sndintpipe(ar->udev, | 624 | if (ar->usb_ep_cmd_is_bulk) |
| 625 | AR9170_USB_EP_CMD), cmd, cmd->hdr.len + 4, | 625 | usb_fill_bulk_urb(urb, ar->udev, |
| 626 | carl9170_usb_cmd_complete, ar, 1); | 626 | usb_sndbulkpipe(ar->udev, AR9170_USB_EP_CMD), |
| 627 | cmd, cmd->hdr.len + 4, | ||
| 628 | carl9170_usb_cmd_complete, ar); | ||
| 629 | else | ||
| 630 | usb_fill_int_urb(urb, ar->udev, | ||
| 631 | usb_sndintpipe(ar->udev, AR9170_USB_EP_CMD), | ||
| 632 | cmd, cmd->hdr.len + 4, | ||
| 633 | carl9170_usb_cmd_complete, ar, 1); | ||
| 627 | 634 | ||
| 628 | if (free_buf) | 635 | if (free_buf) |
| 629 | urb->transfer_flags |= URB_FREE_BUFFER; | 636 | urb->transfer_flags |= URB_FREE_BUFFER; |
| @@ -1032,9 +1039,10 @@ static void carl9170_usb_firmware_step2(const struct firmware *fw, | |||
| 1032 | static int carl9170_usb_probe(struct usb_interface *intf, | 1039 | static int carl9170_usb_probe(struct usb_interface *intf, |
| 1033 | const struct usb_device_id *id) | 1040 | const struct usb_device_id *id) |
| 1034 | { | 1041 | { |
| 1042 | struct usb_endpoint_descriptor *ep; | ||
| 1035 | struct ar9170 *ar; | 1043 | struct ar9170 *ar; |
| 1036 | struct usb_device *udev; | 1044 | struct usb_device *udev; |
| 1037 | int err; | 1045 | int i, err; |
| 1038 | 1046 | ||
| 1039 | err = usb_reset_device(interface_to_usbdev(intf)); | 1047 | err = usb_reset_device(interface_to_usbdev(intf)); |
| 1040 | if (err) | 1048 | if (err) |
| @@ -1050,6 +1058,21 @@ static int carl9170_usb_probe(struct usb_interface *intf, | |||
| 1050 | ar->intf = intf; | 1058 | ar->intf = intf; |
| 1051 | ar->features = id->driver_info; | 1059 | ar->features = id->driver_info; |
| 1052 | 1060 | ||
| 1061 | /* We need to remember the type of endpoint 4 because it differs | ||
| 1062 | * between high- and full-speed configuration. The high-speed | ||
| 1063 | * configuration specifies it as interrupt and the full-speed | ||
| 1064 | * configuration as bulk endpoint. This information is required | ||
| 1065 | * later when sending urbs to that endpoint. | ||
| 1066 | */ | ||
| 1067 | for (i = 0; i < intf->cur_altsetting->desc.bNumEndpoints; ++i) { | ||
| 1068 | ep = &intf->cur_altsetting->endpoint[i].desc; | ||
| 1069 | |||
| 1070 | if (usb_endpoint_num(ep) == AR9170_USB_EP_CMD && | ||
| 1071 | usb_endpoint_dir_out(ep) && | ||
| 1072 | usb_endpoint_type(ep) == USB_ENDPOINT_XFER_BULK) | ||
| 1073 | ar->usb_ep_cmd_is_bulk = true; | ||
| 1074 | } | ||
| 1075 | |||
| 1053 | usb_set_intfdata(intf, ar); | 1076 | usb_set_intfdata(intf, ar); |
| 1054 | SET_IEEE80211_DEV(ar->hw, &intf->dev); | 1077 | SET_IEEE80211_DEV(ar->hw, &intf->dev); |
| 1055 | 1078 | ||
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c index 535c7eb01b3a..8f8b9373de95 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c | |||
| @@ -1318,6 +1318,8 @@ int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr) | |||
| 1318 | msgbuf->nrof_flowrings = if_msgbuf->nrof_flowrings; | 1318 | msgbuf->nrof_flowrings = if_msgbuf->nrof_flowrings; |
| 1319 | msgbuf->flowring_dma_handle = kzalloc(msgbuf->nrof_flowrings * | 1319 | msgbuf->flowring_dma_handle = kzalloc(msgbuf->nrof_flowrings * |
| 1320 | sizeof(*msgbuf->flowring_dma_handle), GFP_ATOMIC); | 1320 | sizeof(*msgbuf->flowring_dma_handle), GFP_ATOMIC); |
| 1321 | if (!msgbuf->flowring_dma_handle) | ||
| 1322 | goto fail; | ||
| 1321 | 1323 | ||
| 1322 | msgbuf->rx_dataoffset = if_msgbuf->rx_dataoffset; | 1324 | msgbuf->rx_dataoffset = if_msgbuf->rx_dataoffset; |
| 1323 | msgbuf->max_rxbufpost = if_msgbuf->max_rxbufpost; | 1325 | msgbuf->max_rxbufpost = if_msgbuf->max_rxbufpost; |
| @@ -1362,6 +1364,7 @@ fail: | |||
| 1362 | kfree(msgbuf->flow_map); | 1364 | kfree(msgbuf->flow_map); |
| 1363 | kfree(msgbuf->txstatus_done_map); | 1365 | kfree(msgbuf->txstatus_done_map); |
| 1364 | brcmf_msgbuf_release_pktids(msgbuf); | 1366 | brcmf_msgbuf_release_pktids(msgbuf); |
| 1367 | kfree(msgbuf->flowring_dma_handle); | ||
| 1365 | if (msgbuf->ioctbuf) | 1368 | if (msgbuf->ioctbuf) |
| 1366 | dma_free_coherent(drvr->bus_if->dev, | 1369 | dma_free_coherent(drvr->bus_if->dev, |
| 1367 | BRCMF_TX_IOCTL_MAX_MSG_SIZE, | 1370 | BRCMF_TX_IOCTL_MAX_MSG_SIZE, |
| @@ -1391,6 +1394,7 @@ void brcmf_proto_msgbuf_detach(struct brcmf_pub *drvr) | |||
| 1391 | BRCMF_TX_IOCTL_MAX_MSG_SIZE, | 1394 | BRCMF_TX_IOCTL_MAX_MSG_SIZE, |
| 1392 | msgbuf->ioctbuf, msgbuf->ioctbuf_handle); | 1395 | msgbuf->ioctbuf, msgbuf->ioctbuf_handle); |
| 1393 | brcmf_msgbuf_release_pktids(msgbuf); | 1396 | brcmf_msgbuf_release_pktids(msgbuf); |
| 1397 | kfree(msgbuf->flowring_dma_handle); | ||
| 1394 | kfree(msgbuf); | 1398 | kfree(msgbuf); |
| 1395 | drvr->proto->pd = NULL; | 1399 | drvr->proto->pd = NULL; |
| 1396 | } | 1400 | } |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/brcm80211/brcmfmac/pcie.c index bc972c0ba5f8..e5101b287e4e 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/pcie.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/pcie.c | |||
| @@ -591,12 +591,13 @@ static void brcmf_pcie_handle_mb_data(struct brcmf_pciedev_info *devinfo) | |||
| 591 | } | 591 | } |
| 592 | if (dtoh_mb_data & BRCMF_D2H_DEV_DS_EXIT_NOTE) | 592 | if (dtoh_mb_data & BRCMF_D2H_DEV_DS_EXIT_NOTE) |
| 593 | brcmf_dbg(PCIE, "D2H_MB_DATA: DEEP SLEEP EXIT\n"); | 593 | brcmf_dbg(PCIE, "D2H_MB_DATA: DEEP SLEEP EXIT\n"); |
| 594 | if (dtoh_mb_data & BRCMF_D2H_DEV_D3_ACK) | 594 | if (dtoh_mb_data & BRCMF_D2H_DEV_D3_ACK) { |
| 595 | brcmf_dbg(PCIE, "D2H_MB_DATA: D3 ACK\n"); | 595 | brcmf_dbg(PCIE, "D2H_MB_DATA: D3 ACK\n"); |
| 596 | if (waitqueue_active(&devinfo->mbdata_resp_wait)) { | 596 | if (waitqueue_active(&devinfo->mbdata_resp_wait)) { |
| 597 | devinfo->mbdata_completed = true; | 597 | devinfo->mbdata_completed = true; |
| 598 | wake_up(&devinfo->mbdata_resp_wait); | 598 | wake_up(&devinfo->mbdata_resp_wait); |
| 599 | } | 599 | } |
| 600 | } | ||
| 600 | } | 601 | } |
| 601 | 602 | ||
| 602 | 603 | ||
diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c index c5aa404069f3..389656bd1a74 100644 --- a/drivers/net/wireless/ipw2x00/ipw2200.c +++ b/drivers/net/wireless/ipw2x00/ipw2200.c | |||
| @@ -9853,6 +9853,7 @@ static int ipw_wx_get_wireless_mode(struct net_device *dev, | |||
| 9853 | strncpy(extra, "unknown", MAX_WX_STRING); | 9853 | strncpy(extra, "unknown", MAX_WX_STRING); |
| 9854 | break; | 9854 | break; |
| 9855 | } | 9855 | } |
| 9856 | extra[MAX_WX_STRING - 1] = '\0'; | ||
| 9856 | 9857 | ||
| 9857 | IPW_DEBUG_WX("PRIV GET MODE: %s\n", extra); | 9858 | IPW_DEBUG_WX("PRIV GET MODE: %s\n", extra); |
| 9858 | 9859 | ||
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c index 0d6a8b768a68..7c8796584c25 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c | |||
| @@ -396,7 +396,8 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm) | |||
| 396 | else | 396 | else |
| 397 | hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; | 397 | hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; |
| 398 | 398 | ||
| 399 | hw->wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN; | 399 | /* TODO: enable that only for firmwares that don't crash */ |
| 400 | /* hw->wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN; */ | ||
| 400 | hw->wiphy->max_sched_scan_ssids = PROBE_OPTION_MAX; | 401 | hw->wiphy->max_sched_scan_ssids = PROBE_OPTION_MAX; |
| 401 | hw->wiphy->max_match_sets = IWL_SCAN_MAX_PROFILES; | 402 | hw->wiphy->max_match_sets = IWL_SCAN_MAX_PROFILES; |
| 402 | /* we create the 802.11 header and zero length SSID IE. */ | 403 | /* we create the 802.11 header and zero length SSID IE. */ |
