wifi: iwlwifi: mvm: Avoid -Wflex-array-member-not-at-end warning
PATCH 1/1 wifi: iwlwifi: mvm: Avoid -Wflex-array-member-not-at-end warning
-Wflex-array-member-not-at-end was introduced in GCC-14, and we are getting ready to enable it, globally.
Use the DEFINE_RAW_FLEX() helper for an on-stack definition of a flexible structure where the size of the flexible-array member is known at compile-time, and refactor the rest of the code, accordingly.
So, with these changes, fix the following warning:
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c:6430:41: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
--- .../net/wireless/intel/iwlwifi/mvm/mac80211.c | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-)
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +12 -13
@@ -6426,17 +6426,10 @@ void iwl_mvm_sync_rx_queues_internal(struct iwl_mvm *mvm,bool sync, const void *data, u32 size) { -struct { -struct iwl_rxq_sync_cmd cmd; -struct iwl_mvm_internal_rxq_notif notif; - } __packed cmd = { - .cmd.rxq_mask =cpu_to_le32 (BIT (mvm->trans->num_rx_queues) -1 ), - .cmd.count = -cpu_to_le32 (sizeof (struct iwl_mvm_internal_rxq_notif ) + - size), - .notif.type = type, - .notif.sync = sync, - }; +DEFINE_RAW_FLEX (struct iwl_rxq_sync_cmd ,cmd ,payload , + sizeof(struct iwl_mvm_internal_rxq_notif)); +struct iwl_mvm_internal_rxq_notif *notif = + (struct iwl_mvm_internal_rxq_notif *)cmd->payload; struct iwl_host_cmd hcmd = { .id = WIDE_ID(DATA_PATH_GROUP, TRIGGER_RX_QUEUES_NOTIF_CMD), .data[0] = &cmd,
@@ -6447,15 +6440,21 @@ void iwl_mvm_sync_rx_queues_internal(struct iwl_mvm *mvm, };int ret; + cmd->rxq_mask =cpu_to_le32 (BIT (mvm->trans->num_rx_queues) -1 ); + cmd->count =cpu_to_le32 (sizeof (struct iwl_mvm_internal_rxq_notif ) + + size); + notif->type = type; + notif->sync = sync; +/* size must be a multiple of DWORD */ -if (WARN_ON (cmd.cmd.count &cpu_to_le32 (3 ))) +if (WARN_ON (cmd->count &cpu_to_le32 (3 )))return ;if (!iwl_mvm_has_new_rx_api (mvm))return ;if (sync) { - cmd.notif.cookie = mvm->queue_sync_cookie; + notif->cookie = mvm->queue_sync_cookie; mvm->queue_sync_state = (1 << mvm->trans->num_rx_queues) -1 ; }
Signature · 1 line
2.43.0
Quoted 88 lines
-----Original Message-----
From: Gustavo A. R. Silva <[email protected]>
Sent: Thursday, 27 March 2025 2:04
To: Korenblit, Miriam Rachel <[email protected]>; Johannes Berg <[email protected]>
Cc: [email protected]; [email protected]; Gustavo A. R. Silva <[email protected]>; [email protected]
Subject: [PATCH][next] wifi: iwlwifi: mvm: Avoid -Wflex-array-member-not-at- end warning-Wflex-array-member-not-at-end was introduced in GCC-14, and we are getting ready to enable it, globally.
Use the
DEFINE_RAW_FLEX()helper for an on-stack definition of a flexible structure where the size of the flexible-array member is known at compile-time, and refactor the rest of the code, accordingly.So, with these changes, fix the following warning:
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c:6430:41: warning: structure containing a flexible array member is not at the end of another structure [-Wflex- array-member-not-at-end]Signed-off-by Gustavo A. R. Silva <[email protected]>--- .../net/wireless/intel/iwlwifi/mvm/mac80211.c | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-)drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +5
-11@@ -6426,17 +6426,10 @@ void iwl_mvm_sync_rx_queues_internal(structiwl_mvm *mvm, bool sync, const void *data, u32 size) { - struct { - struct iwl_rxq_sync_cmd cmd; -struct iwl_mvm_internal_rxq_notif notif; - }__packed cmd = { - .cmd.rxq_mask =cpu_to_le32 (BIT (mvm->trans- >num_rx_queues) - 1), - .cmd.count = -cpu_to_le32 (sizeof (struct iwl_mvm_internal_rxq_notif ) + - size), - .notif.type = type, - .notif.sync = sync, - }; +DEFINE_RAW_FLEX (struct iwl_rxq_sync_cmd ,cmd ,payload , + sizeof(struct iwl_mvm_internal_rxq_notif)); +struct iwl_mvm_internal_rxq_notif *notif = + (struct iwl_mvm_internal_rxq_notif *)cmd->payload;struct iwl_host_cmd hcmd = { .id = WIDE_ID(DATA_PATH_GROUP,
TRIGGER_RX_QUEUES_NOTIF_CMD),drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +8
-4.data[0] = &cmd,@@ -6447,15 +6440,21 @@ void iwl_mvm_sync_rx_queues_internal(struct iwl_mvm *mvm, };int ret; + cmd->rxq_mask =cpu_to_le32 (BIT (mvm->trans->num_rx_queues) -1 ); + cmd->count =cpu_to_le32 (sizeof (struct iwl_mvm_internal_rxq_notif ) + + size); + notif->type = type; + notif->sync = sync; +/* size must be a multiple of DWORD */ -if (WARN_ON (cmd.cmd.count &cpu_to_le32 (3 ))) +if (WARN_ON (cmd->count &cpu_to_le32 (3 )))return ;if (!iwl_mvm_has_new_rx_api (mvm))return ;if (sync) { - cmd.notif.cookie = mvm->queue_sync_cookie; + notif->cookie = mvm->queue_sync_cookie; mvm->queue_sync_state = (1 << mvm->trans->num_rx_queues) - 1; } --
Quoted 1 line
2.43.0