mirror of https://gitee.com/openkylin/linux.git
iwl4965: report A-MPDU status
This patch is based on "iwlwifi: report A-MPDU status".
(12bf6f45d1
)
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.
Cc: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
5d38745fa8
commit
0255beda59
|
@ -725,6 +725,16 @@ il4965_hdl_rx(struct il_priv *il, struct il_rx_buf *rxb)
|
||||||
if (rate_n_flags & RATE_MCS_SGI_MSK)
|
if (rate_n_flags & RATE_MCS_SGI_MSK)
|
||||||
rx_status.flag |= RX_FLAG_SHORT_GI;
|
rx_status.flag |= RX_FLAG_SHORT_GI;
|
||||||
|
|
||||||
|
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 = il->_4965.ampdu_ref;
|
||||||
|
}
|
||||||
|
|
||||||
il4965_pass_packet_to_mac80211(il, header, len, ampdu_status, rxb,
|
il4965_pass_packet_to_mac80211(il, header, len, ampdu_status, rxb,
|
||||||
&rx_status);
|
&rx_status);
|
||||||
}
|
}
|
||||||
|
@ -736,6 +746,7 @@ il4965_hdl_rx_phy(struct il_priv *il, struct il_rx_buf *rxb)
|
||||||
{
|
{
|
||||||
struct il_rx_pkt *pkt = rxb_addr(rxb);
|
struct il_rx_pkt *pkt = rxb_addr(rxb);
|
||||||
il->_4965.last_phy_res_valid = true;
|
il->_4965.last_phy_res_valid = true;
|
||||||
|
il->_4965.ampdu_ref++;
|
||||||
memcpy(&il->_4965.last_phy_res, pkt->u.raw,
|
memcpy(&il->_4965.last_phy_res, pkt->u.raw,
|
||||||
sizeof(struct il_rx_phy_res));
|
sizeof(struct il_rx_phy_res));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1136,6 +1136,7 @@ struct il_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)
|
||||||
|
|
|
@ -1356,6 +1356,7 @@ struct il_priv {
|
||||||
struct {
|
struct {
|
||||||
struct il_rx_phy_res last_phy_res;
|
struct il_rx_phy_res last_phy_res;
|
||||||
bool last_phy_res_valid;
|
bool last_phy_res_valid;
|
||||||
|
u32 ampdu_ref;
|
||||||
|
|
||||||
struct completion firmware_loading_complete;
|
struct completion firmware_loading_complete;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue