iwlwifi: mvm: use build-time assertion for fw trigger ID
The firmware debug trigger ID is always a compile-time constant, so we can use a build-time assertion to validate that it is in fact a valid constant. To make that really guaranteed to work, convert this and the inline function iwl_fw_dbg_trigger_simple_stop() to macros. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
59fd4bf645
commit
4707fde5cd
@ -311,12 +311,15 @@ iwl_fw_dbg_conf_usniffer(const struct iwl_fw *fw, u8 id)
|
||||
})
|
||||
|
||||
static inline struct iwl_fw_dbg_trigger_tlv*
|
||||
iwl_fw_dbg_get_trigger(const struct iwl_fw *fw, u8 id)
|
||||
_iwl_fw_dbg_get_trigger(const struct iwl_fw *fw, enum iwl_fw_dbg_trigger id)
|
||||
{
|
||||
if (WARN_ON(id >= ARRAY_SIZE(fw->dbg_trigger_tlv)))
|
||||
return NULL;
|
||||
|
||||
return fw->dbg_trigger_tlv[id];
|
||||
}
|
||||
|
||||
#define iwl_fw_dbg_get_trigger(fw, id) ({ \
|
||||
BUILD_BUG_ON(!__builtin_constant_p(id)); \
|
||||
BUILD_BUG_ON((id) >= FW_DBG_TRIGGER_MAX); \
|
||||
_iwl_fw_dbg_get_trigger((fw), (id)); \
|
||||
})
|
||||
|
||||
#endif /* __iwl_fw_h__ */
|
||||
|
@ -1524,20 +1524,21 @@ iwl_fw_dbg_trigger_check_stop(struct iwl_mvm *mvm,
|
||||
}
|
||||
|
||||
static inline void
|
||||
iwl_fw_dbg_trigger_simple_stop(struct iwl_mvm *mvm,
|
||||
struct ieee80211_vif *vif,
|
||||
enum iwl_fw_dbg_trigger trig)
|
||||
_iwl_fw_dbg_trigger_simple_stop(struct iwl_mvm *mvm,
|
||||
struct ieee80211_vif *vif,
|
||||
struct iwl_fw_dbg_trigger_tlv *trigger)
|
||||
{
|
||||
struct iwl_fw_dbg_trigger_tlv *trigger;
|
||||
|
||||
if (!iwl_fw_dbg_trigger_enabled(mvm->fw, trig))
|
||||
if (!trigger)
|
||||
return;
|
||||
|
||||
trigger = iwl_fw_dbg_get_trigger(mvm->fw, trig);
|
||||
if (!iwl_fw_dbg_trigger_check_stop(mvm, vif, trigger))
|
||||
return;
|
||||
|
||||
iwl_mvm_fw_dbg_collect_trig(mvm, trigger, NULL);
|
||||
}
|
||||
#define iwl_fw_dbg_trigger_simple_stop(mvm, vif, trig) \
|
||||
_iwl_fw_dbg_trigger_simple_stop((mvm), (vif), \
|
||||
iwl_fw_dbg_get_trigger((mvm)->fw,\
|
||||
(trig)))
|
||||
|
||||
#endif /* __IWL_MVM_H__ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user