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
+