@@ -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+
124137int 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+
731745void 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
851897void convert_freq_to_channel (unsigned int freq , unsigned char * channel )
0 commit comments