Loading drivers/net/wireless/iwlwifi/dvm/mac80211.c +14 −0 Original line number Diff line number Diff line Loading @@ -1354,6 +1354,20 @@ static int iwlagn_mac_add_interface(struct ieee80211_hw *hw, vif_priv->ctx = ctx; ctx->vif = vif; /* * In SNIFFER device type, the firmware reports the FCS to * the host, rather than snipping it off. Unfortunately, * mac80211 doesn't (yet) provide a per-packet flag for * this, so that we have to set the hardware flag based * on the interfaces added. As the monitor interface can * only be present by itself, and will be removed before * other interfaces are added, this is safe. */ if (vif->type == NL80211_IFTYPE_MONITOR) priv->hw->flags |= IEEE80211_HW_RX_INCLUDES_FCS; else priv->hw->flags &= ~IEEE80211_HW_RX_INCLUDES_FCS; err = iwl_setup_interface(priv, ctx); if (!err || reset) goto out; Loading drivers/net/wireless/iwlwifi/pcie/tx.c +0 −8 Original line number Diff line number Diff line Loading @@ -480,20 +480,12 @@ void iwl_trans_pcie_txq_enable(struct iwl_trans *trans, int txq_id, int fifo, void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id) { struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); u16 rd_ptr, wr_ptr; int n_bd = trans_pcie->txq[txq_id].q.n_bd; if (!test_and_clear_bit(txq_id, trans_pcie->queue_used)) { WARN_ONCE(1, "queue %d not used", txq_id); return; } rd_ptr = iwl_read_prph(trans, SCD_QUEUE_RDPTR(txq_id)) & (n_bd - 1); wr_ptr = iwl_read_prph(trans, SCD_QUEUE_WRPTR(txq_id)); WARN_ONCE(rd_ptr != wr_ptr, "queue %d isn't empty: [%d,%d]", txq_id, rd_ptr, wr_ptr); iwl_txq_set_inactive(trans, txq_id); IWL_DEBUG_TX_QUEUES(trans, "Deactivate queue %d\n", txq_id); } Loading Loading
drivers/net/wireless/iwlwifi/dvm/mac80211.c +14 −0 Original line number Diff line number Diff line Loading @@ -1354,6 +1354,20 @@ static int iwlagn_mac_add_interface(struct ieee80211_hw *hw, vif_priv->ctx = ctx; ctx->vif = vif; /* * In SNIFFER device type, the firmware reports the FCS to * the host, rather than snipping it off. Unfortunately, * mac80211 doesn't (yet) provide a per-packet flag for * this, so that we have to set the hardware flag based * on the interfaces added. As the monitor interface can * only be present by itself, and will be removed before * other interfaces are added, this is safe. */ if (vif->type == NL80211_IFTYPE_MONITOR) priv->hw->flags |= IEEE80211_HW_RX_INCLUDES_FCS; else priv->hw->flags &= ~IEEE80211_HW_RX_INCLUDES_FCS; err = iwl_setup_interface(priv, ctx); if (!err || reset) goto out; Loading
drivers/net/wireless/iwlwifi/pcie/tx.c +0 −8 Original line number Diff line number Diff line Loading @@ -480,20 +480,12 @@ void iwl_trans_pcie_txq_enable(struct iwl_trans *trans, int txq_id, int fifo, void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id) { struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); u16 rd_ptr, wr_ptr; int n_bd = trans_pcie->txq[txq_id].q.n_bd; if (!test_and_clear_bit(txq_id, trans_pcie->queue_used)) { WARN_ONCE(1, "queue %d not used", txq_id); return; } rd_ptr = iwl_read_prph(trans, SCD_QUEUE_RDPTR(txq_id)) & (n_bd - 1); wr_ptr = iwl_read_prph(trans, SCD_QUEUE_WRPTR(txq_id)); WARN_ONCE(rd_ptr != wr_ptr, "queue %d isn't empty: [%d,%d]", txq_id, rd_ptr, wr_ptr); iwl_txq_set_inactive(trans, txq_id); IWL_DEBUG_TX_QUEUES(trans, "Deactivate queue %d\n", txq_id); } Loading