Loading drivers/net/Kconfig +2 −0 Original line number Diff line number Diff line Loading @@ -2344,6 +2344,7 @@ config GELIC_NET config GELIC_WIRELESS bool "PS3 Wireless support" depends on WLAN depends on GELIC_NET select WIRELESS_EXT help Loading @@ -2356,6 +2357,7 @@ config GELIC_WIRELESS config GELIC_WIRELESS_OLD_PSK_INTERFACE bool "PS3 Wireless private PSK interface (OBSOLETE)" depends on GELIC_WIRELESS select WEXT_PRIV help This option retains the obsolete private interface to pass the PSK from user space programs to the driver. The PSK Loading drivers/net/wireless/ath/ath9k/mac.c +1 −1 Original line number Diff line number Diff line Loading @@ -186,7 +186,7 @@ bool ath9k_hw_stoptxdma(struct ath_hw *ah, u32 q) wait = wait_time; while (ath9k_hw_numtxpending(ah, q)) { if ((--wait) == 0) { ath_print(common, ATH_DBG_QUEUE, ath_print(common, ATH_DBG_FATAL, "Failed to stop TX DMA in 100 " "msec after killing last frame\n"); break; Loading drivers/net/wireless/ath/ath9k/main.c +6 −0 Original line number Diff line number Diff line Loading @@ -1973,6 +1973,9 @@ int ath_reset(struct ath_softc *sc, bool retry_tx) struct ieee80211_hw *hw = sc->hw; int r; /* Stop ANI */ del_timer_sync(&common->ani.timer); ath9k_hw_set_interrupts(ah, 0); ath_drain_all_txq(sc, retry_tx); ath_stoprecv(sc); Loading Loading @@ -2014,6 +2017,9 @@ int ath_reset(struct ath_softc *sc, bool retry_tx) } } /* Start ANI */ ath_start_ani(common); return r; } Loading drivers/net/wireless/ath/ath9k/xmit.c +17 −23 Original line number Diff line number Diff line Loading @@ -1108,11 +1108,11 @@ void ath_drain_all_txq(struct ath_softc *sc, bool retry_tx) if (npend) { int r; ath_print(common, ATH_DBG_XMIT, ath_print(common, ATH_DBG_FATAL, "Unable to stop TxDMA. Reset HAL!\n"); spin_lock_bh(&sc->sc_resetlock); r = ath9k_hw_reset(ah, sc->sc_ah->curchan, true); r = ath9k_hw_reset(ah, sc->sc_ah->curchan, false); if (r) ath_print(common, ATH_DBG_FATAL, "Unable to reset hardware; reset status %d\n", Loading Loading @@ -1414,17 +1414,9 @@ static void assign_aggr_tid_seqno(struct sk_buff *skb, * For HT capable stations, we save tidno for later use. * We also override seqno set by upper layer with the one * in tx aggregation state. * * If fragmentation is on, the sequence number is * not overridden, since it has been * incremented by the fragmentation routine. * * FIXME: check if the fragmentation threshold exceeds * IEEE80211 max. */ tid = ATH_AN_2_TID(an, bf->bf_tidno); hdr->seq_ctrl = cpu_to_le16(tid->seq_next << IEEE80211_SEQ_SEQ_SHIFT); hdr->seq_ctrl = cpu_to_le16(tid->seq_next << IEEE80211_SEQ_SEQ_SHIFT); bf->bf_seqno = tid->seq_next; INCR(tid->seq_next, IEEE80211_SEQ_MAX); } Loading Loading @@ -1636,7 +1628,8 @@ static int ath_tx_setup_buffer(struct ieee80211_hw *hw, struct ath_buf *bf, bf->bf_keyix = ATH9K_TXKEYIX_INVALID; } if (ieee80211_is_data_qos(fc) && (sc->sc_flags & SC_OP_TXAGGR)) if (ieee80211_is_data_qos(fc) && bf_isht(bf) && (sc->sc_flags & SC_OP_TXAGGR)) assign_aggr_tid_seqno(skb, bf); bf->bf_mpdu = skb; Loading Loading @@ -1780,7 +1773,8 @@ void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb) struct ath_wiphy *aphy = hw->priv; struct ath_softc *sc = aphy->sc; struct ath_common *common = ath9k_hw_common(sc->sc_ah); int hdrlen, padsize; struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; int padpos, padsize; struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); struct ath_tx_control txctl; Loading @@ -1792,7 +1786,6 @@ void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb) * BSSes. */ if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ) { struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; if (info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT) sc->tx.seq_no += 0x10; hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG); Loading @@ -1800,9 +1793,9 @@ void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb) } /* Add the padding after the header if this is not already done */ hdrlen = ieee80211_get_hdrlen_from_skb(skb); if (hdrlen & 3) { padsize = hdrlen % 4; padpos = ath9k_cmn_padpos(hdr->frame_control); padsize = padpos & 3; if (padsize && skb->len>padpos) { if (skb_headroom(skb) < padsize) { ath_print(common, ATH_DBG_XMIT, "TX CABQ padding failed\n"); Loading @@ -1810,7 +1803,7 @@ void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb) return; } skb_push(skb, padsize); memmove(skb->data, skb->data + padsize, hdrlen); memmove(skb->data, skb->data + padsize, padpos); } txctl.txq = sc->beacon.cabq; Loading Loading @@ -1838,7 +1831,8 @@ static void ath_tx_complete(struct ath_softc *sc, struct sk_buff *skb, struct ieee80211_hw *hw = sc->hw; struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); struct ath_common *common = ath9k_hw_common(sc->sc_ah); int hdrlen, padsize; struct ieee80211_hdr * hdr = (struct ieee80211_hdr *)skb->data; int padpos, padsize; ath_print(common, ATH_DBG_XMIT, "TX complete: skb: %p\n", skb); Loading @@ -1853,14 +1847,14 @@ static void ath_tx_complete(struct ath_softc *sc, struct sk_buff *skb, tx_info->flags |= IEEE80211_TX_STAT_ACK; } hdrlen = ieee80211_get_hdrlen_from_skb(skb); padsize = hdrlen & 3; if (padsize && hdrlen >= 24) { padpos = ath9k_cmn_padpos(hdr->frame_control); padsize = padpos & 3; if (padsize && skb->len>padpos+padsize) { /* * Remove MAC header padding before giving the frame back to * mac80211. */ memmove(skb->data + padsize, skb->data, hdrlen); memmove(skb->data + padsize, skb->data, padpos); skb_pull(skb, padsize); } Loading drivers/net/wireless/iwlwifi/iwl-3945.c +3 −2 Original line number Diff line number Diff line Loading @@ -1835,8 +1835,7 @@ static int iwl3945_send_rxon_assoc(struct iwl_priv *priv) rc = -EIO; } priv->alloc_rxb_page--; free_pages(cmd.reply_page, priv->hw_params.rx_page_order); iwl_free_pages(priv, cmd.reply_page); return rc; } Loading Loading @@ -2836,6 +2835,7 @@ static struct iwl_cfg iwl3945_bg_cfg = { .use_isr_legacy = true, .ht_greenfield_support = false, .led_compensation = 64, .broken_powersave = true, }; static struct iwl_cfg iwl3945_abg_cfg = { Loading @@ -2852,6 +2852,7 @@ static struct iwl_cfg iwl3945_abg_cfg = { .use_isr_legacy = true, .ht_greenfield_support = false, .led_compensation = 64, .broken_powersave = true, }; struct pci_device_id iwl3945_hw_card_ids[] = { Loading Loading
drivers/net/Kconfig +2 −0 Original line number Diff line number Diff line Loading @@ -2344,6 +2344,7 @@ config GELIC_NET config GELIC_WIRELESS bool "PS3 Wireless support" depends on WLAN depends on GELIC_NET select WIRELESS_EXT help Loading @@ -2356,6 +2357,7 @@ config GELIC_WIRELESS config GELIC_WIRELESS_OLD_PSK_INTERFACE bool "PS3 Wireless private PSK interface (OBSOLETE)" depends on GELIC_WIRELESS select WEXT_PRIV help This option retains the obsolete private interface to pass the PSK from user space programs to the driver. The PSK Loading
drivers/net/wireless/ath/ath9k/mac.c +1 −1 Original line number Diff line number Diff line Loading @@ -186,7 +186,7 @@ bool ath9k_hw_stoptxdma(struct ath_hw *ah, u32 q) wait = wait_time; while (ath9k_hw_numtxpending(ah, q)) { if ((--wait) == 0) { ath_print(common, ATH_DBG_QUEUE, ath_print(common, ATH_DBG_FATAL, "Failed to stop TX DMA in 100 " "msec after killing last frame\n"); break; Loading
drivers/net/wireless/ath/ath9k/main.c +6 −0 Original line number Diff line number Diff line Loading @@ -1973,6 +1973,9 @@ int ath_reset(struct ath_softc *sc, bool retry_tx) struct ieee80211_hw *hw = sc->hw; int r; /* Stop ANI */ del_timer_sync(&common->ani.timer); ath9k_hw_set_interrupts(ah, 0); ath_drain_all_txq(sc, retry_tx); ath_stoprecv(sc); Loading Loading @@ -2014,6 +2017,9 @@ int ath_reset(struct ath_softc *sc, bool retry_tx) } } /* Start ANI */ ath_start_ani(common); return r; } Loading
drivers/net/wireless/ath/ath9k/xmit.c +17 −23 Original line number Diff line number Diff line Loading @@ -1108,11 +1108,11 @@ void ath_drain_all_txq(struct ath_softc *sc, bool retry_tx) if (npend) { int r; ath_print(common, ATH_DBG_XMIT, ath_print(common, ATH_DBG_FATAL, "Unable to stop TxDMA. Reset HAL!\n"); spin_lock_bh(&sc->sc_resetlock); r = ath9k_hw_reset(ah, sc->sc_ah->curchan, true); r = ath9k_hw_reset(ah, sc->sc_ah->curchan, false); if (r) ath_print(common, ATH_DBG_FATAL, "Unable to reset hardware; reset status %d\n", Loading Loading @@ -1414,17 +1414,9 @@ static void assign_aggr_tid_seqno(struct sk_buff *skb, * For HT capable stations, we save tidno for later use. * We also override seqno set by upper layer with the one * in tx aggregation state. * * If fragmentation is on, the sequence number is * not overridden, since it has been * incremented by the fragmentation routine. * * FIXME: check if the fragmentation threshold exceeds * IEEE80211 max. */ tid = ATH_AN_2_TID(an, bf->bf_tidno); hdr->seq_ctrl = cpu_to_le16(tid->seq_next << IEEE80211_SEQ_SEQ_SHIFT); hdr->seq_ctrl = cpu_to_le16(tid->seq_next << IEEE80211_SEQ_SEQ_SHIFT); bf->bf_seqno = tid->seq_next; INCR(tid->seq_next, IEEE80211_SEQ_MAX); } Loading Loading @@ -1636,7 +1628,8 @@ static int ath_tx_setup_buffer(struct ieee80211_hw *hw, struct ath_buf *bf, bf->bf_keyix = ATH9K_TXKEYIX_INVALID; } if (ieee80211_is_data_qos(fc) && (sc->sc_flags & SC_OP_TXAGGR)) if (ieee80211_is_data_qos(fc) && bf_isht(bf) && (sc->sc_flags & SC_OP_TXAGGR)) assign_aggr_tid_seqno(skb, bf); bf->bf_mpdu = skb; Loading Loading @@ -1780,7 +1773,8 @@ void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb) struct ath_wiphy *aphy = hw->priv; struct ath_softc *sc = aphy->sc; struct ath_common *common = ath9k_hw_common(sc->sc_ah); int hdrlen, padsize; struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; int padpos, padsize; struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); struct ath_tx_control txctl; Loading @@ -1792,7 +1786,6 @@ void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb) * BSSes. */ if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ) { struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; if (info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT) sc->tx.seq_no += 0x10; hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG); Loading @@ -1800,9 +1793,9 @@ void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb) } /* Add the padding after the header if this is not already done */ hdrlen = ieee80211_get_hdrlen_from_skb(skb); if (hdrlen & 3) { padsize = hdrlen % 4; padpos = ath9k_cmn_padpos(hdr->frame_control); padsize = padpos & 3; if (padsize && skb->len>padpos) { if (skb_headroom(skb) < padsize) { ath_print(common, ATH_DBG_XMIT, "TX CABQ padding failed\n"); Loading @@ -1810,7 +1803,7 @@ void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb) return; } skb_push(skb, padsize); memmove(skb->data, skb->data + padsize, hdrlen); memmove(skb->data, skb->data + padsize, padpos); } txctl.txq = sc->beacon.cabq; Loading Loading @@ -1838,7 +1831,8 @@ static void ath_tx_complete(struct ath_softc *sc, struct sk_buff *skb, struct ieee80211_hw *hw = sc->hw; struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); struct ath_common *common = ath9k_hw_common(sc->sc_ah); int hdrlen, padsize; struct ieee80211_hdr * hdr = (struct ieee80211_hdr *)skb->data; int padpos, padsize; ath_print(common, ATH_DBG_XMIT, "TX complete: skb: %p\n", skb); Loading @@ -1853,14 +1847,14 @@ static void ath_tx_complete(struct ath_softc *sc, struct sk_buff *skb, tx_info->flags |= IEEE80211_TX_STAT_ACK; } hdrlen = ieee80211_get_hdrlen_from_skb(skb); padsize = hdrlen & 3; if (padsize && hdrlen >= 24) { padpos = ath9k_cmn_padpos(hdr->frame_control); padsize = padpos & 3; if (padsize && skb->len>padpos+padsize) { /* * Remove MAC header padding before giving the frame back to * mac80211. */ memmove(skb->data + padsize, skb->data, hdrlen); memmove(skb->data + padsize, skb->data, padpos); skb_pull(skb, padsize); } Loading
drivers/net/wireless/iwlwifi/iwl-3945.c +3 −2 Original line number Diff line number Diff line Loading @@ -1835,8 +1835,7 @@ static int iwl3945_send_rxon_assoc(struct iwl_priv *priv) rc = -EIO; } priv->alloc_rxb_page--; free_pages(cmd.reply_page, priv->hw_params.rx_page_order); iwl_free_pages(priv, cmd.reply_page); return rc; } Loading Loading @@ -2836,6 +2835,7 @@ static struct iwl_cfg iwl3945_bg_cfg = { .use_isr_legacy = true, .ht_greenfield_support = false, .led_compensation = 64, .broken_powersave = true, }; static struct iwl_cfg iwl3945_abg_cfg = { Loading @@ -2852,6 +2852,7 @@ static struct iwl_cfg iwl3945_abg_cfg = { .use_isr_legacy = true, .ht_greenfield_support = false, .led_compensation = 64, .broken_powersave = true, }; struct pci_device_id iwl3945_hw_card_ids[] = { Loading