|
@@ -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;
|