diff --git a/wifi/services/wifi_standard/wifi_hal/wifi_hal_module/wpa_supplicant_hal/wifi_wpa_hal.c b/wifi/services/wifi_standard/wifi_hal/wifi_hal_module/wpa_supplicant_hal/wifi_wpa_hal.c index fc46a16be011e3008f00f2321867eab34ae35a19..8405b8c9d153baadcad61ebaf1bc98814317e9e8 100644 --- a/wifi/services/wifi_standard/wifi_hal/wifi_hal_module/wpa_supplicant_hal/wifi_wpa_hal.c +++ b/wifi/services/wifi_standard/wifi_hal/wifi_hal_module/wpa_supplicant_hal/wifi_wpa_hal.c @@ -656,6 +656,8 @@ static void *WpaReceiveCallback(void *arg) if (arg == NULL) { return NULL; } + char staIface[] = "IFACE=wlan"; + char p2pIface[] = "IFACE=p2p"; WifiWpaInterface *pWpa = arg; char *buf = (char *)calloc(REPLY_BUF_LENGTH, sizeof(char)); if (buf == NULL) { @@ -693,10 +695,23 @@ static void *WpaReceiveCallback(void *arg) if (strncmp(p, WPA_EVENT_TERMINATING, strlen(WPA_EVENT_TERMINATING)) == 0) { break; } - if (WpaP2pCallBackFunc(p) == 0) { + char *iface = strstr(buf, "IFACE="); + if (iface == NULL) { + /* if 'IFACE=' is not reported */ + if (WpaP2pCallBackFunc(p) == 0) { + continue; + } + WpaCallBackFunc(p); continue; } - WpaCallBackFunc(p); + if (strncmp(iface, p2pIface, strlen(p2pIface)) == 0) { + if (WpaP2pCallBackFunc(p) == 0) { + continue; + } + } + if (strncmp(iface, staIface, strlen(staIface)) == 0) { + WpaCallBackFunc(p); + } } free(buf); buf = NULL;