Loading drivers/bcma/driver_pci.c +26 −23 Original line number Original line Diff line number Diff line Loading @@ -210,25 +210,6 @@ static void bcma_core_pci_config_fixup(struct bcma_drv_pci *pc) } } } } static void bcma_core_pci_power_save(struct bcma_drv_pci *pc, bool up) { u16 data; if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) { data = up ? 0x74 : 0x7C; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7F64); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } else if (pc->core->id.rev >= 21 && pc->core->id.rev <= 22) { data = up ? 0x75 : 0x7D; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7E65); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } } /************************************************** /************************************************** * Init. * Init. **************************************************/ **************************************************/ Loading @@ -255,6 +236,32 @@ void bcma_core_pci_init(struct bcma_drv_pci *pc) bcma_core_pci_clientmode_init(pc); bcma_core_pci_clientmode_init(pc); } } void bcma_core_pci_power_save(struct bcma_bus *bus, bool up) { struct bcma_drv_pci *pc; u16 data; if (bus->hosttype != BCMA_HOSTTYPE_PCI) return; pc = &bus->drv_pci[0]; if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) { data = up ? 0x74 : 0x7C; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7F64); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } else if (pc->core->id.rev >= 21 && pc->core->id.rev <= 22) { data = up ? 0x75 : 0x7D; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7E65); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } } EXPORT_SYMBOL_GPL(bcma_core_pci_power_save); int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, struct bcma_device *core, int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, struct bcma_device *core, bool enable) bool enable) { { Loading Loading @@ -310,8 +317,6 @@ void bcma_core_pci_up(struct bcma_bus *bus) pc = &bus->drv_pci[0]; pc = &bus->drv_pci[0]; bcma_core_pci_power_save(pc, true); bcma_core_pci_extend_L1timer(pc, true); bcma_core_pci_extend_L1timer(pc, true); } } EXPORT_SYMBOL_GPL(bcma_core_pci_up); EXPORT_SYMBOL_GPL(bcma_core_pci_up); Loading @@ -326,7 +331,5 @@ void bcma_core_pci_down(struct bcma_bus *bus) pc = &bus->drv_pci[0]; pc = &bus->drv_pci[0]; bcma_core_pci_extend_L1timer(pc, false); bcma_core_pci_extend_L1timer(pc, false); bcma_core_pci_power_save(pc, false); } } EXPORT_SYMBOL_GPL(bcma_core_pci_down); EXPORT_SYMBOL_GPL(bcma_core_pci_down); drivers/bluetooth/ath3k.c +2 −0 Original line number Original line Diff line number Diff line Loading @@ -85,6 +85,7 @@ static struct usb_device_id ath3k_table[] = { { USB_DEVICE(0x04CA, 0x3008) }, { USB_DEVICE(0x04CA, 0x3008) }, { USB_DEVICE(0x13d3, 0x3362) }, { USB_DEVICE(0x13d3, 0x3362) }, { USB_DEVICE(0x0CF3, 0xE004) }, { USB_DEVICE(0x0CF3, 0xE004) }, { USB_DEVICE(0x0CF3, 0xE005) }, { USB_DEVICE(0x0930, 0x0219) }, { USB_DEVICE(0x0930, 0x0219) }, { USB_DEVICE(0x0489, 0xe057) }, { USB_DEVICE(0x0489, 0xe057) }, { USB_DEVICE(0x13d3, 0x3393) }, { USB_DEVICE(0x13d3, 0x3393) }, Loading Loading @@ -126,6 +127,7 @@ static struct usb_device_id ath3k_blist_tbl[] = { { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe005), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, Loading drivers/bluetooth/btusb.c +5 −0 Original line number Original line Diff line number Diff line Loading @@ -102,6 +102,7 @@ static struct usb_device_id btusb_table[] = { /* Broadcom BCM20702A0 */ /* Broadcom BCM20702A0 */ { USB_DEVICE(0x0b05, 0x17b5) }, { USB_DEVICE(0x0b05, 0x17b5) }, { USB_DEVICE(0x0b05, 0x17cb) }, { USB_DEVICE(0x04ca, 0x2003) }, { USB_DEVICE(0x04ca, 0x2003) }, { USB_DEVICE(0x0489, 0xe042) }, { USB_DEVICE(0x0489, 0xe042) }, { USB_DEVICE(0x413c, 0x8197) }, { USB_DEVICE(0x413c, 0x8197) }, Loading @@ -112,6 +113,9 @@ static struct usb_device_id btusb_table[] = { /*Broadcom devices with vendor specific id */ /*Broadcom devices with vendor specific id */ { USB_VENDOR_AND_INTERFACE_INFO(0x0a5c, 0xff, 0x01, 0x01) }, { USB_VENDOR_AND_INTERFACE_INFO(0x0a5c, 0xff, 0x01, 0x01) }, /* Belkin F8065bf - Broadcom based */ { USB_VENDOR_AND_INTERFACE_INFO(0x050d, 0xff, 0x01, 0x01) }, { } /* Terminating entry */ { } /* Terminating entry */ }; }; Loading Loading @@ -148,6 +152,7 @@ static struct usb_device_id blacklist_table[] = { { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe005), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, Loading drivers/net/wireless/ath/ath9k/recv.c +0 −7 Original line number Original line Diff line number Diff line Loading @@ -1269,13 +1269,6 @@ static void ath9k_antenna_check(struct ath_softc *sc, if (!(ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB)) if (!(ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB)) return; return; /* * All MPDUs in an aggregate will use the same LNA * as the first MPDU. */ if (rs->rs_isaggr && !rs->rs_firstaggr) return; /* /* * Change the default rx antenna if rx diversity * Change the default rx antenna if rx diversity * chooses the other antenna 3 times in a row. * chooses the other antenna 3 times in a row. Loading drivers/net/wireless/ath/ath9k/xmit.c +14 −3 Original line number Original line Diff line number Diff line Loading @@ -399,6 +399,7 @@ static struct ath_buf* ath_clone_txbuf(struct ath_softc *sc, struct ath_buf *bf) tbf->bf_buf_addr = bf->bf_buf_addr; tbf->bf_buf_addr = bf->bf_buf_addr; memcpy(tbf->bf_desc, bf->bf_desc, sc->sc_ah->caps.tx_desc_len); memcpy(tbf->bf_desc, bf->bf_desc, sc->sc_ah->caps.tx_desc_len); tbf->bf_state = bf->bf_state; tbf->bf_state = bf->bf_state; tbf->bf_state.stale = false; return tbf; return tbf; } } Loading Loading @@ -1389,11 +1390,15 @@ int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid, u16 *ssn) u16 tid, u16 *ssn) { { struct ath_atx_tid *txtid; struct ath_atx_tid *txtid; struct ath_txq *txq; struct ath_node *an; struct ath_node *an; u8 density; u8 density; an = (struct ath_node *)sta->drv_priv; an = (struct ath_node *)sta->drv_priv; txtid = ATH_AN_2_TID(an, tid); txtid = ATH_AN_2_TID(an, tid); txq = txtid->ac->txq; ath_txq_lock(sc, txq); /* update ampdu factor/density, they may have changed. This may happen /* update ampdu factor/density, they may have changed. This may happen * in HT IBSS when a beacon with HT-info is received after the station * in HT IBSS when a beacon with HT-info is received after the station Loading @@ -1417,6 +1422,8 @@ int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, memset(txtid->tx_buf, 0, sizeof(txtid->tx_buf)); memset(txtid->tx_buf, 0, sizeof(txtid->tx_buf)); txtid->baw_head = txtid->baw_tail = 0; txtid->baw_head = txtid->baw_tail = 0; ath_txq_unlock_complete(sc, txq); return 0; return 0; } } Loading Loading @@ -1555,8 +1562,10 @@ void ath9k_release_buffered_frames(struct ieee80211_hw *hw, __skb_unlink(bf->bf_mpdu, tid_q); __skb_unlink(bf->bf_mpdu, tid_q); list_add_tail(&bf->list, &bf_q); list_add_tail(&bf->list, &bf_q); ath_set_rates(tid->an->vif, tid->an->sta, bf); ath_set_rates(tid->an->vif, tid->an->sta, bf); if (bf_isampdu(bf)) { ath_tx_addto_baw(sc, tid, bf); ath_tx_addto_baw(sc, tid, bf); bf->bf_state.bf_type &= ~BUF_AGGR; bf->bf_state.bf_type &= ~BUF_AGGR; } if (bf_tail) if (bf_tail) bf_tail->bf_next = bf; bf_tail->bf_next = bf; Loading Loading @@ -1950,7 +1959,9 @@ static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq, if (bf_is_ampdu_not_probing(bf)) if (bf_is_ampdu_not_probing(bf)) txq->axq_ampdu_depth++; txq->axq_ampdu_depth++; bf = bf->bf_lastbf->bf_next; bf_last = bf->bf_lastbf; bf = bf_last->bf_next; bf_last->bf_next = NULL; } } } } } } Loading Loading
drivers/bcma/driver_pci.c +26 −23 Original line number Original line Diff line number Diff line Loading @@ -210,25 +210,6 @@ static void bcma_core_pci_config_fixup(struct bcma_drv_pci *pc) } } } } static void bcma_core_pci_power_save(struct bcma_drv_pci *pc, bool up) { u16 data; if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) { data = up ? 0x74 : 0x7C; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7F64); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } else if (pc->core->id.rev >= 21 && pc->core->id.rev <= 22) { data = up ? 0x75 : 0x7D; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7E65); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } } /************************************************** /************************************************** * Init. * Init. **************************************************/ **************************************************/ Loading @@ -255,6 +236,32 @@ void bcma_core_pci_init(struct bcma_drv_pci *pc) bcma_core_pci_clientmode_init(pc); bcma_core_pci_clientmode_init(pc); } } void bcma_core_pci_power_save(struct bcma_bus *bus, bool up) { struct bcma_drv_pci *pc; u16 data; if (bus->hosttype != BCMA_HOSTTYPE_PCI) return; pc = &bus->drv_pci[0]; if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) { data = up ? 0x74 : 0x7C; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7F64); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } else if (pc->core->id.rev >= 21 && pc->core->id.rev <= 22) { data = up ? 0x75 : 0x7D; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7E65); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } } EXPORT_SYMBOL_GPL(bcma_core_pci_power_save); int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, struct bcma_device *core, int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, struct bcma_device *core, bool enable) bool enable) { { Loading Loading @@ -310,8 +317,6 @@ void bcma_core_pci_up(struct bcma_bus *bus) pc = &bus->drv_pci[0]; pc = &bus->drv_pci[0]; bcma_core_pci_power_save(pc, true); bcma_core_pci_extend_L1timer(pc, true); bcma_core_pci_extend_L1timer(pc, true); } } EXPORT_SYMBOL_GPL(bcma_core_pci_up); EXPORT_SYMBOL_GPL(bcma_core_pci_up); Loading @@ -326,7 +331,5 @@ void bcma_core_pci_down(struct bcma_bus *bus) pc = &bus->drv_pci[0]; pc = &bus->drv_pci[0]; bcma_core_pci_extend_L1timer(pc, false); bcma_core_pci_extend_L1timer(pc, false); bcma_core_pci_power_save(pc, false); } } EXPORT_SYMBOL_GPL(bcma_core_pci_down); EXPORT_SYMBOL_GPL(bcma_core_pci_down);
drivers/bluetooth/ath3k.c +2 −0 Original line number Original line Diff line number Diff line Loading @@ -85,6 +85,7 @@ static struct usb_device_id ath3k_table[] = { { USB_DEVICE(0x04CA, 0x3008) }, { USB_DEVICE(0x04CA, 0x3008) }, { USB_DEVICE(0x13d3, 0x3362) }, { USB_DEVICE(0x13d3, 0x3362) }, { USB_DEVICE(0x0CF3, 0xE004) }, { USB_DEVICE(0x0CF3, 0xE004) }, { USB_DEVICE(0x0CF3, 0xE005) }, { USB_DEVICE(0x0930, 0x0219) }, { USB_DEVICE(0x0930, 0x0219) }, { USB_DEVICE(0x0489, 0xe057) }, { USB_DEVICE(0x0489, 0xe057) }, { USB_DEVICE(0x13d3, 0x3393) }, { USB_DEVICE(0x13d3, 0x3393) }, Loading Loading @@ -126,6 +127,7 @@ static struct usb_device_id ath3k_blist_tbl[] = { { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe005), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, Loading
drivers/bluetooth/btusb.c +5 −0 Original line number Original line Diff line number Diff line Loading @@ -102,6 +102,7 @@ static struct usb_device_id btusb_table[] = { /* Broadcom BCM20702A0 */ /* Broadcom BCM20702A0 */ { USB_DEVICE(0x0b05, 0x17b5) }, { USB_DEVICE(0x0b05, 0x17b5) }, { USB_DEVICE(0x0b05, 0x17cb) }, { USB_DEVICE(0x04ca, 0x2003) }, { USB_DEVICE(0x04ca, 0x2003) }, { USB_DEVICE(0x0489, 0xe042) }, { USB_DEVICE(0x0489, 0xe042) }, { USB_DEVICE(0x413c, 0x8197) }, { USB_DEVICE(0x413c, 0x8197) }, Loading @@ -112,6 +113,9 @@ static struct usb_device_id btusb_table[] = { /*Broadcom devices with vendor specific id */ /*Broadcom devices with vendor specific id */ { USB_VENDOR_AND_INTERFACE_INFO(0x0a5c, 0xff, 0x01, 0x01) }, { USB_VENDOR_AND_INTERFACE_INFO(0x0a5c, 0xff, 0x01, 0x01) }, /* Belkin F8065bf - Broadcom based */ { USB_VENDOR_AND_INTERFACE_INFO(0x050d, 0xff, 0x01, 0x01) }, { } /* Terminating entry */ { } /* Terminating entry */ }; }; Loading Loading @@ -148,6 +152,7 @@ static struct usb_device_id blacklist_table[] = { { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe005), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 }, Loading
drivers/net/wireless/ath/ath9k/recv.c +0 −7 Original line number Original line Diff line number Diff line Loading @@ -1269,13 +1269,6 @@ static void ath9k_antenna_check(struct ath_softc *sc, if (!(ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB)) if (!(ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB)) return; return; /* * All MPDUs in an aggregate will use the same LNA * as the first MPDU. */ if (rs->rs_isaggr && !rs->rs_firstaggr) return; /* /* * Change the default rx antenna if rx diversity * Change the default rx antenna if rx diversity * chooses the other antenna 3 times in a row. * chooses the other antenna 3 times in a row. Loading
drivers/net/wireless/ath/ath9k/xmit.c +14 −3 Original line number Original line Diff line number Diff line Loading @@ -399,6 +399,7 @@ static struct ath_buf* ath_clone_txbuf(struct ath_softc *sc, struct ath_buf *bf) tbf->bf_buf_addr = bf->bf_buf_addr; tbf->bf_buf_addr = bf->bf_buf_addr; memcpy(tbf->bf_desc, bf->bf_desc, sc->sc_ah->caps.tx_desc_len); memcpy(tbf->bf_desc, bf->bf_desc, sc->sc_ah->caps.tx_desc_len); tbf->bf_state = bf->bf_state; tbf->bf_state = bf->bf_state; tbf->bf_state.stale = false; return tbf; return tbf; } } Loading Loading @@ -1389,11 +1390,15 @@ int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid, u16 *ssn) u16 tid, u16 *ssn) { { struct ath_atx_tid *txtid; struct ath_atx_tid *txtid; struct ath_txq *txq; struct ath_node *an; struct ath_node *an; u8 density; u8 density; an = (struct ath_node *)sta->drv_priv; an = (struct ath_node *)sta->drv_priv; txtid = ATH_AN_2_TID(an, tid); txtid = ATH_AN_2_TID(an, tid); txq = txtid->ac->txq; ath_txq_lock(sc, txq); /* update ampdu factor/density, they may have changed. This may happen /* update ampdu factor/density, they may have changed. This may happen * in HT IBSS when a beacon with HT-info is received after the station * in HT IBSS when a beacon with HT-info is received after the station Loading @@ -1417,6 +1422,8 @@ int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, memset(txtid->tx_buf, 0, sizeof(txtid->tx_buf)); memset(txtid->tx_buf, 0, sizeof(txtid->tx_buf)); txtid->baw_head = txtid->baw_tail = 0; txtid->baw_head = txtid->baw_tail = 0; ath_txq_unlock_complete(sc, txq); return 0; return 0; } } Loading Loading @@ -1555,8 +1562,10 @@ void ath9k_release_buffered_frames(struct ieee80211_hw *hw, __skb_unlink(bf->bf_mpdu, tid_q); __skb_unlink(bf->bf_mpdu, tid_q); list_add_tail(&bf->list, &bf_q); list_add_tail(&bf->list, &bf_q); ath_set_rates(tid->an->vif, tid->an->sta, bf); ath_set_rates(tid->an->vif, tid->an->sta, bf); if (bf_isampdu(bf)) { ath_tx_addto_baw(sc, tid, bf); ath_tx_addto_baw(sc, tid, bf); bf->bf_state.bf_type &= ~BUF_AGGR; bf->bf_state.bf_type &= ~BUF_AGGR; } if (bf_tail) if (bf_tail) bf_tail->bf_next = bf; bf_tail->bf_next = bf; Loading Loading @@ -1950,7 +1959,9 @@ static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq, if (bf_is_ampdu_not_probing(bf)) if (bf_is_ampdu_not_probing(bf)) txq->axq_ampdu_depth++; txq->axq_ampdu_depth++; bf = bf->bf_lastbf->bf_next; bf_last = bf->bf_lastbf; bf = bf_last->bf_next; bf_last->bf_next = NULL; } } } } } } Loading