@@ -672,24 +672,41 @@ def get_applied_ssid_info(self, profile_object=None, idx=0):
672672 return None
673673 ssid_info_sdk = profile_object .get_ssid_info ()
674674 logging .info (f"ssid_info_sdk:{ ssid_info_sdk } " )
675- ap_wifi_data = self .dut_library_object .get_iwinfo (idx = idx )
676- channel_info = self .get_dut_channel_data (idx = idx )
677- logging .info (f"channel_info:{ channel_info } " )
678- o = ap_wifi_data .split ()
679- iwinfo_bssid_data = {}
680- print (o )
681- for i in range (len (o )):
682- if o [i ].__contains__ ("ESSID" ):
683- if o [i + 9 ].__contains__ ("2.4" ):
684- band = "2G"
685- elif o [i + 9 ].__contains__ ("5." ):
686- band = "5G"
687- elif "unknown" in o [i + 9 ]:
688- logging .info (f"Error: { o [i - 1 ]} has an unknown channel frequency from iwinfo" )
689- pytest .fail (f"Error: { o [i - 1 ]} has an unknown channel frequency from iwinfo" )
690- else :
691- band = "6G"
692- iwinfo_bssid_data [o [i - 1 ]] = [o [i + 1 ].replace ('"' , '' ), o [i + 4 ], band ]
675+
676+ def parse_iwinfo ():
677+ ap_wifi_data = self .dut_library_object .get_iwinfo (idx = idx )
678+ channel_info = self .get_dut_channel_data (idx = idx )
679+ logging .info (f"channel_info:{ channel_info } " )
680+ o = ap_wifi_data .split ()
681+ iwinfo_bssid_data = {}
682+ logging .info (f"iwinfo raw split data: { o } " )
683+
684+ for i in range (len (o )):
685+ if "ESSID" in o [i ]:
686+ if "2.4" in o [i + 9 ]:
687+ band = "2G"
688+ elif "5." in o [i + 9 ]:
689+ band = "5G"
690+ elif "unknown" in o [i + 9 ]:
691+ return None , channel_info , o [i - 1 ] # return marker to trigger retry
692+ else :
693+ band = "6G"
694+ iwinfo_bssid_data [o [i - 1 ]] = [o [i + 1 ].replace ('"' , '' ), o [i + 4 ], band ]
695+
696+ return iwinfo_bssid_data , channel_info , None
697+
698+ iwinfo_bssid_data , channel_info , phy_name = parse_iwinfo ()
699+
700+ if iwinfo_bssid_data is None :
701+ logging .warning (
702+ f"Initial iwinfo read shows unknown channel for { phy_name } , waiting 2 minutes before retry..." )
703+ time .sleep (120 ) # wait 2 minutes
704+ iwinfo_bssid_data , channel_info , phy_name = parse_iwinfo ()
705+
706+ if iwinfo_bssid_data is None :
707+ logging .info (f"Error: { phy_name } has an unknown channel frequency from iwinfo after retry" )
708+ pytest .fail (f"Error: { phy_name } has an unknown channel frequency from iwinfo after retry" )
709+
693710 logging .info (f"iwinfo_bssid_data:{ iwinfo_bssid_data } " )
694711 for p in iwinfo_bssid_data :
695712 for q in ssid_info_sdk :
0 commit comments