Skip to content

Commit 872fd2c

Browse files
Merge branch 'rdkcentral:develop' into add_test_suite
2 parents ddff39b + cd2fbf2 commit 872fd2c

File tree

16 files changed

+468
-79
lines changed

16 files changed

+468
-79
lines changed

config/rdkb-wifi.ovsschema

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "Wifi_Rdk_Database",
3-
"version": "1.00.037",
3+
"version": "1.00.038",
44
"cksum": "2353365742 523",
55
"tables": {
66
"Wifi_Device_Config": {
@@ -1192,6 +1192,24 @@
11921192
"min": 0,
11931193
"max": 1
11941194
}
1195+
},
1196+
"mdu_enabled": {
1197+
"type": {
1198+
"key" : {
1199+
"type": "boolean"
1200+
},
1201+
"min": 0,
1202+
"max": 1
1203+
}
1204+
},
1205+
"speed_tier": {
1206+
"type" : {
1207+
"key" : {
1208+
"type" : "integer"
1209+
},
1210+
"min": 0,
1211+
"max": 1
1212+
}
11951213
}
11961214
},
11971215
"isRoot": true

lib/inc/schema_gen.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@
151151
PJS_OVS_INT(mld_link_id) \
152152
PJS_OVS_STRING(mld_addr, 32 + 1) \
153153
PJS_OVS_BOOL(mld_apply) \
154+
PJS_OVS_BOOL(mdu_enabled)\
155+
PJS_OVS_INT(speed_tier)\
154156
)
155157

156158
#define PJS_SCHEMA_Wifi_Interworking_Config \
@@ -2080,7 +2082,9 @@
20802082
COLUMN(mld_link_id)\
20812083
COLUMN(mld_addr)\
20822084
COLUMN(mld_apply)\
2083-
COLUMN(interop_ctrl)
2085+
COLUMN(interop_ctrl)\
2086+
COLUMN(mdu_enabled)\
2087+
COLUMN(speed_tier)
20842088

20852089
#define SCHEMA__Wifi_Interworking_Config "Wifi_Interworking_Config"
20862090
#define SCHEMA_COLUMN__Wifi_Interworking_Config(COLUMN) \
@@ -3438,6 +3442,8 @@
34383442
#define SCHEMA__Wifi_VAP_Config__mld_link_id "mld_link_id"
34393443
#define SCHEMA__Wifi_VAP_Config__mld_addr "mld_addr"
34403444
#define SCHEMA__Wifi_VAP_Config__mld_apply "mld_apply"
3445+
#define SCHEMA__Wifi_VAP_Config__mdu_enabled "mdu_enabled"
3446+
#define SCHEMA__Wifi_VAP_Config__speed_tier "speed_tier"
34413447

34423448
#define SCHEMA__Wifi_Interworking_Config__enable "enable"
34433449
#define SCHEMA__Wifi_Interworking_Config__vap_name "vap_name"

scripts/get_vlan.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,18 @@ wlan0.2 | wl0.3)
1212
lan=brlan2;;
1313
wlan2.2 | wl1.3)
1414
lan=brlan3;;
15+
wl0.4)
16+
lan=brlan16;;
17+
wl1.4)
18+
lan=brlan17;;
1519
wlan0.4 | wl0.5)
1620
lan=brlan4;;
1721
wlan2.4 | wl1.5)
1822
lan=brlan5;;
1923
wl2.3)
2024
lan=bropen6g;;
25+
wl2.4)
26+
lan=brlan18;;
2127
wl2.5)
2228
lan=brsecure6g;;
2329
*)

source/core/services/vap_svc_private.c

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,58 @@ int vap_svc_private_stop(vap_svc_t *svc, unsigned int radio_index, wifi_vap_info
5252
return 0;
5353
}
5454

55+
static int configure_lnf_psk_radius_from_hotspot(wifi_vap_info_t *vap_info)
56+
{
57+
int band;
58+
wifi_vap_info_t *hotspot_vap_info = NULL;
59+
int rIdx = 0;
60+
61+
if (!vap_info) {
62+
wifi_util_error_print(WIFI_CTRL, "%s:%d Invalid vap_info parameter\n", __FUNCTION__, __LINE__);
63+
return -1;
64+
}
65+
66+
if (!isVapLnfPsk(vap_info->vap_index) || !vap_info->u.bss_info.mdu_enabled) {
67+
return 0;
68+
}
69+
wifi_platform_property_t *wifi_prop = get_wifi_hal_cap_prop();
70+
if (convert_radio_index_to_freq_band(wifi_prop, vap_info->radio_index, &band) != RETURN_OK) {
71+
wifi_util_error_print(WIFI_CTRL, "%s:%d Failed to get band for vap_index=%d\n",
72+
__FUNCTION__, __LINE__, vap_info->vap_index);
73+
return -1;
74+
}
75+
76+
if (band == WIFI_FREQUENCY_2_4_BAND) {
77+
convert_freq_band_to_radio_index(WIFI_FREQUENCY_5_BAND, &rIdx);
78+
hotspot_vap_info = get_wifidb_vap_parameters(getApFromRadioIndex(rIdx, VAP_PREFIX_HOTSPOT_SECURE));
79+
} else {
80+
hotspot_vap_info = get_wifidb_vap_parameters(getApFromRadioIndex(vap_info->radio_index, VAP_PREFIX_HOTSPOT_SECURE));
81+
}
82+
83+
if (hotspot_vap_info == NULL) {
84+
wifi_util_error_print(WIFI_CTRL, "%s:%d Failed to get hotspot_vap_info for vap_index=%d\n",
85+
__FUNCTION__, __LINE__, vap_info->vap_index);
86+
return -1;
87+
}
88+
vap_info->u.bss_info.security.repurposed_radius = hotspot_vap_info->u.bss_info.security.u.radius;
89+
wifi_util_dbg_print(WIFI_CTRL, "%s:%d LNF RADIUS Config for vap name = %s - Primary IP: %s Port: %d, Secondary IP: %s Port: %d\n",
90+
__func__, __LINE__, vap_info->vap_name,
91+
vap_info->u.bss_info.security.repurposed_radius.ip,
92+
vap_info->u.bss_info.security.repurposed_radius.port,
93+
vap_info->u.bss_info.security.repurposed_radius.s_ip,
94+
vap_info->u.bss_info.security.repurposed_radius.s_port);
95+
96+
return 0;
97+
}
98+
5599
int vap_svc_private_update(vap_svc_t *svc, unsigned int radio_index, wifi_vap_info_map_t *map,
56100
rdk_wifi_vap_info_t *rdk_vap_info)
57101
{
58102
bool enabled;
59103
unsigned int i;
60104
wifi_vap_info_map_t *p_tgt_vap_map = NULL;
61105
int ret;
62-
106+
63107
p_tgt_vap_map = (wifi_vap_info_map_t *) malloc( sizeof(wifi_vap_info_map_t) );
64108
if (p_tgt_vap_map == NULL) {
65109
wifi_util_error_print(WIFI_CTRL,"%s:%d Failed to allocate memory.\n", __FUNCTION__,__LINE__);
@@ -75,6 +119,10 @@ int vap_svc_private_update(vap_svc_t *svc, unsigned int radio_index, wifi_vap_in
75119
// VAP is enabled in HAL if it is present in VIF_Config and enabled. Absent VAP entries are
76120
// saved to VAP_Config with exist flag set to 0 and default values.
77121
enabled = p_tgt_vap_map->vap_array[0].u.bss_info.enabled;
122+
if (configure_lnf_psk_radius_from_hotspot(&p_tgt_vap_map->vap_array[0]) != RETURN_OK) {
123+
wifi_util_error_print(WIFI_CTRL, "%s:%d configure_lnf_psk_radius_from_hotspot failed\n", __FUNCTION__, __LINE__);
124+
return -1;
125+
}
78126
#if defined(_WNXL11BWL_PRODUCT_REQ_)
79127
if (rdk_vap_info[i].exists == false && isVapPrivate(map->vap_array[i].vap_index)) {
80128
wifi_util_error_print(WIFI_CTRL,"%s:%d VAP_EXISTS_FALSE for vap_index=%d, setting to TRUE \n",__FUNCTION__,__LINE__,map->vap_array[i].vap_index);
@@ -104,7 +152,7 @@ int vap_svc_private_update(vap_svc_t *svc, unsigned int radio_index, wifi_vap_in
104152
}
105153

106154
p_tgt_vap_map->vap_array[0].u.bss_info.enabled = enabled;
107-
155+
108156
wifi_util_info_print(WIFI_CTRL,"%s: wifi vap create success: radio_index:%d vap_index:%d\n",__FUNCTION__,
109157
radio_index, map->vap_array[i].vap_index);
110158
get_wifidb_obj()->desc.print_fn("%s: wifi vap create success: radio_index:%d vap_index:%d\n",__FUNCTION__,

source/core/wifi_ctrl.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2889,6 +2889,25 @@ UINT getPrivateApFromRadioIndex(UINT radioIndex)
28892889
return 0;
28902890
}
28912891

2892+
UINT getApFromRadioIndex(UINT radioIndex, char* vap_prefix)
2893+
{
2894+
UINT apIndex;
2895+
wifi_mgr_t *mgr = get_wifimgr_obj();
2896+
if (vap_prefix == NULL) {
2897+
wifi_util_error_print(WIFI_CTRL,"%s:%d vap_prefix is NULL \n", __FUNCTION__,__LINE__);
2898+
return 0;
2899+
}
2900+
for (UINT index = 0; index < getTotalNumberVAPs(); index++) {
2901+
apIndex = VAP_INDEX(mgr->hal_cap, index);
2902+
if((strncmp((CHAR *)getVAPName(apIndex), vap_prefix, strlen(vap_prefix)) == 0) &&
2903+
getRadioIndexFromAp(apIndex) == radioIndex ) {
2904+
return apIndex;
2905+
}
2906+
}
2907+
wifi_util_dbg_print(WIFI_CTRL,"getApFromRadioIndex not recognised for radioIndex %u!!!\n", radioIndex);
2908+
return 0;
2909+
}
2910+
28922911
BOOL isVapPrivate(UINT apIndex)
28932912
{
28942913
return is_vap_private(&(get_wifimgr_obj())->hal_cap.wifi_prop, apIndex);

source/core/wifi_ctrl.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,6 @@ extern "C" {
105105
#define PRIVATE_SUB_DOC "privatessid"
106106
// Connected building wifi subdoc and bus related constants
107107
#define MULTI_COMP_SUPPORTED_SUBDOC_COUNT 2
108-
#define MANAGED_WIFI_BRIDGE "Device.LAN.Bridge.1.Name"
109-
#define MANAGED_WIFI_INTERFACE "Device.LAN.Bridge.1.WiFiInterfaces"
110108

111109
#define PRIVATE 0b0001
112110
#define HOTSPOT 0b0010
@@ -323,6 +321,7 @@ bool is_db_backup_required();
323321

324322
UINT getRadioIndexFromAp(UINT apIndex);
325323
UINT getPrivateApFromRadioIndex(UINT radioIndex);
324+
UINT getApFromRadioIndex(UINT radioIndex, char* vap_prefix);
326325
CHAR* getVAPName(UINT apIndex);
327326
BOOL isVapPrivate(UINT apIndex);
328327
BOOL isVapXhs(UINT apIndex);
@@ -388,6 +387,7 @@ void sta_pending_connection_retry(wifi_ctrl_t *ctrl);
388387
bool get_wifi_mesh_vap_enable_status(void);
389388
int get_wifi_mesh_sta_network_status(uint8_t vapIndex, bool *status);
390389
bool check_for_greylisted_mac_filter(void);
390+
int update_vap_params_to_hal_and_db(wifi_vap_info_t *vap, bool enable_or_disable);
391391
void wait_wifi_scan_result(wifi_ctrl_t *ctrl);
392392
bool is_sta_enabled(void);
393393
void reset_wifi_radios();

source/core/wifi_ctrl_queue_handlers.c

Lines changed: 52 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,19 @@ void process_scan_results_event(scan_results_t *results, unsigned int len)
121121
}
122122
}
123123

124+
const char* wifi_hotspot_action_to_string(wifi_hotspot_action_t action) {
125+
switch (action) {
126+
case hotspot_vap_disable:
127+
return "Hotspot VAP Down";
128+
case hotspot_vap_enable:
129+
return "Hotspot VAP Up";
130+
case hotspot_vap_param_update:
131+
return "Hotspot Param Update";
132+
default:
133+
return "unknown";
134+
}
135+
}
136+
124137
int remove_xfinity_acl_entries(bool remove_all_greylist_entry,bool prefer_private)
125138
{
126139
wifi_util_dbg_print(WIFI_CTRL,"%s:%d Enter \n", __FUNCTION__, __LINE__);
@@ -728,6 +741,7 @@ void process_anqp_gas_init_frame_event(frame_data_t *msg, uint32_t msg_length)
728741
}
729742
}
730743

744+
731745
void send_hotspot_status(char* vap_name, bool up)
732746
{
733747
bus_error_t rc;
@@ -764,24 +778,28 @@ void process_xfinity_vaps(wifi_hotspot_action_t param, bool hs_evt)
764778
vap_svc_t *pub_svc = NULL;
765779
wifi_ctrl_t *ctrl;
766780
ctrl = (wifi_ctrl_t *)get_wifictrl_obj();
781+
wifi_vap_info_t *lnf_2g_vap = NULL, *lnf_vap_info = NULL, hotspot_5g_vap_info;
767782
wifi_platform_property_t *wifi_prop = (&(get_wifimgr_obj())->hal_cap.wifi_prop);
768783
uint8_t num_radios = getNumberRadios();
769784
bool open_2g_enabled = false, open_5g_enabled = false, open_6g_enabled = false,sec_2g_enabled = false,sec_5g_enabled = false, sec_6g_enabled = false;
770785
wifi_rfc_dml_parameters_t *rfc_param = (wifi_rfc_dml_parameters_t *)get_wifi_db_rfc_parameters();
771-
772786
pub_svc = get_svc_by_type(ctrl, vap_svc_type_public);
787+
773788
for(int radio_indx = 0; radio_indx < num_radios; ++radio_indx) {
774789
wifi_vap_info_map_t *wifi_vap_map = (wifi_vap_info_map_t *)get_wifidb_vap_map(radio_indx);
790+
lnf_vap_info = (wifi_vap_info_t *)get_wifidb_vap_parameters(getApFromRadioIndex(radio_indx, VAP_PREFIX_LNF_PSK));
791+
if (lnf_vap_info && strstr(lnf_vap_info->vap_name, NAME_FREQUENCY_2_4_G) != NULL) {
792+
lnf_2g_vap = lnf_vap_info;
793+
}
775794
for(unsigned int j = 0; j < wifi_vap_map->num_vaps; ++j) {
776795
if(strstr(wifi_vap_map->vap_array[j].vap_name, "hotspot") == NULL) {
777796
continue;
778797
}
779-
798+
780799
wifi_vap_info_map_t tmp_vap_map;
781800
memset((unsigned char *)&tmp_vap_map, 0, sizeof(wifi_vap_info_map_t));
782801
tmp_vap_map.num_vaps = 1;
783802
memcpy((unsigned char *)&tmp_vap_map.vap_array[0], (unsigned char *)&wifi_vap_map->vap_array[j], sizeof(wifi_vap_info_t));
784-
785803
rdk_vap_info = get_wifidb_rdk_vap_info(wifi_vap_map->vap_array[j].vap_index);
786804
if (rdk_vap_info == NULL) {
787805
wifi_util_error_print(WIFI_CTRL, "%s:%d Failed to get rdk vap info for index %d\n",
@@ -823,29 +841,57 @@ void process_xfinity_vaps(wifi_hotspot_action_t param, bool hs_evt)
823841

824842
wifi_util_dbg_print(WIFI_CTRL,"enabled is %d\n",tmp_vap_map.vap_array[0].u.bss_info.enabled);
825843
}
844+
845+
if (isVapHotspotSecure5g(wifi_vap_map->vap_array[j].vap_index))
846+
{
847+
memcpy((unsigned char *)&hotspot_5g_vap_info, (unsigned char *)&tmp_vap_map.vap_array[0], sizeof(wifi_vap_info_t));
848+
}
826849
if(pub_svc->update_fn(pub_svc,radio_indx, &tmp_vap_map, rdk_vap_info) != RETURN_OK) {
827850
wifi_util_error_print(WIFI_CTRL, "%s:%d Unable to create vaps\n", __func__,__LINE__);
828851
if(hs_evt) {
829852
send_hotspot_status(wifi_vap_map->vap_array[j].vap_name, false);
830853
}
831854
} else {
832-
wifi_util_info_print(WIFI_CTRL, "%s:%d Able to create vaps. vap_enable %d\n", __func__,__LINE__, param);
855+
wifi_util_info_print(WIFI_CTRL, "%s:%d Able to create vaps. vap_enable %d and vap_name = %s\n", __func__,__LINE__, param, tmp_vap_map.vap_array[0].vap_name);
833856
get_wifidb_obj()->desc.print_fn("%s:%d radio_index:%d create vap %s successful\n", __func__,__LINE__, radio_indx, wifi_vap_map->vap_array[j].vap_name);
834857
if(hs_evt) {
835858
send_hotspot_status(wifi_vap_map->vap_array[j].vap_name, true);
836859
}
837-
860+
if (!lnf_vap_info)
861+
{
862+
wifi_util_info_print(WIFI_CTRL, "%s:%d lnf_vap_info is NULL for radio index = %d\n", __func__,__LINE__,radio_indx);
863+
return;
864+
}
865+
if (!strstr(lnf_vap_info->vap_name, NAME_FREQUENCY_2_4_G) && should_process_hotspot_config_change(lnf_vap_info, &tmp_vap_map.vap_array[0])) {
866+
if (update_vap_params_to_hal_and_db(lnf_vap_info, tmp_vap_map.vap_array[0].u.bss_info.enabled) == -1) {
867+
wifi_util_error_print(WIFI_CTRL, "%s:%d Unable to update LnF vaps as per Hotspot VAPs\n", __func__,__LINE__);
868+
return;
869+
}
870+
wifi_util_info_print(WIFI_CTRL,"%s:%d LnF VAP %s config changed as per %s event\n",__func__,__LINE__,lnf_vap_info->vap_name, wifi_hotspot_action_to_string(param));
871+
}
838872
}
839-
840873
}
841874
}
875+
842876
if (is_6g_supported_device(wifi_prop) && param != hotspot_vap_param_update) {
843877
wifi_util_info_print(WIFI_CTRL,"6g supported device enable rrm\n");
844878
if (pub_svc->event_fn != NULL) {
845879
pub_svc->event_fn(pub_svc, wifi_event_type_command, wifi_event_type_xfinity_rrm,
846880
vap_svc_event_none,NULL);
847881
}
848882
}
883+
if (!lnf_2g_vap)
884+
{
885+
wifi_util_error_print(WIFI_CTRL,"%s:%d LnF 2.4GHz VAP is NULL\n", __func__,__LINE__);
886+
return;
887+
}
888+
if (should_process_hotspot_config_change(lnf_2g_vap, &hotspot_5g_vap_info)) {
889+
if (update_vap_params_to_hal_and_db(lnf_2g_vap, hotspot_5g_vap_info.u.bss_info.enabled) == -1)
890+
{
891+
wifi_util_info_print(WIFI_CTRL, "%s:%d Unable to update LnF vaps as per Hotspot VAPs\n", __func__,__LINE__);
892+
}
893+
wifi_util_info_print(WIFI_CTRL,"%s:%d LnF VAP %s config changed as per %s event\n",__func__,__LINE__,lnf_vap_info->vap_name ,wifi_hotspot_action_to_string(param));
894+
}
849895
}
850896

851897
void convert_freq_to_channel(unsigned int freq, unsigned char *channel)

0 commit comments

Comments
 (0)