Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 54 additions & 17 deletions os/board/bk7239n/src/bsp_adapter/src/net/bk_wifi_csi_adapter.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ struct bk_csi_dev_s {
struct wifi_csi_lowerhalf_s dev;
beken_semaphore_t devsem;
wifi_csi_receive_mode_config_t config_param;
wifi_csi_active_mode_config_t active_mode_config_param;
unsigned int interval_ms;
unsigned int accuracy;
int csi_data_reported_idx;
Expand Down Expand Up @@ -366,7 +367,8 @@ static int bk_wifi_csi_set_config(unsigned long arg)
}
/* 1. memset config zero */
memset(&g_bk_drv->config_param, 0, sizeof(wifi_csi_receive_mode_config_t));

memset(&g_bk_drv->active_mode_config_param, 0, sizeof(wifi_csi_active_mode_config_t));

/* 2. assign configs */
g_bk_drv->interval_ms = config_args->interval;

Expand All @@ -386,12 +388,14 @@ static int bk_wifi_csi_set_config(unsigned long arg)
case NON_HT_CSI_DATA:
g_bk_drv->config_param.filter_config.proto_type_bmp = 0x1;
g_bk_drv->config_param.filter_config.cbw_bmp = 0x1;
g_bk_drv->active_mode_config_param.interval = config_args->interval;
g_bk_drv->accuracy = 0;
break;

case NON_HT_CSI_DATA_ACC1:
g_bk_drv->config_param.filter_config.proto_type_bmp = 0x1;
g_bk_drv->config_param.filter_config.cbw_bmp = 0x1;
g_bk_drv->active_mode_config_param.interval = config_args->interval;
g_bk_drv->accuracy = 1;
break;

Expand All @@ -400,8 +404,7 @@ static int bk_wifi_csi_set_config(unsigned long arg)
return -EINVAL;
}

if(config_action == CSI_CONFIG_ENABLE)
{
if((config_type == HT_CSI_DATA || config_type == HT_CSI_DATA_ACC1) && config_action == CSI_CONFIG_ENABLE) {
g_bk_drv->config_param.filter_config.filter_mac_addr_type = 1;// src && dst
g_bk_drv->config_param.filter_config.filter_src_mac_num = 1;
os_memcpy(g_bk_drv->config_param.filter_config.filter_src_mac, link_status.bssid, BK_MAC_ADDR_LEN);
Expand All @@ -411,15 +414,22 @@ static int bk_wifi_csi_set_config(unsigned long arg)
os_memcpy(g_bk_drv->config_param.filter_config.filter_dst_mac, sta_mac, BK_MAC_ADDR_LEN);
}

if(g_bk_drv->config_param.enable == 1)
{
if((config_type == HT_CSI_DATA || config_type == HT_CSI_DATA_ACC1) && g_bk_drv->config_param.enable == 1) {
g_bk_drv->config_param.enable = 0;
ret = bk_wifi_csi_receive_mode_req(&g_bk_drv->config_param);
if (ret != OK)
{
csidbg("ERROR: wifi csi set config(enable) failed, ret: %d\n", ret);
return ret;
}
} else if((config_type == NON_HT_CSI_DATA || config_type == NON_HT_CSI_DATA_ACC1) && g_bk_drv->active_mode_config_param.enable == 1) {
g_bk_drv->active_mode_config_param.enable = 0;
ret = bk_wifi_csi_active_mode_req(&g_bk_drv->active_mode_config_param);
if (ret != OK)
{
csidbg("ERROR: wifi csi set config(enable) failed, ret: %d\n", ret);
return ret;
}
}

/* 3. call set config for enable/disable */
Expand All @@ -440,13 +450,24 @@ static int bk_wifi_csi_set_config(unsigned long arg)
return -EINVAL;
}
/* changes for enable */
g_bk_drv->config_param.enable = 1;
ret = bk_wifi_csi_receive_mode_req(&g_bk_drv->config_param);
if (ret != OK)
{
bk_wifi_csi_data_buffer_free();
csidbg("ERROR: wifi csi set config(enable) failed, ret: %d\n", ret);
return ret;
if(config_type == HT_CSI_DATA || config_type == HT_CSI_DATA_ACC1) {
g_bk_drv->config_param.enable = 1;
ret = bk_wifi_csi_receive_mode_req(&g_bk_drv->config_param);
if (ret != OK)
{
bk_wifi_csi_data_buffer_free();
csidbg("ERROR: wifi csi set config(enable) failed, ret: %d\n", ret);
return ret;
}
} else if(config_type == NON_HT_CSI_DATA || config_type == NON_HT_CSI_DATA_ACC1) {
g_bk_drv->active_mode_config_param.enable = 1;
ret = bk_wifi_csi_active_mode_req(&g_bk_drv->active_mode_config_param);
if (ret != OK)
{
bk_wifi_csi_data_buffer_free();
csidbg("ERROR: wifi csi set config(enable) failed, ret: %d\n", ret);
return ret;
}
}
}
else if (config_action == CSI_CONFIG_DISABLE)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @TalentSun1225, as disable is already handled in above code, can we remove this else if case.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @singh-kuldip ,
I don’t think you should delete this branch directly. This is because two functions, bk_wifi_csi_data_buffer_free() and bk_wifi_csi_report_timer_set(false), are not executed in the upper branch.
However, the redundant duplicate code can indeed be removed.

Expand All @@ -455,11 +476,20 @@ static int bk_wifi_csi_set_config(unsigned long arg)
/* changes for disable*/
csivdbg("wifi csi disable config requested\n");
bk_wifi_csi_report_timer_set(false);
g_bk_drv->config_param.enable = 0;
ret = bk_wifi_csi_receive_mode_req(&g_bk_drv->config_param);
if (ret != OK) {
csidbg("ERROR: wifi csi set config(disable) failed, ret: %d\n", ret);
return ret;
if(config_type == HT_CSI_DATA || config_type == HT_CSI_DATA_ACC1) {
g_bk_drv->config_param.enable = 0;
ret = bk_wifi_csi_receive_mode_req(&g_bk_drv->config_param);
if (ret != OK) {
csidbg("ERROR: wifi csi set config(disable) failed, ret: %d\n", ret);
return ret;
}
} else if(config_type == NON_HT_CSI_DATA || config_type == NON_HT_CSI_DATA_ACC1) {
g_bk_drv->active_mode_config_param.enable = 0;
ret = bk_wifi_csi_active_mode_req(&g_bk_drv->active_mode_config_param);
if (ret != OK) {
csidbg("ERROR: wifi csi set config(disable) failed, ret: %d\n", ret);
return ret;
}
}
}

Expand Down Expand Up @@ -677,6 +707,12 @@ static int bk_wifi_csi_getcsidata(unsigned char *buffer, size_t buflen) {
return len;
}

void bk_wifi_csi_disable_HE_and_VHT(void)
{
bk_wifi_capa_config(WIFI_CAPA_ID_VHT_EN, 0);
bk_wifi_capa_config(WIFI_CAPA_ID_HE_EN, 0);
}

FAR struct wifi_csi_lowerhalf_s *bk_wifi_csi_initialize(void)
{
int err = 0;
Expand All @@ -697,6 +733,7 @@ FAR struct wifi_csi_lowerhalf_s *bk_wifi_csi_initialize(void)
return NULL;
}
bk_wifi_csi_givesem();
bk_wifi_csi_disable_HE_and_VHT();

return &g_bk_drv->dev;
}
Expand Down