|
@@ -215,6 +215,24 @@ static int carl9170_fw_tx_sequence(struct ar9170 *ar)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static void carl9170_fw_set_if_combinations(struct ar9170 *ar,
|
|
|
+ u16 if_comb_types)
|
|
|
+{
|
|
|
+ if (ar->fw.vif_num < 2)
|
|
|
+ return;
|
|
|
+
|
|
|
+ ar->if_comb_limits[0].max = ar->fw.vif_num;
|
|
|
+ ar->if_comb_limits[0].types = if_comb_types;
|
|
|
+
|
|
|
+ ar->if_combs[0].num_different_channels = 1;
|
|
|
+ ar->if_combs[0].max_interfaces = ar->fw.vif_num;
|
|
|
+ ar->if_combs[0].limits = ar->if_comb_limits;
|
|
|
+ ar->if_combs[0].n_limits = ARRAY_SIZE(ar->if_comb_limits);
|
|
|
+
|
|
|
+ ar->hw->wiphy->iface_combinations = ar->if_combs;
|
|
|
+ ar->hw->wiphy->n_iface_combinations = ARRAY_SIZE(ar->if_combs);
|
|
|
+}
|
|
|
+
|
|
|
static int carl9170_fw(struct ar9170 *ar, const __u8 *data, size_t len)
|
|
|
{
|
|
|
const struct carl9170fw_otus_desc *otus_desc;
|
|
@@ -341,16 +359,7 @@ static int carl9170_fw(struct ar9170 *ar, const __u8 *data, size_t len)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- ar->if_comb_limits[0].max = ar->fw.vif_num;
|
|
|
- ar->if_comb_limits[0].types = if_comb_types;
|
|
|
-
|
|
|
- ar->if_combs[0].num_different_channels = 1;
|
|
|
- ar->if_combs[0].max_interfaces = ar->fw.vif_num;
|
|
|
- ar->if_combs[0].limits = ar->if_comb_limits;
|
|
|
- ar->if_combs[0].n_limits = ARRAY_SIZE(ar->if_comb_limits);
|
|
|
-
|
|
|
- ar->hw->wiphy->iface_combinations = ar->if_combs;
|
|
|
- ar->hw->wiphy->n_iface_combinations = ARRAY_SIZE(ar->if_combs);
|
|
|
+ carl9170_fw_set_if_combinations(ar, if_comb_types);
|
|
|
|
|
|
ar->hw->wiphy->interface_modes |= if_comb_types;
|
|
|
|