qcacmn: Move regulatory capabilities
Move regulatory capabilities from object manager to regulatory Change-Id: I3e785d2c03b5f1c944827d57bc9b546c6cdcc65b CRs-Fixed: 2177109
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2017 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
@@ -74,6 +74,8 @@ struct wlan_regulatory_psoc_priv_obj {
|
|||||||
struct unsafe_ch_list unsafe_chan_list;
|
struct unsafe_ch_list unsafe_chan_list;
|
||||||
struct ch_avoid_ind_type avoid_freq_list;
|
struct ch_avoid_ind_type avoid_freq_list;
|
||||||
enum restart_beaconing_on_ch_avoid_rule restart_beaconing;
|
enum restart_beaconing_on_ch_avoid_rule restart_beaconing;
|
||||||
|
struct wlan_psoc_host_hal_reg_capabilities_ext
|
||||||
|
reg_cap[PSOC_MAX_PHY_REG_CAP];
|
||||||
qdf_spinlock_t cbk_list_lock;
|
qdf_spinlock_t cbk_list_lock;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -2201,8 +2201,8 @@ static void reg_init_pdev_mas_chan_list(struct wlan_regulatory_pdev_priv_obj
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void reg_compute_pdev_current_chan_list(struct wlan_regulatory_pdev_priv_obj
|
static void reg_compute_pdev_current_chan_list(
|
||||||
*pdev_priv_obj)
|
struct wlan_regulatory_pdev_priv_obj *pdev_priv_obj)
|
||||||
{
|
{
|
||||||
qdf_mem_copy(pdev_priv_obj->cur_chan_list,
|
qdf_mem_copy(pdev_priv_obj->cur_chan_list,
|
||||||
pdev_priv_obj->mas_chan_list,
|
pdev_priv_obj->mas_chan_list,
|
||||||
@@ -3027,7 +3027,7 @@ QDF_STATUS wlan_regulatory_pdev_obj_created_notification(
|
|||||||
psoc_priv_obj->indoor_chan_enabled;
|
psoc_priv_obj->indoor_chan_enabled;
|
||||||
pdev_priv_obj->en_chan_144 = true;
|
pdev_priv_obj->en_chan_144 = true;
|
||||||
|
|
||||||
reg_cap_ptr = parent_psoc->ext_service_param.reg_cap;
|
reg_cap_ptr = psoc_priv_obj->reg_cap;
|
||||||
|
|
||||||
for (cnt = 0; cnt < PSOC_MAX_PHY_REG_CAP; cnt++) {
|
for (cnt = 0; cnt < PSOC_MAX_PHY_REG_CAP; cnt++) {
|
||||||
if (reg_cap_ptr == NULL) {
|
if (reg_cap_ptr == NULL) {
|
||||||
@@ -3775,9 +3775,9 @@ static QDF_STATUS reg_process_ch_avoid_freq(struct wlan_objmgr_psoc *psoc,
|
|||||||
start_ch_idx = INVALID_CHANNEL;
|
start_ch_idx = INVALID_CHANNEL;
|
||||||
end_ch_idx = INVALID_CHANNEL;
|
end_ch_idx = INVALID_CHANNEL;
|
||||||
start_channel = reg_freq_to_chan(pdev,
|
start_channel = reg_freq_to_chan(pdev,
|
||||||
psoc_priv_obj->avoid_freq_list.avoid_freq_range[i].start_freq);
|
psoc_priv_obj->avoid_freq_list.avoid_freq_range[i].start_freq);
|
||||||
end_channel = reg_freq_to_chan(pdev,
|
end_channel = reg_freq_to_chan(pdev,
|
||||||
psoc_priv_obj->avoid_freq_list.avoid_freq_range[i].end_freq);
|
psoc_priv_obj->avoid_freq_list.avoid_freq_range[i].end_freq);
|
||||||
reg_debug("start: freq %d, ch %d, end: freq %d, ch %d",
|
reg_debug("start: freq %d, ch %d, end: freq %d, ch %d",
|
||||||
psoc_priv_obj->avoid_freq_list.avoid_freq_range[i].start_freq,
|
psoc_priv_obj->avoid_freq_list.avoid_freq_range[i].start_freq,
|
||||||
start_channel,
|
start_channel,
|
||||||
@@ -3792,19 +3792,19 @@ static QDF_STATUS reg_process_ch_avoid_freq(struct wlan_objmgr_psoc *psoc,
|
|||||||
|
|
||||||
for (ch_loop = 0; ch_loop < NUM_CHANNELS;
|
for (ch_loop = 0; ch_loop < NUM_CHANNELS;
|
||||||
ch_loop++) {
|
ch_loop++) {
|
||||||
if (REG_CH_TO_FREQ(ch_loop) >= psoc_priv_obj->avoid_freq_list.
|
if (REG_CH_TO_FREQ(ch_loop) >=
|
||||||
avoid_freq_range[i].start_freq) {
|
psoc_priv_obj->avoid_freq_list.avoid_freq_range[i].start_freq) {
|
||||||
start_ch_idx = ch_loop;
|
start_ch_idx = ch_loop;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (ch_loop = 0; ch_loop < NUM_CHANNELS;
|
for (ch_loop = 0; ch_loop < NUM_CHANNELS;
|
||||||
ch_loop++) {
|
ch_loop++) {
|
||||||
if (REG_CH_TO_FREQ(ch_loop) >= psoc_priv_obj->avoid_freq_list.
|
if (REG_CH_TO_FREQ(ch_loop) >=
|
||||||
avoid_freq_range[i].end_freq) {
|
psoc_priv_obj->avoid_freq_list.avoid_freq_range[i].end_freq) {
|
||||||
end_ch_idx = ch_loop;
|
end_ch_idx = ch_loop;
|
||||||
if (REG_CH_TO_FREQ(ch_loop) > psoc_priv_obj->avoid_freq_list.
|
if (REG_CH_TO_FREQ(ch_loop) >
|
||||||
avoid_freq_range[i].end_freq)
|
psoc_priv_obj->avoid_freq_list.avoid_freq_range[i].end_freq)
|
||||||
end_ch_idx--;
|
end_ch_idx--;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -4120,3 +4120,45 @@ bool reg_get_en_chan_144(struct wlan_objmgr_pdev *pdev)
|
|||||||
|
|
||||||
return pdev_priv_obj->en_chan_144;
|
return pdev_priv_obj->en_chan_144;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct wlan_psoc_host_hal_reg_capabilities_ext *reg_get_hal_reg_cap(
|
||||||
|
struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
struct wlan_regulatory_psoc_priv_obj *soc_reg;
|
||||||
|
|
||||||
|
soc_reg = reg_get_psoc_obj(psoc);
|
||||||
|
|
||||||
|
if (!IS_VALID_PSOC_REG_OBJ(soc_reg)) {
|
||||||
|
reg_err("psoc reg component is NULL");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return soc_reg->reg_cap;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS reg_set_hal_reg_cap(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wlan_psoc_host_hal_reg_capabilities_ext *reg_cap,
|
||||||
|
uint16_t phy_cnt)
|
||||||
|
{
|
||||||
|
struct wlan_regulatory_psoc_priv_obj *soc_reg;
|
||||||
|
|
||||||
|
soc_reg = reg_get_psoc_obj(psoc);
|
||||||
|
|
||||||
|
if (!IS_VALID_PSOC_REG_OBJ(soc_reg)) {
|
||||||
|
reg_err("psoc reg component is NULL");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (phy_cnt > PSOC_MAX_PHY_REG_CAP) {
|
||||||
|
reg_err("phy cnt:%d is more than %d", phy_cnt,
|
||||||
|
PSOC_MAX_PHY_REG_CAP);
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
qdf_mem_copy(soc_reg->reg_cap, reg_cap,
|
||||||
|
phy_cnt *
|
||||||
|
sizeof(struct wlan_psoc_host_hal_reg_capabilities_ext));
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -435,4 +435,26 @@ QDF_STATUS reg_process_ch_avoid_event(struct wlan_objmgr_psoc *psoc,
|
|||||||
*/
|
*/
|
||||||
QDF_STATUS reg_send_scheduler_msg_sb(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS reg_send_scheduler_msg_sb(struct wlan_objmgr_psoc *psoc,
|
||||||
struct wlan_objmgr_pdev *pdev);
|
struct wlan_objmgr_pdev *pdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* reg_get_hal_reg_cap() - Get HAL REG capabilities
|
||||||
|
* @psoc: psoc for country information
|
||||||
|
*
|
||||||
|
* Return: hal reg cap pointer
|
||||||
|
*/
|
||||||
|
struct wlan_psoc_host_hal_reg_capabilities_ext *reg_get_hal_reg_cap(
|
||||||
|
struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* reg_set_hal_reg_cap() - Set HAL REG capabilities
|
||||||
|
* @psoc: psoc for country information
|
||||||
|
* @reg_cap: Regulatory caps pointer
|
||||||
|
* @phy_cnt: number of phy
|
||||||
|
*
|
||||||
|
* Return: hal reg cap pointer
|
||||||
|
*/
|
||||||
|
QDF_STATUS reg_set_hal_reg_cap(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wlan_psoc_host_hal_reg_capabilities_ext *reg_cap,
|
||||||
|
uint16_t phy_cnt);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -254,4 +254,25 @@ QDF_STATUS ucfg_reg_11d_vdev_delete_update(struct wlan_objmgr_vdev *vdev);
|
|||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
QDF_STATUS ucfg_reg_11d_vdev_created_update(struct wlan_objmgr_vdev *vdev);
|
QDF_STATUS ucfg_reg_11d_vdev_created_update(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_reg_get_hal_reg_cap() - return hal reg cap
|
||||||
|
* @psoc: psoc ptr
|
||||||
|
*
|
||||||
|
* Return: ptr to wlan_psoc_host_hal_reg_capabilities_ext
|
||||||
|
*/
|
||||||
|
struct wlan_psoc_host_hal_reg_capabilities_ext *ucfg_reg_get_hal_reg_cap(
|
||||||
|
struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_reg_set_hal_reg_cap() - update hal reg cap
|
||||||
|
* @psoc: psoc ptr
|
||||||
|
* @reg_cap: Regulatory cap array
|
||||||
|
* @phy_cnt: Number of phy
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS ucfg_reg_set_hal_reg_cap(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wlan_psoc_host_hal_reg_capabilities_ext *reg_cap,
|
||||||
|
uint16_t phy_cnt);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
#include <wlan_reg_ucfg_api.h>
|
#include <wlan_reg_ucfg_api.h>
|
||||||
#include "../../core/src/reg_services.h"
|
#include "../../core/src/reg_services.h"
|
||||||
|
#include <qdf_module.h>
|
||||||
|
|
||||||
QDF_STATUS ucfg_reg_register_event_handler(uint8_t vdev_id, reg_event_cb cb,
|
QDF_STATUS ucfg_reg_register_event_handler(uint8_t vdev_id, reg_event_cb cb,
|
||||||
void *arg)
|
void *arg)
|
||||||
@@ -230,3 +231,19 @@ QDF_STATUS ucfg_reg_11d_vdev_created_update(struct wlan_objmgr_vdev *vdev)
|
|||||||
{
|
{
|
||||||
return reg_11d_vdev_created_update(vdev);
|
return reg_11d_vdev_created_update(vdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct wlan_psoc_host_hal_reg_capabilities_ext *ucfg_reg_get_hal_reg_cap(
|
||||||
|
struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
return reg_get_hal_reg_cap(psoc);
|
||||||
|
}
|
||||||
|
qdf_export_symbol(ucfg_reg_get_hal_reg_cap);
|
||||||
|
|
||||||
|
QDF_STATUS ucfg_reg_set_hal_reg_cap(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wlan_psoc_host_hal_reg_capabilities_ext *hal_reg_cap,
|
||||||
|
uint16_t phy_cnt)
|
||||||
|
|
||||||
|
{
|
||||||
|
return reg_set_hal_reg_cap(psoc, hal_reg_cap, phy_cnt);
|
||||||
|
}
|
||||||
|
qdf_export_symbol(ucfg_reg_set_hal_reg_cap);
|
||||||
|
Reference in New Issue
Block a user