diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index 3ce3c62..5ea342a 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -801,16 +801,44 @@
     return 0;
 }
 
+/*****
+ *frequency  <------>channel
+ *
+ *frequency   1    2    3    4    5    6    7    8    9   10   11   12   13   36   40   44   48   149  153  157  161  165
+ *
+ *
+ *channel     2412,2417,2422,2427,2532,2437,2442,2447,2452,2457,2462,2467,2472,5180,5200,5220,5240,5745,5765,5785,5805,5825
+ *
+ *
+ * */ 
+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;
+            break;
+        }
+    }
+    if(flag_check == 1){
+        printf("input frequency in range\n");
+    }else{
+        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)
 {
-	char lynq_wifi_frequency_cmd[128]={0};
-	char lynq_cmd_mode[128]={0};
+    char lynq_wifi_frequency_cmd[128]={0};
+    char lynq_cmd_mode[128]={0};
     char lynq_cmd_slect[128]={0};
 
-    if((lynq_wifi_frequency != 2437) && (lynq_wifi_frequency != 5180)){
-        PRINT_AND_RETURN_VALUE("set frequency not in range",-1);
+    //@do check input frequency
+    if((lynq_check_set_frequency(lynq_wifi_frequency)) != 0){
+        return -1;
     }
-
     if (lynq_check_network_number(idx, CTRL_AP, AP_NETWORK_0) != 0) {
         return -1;
     }
