static void iwl_mvm_set_sta_rate(u32 rate_n_flags, struct rate_info *rinfo)
 {
        u32 format = rate_n_flags & RATE_MCS_MOD_TYPE_MSK;
+       u32 gi_ltf;
 
        switch (rate_n_flags & RATE_MCS_CHAN_WIDTH_MSK) {
        case RATE_MCS_CHAN_WIDTH_20:
                RATE_HT_MCS_INDEX(rate_n_flags) :
                u32_get_bits(rate_n_flags, RATE_MCS_CODE_MSK);
 
-       if (format == RATE_MCS_HE_MSK) {
-               u32 gi_ltf = u32_get_bits(rate_n_flags,
-                                         RATE_MCS_HE_GI_LTF_MSK);
+       if (rate_n_flags & RATE_MCS_SGI_MSK)
+               rinfo->flags |= RATE_INFO_FLAGS_SHORT_GI;
+
+       switch (format) {
+       case RATE_MCS_HE_MSK:
+               gi_ltf = u32_get_bits(rate_n_flags, RATE_MCS_HE_GI_LTF_MSK);
 
                rinfo->flags |= RATE_INFO_FLAGS_HE_MCS;
 
 
                if (rate_n_flags & RATE_HE_DUAL_CARRIER_MODE_MSK)
                        rinfo->he_dcm = 1;
-               return;
-       }
-
-       if (rate_n_flags & RATE_MCS_SGI_MSK)
-               rinfo->flags |= RATE_INFO_FLAGS_SHORT_GI;
-
-       if (format == RATE_MCS_HT_MSK) {
+               break;
+       case RATE_MCS_HT_MSK:
                rinfo->flags |= RATE_INFO_FLAGS_MCS;
-
-       } else if (format == RATE_MCS_VHT_MSK) {
+               break;
+       case RATE_MCS_VHT_MSK:
                rinfo->flags |= RATE_INFO_FLAGS_VHT_MCS;
+               break;
        }
-
 }
 
 static void iwl_mvm_mac_sta_statistics(struct ieee80211_hw *hw,