···2905290529062906static int waitbusy (struct airo_info *ai) {29072907 int delay = 0;29082908- while ((IN4500 (ai, COMMAND) & COMMAND_BUSY) && (delay < 10000)) {29082908+ while ((IN4500(ai, COMMAND) & COMMAND_BUSY) && (delay < 10000)) {29092909 udelay (10);29102910 if ((++delay % 20) == 0)29112911 OUT4500(ai, EVACK, EV_CLEARCOMMANDBUSY);
+9-8
drivers/net/wireless/b43legacy/main.c
···30393039/* Locking: wl->mutex */30403040static void b43legacy_wireless_core_exit(struct b43legacy_wldev *dev)30413041{30423042- struct b43legacy_wl *wl = dev->wl;30433042 struct b43legacy_phy *phy = &dev->phy;30443043 u32 macctl;30453044···30523053 macctl &= ~B43legacy_MACCTL_PSM_RUN;30533054 macctl |= B43legacy_MACCTL_PSM_JMP0;30543055 b43legacy_write32(dev, B43legacy_MMIO_MACCTL, macctl);30553055-30563056- mutex_unlock(&wl->mutex);30573057- /* Must unlock as it would otherwise deadlock. No races here.30583058- * Cancel possibly pending workqueues. */30593059- cancel_work_sync(&dev->restart_work);30603060- mutex_lock(&wl->mutex);3061305630623057 b43legacy_leds_exit(dev);30633058 b43legacy_rng_exit(dev->wl);···34793486 }34803487 }34813488out:34893489+ if (err)34903490+ wl->current_dev = NULL; /* Failed to init the dev. */34823491 mutex_unlock(&wl->mutex);34833492 if (err)34843493 b43legacyerr(wl, "Controller restart FAILED\n");···36133618 struct b43legacy_wldev *wldev;36143619 struct b43legacy_wl *wl;3615362036213621+ /* Do not cancel ieee80211-workqueue based work here.36223622+ * See comment in b43legacy_remove(). */36233623+36163624 wldev = ssb_get_drvdata(dev);36173625 wl = wldev->wl;36183618- cancel_work_sync(&wldev->restart_work);36193626 b43legacy_debugfs_remove_device(wldev);36203627 b43legacy_wireless_core_detach(wldev);36213628 list_del(&wldev->list);···37853788{37863789 struct b43legacy_wl *wl = ssb_get_devtypedata(dev);37873790 struct b43legacy_wldev *wldev = ssb_get_drvdata(dev);37913791+37923792+ /* We must cancel any work here before unregistering from ieee80211,37933793+ * as the ieee80211 unreg will destroy the workqueue. */37943794+ cancel_work_sync(&wldev->restart_work);3788379537893796 B43legacy_WARN_ON(!wl);37903797 if (wl->current_dev == wldev)
+25-2
drivers/net/wireless/ipw2200.c
···75587558 priv->ieee->iw_mode == IW_MODE_ADHOC &&75597559 priv->config & CFG_ADHOC_CREATE &&75607560 priv->config & CFG_STATIC_ESSID &&75617561- priv->config & CFG_STATIC_CHANNEL &&75627562- !list_empty(&priv->ieee->network_free_list)) {75617561+ priv->config & CFG_STATIC_CHANNEL) {75627562+ /* Use oldest network if the free list is empty */75637563+ if (list_empty(&priv->ieee->network_free_list)) {75647564+ struct ieee80211_network *oldest = NULL;75657565+ struct ieee80211_network *target;75667566+ DECLARE_MAC_BUF(mac);75677567+75687568+ list_for_each_entry(target, &priv->ieee->network_list, list) {75697569+ if ((oldest == NULL) ||75707570+ (target->last_scanned < oldest->last_scanned))75717571+ oldest = target;75727572+ }75737573+75747574+ /* If there are no more slots, expire the oldest */75757575+ list_del(&oldest->list);75767576+ target = oldest;75777577+ IPW_DEBUG_ASSOC("Expired '%s' (%s) from "75787578+ "network list.\n",75797579+ escape_essid(target->ssid,75807580+ target->ssid_len),75817581+ print_mac(mac, target->bssid));75827582+ list_add_tail(&target->list,75837583+ &priv->ieee->network_free_list);75847584+ }75857585+75637586 element = priv->ieee->network_free_list.next;75647587 network = list_entry(element, struct ieee80211_network, list);75657588 ipw_adhoc_create(priv, network);
+2-2
drivers/net/wireless/libertas/debugfs.c
···312312 if (tlv_type != TLV_TYPE_BCNMISS)313313 tlv->freq = freq;314314315315- /* The command header, the event mask, and the one TLV */316316- events->hdr.size = cpu_to_le16(sizeof(events->hdr) + 2 + sizeof(*tlv));315315+ /* The command header, the action, the event mask, and one TLV */316316+ events->hdr.size = cpu_to_le16(sizeof(events->hdr) + 4 + sizeof(*tlv));317317318318 ret = lbs_cmd_with_response(priv, CMD_802_11_SUBSCRIBE_EVENT, events);319319
···537537 int err = 0;538538 u32 tmp;539539540540- might_sleep();541541-542540 if (!pdev)543541 goto out;544542 bus = pdev->bus;543543+544544+ might_sleep_if(pdev->id.coreid != SSB_DEV_PCI);545545546546 /* Enable interrupts for this device. */547547 if (bus->host_pci &&