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: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
188ce5abeb
commit
12bf6f45d1
@ -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_NARROW_BAND_MSK cpu_to_le16(1 << 3)
|
||||||
#define RX_RES_PHY_FLAGS_ANTENNA_MSK 0x70
|
#define RX_RES_PHY_FLAGS_ANTENNA_MSK 0x70
|
||||||
#define RX_RES_PHY_FLAGS_ANTENNA_POS 4
|
#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_MSK (0x7 << 8)
|
||||||
#define RX_RES_STATUS_SEC_TYPE_NONE (0x0 << 8)
|
#define RX_RES_STATUS_SEC_TYPE_NONE (0x0 << 8)
|
||||||
|
@ -771,6 +771,7 @@ struct iwl_priv {
|
|||||||
u8 agg_tids_count;
|
u8 agg_tids_count;
|
||||||
|
|
||||||
struct iwl_rx_phy_res last_phy_res;
|
struct iwl_rx_phy_res last_phy_res;
|
||||||
|
u32 ampdu_ref;
|
||||||
bool last_phy_res_valid;
|
bool last_phy_res_valid;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -667,6 +667,7 @@ static int iwlagn_rx_reply_rx_phy(struct iwl_priv *priv,
|
|||||||
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
||||||
|
|
||||||
priv->last_phy_res_valid = true;
|
priv->last_phy_res_valid = true;
|
||||||
|
priv->ampdu_ref++;
|
||||||
memcpy(&priv->last_phy_res, pkt->data,
|
memcpy(&priv->last_phy_res, pkt->data,
|
||||||
sizeof(struct iwl_rx_phy_res));
|
sizeof(struct iwl_rx_phy_res));
|
||||||
return 0;
|
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)
|
if (phy_res->phy_flags & RX_RES_PHY_FLAGS_SHORT_PREAMBLE_MSK)
|
||||||
rx_status.flag |= RX_FLAG_SHORTPRE;
|
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 */
|
/* Set up the HT phy flags */
|
||||||
if (rate_n_flags & RATE_MCS_HT_MSK)
|
if (rate_n_flags & RATE_MCS_HT_MSK)
|
||||||
rx_status.flag |= RX_FLAG_HT;
|
rx_status.flag |= RX_FLAG_HT;
|
||||||
|
Loading…
Reference in New Issue
Block a user