Commit 7bb426ea authored by Eliad Peller's avatar Eliad Peller Committed by Emmanuel Grumbach

iwlwifi: mvm: check for d0i3 fw capability

Check for both cfg->d0i3 and fw d0i3 support in order
to enable d0i3 support.
Signed-off-by: default avatarEliad Peller <eliadx.peller@intel.com>
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent 66092537
...@@ -125,6 +125,14 @@ enum iwl_ucode_tlv_flag { ...@@ -125,6 +125,14 @@ enum iwl_ucode_tlv_flag {
IWL_UCODE_TLV_FLAGS_GO_UAPSD = BIT(30), IWL_UCODE_TLV_FLAGS_GO_UAPSD = BIT(30),
}; };
/**
* enum iwl_ucode_tlv_capa - ucode capabilities
* @IWL_UCODE_TLV_CAPA_D0I3_SUPPORT: supports D0i3
*/
enum iwl_ucode_tlv_capa {
IWL_UCODE_TLV_CAPA_D0I3_SUPPORT = BIT(0),
};
/* The default calibrate table size if not specified by firmware file */ /* The default calibrate table size if not specified by firmware file */
#define IWL_DEFAULT_STANDARD_PHY_CALIBRATE_TBL_SIZE 18 #define IWL_DEFAULT_STANDARD_PHY_CALIBRATE_TBL_SIZE 18
#define IWL_MAX_STANDARD_PHY_CALIBRATE_TBL_SIZE 19 #define IWL_MAX_STANDARD_PHY_CALIBRATE_TBL_SIZE 19
......
...@@ -205,7 +205,7 @@ static const struct iwl_fw_bcast_filter iwl_mvm_default_bcast_filters[] = { ...@@ -205,7 +205,7 @@ static const struct iwl_fw_bcast_filter iwl_mvm_default_bcast_filters[] = {
void iwl_mvm_ref(struct iwl_mvm *mvm, enum iwl_mvm_ref_type ref_type) void iwl_mvm_ref(struct iwl_mvm *mvm, enum iwl_mvm_ref_type ref_type)
{ {
if (!mvm->trans->cfg->d0i3) if (!iwl_mvm_is_d0i3_supported(mvm))
return; return;
IWL_DEBUG_RPM(mvm, "Take mvm reference - type %d\n", ref_type); IWL_DEBUG_RPM(mvm, "Take mvm reference - type %d\n", ref_type);
...@@ -215,7 +215,7 @@ void iwl_mvm_ref(struct iwl_mvm *mvm, enum iwl_mvm_ref_type ref_type) ...@@ -215,7 +215,7 @@ void iwl_mvm_ref(struct iwl_mvm *mvm, enum iwl_mvm_ref_type ref_type)
void iwl_mvm_unref(struct iwl_mvm *mvm, enum iwl_mvm_ref_type ref_type) void iwl_mvm_unref(struct iwl_mvm *mvm, enum iwl_mvm_ref_type ref_type)
{ {
if (!mvm->trans->cfg->d0i3) if (!iwl_mvm_is_d0i3_supported(mvm))
return; return;
IWL_DEBUG_RPM(mvm, "Leave mvm reference - type %d\n", ref_type); IWL_DEBUG_RPM(mvm, "Leave mvm reference - type %d\n", ref_type);
...@@ -228,7 +228,7 @@ iwl_mvm_unref_all_except(struct iwl_mvm *mvm, enum iwl_mvm_ref_type ref) ...@@ -228,7 +228,7 @@ iwl_mvm_unref_all_except(struct iwl_mvm *mvm, enum iwl_mvm_ref_type ref)
{ {
int i; int i;
if (!mvm->trans->cfg->d0i3) if (!iwl_mvm_is_d0i3_supported(mvm))
return; return;
for_each_set_bit(i, mvm->ref_bitmap, IWL_MVM_REF_COUNT) { for_each_set_bit(i, mvm->ref_bitmap, IWL_MVM_REF_COUNT) {
......
...@@ -656,6 +656,12 @@ iwl_mvm_sta_from_staid_protected(struct iwl_mvm *mvm, u8 sta_id) ...@@ -656,6 +656,12 @@ iwl_mvm_sta_from_staid_protected(struct iwl_mvm *mvm, u8 sta_id)
return iwl_mvm_sta_from_mac80211(sta); return iwl_mvm_sta_from_mac80211(sta);
} }
static inline bool iwl_mvm_is_d0i3_supported(struct iwl_mvm *mvm)
{
return mvm->trans->cfg->d0i3 &&
(mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_D0I3_SUPPORT);
}
extern const u8 iwl_mvm_ac_to_tx_fifo[]; extern const u8 iwl_mvm_ac_to_tx_fifo[];
struct iwl_rate_info { struct iwl_rate_info {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment