The size of the status_driver_data field was not adjusted when the is_valid_ack_signal field was added. Since the size of struct ieee80211_tx_info is limited, replace the is_valid_ack_signal field with a flags field, and adjust the struct size accordingly.
Showing the changes to include (1 of 5 files). Show all
Unified · Split
| @@ -7,7 +7,7 @@ · 6 unmodified lines | |||
| 7 | * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net> | 7 | * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net> |
| 8 | * Copyright 2013-2014 Intel Mobile Communications GmbH | 8 | * Copyright 2013-2014 Intel Mobile Communications GmbH |
| 9 | * Copyright (C) 2015 - 2017 Intel Deutschland GmbH | 9 | * Copyright (C) 2015 - 2017 Intel Deutschland GmbH |
| 10 | * Copyright (C) 2018 - 2021 Intel Corporation | 10 | * Copyright (C) 2018 - 2022 Intel Corporation |
| 11 | */ | 11 | */ |
| 12 | 12 | ||
| 13 | #ifndef MAC80211_H | 13 | #ifndef MAC80211_H |
| @@ -883,6 +883,17 @@ enum mac80211_tx_control_flags { · 869 unmodified lines | |||
| 883 | IEEE80211_TX_CTRL_DONT_REORDER = BIT(8), | 883 | IEEE80211_TX_CTRL_DONT_REORDER = BIT(8), |
| 884 | }; | 884 | }; |
| 885 | 885 | ||
| 886 | /** | ||
| 887 | * enum mac80211_tx_status_flags - flags to describe transmit status | ||
| 888 | * | ||
| 889 | * @IEEE80211_TX_STATUS_ACK_SIGNAL_VALID: ACK signal is valid | ||
| 890 | * | ||
| 891 | * These flags are used in tx_info->status.flags. | ||
| 892 | */ | ||
| 893 | enum mac80211_tx_status_flags { | ||
| 894 | IEEE80211_TX_STATUS_ACK_SIGNAL_VALID = BIT(0), | ||
| 895 | }; | ||
| 896 | |||
| 886 | /* | 897 | /* |
| 887 | * This definition is used as a mask to clear all temporary flags, which are | 898 | * This definition is used as a mask to clear all temporary flags, which are |
| 888 | * set by the tx handlers for each transmission attempt by the mac80211 stack. | 899 | * set by the tx handlers for each transmission attempt by the mac80211 stack. |
| @@ -1046,7 +1057,7 @@ ieee80211_rate_get_vht_nss(const struct ieee80211_tx_rate *rate) · 157 unmodified lines | |||
| 1046 | * @status.antenna: (legacy, kept only for iwlegacy) | 1057 | * @status.antenna: (legacy, kept only for iwlegacy) |
| 1047 | * @status.tx_time: airtime consumed for transmission; note this is only | 1058 | * @status.tx_time: airtime consumed for transmission; note this is only |
| 1048 | * used for WMM AC, not for airtime fairness | 1059 | * used for WMM AC, not for airtime fairness |
| 1049 | * @status.is_valid_ack_signal: ACK signal is valid | 1060 | * @status.flags: status flags, see &enum mac80211_tx_status_flags |
| 1050 | * @status.status_driver_data: driver use area | 1061 | * @status.status_driver_data: driver use area |
| 1051 | * @ack: union part for pure ACK data | 1062 | * @ack: union part for pure ACK data |
| 1052 | * @ack.cookie: cookie for the ACK | 1063 | * @ack.cookie: cookie for the ACK |
| @@ -1099,8 +1110,8 @@ struct ieee80211_tx_info { · 46 unmodified lines | |||
| 1099 | u8 ampdu_len; | 1110 | u8 ampdu_len; |
| 1100 | u8 antenna; | 1111 | u8 antenna; |
| 1101 | u16 tx_time; | 1112 | u16 tx_time; |
| 1102 | bool is_valid_ack_signal; | 1113 | u8 flags; |
| 1103 | void *status_driver_data[19 / sizeof(void *)]; | 1114 | void *status_driver_data[18 / sizeof(void *)]; |
| 1104 | } status; | 1115 | } status; |
| 1105 | struct { | 1116 | struct { |
| 1106 | struct ieee80211_tx_rate driver_rates[ | 1117 | struct ieee80211_tx_rate driver_rates[ |