mirror of https://gitee.com/openkylin/linux.git
mac80211: reduce IEEE80211_TX_MAX_RATES
IEEE80211_TX_MAX_RATES can be reduced from 5 to 4 as there is no current hardware supporting a rate chain with 5 multi rate stages (mrr), so 4 mrr stages are sufficient. The memory that is freed within the ieee80211_tx_info struct will be used in the upcoming Transmission Power Control (TPC) implementation. Suggested-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: Thomas Huehn <thomas@net.t-labs.tu-berlin.de> [reword commit message] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
cb831b537d
commit
e3e1a0bcb3
|
@ -277,11 +277,11 @@ static void carl9170_tx_release(struct kref *ref)
|
|||
return;
|
||||
|
||||
BUILD_BUG_ON(
|
||||
offsetof(struct ieee80211_tx_info, status.ampdu_ack_len) != 23);
|
||||
offsetof(struct ieee80211_tx_info, status.ack_signal) != 20);
|
||||
|
||||
memset(&txinfo->status.ampdu_ack_len, 0,
|
||||
memset(&txinfo->status.ack_signal, 0,
|
||||
sizeof(struct ieee80211_tx_info) -
|
||||
offsetof(struct ieee80211_tx_info, status.ampdu_ack_len));
|
||||
offsetof(struct ieee80211_tx_info, status.ack_signal));
|
||||
|
||||
if (atomic_read(&ar->tx_total_queued))
|
||||
ar->tx_schedule = true;
|
||||
|
|
|
@ -422,11 +422,11 @@ static void p54_rx_frame_sent(struct p54_common *priv, struct sk_buff *skb)
|
|||
* Clear manually, ieee80211_tx_info_clear_status would
|
||||
* clear the counts too and we need them.
|
||||
*/
|
||||
memset(&info->status.ampdu_ack_len, 0,
|
||||
memset(&info->status.ack_signal, 0,
|
||||
sizeof(struct ieee80211_tx_info) -
|
||||
offsetof(struct ieee80211_tx_info, status.ampdu_ack_len));
|
||||
offsetof(struct ieee80211_tx_info, status.ack_signal));
|
||||
BUILD_BUG_ON(offsetof(struct ieee80211_tx_info,
|
||||
status.ampdu_ack_len) != 23);
|
||||
status.ack_signal) != 20);
|
||||
|
||||
if (entry_hdr->flags & cpu_to_le16(P54_HDR_FLAG_DATA_ALIGN))
|
||||
pad = entry_data->align[0];
|
||||
|
|
|
@ -475,7 +475,7 @@ enum mac80211_rate_control_flags {
|
|||
#define IEEE80211_TX_INFO_RATE_DRIVER_DATA_SIZE 24
|
||||
|
||||
/* maximum number of rate stages */
|
||||
#define IEEE80211_TX_MAX_RATES 5
|
||||
#define IEEE80211_TX_MAX_RATES 4
|
||||
|
||||
/**
|
||||
* struct ieee80211_tx_rate - rate selection/status
|
||||
|
@ -563,11 +563,11 @@ struct ieee80211_tx_info {
|
|||
} control;
|
||||
struct {
|
||||
struct ieee80211_tx_rate rates[IEEE80211_TX_MAX_RATES];
|
||||
u8 ampdu_ack_len;
|
||||
int ack_signal;
|
||||
u8 ampdu_ack_len;
|
||||
u8 ampdu_len;
|
||||
u8 antenna;
|
||||
/* 14 bytes free */
|
||||
/* 21 bytes free */
|
||||
} status;
|
||||
struct {
|
||||
struct ieee80211_tx_rate driver_rates[
|
||||
|
@ -634,7 +634,7 @@ ieee80211_tx_info_clear_status(struct ieee80211_tx_info *info)
|
|||
info->status.rates[i].count = 0;
|
||||
|
||||
BUILD_BUG_ON(
|
||||
offsetof(struct ieee80211_tx_info, status.ampdu_ack_len) != 23);
|
||||
offsetof(struct ieee80211_tx_info, status.ack_signal) != 20);
|
||||
memset(&info->status.ampdu_ack_len, 0,
|
||||
sizeof(struct ieee80211_tx_info) -
|
||||
offsetof(struct ieee80211_tx_info, status.ampdu_ack_len));
|
||||
|
|
|
@ -959,8 +959,7 @@ ieee80211_tx_h_fragment(struct ieee80211_tx_data *tx)
|
|||
info->control.rates[1].idx = -1;
|
||||
info->control.rates[2].idx = -1;
|
||||
info->control.rates[3].idx = -1;
|
||||
info->control.rates[4].idx = -1;
|
||||
BUILD_BUG_ON(IEEE80211_TX_MAX_RATES != 5);
|
||||
BUILD_BUG_ON(IEEE80211_TX_MAX_RATES != 4);
|
||||
info->flags &= ~IEEE80211_TX_CTL_RATE_CTRL_PROBE;
|
||||
} else {
|
||||
hdr->frame_control &= ~morefrags;
|
||||
|
|
Loading…
Reference in New Issue