···12701270 return;1271127112721272 /*12731273- * All MPDUs in an aggregate will use the same LNA12741274- * as the first MPDU.12751275- */12761276- if (rs->rs_isaggr && !rs->rs_firstaggr)12771277- return;12781278-12791279- /*12801273 * Change the default rx antenna if rx diversity12811274 * chooses the other antenna 3 times in a row.12821275 */
+14-3
drivers/net/wireless/ath/ath9k/xmit.c
···399399 tbf->bf_buf_addr = bf->bf_buf_addr;400400 memcpy(tbf->bf_desc, bf->bf_desc, sc->sc_ah->caps.tx_desc_len);401401 tbf->bf_state = bf->bf_state;402402+ tbf->bf_state.stale = false;402403403404 return tbf;404405}···13901389 u16 tid, u16 *ssn)13911390{13921391 struct ath_atx_tid *txtid;13921392+ struct ath_txq *txq;13931393 struct ath_node *an;13941394 u8 density;1395139513961396 an = (struct ath_node *)sta->drv_priv;13971397 txtid = ATH_AN_2_TID(an, tid);13981398+ txq = txtid->ac->txq;13991399+14001400+ ath_txq_lock(sc, txq);1398140113991402 /* update ampdu factor/density, they may have changed. This may happen14001403 * in HT IBSS when a beacon with HT-info is received after the station···1421141614221417 memset(txtid->tx_buf, 0, sizeof(txtid->tx_buf));14231418 txtid->baw_head = txtid->baw_tail = 0;14191419+14201420+ ath_txq_unlock_complete(sc, txq);1424142114251422 return 0;14261423}···15621555 __skb_unlink(bf->bf_mpdu, tid_q);15631556 list_add_tail(&bf->list, &bf_q);15641557 ath_set_rates(tid->an->vif, tid->an->sta, bf);15651565- ath_tx_addto_baw(sc, tid, bf);15661566- bf->bf_state.bf_type &= ~BUF_AGGR;15581558+ if (bf_isampdu(bf)) {15591559+ ath_tx_addto_baw(sc, tid, bf);15601560+ bf->bf_state.bf_type &= ~BUF_AGGR;15611561+ }15671562 if (bf_tail)15681563 bf_tail->bf_next = bf;15691564···19591950 if (bf_is_ampdu_not_probing(bf))19601951 txq->axq_ampdu_depth++;1961195219621962- bf = bf->bf_lastbf->bf_next;19531953+ bf_last = bf->bf_lastbf;19541954+ bf = bf_last->bf_next;19551955+ bf_last->bf_next = NULL;19631956 }19641957 }19651958}
···464464465465static int brcmf_sdio_pd_probe(struct platform_device *pdev)466466{467467- int ret;468468-469467 brcmf_dbg(SDIO, "Enter\n");470468471469 brcmfmac_sdio_pdata = pdev->dev.platform_data;···471473 if (brcmfmac_sdio_pdata->power_on)472474 brcmfmac_sdio_pdata->power_on();473475474474- ret = sdio_register_driver(&brcmf_sdmmc_driver);475475- if (ret)476476- brcmf_err("sdio_register_driver failed: %d\n", ret);477477-478478- return ret;476476+ return 0;479477}480478481479static int brcmf_sdio_pd_remove(struct platform_device *pdev)···494500 }495501};496502503503+void brcmf_sdio_register(void)504504+{505505+ int ret;506506+507507+ ret = sdio_register_driver(&brcmf_sdmmc_driver);508508+ if (ret)509509+ brcmf_err("sdio_register_driver failed: %d\n", ret);510510+}511511+497512void brcmf_sdio_exit(void)498513{499514 brcmf_dbg(SDIO, "Enter\n");···513510 sdio_unregister_driver(&brcmf_sdmmc_driver);514511}515512516516-void brcmf_sdio_init(void)513513+void __init brcmf_sdio_init(void)517514{518515 int ret;519516520517 brcmf_dbg(SDIO, "Enter\n");521518522519 ret = platform_driver_probe(&brcmf_sdio_pd, brcmf_sdio_pd_probe);523523- if (ret == -ENODEV) {524524- brcmf_dbg(SDIO, "No platform data available, registering without.\n");525525- ret = sdio_register_driver(&brcmf_sdmmc_driver);526526- }527527-528528- if (ret)529529- brcmf_err("driver registration failed: %d\n", ret);520520+ if (ret == -ENODEV)521521+ brcmf_dbg(SDIO, "No platform data available.\n");530522}
···457457 if (err != 0)458458 brcms_err(wl->wlc->hw->d11core, "%s: brcms_up() returned %d\n",459459 __func__, err);460460+461461+ bcma_core_pci_power_save(wl->wlc->hw->d11core->bus, true);460462 return err;461463}462464···480478 "wl: brcms_ops_stop: chipmatch failed\n");481479 return;482480 }481481+482482+ bcma_core_pci_power_save(wl->wlc->hw->d11core->bus, false);483483484484 /* put driver in down state */485485 spin_lock_bh(&wl->lock);
+7-19
drivers/net/wireless/cw1200/cw1200_spi.c
···4242 spinlock_t lock; /* Serialize all bus operations */4343 wait_queue_head_t wq;4444 int claimed;4545- int irq_disabled;4645};47464847#define SDIO_TO_SPI_ADDR(addr) ((addr & 0x1f)>>2)···237238 struct hwbus_priv *self = dev_id;238239239240 if (self->core) {240240- disable_irq_nosync(self->func->irq);241241- self->irq_disabled = 1;242241 cw1200_irq_handler(self->core);243242 return IRQ_HANDLED;244243 } else {···250253251254 pr_debug("SW IRQ subscribe\n");252255253253- ret = request_any_context_irq(self->func->irq, cw1200_spi_irq_handler,254254- IRQF_TRIGGER_HIGH,255255- "cw1200_wlan_irq", self);256256+ ret = request_threaded_irq(self->func->irq, NULL,257257+ cw1200_spi_irq_handler,258258+ IRQF_TRIGGER_HIGH | IRQF_ONESHOT,259259+ "cw1200_wlan_irq", self);256260 if (WARN_ON(ret < 0))257261 goto exit;258262···271273272274static int cw1200_spi_irq_unsubscribe(struct hwbus_priv *self)273275{276276+ int ret = 0;277277+274278 pr_debug("SW IRQ unsubscribe\n");275279 disable_irq_wake(self->func->irq);276280 free_irq(self->func->irq, self);277281278278- return 0;279279-}280280-281281-static int cw1200_spi_irq_enable(struct hwbus_priv *self, int enable)282282-{283283- /* Disables are handled by the interrupt handler */284284- if (enable && self->irq_disabled) {285285- enable_irq(self->func->irq);286286- self->irq_disabled = 0;287287- }288288-289289- return 0;282282+ return ret;290283}291284292285static int cw1200_spi_off(const struct cw1200_platform_data_spi *pdata)···357368 .unlock = cw1200_spi_unlock,358369 .align_size = cw1200_spi_align_size,359370 .power_mgmt = cw1200_spi_pm,360360- .irq_enable = cw1200_spi_irq_enable,361371};362372363373/* Probe Function to be called by SPI stack when device is discovered */
+1-1
drivers/net/wireless/cw1200/fwio.c
···485485486486 /* Enable interrupt signalling */487487 priv->hwbus_ops->lock(priv->hwbus_priv);488488- ret = __cw1200_irq_enable(priv, 2);488488+ ret = __cw1200_irq_enable(priv, 1);489489 priv->hwbus_ops->unlock(priv->hwbus_priv);490490 if (ret < 0)491491 goto unsubscribe;
-1
drivers/net/wireless/cw1200/hwbus.h
···2828 void (*unlock)(struct hwbus_priv *self);2929 size_t (*align_size)(struct hwbus_priv *self, size_t size);3030 int (*power_mgmt)(struct hwbus_priv *self, bool suspend);3131- int (*irq_enable)(struct hwbus_priv *self, int enable);3231};33323433#endif /* CW1200_HWBUS_H */
-15
drivers/net/wireless/cw1200/hwio.c
···273273 u16 val16;274274 int ret;275275276276- /* We need to do this hack because the SPI layer can sleep on I/O277277- and the general path involves I/O to the device in interrupt278278- context.279279-280280- However, the initial enable call needs to go to the hardware.281281-282282- We don't worry about shutdown because we do a full reset which283283- clears the interrupt enabled bits.284284- */285285- if (priv->hwbus_ops->irq_enable) {286286- ret = priv->hwbus_ops->irq_enable(priv->hwbus_priv, enable);287287- if (ret || enable < 2)288288- return ret;289289- }290290-291276 if (HIF_8601_SILICON == priv->hw_type) {292277 ret = __cw1200_reg_read_32(priv, ST90TDS_CONFIG_REG_ID, &val32);293278 if (ret < 0) {
+2-1
drivers/net/wireless/mwifiex/11n_aggr.c
···150150 */151151int152152mwifiex_11n_aggregate_pkt(struct mwifiex_private *priv,153153- struct mwifiex_ra_list_tbl *pra_list, int headroom,153153+ struct mwifiex_ra_list_tbl *pra_list,154154 int ptrindex, unsigned long ra_list_flags)155155 __releases(&priv->wmm.ra_list_spinlock)156156{···160160 int pad = 0, ret;161161 struct mwifiex_tx_param tx_param;162162 struct txpd *ptx_pd = NULL;163163+ int headroom = adapter->iface_type == MWIFIEX_USB ? 0 : INTF_HEADER_LEN;163164164165 skb_src = skb_peek(&pra_list->skb_head);165166 if (!skb_src) {
+1-1
drivers/net/wireless/mwifiex/11n_aggr.h
···2626int mwifiex_11n_deaggregate_pkt(struct mwifiex_private *priv,2727 struct sk_buff *skb);2828int mwifiex_11n_aggregate_pkt(struct mwifiex_private *priv,2929- struct mwifiex_ra_list_tbl *ptr, int headroom,2929+ struct mwifiex_ra_list_tbl *ptr,3030 int ptr_index, unsigned long flags)3131 __releases(&priv->wmm.ra_list_spinlock);3232
···447447 */448448 adapter->is_suspended = true;449449450450- for (i = 0; i < adapter->priv_num; i++)451451- netif_carrier_off(adapter->priv[i]->netdev);452452-453450 if (atomic_read(&card->rx_cmd_urb_pending) && card->rx_cmd.urb)454451 usb_kill_urb(card->rx_cmd.urb);455452···505508 mwifiex_usb_submit_rx_urb(&card->rx_cmd,506509 MWIFIEX_RX_CMD_BUF_SIZE);507510 }508508-509509- for (i = 0; i < adapter->priv_num; i++)510510- if (adapter->priv[i]->media_connected)511511- netif_carrier_on(adapter->priv[i]->netdev);512511513512 /* Disable Host Sleep */514513 if (adapter->hs_activated)
+1-2
drivers/net/wireless/mwifiex/wmm.c
···12391239 if (enable_tx_amsdu && mwifiex_is_amsdu_allowed(priv, tid) &&12401240 mwifiex_is_11n_aggragation_possible(priv, ptr,12411241 adapter->tx_buf_size))12421242- mwifiex_11n_aggregate_pkt(priv, ptr, INTF_HEADER_LEN,12431243- ptr_index, flags);12421242+ mwifiex_11n_aggregate_pkt(priv, ptr, ptr_index, flags);12441243 /* ra_list_spinlock has been freed in12451244 mwifiex_11n_aggregate_pkt() */12461245 else
+2
drivers/net/wireless/p54/p54usb.c
···8383 {USB_DEVICE(0x06a9, 0x000e)}, /* Westell 802.11g USB (A90-211WG-01) */8484 {USB_DEVICE(0x06b9, 0x0121)}, /* Thomson SpeedTouch 121g */8585 {USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */8686+ {USB_DEVICE(0x07aa, 0x0020)}, /* Corega WLUSB2GTST USB */8687 {USB_DEVICE(0x0803, 0x4310)}, /* Zoom 4410a */8788 {USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 version 2 */8889 {USB_DEVICE(0x083a, 0x4531)}, /* T-Com Sinus 154 data II */···980979 if (err) {981980 dev_err(&priv->udev->dev, "(p54usb) cannot load firmware %s "982981 "(%d)!\n", p54u_fwlist[i].fw, err);982982+ usb_put_dev(udev);983983 }984984985985 return err;
+1-1
drivers/net/wireless/rtlwifi/wifi.h
···20572057 that it points to the data allocated20582058 beyond this structure like:20592059 rtl_pci_priv or rtl_usb_priv */20602060- u8 priv[0];20602060+ u8 priv[0] __aligned(sizeof(void *));20612061};2062206220632063#define rtl_priv(hw) (((struct rtl_priv *)(hw)->priv))
···3755375537563756 sk = chan->sk;3757375737583758+ /* For certain devices (ex: HID mouse), support for authentication,37593759+ * pairing and bonding is optional. For such devices, inorder to avoid37603760+ * the ACL alive for too long after L2CAP disconnection, reset the ACL37613761+ * disc_timeout back to HCI_DISCONN_TIMEOUT during L2CAP connect.37623762+ */37633763+ conn->hcon->disc_timeout = HCI_DISCONN_TIMEOUT;37643764+37583765 bacpy(&bt_sk(sk)->src, conn->src);37593766 bacpy(&bt_sk(sk)->dst, conn->dst);37603767 chan->psm = psm;
+2-33
net/bluetooth/rfcomm/tty.c
···569569static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err)570570{571571 struct rfcomm_dev *dev = dlc->owner;572572- struct tty_struct *tty;573572 if (!dev)574573 return;575574···580581 DPM_ORDER_DEV_AFTER_PARENT);581582582583 wake_up_interruptible(&dev->port.open_wait);583583- } else if (dlc->state == BT_CLOSED) {584584- tty = tty_port_tty_get(&dev->port);585585- if (!tty) {586586- if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) {587587- /* Drop DLC lock here to avoid deadlock588588- * 1. rfcomm_dev_get will take rfcomm_dev_lock589589- * but in rfcomm_dev_add there's lock order:590590- * rfcomm_dev_lock -> dlc lock591591- * 2. tty_port_put will deadlock if it's592592- * the last reference593593- *594594- * FIXME: when we release the lock anything595595- * could happen to dev, even its destruction596596- */597597- rfcomm_dlc_unlock(dlc);598598- if (rfcomm_dev_get(dev->id) == NULL) {599599- rfcomm_dlc_lock(dlc);600600- return;601601- }602602-603603- if (!test_and_set_bit(RFCOMM_TTY_RELEASED,604604- &dev->flags))605605- tty_port_put(&dev->port);606606-607607- tty_port_put(&dev->port);608608- rfcomm_dlc_lock(dlc);609609- }610610- } else {611611- tty_hangup(tty);612612- tty_kref_put(tty);613613- }614614- }584584+ } else if (dlc->state == BT_CLOSED)585585+ tty_port_tty_hangup(&dev->port, false);615586}616587617588static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig)