Merge "[rdk-b][all][wifi][Refactor iw patches to support wifi-hal]"
diff --git a/recipes-ccsp/hal/hal-wifi-patches/0033-HAL-refactor-set-Fragmentation-Threshold-function.patch b/recipes-ccsp/hal/hal-wifi-patches/0033-HAL-refactor-set-Fragmentation-Threshold-function.patch
new file mode 100644
index 0000000..9614726
--- /dev/null
+++ b/recipes-ccsp/hal/hal-wifi-patches/0033-HAL-refactor-set-Fragmentation-Threshold-function.patch
@@ -0,0 +1,49 @@
+From a87dd56b40faca3bc78a626a5bdb3c45b9723b20 Mon Sep 17 00:00:00 2001
+From: "Allen.Ye" <allen.ye@mediatek.com>
+Date: Tue, 2 Aug 2022 10:03:46 +0800
+Subject: [PATCH] HAL: refactor set Fragmentation Threshold function
+
+---
+ source/wifi/wifi_hal.c | 25 +++++++++++++++----------
+ 1 file changed, 15 insertions(+), 10 deletions(-)
+
+diff --git a/source/wifi/wifi_hal.c b/source/wifi/wifi_hal.c
+index 556c73f..e49f22f 100644
+--- a/source/wifi/wifi_hal.c
++++ b/source/wifi/wifi_hal.c
+@@ -3623,17 +3623,22 @@ INT wifi_setRadioObssCoexistenceEnable(INT apIndex, BOOL enable)
+ //P3 // sets the fragmentation threshold in bytes for the radio used by this ap
+ INT wifi_setRadioFragmentationThreshold(INT apIndex, UINT threshold)
+ {
+-    char cmd[64];
+-    char buf[512];
+-    //save config and apply instantly
++    char config_file[MAX_BUF_SIZE] = {'\0'};
++    char buf[MAX_BUF_SIZE] = {'\0'};
++    struct params list;
+ 
+-    //zqiu:TODO: save config
+-    if (threshold > 0)  {
+-        snprintf(cmd, sizeof(cmd),  "iwconfig %s%d frag %d", AP_PREFIX, apIndex, threshold);
+-    } else {
+-        snprintf(cmd, sizeof(cmd),  "iwconfig %s%d frag off", AP_PREFIX, apIndex );
+-    }
+-    _syscmd(cmd,buf, sizeof(buf));
++    WIFI_ENTRY_EXIT_DEBUG("Inside %s:%d\n",__func__, __LINE__);
++    if (threshold < 256 || threshold > 2346 )
++        return RETURN_ERR;
++    list.name = "fragm_threshold";
++    snprintf(buf, sizeof(buf), "%d", threshold);
++    list.value = buf;
++
++    snprintf(config_file, sizeof(config_file), "%s%d.conf", CONFIG_PREFIX, apIndex);
++    wifi_hostapdWrite(config_file, &list, 1);
++    wifi_hostapdProcessUpdate(apIndex, &list, 1);
++
++    WIFI_ENTRY_EXIT_DEBUG("Exiting %s:%d\n",__func__, __LINE__);
+ 
+     return RETURN_OK;
+ }
+-- 
+2.18.0
+