|
@@ -2731,23 +2731,28 @@ static inline bool BAND_6G_PRESENT(uint8_t band_mask)
|
|
|
}
|
|
|
#endif /* CONFIG_BAND_6GHZ */
|
|
|
|
|
|
-uint16_t
|
|
|
-reg_get_band_channel_list(struct wlan_objmgr_pdev *pdev,
|
|
|
- uint8_t band_mask,
|
|
|
- struct regulatory_channel *channel_list)
|
|
|
+/**
|
|
|
+ * reg_get_band_from_cur_chan_list() - Get channel list and number of channels
|
|
|
+ * @pdev: pdev ptr
|
|
|
+ * @band_mask: Input bitmap with band set
|
|
|
+ * @channel_list: Pointer to Channel List
|
|
|
+ * @cur_chan_list: Pointer to primary current channel list for non-beaconing
|
|
|
+ * entites (STA, p2p client) and secondary channel list for beaconing entities
|
|
|
+ * (SAP, p2p GO)
|
|
|
+ *
|
|
|
+ * Get the given channel list and number of channels from the current channel
|
|
|
+ * list based on input band bitmap.
|
|
|
+ *
|
|
|
+ * Return: Number of channels, else 0 to indicate error
|
|
|
+ */
|
|
|
+static uint16_t
|
|
|
+reg_get_band_from_cur_chan_list(struct wlan_objmgr_pdev *pdev,
|
|
|
+ uint8_t band_mask,
|
|
|
+ struct regulatory_channel *channel_list,
|
|
|
+ struct regulatory_channel *cur_chan_list)
|
|
|
{
|
|
|
- struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj;
|
|
|
- struct regulatory_channel *cur_chan_list;
|
|
|
uint16_t i, num_channels = 0;
|
|
|
|
|
|
- pdev_priv_obj = reg_get_pdev_obj(pdev);
|
|
|
- if (!IS_VALID_PDEV_REG_OBJ(pdev_priv_obj)) {
|
|
|
- reg_err("reg pdev priv obj is NULL");
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- cur_chan_list = pdev_priv_obj->cur_chan_list;
|
|
|
-
|
|
|
if (BAND_2G_PRESENT(band_mask)) {
|
|
|
for (i = MIN_24GHZ_CHANNEL; i <= MAX_24GHZ_CHANNEL; i++) {
|
|
|
if ((cur_chan_list[i].state != CHANNEL_STATE_DISABLE) &&
|
|
@@ -2787,6 +2792,43 @@ reg_get_band_channel_list(struct wlan_objmgr_pdev *pdev,
|
|
|
return num_channels;
|
|
|
}
|
|
|
|
|
|
+uint16_t
|
|
|
+reg_get_band_channel_list(struct wlan_objmgr_pdev *pdev,
|
|
|
+ uint8_t band_mask,
|
|
|
+ struct regulatory_channel *channel_list)
|
|
|
+{
|
|
|
+ struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj;
|
|
|
+
|
|
|
+ pdev_priv_obj = reg_get_pdev_obj(pdev);
|
|
|
+ if (!IS_VALID_PDEV_REG_OBJ(pdev_priv_obj)) {
|
|
|
+ reg_err("reg pdev priv obj is NULL");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ return reg_get_band_from_cur_chan_list(pdev, band_mask, channel_list,
|
|
|
+ pdev_priv_obj->cur_chan_list);
|
|
|
+}
|
|
|
+
|
|
|
+#ifdef CONFIG_REG_CLIENT
|
|
|
+uint16_t
|
|
|
+reg_get_secondary_band_channel_list(struct wlan_objmgr_pdev *pdev,
|
|
|
+ uint8_t band_mask,
|
|
|
+ struct regulatory_channel *channel_list)
|
|
|
+{
|
|
|
+ struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj;
|
|
|
+
|
|
|
+ pdev_priv_obj = reg_get_pdev_obj(pdev);
|
|
|
+ if (!IS_VALID_PDEV_REG_OBJ(pdev_priv_obj)) {
|
|
|
+ reg_err("reg pdev priv obj is NULL");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ return reg_get_band_from_cur_chan_list(
|
|
|
+ pdev, band_mask, channel_list,
|
|
|
+ pdev_priv_obj->secondary_cur_chan_list);
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
qdf_freq_t reg_chan_band_to_freq(struct wlan_objmgr_pdev *pdev,
|
|
|
uint8_t chan_num,
|
|
|
uint8_t band_mask)
|