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
4 changed files with 11 additions and 12 deletions
|
@ -277,11 +277,11 @@ static void carl9170_tx_release(struct kref *ref)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
BUILD_BUG_ON(
|
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) -
|
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))
|
if (atomic_read(&ar->tx_total_queued))
|
||||||
ar->tx_schedule = true;
|
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 manually, ieee80211_tx_info_clear_status would
|
||||||
* clear the counts too and we need them.
|
* 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) -
|
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,
|
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))
|
if (entry_hdr->flags & cpu_to_le16(P54_HDR_FLAG_DATA_ALIGN))
|
||||||
pad = entry_data->align[0];
|
pad = entry_data->align[0];
|
||||||
|
|
|
@ -475,7 +475,7 @@ enum mac80211_rate_control_flags {
|
||||||
#define IEEE80211_TX_INFO_RATE_DRIVER_DATA_SIZE 24
|
#define IEEE80211_TX_INFO_RATE_DRIVER_DATA_SIZE 24
|
||||||
|
|
||||||
/* maximum number of rate stages */
|
/* maximum number of rate stages */
|
||||||
#define IEEE80211_TX_MAX_RATES 5
|
#define IEEE80211_TX_MAX_RATES 4
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct ieee80211_tx_rate - rate selection/status
|
* struct ieee80211_tx_rate - rate selection/status
|
||||||
|
@ -563,11 +563,11 @@ struct ieee80211_tx_info {
|
||||||
} control;
|
} control;
|
||||||
struct {
|
struct {
|
||||||
struct ieee80211_tx_rate rates[IEEE80211_TX_MAX_RATES];
|
struct ieee80211_tx_rate rates[IEEE80211_TX_MAX_RATES];
|
||||||
u8 ampdu_ack_len;
|
|
||||||
int ack_signal;
|
int ack_signal;
|
||||||
|
u8 ampdu_ack_len;
|
||||||
u8 ampdu_len;
|
u8 ampdu_len;
|
||||||
u8 antenna;
|
u8 antenna;
|
||||||
/* 14 bytes free */
|
/* 21 bytes free */
|
||||||
} status;
|
} status;
|
||||||
struct {
|
struct {
|
||||||
struct ieee80211_tx_rate driver_rates[
|
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;
|
info->status.rates[i].count = 0;
|
||||||
|
|
||||||
BUILD_BUG_ON(
|
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,
|
memset(&info->status.ampdu_ack_len, 0,
|
||||||
sizeof(struct ieee80211_tx_info) -
|
sizeof(struct ieee80211_tx_info) -
|
||||||
offsetof(struct ieee80211_tx_info, status.ampdu_ack_len));
|
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[1].idx = -1;
|
||||||
info->control.rates[2].idx = -1;
|
info->control.rates[2].idx = -1;
|
||||||
info->control.rates[3].idx = -1;
|
info->control.rates[3].idx = -1;
|
||||||
info->control.rates[4].idx = -1;
|
BUILD_BUG_ON(IEEE80211_TX_MAX_RATES != 4);
|
||||||
BUILD_BUG_ON(IEEE80211_TX_MAX_RATES != 5);
|
|
||||||
info->flags &= ~IEEE80211_TX_CTL_RATE_CTRL_PROBE;
|
info->flags &= ~IEEE80211_TX_CTL_RATE_CTRL_PROBE;
|
||||||
} else {
|
} else {
|
||||||
hdr->frame_control &= ~morefrags;
|
hdr->frame_control &= ~morefrags;
|
||||||
|
|
Loading…
Reference in a new issue