}
 
        if (changed & WIPHY_PARAM_RTS_THRESHOLD) {
-               err = drv_set_rts_threshold(local, radio_idx,
-                                           wiphy->rts_threshold);
+               u32 rts_threshold;
+
+               if ((radio_idx == -1) || (radio_idx >= wiphy->n_radio))
+                       rts_threshold = wiphy->rts_threshold;
+               else
+                       rts_threshold =
+                               wiphy->radio_cfg[radio_idx].rts_threshold;
+
+               err = drv_set_rts_threshold(local, radio_idx, rts_threshold);
 
                if (err)
                        return err;
 
        bool sched_scan_stopped = false;
        bool suspended = local->suspended;
        bool in_reconfig = false;
+       u32 rts_threshold;
 
        lockdep_assert_wiphy(local->hw.wiphy);
 
        drv_set_frag_threshold(local, -1, hw->wiphy->frag_threshold);
 
        /* setup RTS threshold */
-       drv_set_rts_threshold(local, -1, hw->wiphy->rts_threshold);
+       if (hw->wiphy->n_radio > 0) {
+               for (i = 0; i < hw->wiphy->n_radio; i++) {
+                       rts_threshold = hw->wiphy->radio_cfg[i].rts_threshold;
+                       drv_set_rts_threshold(local, i, rts_threshold);
+               }
+       } else {
+               drv_set_rts_threshold(local, -1, hw->wiphy->rts_threshold);
+       }
 
        /* reset coverage class */
        drv_set_coverage_class(local, -1, hw->wiphy->coverage_class);