···410410 val &= ~(AR_WA_BIT6 | AR_WA_BIT7);411411 }412412413413+ if (AR_SREV_9280(ah))414414+ val |= AR_WA_BIT22;415415+413416 if (AR_SREV_9285E_20(ah))414417 val |= AR_WA_BIT23;415418
+1
drivers/net/wireless/ath/ath9k/ath9k.h
···657657}658658659659extern struct ieee80211_ops ath9k_ops;660660+extern struct pm_qos_request_list ath9k_pm_qos_req;660661extern int modparam_nohwcrypt;661662extern int led_blink;662663
+1-1
drivers/net/wireless/ath/ath9k/eeprom_9287.c
···3737 int addr, eep_start_loc;3838 eep_data = (u16 *)eep;39394040- if (ah->hw_version.devid == 0x7015)4040+ if (AR9287_HTC_DEVID(ah))4141 eep_start_loc = AR9287_HTC_EEP_START_LOC;4242 else4343 eep_start_loc = AR9287_EEP_START_LOC;
+24-16
drivers/net/wireless/ath/ath9k/hif_usb.c
···3535 { USB_DEVICE(0x07D1, 0x3A10) }, /* Dlink Wireless 150 */3636 { USB_DEVICE(0x13D3, 0x3327) }, /* Azurewave */3737 { USB_DEVICE(0x13D3, 0x3328) }, /* Azurewave */3838+ { USB_DEVICE(0x13D3, 0x3346) }, /* IMC Networks */3939+ { USB_DEVICE(0x13D3, 0x3348) }, /* Azurewave */4040+ { USB_DEVICE(0x13D3, 0x3349) }, /* Azurewave */4141+ { USB_DEVICE(0x13D3, 0x3350) }, /* Azurewave */3842 { USB_DEVICE(0x04CA, 0x4605) }, /* Liteon */3943 { USB_DEVICE(0x083A, 0xA704) }, /* SMC Networks */4444+ { USB_DEVICE(0x040D, 0x3801) }, /* VIA */4545+ { USB_DEVICE(0x1668, 0x1200) }, /* Verizon */4046 { },4147};4248···546540 return;547541 }548542549549- usb_fill_int_urb(urb, hif_dev->udev,543543+ usb_fill_bulk_urb(urb, hif_dev->udev,550544 usb_rcvbulkpipe(hif_dev->udev,551545 USB_REG_IN_PIPE),552546 nskb->data, MAX_REG_IN_BUF_SIZE,553553- ath9k_hif_usb_reg_in_cb, nskb, 1);547547+ ath9k_hif_usb_reg_in_cb, nskb);554548555549 ret = usb_submit_urb(urb, GFP_ATOMIC);556550 if (ret) {···726720 if (!skb)727721 goto err;728722729729- usb_fill_int_urb(hif_dev->reg_in_urb, hif_dev->udev,723723+ usb_fill_bulk_urb(hif_dev->reg_in_urb, hif_dev->udev,730724 usb_rcvbulkpipe(hif_dev->udev,731725 USB_REG_IN_PIPE),732726 skb->data, MAX_REG_IN_BUF_SIZE,733733- ath9k_hif_usb_reg_in_cb, skb, 1);727727+ ath9k_hif_usb_reg_in_cb, skb);734728735729 if (usb_submit_urb(hif_dev->reg_in_urb, GFP_KERNEL) != 0)736730 goto err;···811805 case 0x7010:812806 case 0x7015:813807 case 0x9018:808808+ case 0xA704:809809+ case 0x1200:814810 firm_offset = AR7010_FIRMWARE_TEXT;815811 break;816812 default:···851843 goto err_fw_req;852844 }853845854854- /* Alloc URBs */855855- ret = ath9k_hif_usb_alloc_urbs(hif_dev);856856- if (ret) {857857- dev_err(&hif_dev->udev->dev,858858- "ath9k_htc: Unable to allocate URBs\n");859859- goto err_urb;860860- }861861-862846 /* Download firmware */863847 ret = ath9k_hif_usb_download_fw(hif_dev);864848 if (ret) {···866866 */867867 for (idx = 0; idx < alt->desc.bNumEndpoints; idx++) {868868 endp = &alt->endpoint[idx].desc;869869- if (((endp->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK)870870- == 0x04) &&871871- ((endp->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)872872- == USB_ENDPOINT_XFER_INT)) {869869+ if ((endp->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)870870+ == USB_ENDPOINT_XFER_INT) {873871 endp->bmAttributes &= ~USB_ENDPOINT_XFERTYPE_MASK;874872 endp->bmAttributes |= USB_ENDPOINT_XFER_BULK;875873 endp->bInterval = 0;876874 }875875+ }876876+877877+ /* Alloc URBs */878878+ ret = ath9k_hif_usb_alloc_urbs(hif_dev);879879+ if (ret) {880880+ dev_err(&hif_dev->udev->dev,881881+ "ath9k_htc: Unable to allocate URBs\n");882882+ goto err_urb;877883 }878884879885 return 0;···935929 case 0x7010:936930 case 0x7015:937931 case 0x9018:932932+ case 0xA704:933933+ case 0x1200:938934 if (le16_to_cpu(udev->descriptor.bcdDevice) == 0x0202)939935 hif_dev->fw_name = FIRMWARE_AR7010_1_1;940936 else
···39973997 * "the hard way", rather than using device's scan.39983998 */39993999 if (iwl3945_mod_params.disable_hw_scan) {40004000- IWL_ERR(priv, "sw scan support is deprecated\n");40004000+ dev_printk(KERN_DEBUG, &(pdev->dev),40014001+ "sw scan support is deprecated\n");40014002 iwl3945_hw_ops.hw_scan = NULL;40024003 }40034004
+3-2
drivers/net/wireless/libertas/cfg.c
···698698699699 if (priv->scan_channel < priv->scan_req->n_channels) {700700 cancel_delayed_work(&priv->scan_work);701701- queue_delayed_work(priv->work_thread, &priv->scan_work,702702- msecs_to_jiffies(300));701701+ if (!priv->stopping)702702+ queue_delayed_work(priv->work_thread, &priv->scan_work,703703+ msecs_to_jiffies(300));703704 }704705705706 /* This is the final data we are about to send */
···79798080static void rfcomm_process_connect(struct rfcomm_session *s);81818282-static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err);8282+static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src,8383+ bdaddr_t *dst,8484+ u8 sec_level,8585+ int *err);8386static struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst);8487static void rfcomm_session_del(struct rfcomm_session *s);8588···404401405402 s = rfcomm_session_get(src, dst);406403 if (!s) {407407- s = rfcomm_session_create(src, dst, &err);404404+ s = rfcomm_session_create(src, dst, d->sec_level, &err);408405 if (!s)409406 return err;410407 }···682679 rfcomm_session_put(s);683680}684681685685-static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err)682682+static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src,683683+ bdaddr_t *dst,684684+ u8 sec_level,685685+ int *err)686686{687687 struct rfcomm_session *s = NULL;688688 struct sockaddr_l2 addr;···710704 sk = sock->sk;711705 lock_sock(sk);712706 l2cap_pi(sk)->imtu = l2cap_mtu;707707+ l2cap_pi(sk)->sec_level = sec_level;713708 if (l2cap_ertm)714709 l2cap_pi(sk)->mode = L2CAP_MODE_ERTM;715710 release_sock(sk);
+3-3
net/mac80211/iface.c
···391391 u32 hw_reconf_flags = 0;392392 int i;393393394394+ if (local->scan_sdata == sdata)395395+ ieee80211_scan_cancel(local);396396+394397 clear_bit(SDATA_STATE_RUNNING, &sdata->state);395398396399 /*···525522 */526523 synchronize_rcu();527524 skb_queue_purge(&sdata->skb_queue);528528-529529- if (local->scan_sdata == sdata)530530- ieee80211_scan_cancel(local);531525532526 /*533527 * Disable beaconing here for mesh only, AP and IBSS
+54
net/wireless/chan.c
···4444 return chan;4545}46464747+static bool can_beacon_sec_chan(struct wiphy *wiphy,4848+ struct ieee80211_channel *chan,4949+ enum nl80211_channel_type channel_type)5050+{5151+ struct ieee80211_channel *sec_chan;5252+ int diff;5353+5454+ switch (channel_type) {5555+ case NL80211_CHAN_HT40PLUS:5656+ diff = 20;5757+ break;5858+ case NL80211_CHAN_HT40MINUS:5959+ diff = -20;6060+ break;6161+ default:6262+ return false;6363+ }6464+6565+ sec_chan = ieee80211_get_channel(wiphy, chan->center_freq + diff);6666+ if (!sec_chan)6767+ return false;6868+6969+ /* we'll need a DFS capability later */7070+ if (sec_chan->flags & (IEEE80211_CHAN_DISABLED |7171+ IEEE80211_CHAN_PASSIVE_SCAN |7272+ IEEE80211_CHAN_NO_IBSS |7373+ IEEE80211_CHAN_RADAR))7474+ return false;7575+7676+ return true;7777+}7878+4779int cfg80211_set_freq(struct cfg80211_registered_device *rdev,4880 struct wireless_dev *wdev, int freq,4981 enum nl80211_channel_type channel_type)···9967 chan = rdev_freq_to_chan(rdev, freq, channel_type);10068 if (!chan)10169 return -EINVAL;7070+7171+ /* Both channels should be able to initiate communication */7272+ if (wdev && (wdev->iftype == NL80211_IFTYPE_ADHOC ||7373+ wdev->iftype == NL80211_IFTYPE_AP ||7474+ wdev->iftype == NL80211_IFTYPE_AP_VLAN ||7575+ wdev->iftype == NL80211_IFTYPE_MESH_POINT ||7676+ wdev->iftype == NL80211_IFTYPE_P2P_GO)) {7777+ switch (channel_type) {7878+ case NL80211_CHAN_HT40PLUS:7979+ case NL80211_CHAN_HT40MINUS:8080+ if (!can_beacon_sec_chan(&rdev->wiphy, chan,8181+ channel_type)) {8282+ printk(KERN_DEBUG8383+ "cfg80211: Secondary channel not "8484+ "allowed to initiate communication\n");8585+ return -EINVAL;8686+ }8787+ break;8888+ default:8989+ break;9090+ }9191+ }1029210393 result = rdev->ops->set_channel(&rdev->wiphy,10494 wdev ? wdev->netdev : NULL,