On Mon, 2019-05-06 at 15:54 +0300, Dan Carpenter wrote: > These pointers are an offset into the "sta" struct. They're assigned > like this: > > const struct ieee80211_sta_vht_cap *vht_cap = &sta->vht_cap; > > They're not the first member of the struct (->supp_rates[] is first) so > they can't be NULL. > > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > --- > .../net/wireless/intel/iwlwifi/mvm/rs-fw.c | 23 +++++++++---------- > 1 file changed, 11 insertions(+), 12 deletions(-) > > diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c > index 659e21b2d4e7..b6fb670d249c 100644 > --- a/drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c > +++ b/drivers/net/wireless/intel/iwlwifi/mvm/rs-fw.c > @@ -101,7 +101,7 @@ static u8 rs_fw_sgi_cw_support(struct ieee80211_sta *sta) > struct ieee80211_sta_he_cap *he_cap = &sta->he_cap; > u8 supp = 0; > > - if (he_cap && he_cap->has_he) > + if (he_cap->has_he) > return 0; > > if (ht_cap->cap & IEEE80211_HT_CAP_SGI_20) > @@ -123,12 +123,12 @@ static u16 rs_fw_get_config_flags(struct iwl_mvm *mvm, > struct ieee80211_sta_ht_cap *ht_cap = &sta->ht_cap; > struct ieee80211_sta_vht_cap *vht_cap = &sta->vht_cap; > struct ieee80211_sta_he_cap *he_cap = &sta->he_cap; > - bool vht_ena = vht_cap && vht_cap->vht_supported; > + bool vht_ena = vht_cap->vht_supported; > u16 flags = 0; > > if (mvm->cfg->ht_params->stbc && > (num_of_ant(iwl_mvm_get_valid_tx_ant(mvm)) > 1)) { > - if (he_cap && he_cap->has_he) { > + if (he_cap->has_he) { > if (he_cap->he_cap_elem.phy_cap_info[2] & > IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ) > flags |= IWL_TLC_MNG_CFG_FLAGS_STBC_MSK; > @@ -136,15 +136,14 @@ static u16 rs_fw_get_config_flags(struct iwl_mvm *mvm, > if (he_cap->he_cap_elem.phy_cap_info[7] & > IEEE80211_HE_PHY_CAP7_STBC_RX_ABOVE_80MHZ) > flags |= IWL_TLC_MNG_CFG_FLAGS_HE_STBC_160MHZ_MSK; > - } else if ((ht_cap && > - (ht_cap->cap & IEEE80211_HT_CAP_RX_STBC)) || > + } else if ((ht_cap->cap & IEEE80211_HT_CAP_RX_STBC) || > (vht_ena && > (vht_cap->cap & IEEE80211_VHT_CAP_RXSTBC_MASK))) > flags |= IWL_TLC_MNG_CFG_FLAGS_STBC_MSK; > } > > if (mvm->cfg->ht_params->ldpc && > - ((ht_cap && (ht_cap->cap & IEEE80211_HT_CAP_LDPC_CODING)) || > + ((ht_cap->cap & IEEE80211_HT_CAP_LDPC_CODING) || > (vht_ena && (vht_cap->cap & IEEE80211_VHT_CAP_RXLDPC)))) > flags |= IWL_TLC_MNG_CFG_FLAGS_LDPC_MSK; > > @@ -154,7 +153,7 @@ static u16 rs_fw_get_config_flags(struct iwl_mvm *mvm, > IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD)) > flags &= ~IWL_TLC_MNG_CFG_FLAGS_LDPC_MSK; > > - if (he_cap && he_cap->has_he && > + if (he_cap->has_he && > (he_cap->he_cap_elem.phy_cap_info[3] & > IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_MASK)) > flags |= IWL_TLC_MNG_CFG_FLAGS_HE_DCM_NSS_1_MSK; > @@ -293,13 +292,13 @@ static void rs_fw_set_supp_rates(struct ieee80211_sta *sta, > cmd->mode = IWL_TLC_MNG_MODE_NON_HT; > > /* HT/VHT rates */ > - if (he_cap && he_cap->has_he) { > + if (he_cap->has_he) { > cmd->mode = IWL_TLC_MNG_MODE_HE; > rs_fw_he_set_enabled_rates(sta, sband, cmd); > - } else if (vht_cap && vht_cap->vht_supported) { > + } else if (vht_cap->vht_supported) { > cmd->mode = IWL_TLC_MNG_MODE_VHT; > rs_fw_vht_set_enabled_rates(sta, vht_cap, cmd); > - } else if (ht_cap && ht_cap->ht_supported) { > + } else if (ht_cap->ht_supported) { > cmd->mode = IWL_TLC_MNG_MODE_HT; > cmd->ht_rates[0][0] = cpu_to_le16(ht_cap->mcs.rx_mask[0]); > cmd->ht_rates[1][0] = cpu_to_le16(ht_cap->mcs.rx_mask[1]); > @@ -381,7 +380,7 @@ static u16 rs_fw_get_max_amsdu_len(struct ieee80211_sta *sta) > const struct ieee80211_sta_vht_cap *vht_cap = &sta->vht_cap; > const struct ieee80211_sta_ht_cap *ht_cap = &sta->ht_cap; > > - if (vht_cap && vht_cap->vht_supported) { > + if (vht_cap->vht_supported) { > switch (vht_cap->cap & IEEE80211_VHT_CAP_MAX_MPDU_MASK) { > case IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454: > return IEEE80211_MAX_MPDU_LEN_VHT_11454; > @@ -391,7 +390,7 @@ static u16 rs_fw_get_max_amsdu_len(struct ieee80211_sta *sta) > return IEEE80211_MAX_MPDU_LEN_VHT_3895; > } > > - } else if (ht_cap && ht_cap->ht_supported) { > + } else if (ht_cap->ht_supported) { > if (ht_cap->cap & IEEE80211_HT_CAP_MAX_AMSDU) > /* > * agg is offloaded so we need to assume that agg Thanks! Applied to our internal tree and it will reach the mainline following our normal upstreaming process. -- Cheers, Luca.