Merge "[BugFix][API-1444]disable wifi Fw twt to fix Fw Trap 4" into GSW3.0-No-Connman
diff --git a/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/Makefile b/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/Makefile
index ea2fdf2..a99cf49 100755
--- a/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/Makefile
+++ b/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/Makefile
@@ -51,6 +51,9 @@
endif
DHDCFLAGS += $(call cc-disable-warning, date-time)
DHDCFLAGS += $(call cc-disable-warning, stringop-overflow)
+# ifx apply patch to disable twt 20231116
+DHDCFLAGS += -DCUSTOM_CONTROL_TWT_DISABLE
+# ifx apply patch to disable twt 20231116 end
#################
# Common feature
diff --git a/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/dhd.h b/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/dhd.h
index 3d14f18..cc9bb24 100755
--- a/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/dhd.h
+++ b/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/dhd.h
@@ -3498,6 +3498,11 @@
#ifdef CUSTOM_CONTROL_OCE_DISABLE
extern int dhd_control_oce_enab(dhd_pub_t * dhd, uint8 oce_enab);
#endif /* CUSTOM_CONTROL_OCE_DISABLE */
+// apply ifx patch to disable twt 20231116 qs.xiong
+#ifdef CUSTOM_CONTROL_TWT_DISABLE
+int dhd_control_twt_enab(dhd_pub_t * dhd, uint8 twt_enab);
+#endif /* CUSTOM_CONTROL_TWT_DISABLE */
+// apply ifx patch to disable twt 20231116 qs.xiong end
#if defined(BCMSDIO)
void dhd_set_role(dhd_pub_t *dhdp, int role, int bssidx);
diff --git a/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/dhd_common.c b/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/dhd_common.c
index d56ea16..3019956 100755
--- a/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/dhd_common.c
+++ b/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/dhd_common.c
@@ -7993,3 +7993,37 @@
return ret;
}
#endif /* CUSTOM_CONTROL_OCE_DISABLE */
+
+// apply ifx patch to disable twt 20231116
+#ifdef CUSTOM_CONTROL_TWT_DISABLE
+int
+dhd_control_twt_enab(dhd_pub_t * dhd, uint8 twt_enab)
+{
+ int ret = BCME_OK;
+ bcm_xtlv_t *pxtlv = NULL;
+ uint8 mybuf[DHD_IOVAR_BUF_SIZE];
+ uint16 mybuf_len = sizeof(mybuf);
+ pxtlv = (bcm_xtlv_t *)mybuf;
+
+ ret = bcm_pack_xtlv_entry((uint8**)&pxtlv, &mybuf_len, WL_TWT_CMD_ENAB, sizeof(twt_enab),
+ &twt_enab, BCM_XTLV_OPTION_ALIGN32);
+
+ if (ret != BCME_OK) {
+ ret = -EINVAL;
+ DHD_ERROR(("%s failed to pack twt enab, err: %s\n", __FUNCTION__, bcmerrorstr(ret)));
+ return ret;
+ }
+
+ ret = dhd_iovar(dhd, 0, "twt", (char *)&mybuf, sizeof(mybuf), NULL, 0, TRUE);
+ if (ret < 0) {
+ DHD_ERROR(("%s twt_enab (%d) set failed, err: %s\n",
+ __FUNCTION__, twt_enab, bcmerrorstr(ret)));
+ } else {
+ DHD_ERROR(("%s twt_enab (%d) set successed\n", __FUNCTION__, twt_enab));
+ }
+
+ return ret;
+}
+#endif /* CUSTOM_CONTROL_TWT_DISABLE */
+// apply ifx patch to disable twt 20231116 qs.xiong 20231116
+
diff --git a/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/dhd_linux.c b/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/dhd_linux.c
index 1d0bdc4..25d9476 100755
--- a/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/dhd_linux.c
+++ b/src/kernel/linux/v4.19/drivers/net/wireless/bcmdhd/dhd_linux.c
@@ -11231,6 +11231,11 @@
#ifdef CUSTOM_CONTROL_OCE_DISABLE
dhd_control_oce_enab(dhd, FALSE);
#endif /* CUSTOM_CONTROL_OCE_DISABLE */
+// apply ifx patch to disable twt 20231116 qs.xiong
+#ifdef CUSTOM_CONTROL_TWT_DISABLE
+ dhd_control_twt_enab(dhd, FALSE);
+#endif /* CUSTOM_CONTROL_TWT_DISABLE */
+// apply ifx patch to disable twt 20231116 qs.xiong end
#ifdef CUSTOM_PSPRETEND_THR
/* Turn off MPC in AP mode */