diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index 78c756e..369c6b6 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -832,34 +832,40 @@
  *
  * */ 
 static int lynq_check_set_frequency(int input_frequency){
-    static int legitimate_frequency[21]={2412,2417,2422,2427,2432,2437,2442,2447,2452,2457,2462,2467,2472,5180,5200,5220,5240,5745,5765,5785,5805,5825};
-    int i = 0;
-    int flag_check = 0;
-    for(i=0 ;i<= 21; i++){
-        if(input_frequency == legitimate_frequency[i]){
-            flag_check = 1;
+    int legitimate_frequency[]={2412,2417,2422,2427,2432,2437,2442,2447,2452,2457,2462,2467,2472,5180,5200,5220,5240,5745,5765,5785,5805,5825};
+    int i;
+    int arr_len = sizeof(legitimate_frequency) / sizeof(int);
+
+    for(i = 0; i <= arr_len; i++)
+    {
+        if(input_frequency == legitimate_frequency[i])
             break;
-        }
     }
-    if(flag_check == 1){
-        printf("input frequency in range\n");
-    }else{
-        printf("input frequency is eero--->%d,please check it\n",input_frequency);
+
+    if(i == arr_len)
+    {
+        printf("input frequency is eero--->%d,please check it\n", input_frequency);
         return -1;
     }
+
     return 0;
 }
 int lynq_wifi_ap_frequency_set(lynq_wifi_index_e idx,int lynq_wifi_frequency)
 {
+    int check;
     char lynq_wifi_frequency_cmd[128]={0};
     char lynq_cmd_mode[128]={0};
     char lynq_cmd_slect[128]={0};
 
     //@do check input frequency
-    if((lynq_check_set_frequency(lynq_wifi_frequency)) != 0){
+    check = lynq_check_set_frequency(lynq_wifi_frequency);
+    if(check != 0)
+    {
+        printf("do check frequency error\n");
         return -1;
     }
-    if (lynq_check_network_number(idx, CTRL_AP, AP_NETWORK_0) != 0) {
+    if (lynq_check_network_number(idx, CTRL_AP, AP_NETWORK_0) != 0)
+    {
         return -1;
     }
 
