qcacld-3.0: Use freq for SME roam API

Change below csr/sme APIs and dependent APIs to
use freq as parameter:
csr_create_roam_scan_channel_list,
csr_neighbor_roam_channels_filter_by_current_band,
csr_neighbor_roam_merge_channel_lists,
csr_create_bg_scan_roam_channel_list,
sme_update_roam_scan_channel_list.

Change-Id: Icfc45863d6dacb318558ba75fde111af24256641
CRs-Fixed: 2555688
This commit is contained in:
Liangwei Dong
2019-10-30 12:58:22 +08:00
committed by nshrivas
parent 229e2f055b
commit 075afa7922
7 changed files with 120 additions and 102 deletions

View File

@@ -1808,8 +1808,9 @@ hdd_parse_sendactionframe(struct hdd_adapter *adapter, const char *command,
/**
* hdd_parse_channellist() - HDD Parse channel list
* @hdd_ctx: hdd context
* @command: Pointer to input channel list
* @channel_list: Pointer to local output array to record
* @channel_freq_list: Pointer to local output array to record
* channel list
* @num_channels: Pointer to number of roam scan channels
*
@@ -1826,7 +1827,9 @@ hdd_parse_sendactionframe(struct hdd_adapter *adapter, const char *command,
* Return: 0 for success non-zero for failure
*/
static int
hdd_parse_channellist(const uint8_t *command, uint8_t *channel_list,
hdd_parse_channellist(struct hdd_context *hdd_ctx,
const uint8_t *command,
uint32_t *channel_freq_list,
uint8_t *num_channels)
{
const uint8_t *in_ptr = command;
@@ -1907,10 +1910,11 @@ hdd_parse_channellist(const uint8_t *command, uint8_t *channel_list,
(temp_int > WNI_CFG_CURRENT_CHANNEL_STAMAX)) {
return -EINVAL;
}
channel_list[j] = temp_int;
channel_freq_list[j] =
wlan_reg_chan_to_freq(hdd_ctx->pdev, temp_int);
hdd_debug("Channel %d added to preferred channel list",
channel_list[j]);
channel_freq_list[j]);
}
return 0;
@@ -1937,14 +1941,21 @@ static int
hdd_parse_set_roam_scan_channels_v1(struct hdd_adapter *adapter,
const char *command)
{
uint8_t channel_list[CFG_VALID_CHANNEL_LIST_LEN] = { 0 };
uint32_t channel_freq_list[CFG_VALID_CHANNEL_LIST_LEN] = { 0 };
uint8_t num_chan = 0;
QDF_STATUS status;
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
int ret;
mac_handle_t mac_handle;
ret = hdd_parse_channellist(command, channel_list, &num_chan);
if (!hdd_ctx) {
hdd_err("invalid hdd ctx");
ret = -EINVAL;
goto exit;
}
ret = hdd_parse_channellist(hdd_ctx, command, channel_freq_list,
&num_chan);
if (ret) {
hdd_err("Failed to parse channel list information");
goto exit;
@@ -1962,7 +1973,8 @@ hdd_parse_set_roam_scan_channels_v1(struct hdd_adapter *adapter,
}
mac_handle = hdd_ctx->mac_handle;
if (!sme_validate_channel_list(mac_handle, channel_list, num_chan)) {
if (!sme_validate_channel_list(mac_handle,
channel_freq_list, num_chan)) {
hdd_err("List contains invalid channel(s)");
ret = -EINVAL;
goto exit;
@@ -1970,7 +1982,8 @@ hdd_parse_set_roam_scan_channels_v1(struct hdd_adapter *adapter,
status = sme_change_roam_scan_channel_list(mac_handle,
adapter->vdev_id,
channel_list, num_chan);
channel_freq_list,
num_chan);
if (QDF_STATUS_SUCCESS != status) {
hdd_err("Failed to update channel list information");
ret = -EINVAL;
@@ -2003,7 +2016,7 @@ hdd_parse_set_roam_scan_channels_v2(struct hdd_adapter *adapter,
const char *command)
{
const uint8_t *value;
uint8_t channel_list[CFG_VALID_CHANNEL_LIST_LEN] = { 0 };
uint32_t channel_freq_list[CFG_VALID_CHANNEL_LIST_LEN] = { 0 };
uint8_t channel;
uint8_t num_chan;
int i;
@@ -2043,11 +2056,13 @@ hdd_parse_set_roam_scan_channels_v2(struct hdd_adapter *adapter,
ret = -EINVAL;
goto exit;
}
channel_list[i] = channel;
channel_freq_list[i] = wlan_reg_chan_to_freq(hdd_ctx->pdev,
channel);
}
mac_handle = hdd_ctx->mac_handle;
if (!sme_validate_channel_list(mac_handle, channel_list, num_chan)) {
if (!sme_validate_channel_list(mac_handle, channel_freq_list,
num_chan)) {
hdd_err("List contains invalid channel(s)");
ret = -EINVAL;
goto exit;
@@ -2055,7 +2070,7 @@ hdd_parse_set_roam_scan_channels_v2(struct hdd_adapter *adapter,
status = sme_change_roam_scan_channel_list(mac_handle,
adapter->vdev_id,
channel_list, num_chan);
channel_freq_list, num_chan);
if (QDF_STATUS_SUCCESS != status) {
hdd_err("Failed to update channel list information");
ret = -EINVAL;
@@ -5520,12 +5535,19 @@ static int drv_cmd_set_ccx_roam_scan_channels(struct hdd_adapter *adapter,
{
int ret = 0;
uint8_t *value = command;
uint8_t channel_list[CFG_VALID_CHANNEL_LIST_LEN] = { 0 };
uint32_t channel_freq_list[CFG_VALID_CHANNEL_LIST_LEN] = { 0 };
uint8_t num_channels = 0;
QDF_STATUS status;
mac_handle_t mac_handle;
ret = hdd_parse_channellist(value, channel_list, &num_channels);
if (!hdd_ctx) {
hdd_err("invalid hdd ctx");
ret = -EINVAL;
goto exit;
}
ret = hdd_parse_channellist(hdd_ctx, value, channel_freq_list,
&num_channels);
if (ret) {
hdd_err("Failed to parse channel list information");
goto exit;
@@ -5539,7 +5561,7 @@ static int drv_cmd_set_ccx_roam_scan_channels(struct hdd_adapter *adapter,
}
mac_handle = hdd_ctx->mac_handle;
if (!sme_validate_channel_list(mac_handle, channel_list,
if (!sme_validate_channel_list(mac_handle, channel_freq_list,
num_channels)) {
hdd_err("List contains invalid channel(s)");
ret = -EINVAL;
@@ -5548,7 +5570,7 @@ static int drv_cmd_set_ccx_roam_scan_channels(struct hdd_adapter *adapter,
status = sme_set_ese_roam_scan_channel_list(mac_handle,
adapter->vdev_id,
channel_list,
channel_freq_list,
num_channels);
if (QDF_STATUS_SUCCESS != status) {
hdd_err("Failed to update channel list information");

View File

@@ -125,7 +125,7 @@ typedef struct sCsrNeighborRoamControlInfo {
eCsrNeighborRoamState prevNeighborRoamState;
tCsrNeighborRoamCfgParams cfgParams;
struct qdf_mac_addr currAPbssid; /* current assoc AP */
uint8_t currAPoperationChannel; /* current assoc AP */
uint32_t curr_ap_op_chan_freq; /* current assoc AP */
tCsrNeighborRoamChannelInfo roamChannelInfo;
uint8_t currentNeighborLookupThreshold;
uint8_t currentOpportunisticThresholdDiff;
@@ -198,14 +198,14 @@ QDF_STATUS csr_neighbor_roam_update_fast_roaming_enabled(struct mac_context *mac
uint8_t sessionId, const bool fastRoamEnabled);
QDF_STATUS csr_neighbor_roam_channels_filter_by_current_band(
struct mac_context *mac, uint8_t sessionId,
uint8_t *pInputChannelList,
uint32_t *input_chan_freq_list,
uint8_t inputNumOfChannels,
uint8_t *pOutputChannelList,
uint32_t *out_chan_freq_list,
uint8_t *pMergedOutputNumOfChannels);
QDF_STATUS csr_neighbor_roam_merge_channel_lists(struct mac_context *mac,
uint32_t *pinput_chan_freq_list,
uint8_t inputNumOfChannels,
uint8_t *pOutputChannelList,
uint32_t *out_chan_freq_list,
uint8_t outputNumOfChannels,
uint8_t *pMergedOutputNumOfChannels);
void csr_roam_reset_roam_params(struct mac_context *mac_ptr);

View File

@@ -1038,7 +1038,7 @@ QDF_STATUS sme_get_roam_rssi_diff(mac_handle_t mac_handle, uint8_t vdev_id,
uint8_t *rssi_diff);
QDF_STATUS sme_change_roam_scan_channel_list(mac_handle_t mac_handle,
uint8_t sessionId,
uint8_t *pChannelList,
uint32_t *channel_freq_list,
uint8_t numChannels);
/**
@@ -1060,7 +1060,7 @@ sme_update_roam_scan_freq_list(mac_handle_t mac_handle, uint8_t vdev_id,
uint32_t freq_list_type);
QDF_STATUS sme_set_ese_roam_scan_channel_list(mac_handle_t mac_handle,
uint8_t sessionId,
uint8_t *pChannelList,
uint32_t *chan_freq_list,
uint8_t numChannels);
QDF_STATUS sme_get_roam_scan_channel_list(mac_handle_t mac_handle,
uint8_t *pChannelList,
@@ -3355,7 +3355,7 @@ bool sme_is_sta_key_exchange_in_progress(mac_handle_t mac_handle,
/*
* sme_validate_channel_list() - Validate the given channel list
* @mac_handle: Opaque handle to the global MAC context
* @chan_list: Pointer to the channel list
* @chan_freq_list: Pointer to the channel list
* @num_channels: number of channels present in the chan_list
*
* Validates the given channel list with base channels in mac context
@@ -3363,7 +3363,7 @@ bool sme_is_sta_key_exchange_in_progress(mac_handle_t mac_handle,
* Return: True if all channels in the list are valid, false otherwise
*/
bool sme_validate_channel_list(mac_handle_t mac_handle,
uint8_t *chan_list,
uint32_t *chan_freq_list,
uint8_t num_channels);
/**
* sme_set_amsdu() - set amsdu enable/disable based on user cfg

View File

@@ -180,20 +180,20 @@ void csr_flush_cfg_bg_scan_roam_channel_list(tCsrChannelInfo *channel_info);
* csr_create_bg_scan_roam_channel_list() - Create roam scan chan list
* @mac: global mac context
* @channel_info: Channel list to be populated for roam scan
* @chan_list: Channel list to be populated from
* @chan_freq_list: Channel list to be populated from
* @num_chan: Number of channels
*
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_E_FAILURE
*/
QDF_STATUS csr_create_bg_scan_roam_channel_list(struct mac_context *mac,
tCsrChannelInfo *channel_info,
const uint8_t *chan_list,
const uint32_t *chan_freq_list,
const uint8_t num_chan);
#ifdef FEATURE_WLAN_ESE
QDF_STATUS csr_create_roam_scan_channel_list(struct mac_context *mac,
uint8_t sessionId,
uint8_t *pChannelList,
uint32_t *chan_freq_list,
uint8_t numChannels,
const enum band_info band);
#endif

View File

@@ -1726,7 +1726,7 @@ QDF_STATUS sme_get_tsm_stats(mac_handle_t mac_handle,
* sme_set_ese_roam_scan_channel_list() - To set ese roam scan channel list
* @mac_handle: Opaque handle to the global MAC context
* @sessionId: sme session id
* @pChannelList: Output channel list
* @chan_freq_list: Output channel list
* @numChannels: Output number of channels
*
* This routine is called to set ese roam scan channel list.
@@ -1736,15 +1736,15 @@ QDF_STATUS sme_get_tsm_stats(mac_handle_t mac_handle,
*/
QDF_STATUS sme_set_ese_roam_scan_channel_list(mac_handle_t mac_handle,
uint8_t sessionId,
uint8_t *pChannelList,
uint32_t *chan_freq_list,
uint8_t numChannels)
{
struct mac_context *mac = MAC_CONTEXT(mac_handle);
QDF_STATUS status = QDF_STATUS_SUCCESS;
tpCsrNeighborRoamControlInfo pNeighborRoamInfo = NULL;
tpCsrChannelInfo curchnl_list_info = NULL;
uint8_t oldChannelList[CFG_VALID_CHANNEL_LIST_LEN * 2] = { 0 };
uint8_t newChannelList[128] = { 0 };
uint8_t oldChannelList[CFG_VALID_CHANNEL_LIST_LEN * 5] = { 0 };
uint8_t newChannelList[CFG_VALID_CHANNEL_LIST_LEN * 5] = { 0 };
uint8_t i = 0, j = 0;
enum band_info band = -1;
@@ -1771,7 +1771,7 @@ QDF_STATUS sme_set_ese_roam_scan_channel_list(mac_handle_t mac_handle,
}
ucfg_reg_get_band(mac->pdev, &band);
status = csr_create_roam_scan_channel_list(mac, sessionId,
pChannelList, numChannels,
chan_freq_list, numChannels,
band);
if (QDF_IS_STATUS_SUCCESS(status)) {
if (curchnl_list_info->freq_list) {
@@ -7425,19 +7425,13 @@ sme_update_roam_scan_channel_list(mac_handle_t mac_handle, uint8_t vdev_id,
{
QDF_STATUS status = QDF_STATUS_SUCCESS;
struct mac_context *mac = MAC_CONTEXT(mac_handle);
uint8_t *channel_list;
channel_list = qdf_mem_malloc(SIR_MAX_SUPPORTED_CHANNEL_LIST);
if (!channel_list)
return QDF_STATUS_E_NOMEM;
if (chan_info->numOfChannels) {
sme_debug("Current channels:");
sme_dump_freq_list(chan_info);
}
csr_flush_cfg_bg_scan_roam_channel_list(chan_info);
sme_freq_to_chan_list(mac->pdev, channel_list, freq_list, num_chan);
csr_create_bg_scan_roam_channel_list(mac, chan_info, channel_list,
csr_create_bg_scan_roam_channel_list(mac, chan_info, freq_list,
num_chan);
sme_debug("New channels:");
sme_dump_freq_list(chan_info);
@@ -7448,8 +7442,6 @@ sme_update_roam_scan_channel_list(mac_handle_t mac_handle, uint8_t vdev_id,
status = csr_roam_update_cfg(mac, vdev_id,
REASON_CHANNEL_LIST_CHANGED);
qdf_mem_free(channel_list);
return status;
}
@@ -7457,7 +7449,7 @@ sme_update_roam_scan_channel_list(mac_handle_t mac_handle, uint8_t vdev_id,
* sme_change_roam_scan_channel_list() - to change scan channel list
* @mac_handle: Opaque handle to the global MAC context
* @sessionId: sme session id
* @channel_list: Output channel list
* @channel_freq_list: Output channel list
* @numChannels: Output number of channels
*
* This routine is called to Change roam scan channel list.
@@ -7467,14 +7459,14 @@ sme_update_roam_scan_channel_list(mac_handle_t mac_handle, uint8_t vdev_id,
*/
QDF_STATUS sme_change_roam_scan_channel_list(mac_handle_t mac_handle,
uint8_t sessionId,
uint8_t *channel_list,
uint32_t *channel_freq_list,
uint8_t numChannels)
{
struct mac_context *mac = MAC_CONTEXT(mac_handle);
QDF_STATUS status = QDF_STATUS_SUCCESS;
tpCsrNeighborRoamControlInfo pNeighborRoamInfo = NULL;
uint8_t oldChannelList[CFG_VALID_CHANNEL_LIST_LEN * 2] = { 0 };
uint8_t newChannelList[CFG_VALID_CHANNEL_LIST_LEN * 2] = { 0 };
uint8_t oldChannelList[CFG_VALID_CHANNEL_LIST_LEN * 5] = { 0 };
uint8_t newChannelList[CFG_VALID_CHANNEL_LIST_LEN * 5] = { 0 };
uint8_t i = 0, j = 0;
tCsrChannelInfo *chan_info;
@@ -7497,14 +7489,14 @@ QDF_STATUS sme_change_roam_scan_channel_list(mac_handle_t mac_handle,
if (j < sizeof(oldChannelList))
j += snprintf(oldChannelList + j,
sizeof(oldChannelList) -
j, "%d",
j, " %d",
chan_info->freq_list[i]);
else
break;
}
}
csr_flush_cfg_bg_scan_roam_channel_list(chan_info);
csr_create_bg_scan_roam_channel_list(mac, chan_info, channel_list,
csr_create_bg_scan_roam_channel_list(mac, chan_info, channel_freq_list,
numChannels);
sme_set_roam_scan_control(mac_handle, sessionId, 1);
if (chan_info->freq_list) {
@@ -15208,7 +15200,7 @@ bool sme_is_sta_key_exchange_in_progress(mac_handle_t mac_handle,
}
bool sme_validate_channel_list(mac_handle_t mac_handle,
uint8_t *chan_list,
uint32_t *chan_freq_list,
uint8_t num_channels)
{
struct mac_context *mac_ctx = MAC_CONTEXT(mac_handle);
@@ -15217,8 +15209,9 @@ bool sme_validate_channel_list(mac_handle_t mac_handle,
bool found;
struct csr_channel *ch_lst_info = &mac_ctx->scan.base_channels;
if (!chan_list || !num_channels) {
sme_err("Chan list empty %pK or num_channels is 0", chan_list);
if (!chan_freq_list || !num_channels) {
sme_err("Chan list empty %pK or num_channels is 0",
chan_freq_list);
return false;
}
@@ -15226,14 +15219,14 @@ bool sme_validate_channel_list(mac_handle_t mac_handle,
found = false;
for (j = 0; j < ch_lst_info->numChannels; j++) {
if (ch_lst_info->channel_freq_list[j] ==
wlan_reg_chan_to_freq(mac_ctx->pdev, chan_list[i])) {
chan_freq_list[i]) {
found = true;
break;
}
}
if (!found) {
sme_debug("Invalid channel %d", chan_list[i]);
sme_debug("Invalid channel %d", chan_freq_list[i]);
return false;
}

View File

@@ -2063,18 +2063,20 @@ csr_flush_roam_scan_chan_lists(struct mac_context *mac, uint8_t vdev_id)
QDF_STATUS csr_create_bg_scan_roam_channel_list(struct mac_context *mac,
tCsrChannelInfo *channel_info,
const uint8_t *chan_list,
const uint32_t *chan_freq_list,
const uint8_t num_chan)
{
QDF_STATUS status = QDF_STATUS_SUCCESS;
uint8_t i;
channel_info->freq_list = qdf_mem_malloc(sizeof(uint32_t) * num_chan);
if (!channel_info->freq_list)
return QDF_STATUS_E_NOMEM;
channel_info->numOfChannels = num_chan;
sme_chan_to_freq_list(mac->pdev, channel_info->freq_list,
chan_list, num_chan);
for (i = 0; i < num_chan; i++)
channel_info->freq_list[i] = chan_freq_list[i];
return status;
}
@@ -2169,7 +2171,7 @@ is_dfs_unsafe_extra_band_chan(struct mac_context *mac_ctx, uint32_t freq,
* csr_create_roam_scan_channel_list() - create roam scan channel list
* @mac: Global mac pointer
* @sessionId: session id
* @chan_list: pointer to channel list
* @chan_freq_list: pointer to channel list
* @numChannels: number of channels
* @band: band enumeration
*
@@ -2185,7 +2187,7 @@ is_dfs_unsafe_extra_band_chan(struct mac_context *mac_ctx, uint32_t freq,
*/
QDF_STATUS csr_create_roam_scan_channel_list(struct mac_context *mac,
uint8_t sessionId,
uint8_t *chan_list,
uint32_t *chan_freq_list,
uint8_t numChannels,
const enum band_info band)
{
@@ -2195,10 +2197,10 @@ QDF_STATUS csr_create_roam_scan_channel_list(struct mac_context *mac,
= &mac->roam.neighborRoamInfo[sessionId];
uint8_t out_num_chan = 0;
uint8_t inNumChannels = numChannels;
uint8_t *in_ptr = chan_list;
uint32_t *in_ptr = chan_freq_list;
uint8_t i = 0;
uint8_t ChannelList[CFG_VALID_CHANNEL_LIST_LEN] = { 0 };
uint8_t tmp_chan_list[CFG_VALID_CHANNEL_LIST_LEN] = { 0 };
uint32_t csr_freq_list[CFG_VALID_CHANNEL_LIST_LEN] = { 0 };
uint32_t tmp_chan_freq_list[CFG_VALID_CHANNEL_LIST_LEN] = { 0 };
uint8_t mergedOutputNumOfChannels = 0;
tpCsrChannelInfo currChannelListInfo
@@ -2221,25 +2223,25 @@ QDF_STATUS csr_create_roam_scan_channel_list(struct mac_context *mac,
}
if (BAND_2G == band) {
for (i = 0; i < inNumChannels; i++) {
if (WLAN_REG_IS_24GHZ_CH(in_ptr[i])
&& csr_roam_is_channel_valid(mac, in_ptr[i])) {
ChannelList[out_num_chan++] = in_ptr[i];
if (WLAN_REG_IS_24GHZ_CH_FREQ(in_ptr[i]) &&
csr_roam_is_chan_freq_valid(mac, in_ptr[i])) {
csr_freq_list[out_num_chan++] = in_ptr[i];
}
}
} else if (BAND_5G == band) {
for (i = 0; i < inNumChannels; i++) {
/* Add 5G Non-DFS channel */
if (WLAN_REG_IS_5GHZ_CH(in_ptr[i]) &&
csr_roam_is_channel_valid(mac, in_ptr[i]) &&
!wlan_reg_is_dfs_ch(mac->pdev, in_ptr[i])) {
ChannelList[out_num_chan++] = in_ptr[i];
if (WLAN_REG_IS_5GHZ_CH_FREQ(in_ptr[i]) &&
csr_roam_is_chan_freq_valid(mac, in_ptr[i]) &&
!wlan_reg_is_dfs_for_freq(mac->pdev, in_ptr[i])) {
csr_freq_list[out_num_chan++] = in_ptr[i];
}
}
} else if (BAND_ALL == band) {
for (i = 0; i < inNumChannels; i++) {
if (csr_roam_is_channel_valid(mac, in_ptr[i]) &&
!wlan_reg_is_dfs_ch(mac->pdev, in_ptr[i])) {
ChannelList[out_num_chan++] = in_ptr[i];
if (csr_roam_is_chan_freq_valid(mac, in_ptr[i]) &&
!wlan_reg_is_dfs_for_freq(mac->pdev, in_ptr[i])) {
csr_freq_list[out_num_chan++] = in_ptr[i];
}
}
} else {
@@ -2256,14 +2258,13 @@ QDF_STATUS csr_create_roam_scan_channel_list(struct mac_context *mac,
* list are already filtered for 2.4G channels, hence ignore this check
*/
if ((BAND_ALL == band) && CSR_IS_ROAM_INTRA_BAND_ENABLED(mac)) {
csr_neighbor_roam_channels_filter_by_current_band(mac,
sessionId,
ChannelList,
out_num_chan,
tmp_chan_list,
&out_num_chan
);
qdf_mem_copy(ChannelList, tmp_chan_list, out_num_chan);
csr_neighbor_roam_channels_filter_by_current_band(
mac,
sessionId,
csr_freq_list,
out_num_chan,
tmp_chan_freq_list,
&out_num_chan);
}
/* Prepare final roam scan channel list */
if (out_num_chan) {
@@ -2279,9 +2280,10 @@ QDF_STATUS csr_create_roam_scan_channel_list(struct mac_context *mac,
currChannelListInfo->numOfChannels = 0;
return QDF_STATUS_E_NOMEM;
}
sme_chan_to_freq_list(mac->pdev,
currChannelListInfo->freq_list,
ChannelList, out_num_chan);
for (i = 0; i < out_num_chan; i++)
currChannelListInfo->freq_list[i] =
tmp_chan_freq_list[i];
currChannelListInfo->numOfChannels = out_num_chan;
}
return status;

View File

@@ -451,9 +451,9 @@ enum band_info csr_get_rf_band(uint8_t channel)
*
* @mac_ctx: Pointer to Global MAC structure
* @session_id: Session ID
* @input_ch_list: The input channel list
* @input_chan_freq_list: The input channel list
* @input_num_of_ch: The number of channels in input channel list
* @output_ch_list: The output channel list
* @out_chan_freq_list: The output channel list
* @output_num_of_ch: The number of channels in output channel list
* @merged_output_num_of_ch: The final number of channels in the
* output channel list.
@@ -466,22 +466,22 @@ enum band_info csr_get_rf_band(uint8_t channel)
QDF_STATUS csr_neighbor_roam_channels_filter_by_current_band(struct mac_context *
mac,
uint8_t sessionId,
uint8_t *pInputChannelList,
uint32_t *input_chan_freq_list,
uint8_t inputNumOfChannels,
uint8_t *pOutputChannelList,
uint32_t *out_chan_freq_list,
uint8_t *
pMergedOutputNumOfChannels)
{
uint8_t i = 0;
uint8_t numChannels = 0;
uint8_t currAPoperationChannel =
mac->roam.neighborRoamInfo[sessionId].currAPoperationChannel;
uint32_t curr_ap_op_chan_freq =
mac->roam.neighborRoamInfo[sessionId].curr_ap_op_chan_freq;
/* Check for NULL pointer */
if (!pInputChannelList)
if (!input_chan_freq_list)
return QDF_STATUS_E_INVAL;
/* Check for NULL pointer */
if (!pOutputChannelList)
if (!out_chan_freq_list)
return QDF_STATUS_E_INVAL;
if (inputNumOfChannels > CFG_VALID_CHANNEL_LIST_LEN) {
@@ -491,9 +491,11 @@ QDF_STATUS csr_neighbor_roam_channels_filter_by_current_band(struct mac_context
return QDF_STATUS_E_INVAL;
}
for (i = 0; i < inputNumOfChannels; i++) {
if (csr_get_rf_band(currAPoperationChannel) ==
csr_get_rf_band(pInputChannelList[i])) {
pOutputChannelList[numChannels] = pInputChannelList[i];
if (WLAN_REG_IS_SAME_BAND_FREQS(
curr_ap_op_chan_freq,
input_chan_freq_list[i])) {
out_chan_freq_list[numChannels] =
input_chan_freq_list[i];
numChannels++;
}
}
@@ -511,7 +513,7 @@ QDF_STATUS csr_neighbor_roam_channels_filter_by_current_band(struct mac_context
* @pinput_chan_freq_list: The additional channels to merge in
* to the "merged" channels list.
* @input_num_of_ch: The number of additional channels.
* @output_ch_list: The place to put the "merged" channel list.
* @out_chan_freq_list: The place to put the "merged" channel list.
* @output_num_of_ch: The original number of channels in the
* "merged" channels list.
* @merged_output_num_of_ch: The final number of channels in the
@@ -527,7 +529,7 @@ QDF_STATUS csr_neighbor_roam_channels_filter_by_current_band(struct mac_context
QDF_STATUS csr_neighbor_roam_merge_channel_lists(struct mac_context *mac,
uint32_t *pinput_chan_freq_list,
uint8_t inputNumOfChannels,
uint8_t *pOutputChannelList,
uint32_t *out_chan_freq_list,
uint8_t outputNumOfChannels,
uint8_t *
pMergedOutputNumOfChannels)
@@ -541,7 +543,7 @@ QDF_STATUS csr_neighbor_roam_merge_channel_lists(struct mac_context *mac,
return QDF_STATUS_E_INVAL;
/* Check for NULL pointer */
if (!pOutputChannelList)
if (!out_chan_freq_list)
return QDF_STATUS_E_INVAL;
if (inputNumOfChannels > CFG_VALID_CHANNEL_LIST_LEN) {
@@ -561,8 +563,8 @@ QDF_STATUS csr_neighbor_roam_merge_channel_lists(struct mac_context *mac,
*/
for (i = 0; i < inputNumOfChannels; i++) {
for (j = 0; j < outputNumOfChannels; j++) {
if (wlan_reg_freq_to_chan(mac->pdev, pinput_chan_freq_list[i])
== pOutputChannelList[j])
if (pinput_chan_freq_list[i]
== out_chan_freq_list[j])
break;
}
if (j == outputNumOfChannels) {
@@ -571,8 +573,8 @@ QDF_STATUS csr_neighbor_roam_merge_channel_lists(struct mac_context *mac,
QDF_TRACE_LEVEL_DEBUG,
"%s: [INFOLOG] Adding extra %d to Neighbor channel list",
__func__, pinput_chan_freq_list[i]);
pOutputChannelList[numChannels] =
wlan_reg_freq_to_chan(mac->pdev, pinput_chan_freq_list[i]);
out_chan_freq_list[numChannels] =
pinput_chan_freq_list[i];
numChannels++;
}
}
@@ -911,9 +913,8 @@ static void csr_neighbor_roam_info_ctx_init(struct mac_context *mac,
qdf_copy_macaddr(&ngbr_roam_info->currAPbssid,
&session->connectedProfile.bssid);
ngbr_roam_info->currAPoperationChannel =
wlan_reg_freq_to_chan(mac->pdev,
session->connectedProfile.op_freq);
ngbr_roam_info->curr_ap_op_chan_freq =
session->connectedProfile.op_freq;
ngbr_roam_info->currentNeighborLookupThreshold =
ngbr_roam_info->cfgParams.neighborLookupThreshold;
ngbr_roam_info->currentOpportunisticThresholdDiff =