Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62e004fe authored by Sara Sharon's avatar Sara Sharon Committed by Luciano Coelho
Browse files

iwlwifi: mvm: fix statistics variables type



When receiving statistics notification there is a field of average energy.
This is defines as signed 8 bit, while FW refers to it as unsigned.
when the energy is higher than 127 this causes in iwl_mvm_stat_iterator
a wrong computation of the signal
     int sig = -stats->general.beacon_filter_average_energy;
resulting in incorrect CQM event (change from low to high).

While at it - update the rest of the fields to the correct type.

Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
Signed-off-by: default avatarLuciano Coelho <luciano.coelho@intel.com>
parent dbb04b0d
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -237,10 +237,10 @@ struct mvm_statistics_general_v5 {
	__le32 num_of_sos_states;
	__le32 beacon_filtered;
	__le32 missed_beacons;
	__s8 beacon_filter_average_energy;
	__s8 beacon_filter_reason;
	__s8 beacon_filter_current_energy;
	__s8 beacon_filter_reserved;
	u8 beacon_filter_average_energy;
	u8 beacon_filter_reason;
	u8 beacon_filter_current_energy;
	u8 beacon_filter_reserved;
	__le32 beacon_filter_delta_time;
	struct mvm_statistics_bt_activity bt_activity;
} __packed; /* STATISTICS_GENERAL_API_S_VER_5 */
@@ -263,10 +263,10 @@ struct mvm_statistics_general_v8 {
	__le32 num_of_sos_states;
	__le32 beacon_filtered;
	__le32 missed_beacons;
	__s8 beacon_filter_average_energy;
	__s8 beacon_filter_reason;
	__s8 beacon_filter_current_energy;
	__s8 beacon_filter_reserved;
	u8 beacon_filter_average_energy;
	u8 beacon_filter_reason;
	u8 beacon_filter_current_energy;
	u8 beacon_filter_reserved;
	__le32 beacon_filter_delta_time;
	struct mvm_statistics_bt_activity bt_activity;
	__le64 rx_time;
+5 −5
Original line number Diff line number Diff line
@@ -323,11 +323,11 @@ enum iwl_bt_force_ant_mode {
struct iwl_mvm_vif_bf_data {
	bool bf_enabled;
	bool ba_enabled;
	s8 ave_beacon_signal;
	s8 last_cqm_event;
	s8 bt_coex_min_thold;
	s8 bt_coex_max_thold;
	s8 last_bt_coex_event;
	int ave_beacon_signal;
	int last_cqm_event;
	int bt_coex_min_thold;
	int bt_coex_max_thold;
	int last_bt_coex_event;
};

/**
+1 −1
Original line number Diff line number Diff line
@@ -459,7 +459,7 @@ static void iwl_mvm_update_rx_statistics(struct iwl_mvm *mvm,
struct iwl_mvm_stat_data {
	struct iwl_mvm *mvm;
	__le32 mac_id;
	__s8 beacon_filter_average_energy;
	u8 beacon_filter_average_energy;
	struct mvm_statistics_general_v8 *general;
};