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

Commit 12bf6f45 authored by Johannes Berg's avatar Johannes Berg
Browse files

iwlwifi: report A-MPDU status



Since the firmware will give us an A-MPDU bit and
only a single PHY information packet for all the
subframes in an A-MPDU, we can easily report the
minimal A-MPDU information for radiotap.

Reviewed-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 188ce5ab
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1057,6 +1057,7 @@ struct iwl_wep_cmd {
#define RX_RES_PHY_FLAGS_NARROW_BAND_MSK	cpu_to_le16(1 << 3)
#define RX_RES_PHY_FLAGS_ANTENNA_MSK		0x70
#define RX_RES_PHY_FLAGS_ANTENNA_POS		4
#define RX_RES_PHY_FLAGS_AGG_MSK		cpu_to_le16(1 << 7)

#define RX_RES_STATUS_SEC_TYPE_MSK	(0x7 << 8)
#define RX_RES_STATUS_SEC_TYPE_NONE	(0x0 << 8)
+1 −0
Original line number Diff line number Diff line
@@ -771,6 +771,7 @@ struct iwl_priv {
	u8 agg_tids_count;

	struct iwl_rx_phy_res last_phy_res;
	u32 ampdu_ref;
	bool last_phy_res_valid;

	/*
+11 −0
Original line number Diff line number Diff line
@@ -667,6 +667,7 @@ static int iwlagn_rx_reply_rx_phy(struct iwl_priv *priv,
	struct iwl_rx_packet *pkt = rxb_addr(rxb);

	priv->last_phy_res_valid = true;
	priv->ampdu_ref++;
	memcpy(&priv->last_phy_res, pkt->data,
	       sizeof(struct iwl_rx_phy_res));
	return 0;
@@ -981,6 +982,16 @@ static int iwlagn_rx_reply_rx(struct iwl_priv *priv,
	if (phy_res->phy_flags & RX_RES_PHY_FLAGS_SHORT_PREAMBLE_MSK)
		rx_status.flag |= RX_FLAG_SHORTPRE;

	if (phy_res->phy_flags & RX_RES_PHY_FLAGS_AGG_MSK) {
		/*
		 * We know which subframes of an A-MPDU belong
		 * together since we get a single PHY response
		 * from the firmware for all of them
		 */
		rx_status.flag |= RX_FLAG_AMPDU_DETAILS;
		rx_status.ampdu_reference = priv->ampdu_ref;
	}

	/* Set up the HT phy flags */
	if (rate_n_flags & RATE_MCS_HT_MSK)
		rx_status.flag |= RX_FLAG_HT;