Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 65210946 authored by John W. Linville's avatar John W. Linville
Browse files
parents e56108d9 e1b69fdf
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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;
+0 −8
Original line number Diff line number Diff line
@@ -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);
}