From 937b63e7d8e0c43c71158bfad0f7b4281269d55f Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 31 Oct 2020 20:13:29 +0100 Subject: [PATCH] Implement Roaming assistant (closes #56) --- release/src/router/rc/init.c | 1 + release/src/router/rc/lan.c | 4 ++-- release/src/router/rc/services.c | 26 ++++++++++++++++++++++---- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/release/src/router/rc/init.c b/release/src/router/rc/init.c index 87f0576a0b..31d2bbcf84 100644 --- a/release/src/router/rc/init.c +++ b/release/src/router/rc/init.c @@ -3858,6 +3858,7 @@ int init_nvram(void) add_rc_support("rawifi"); add_rc_support("11AC"); add_rc_support("manual_stb"); + add_rc_support("user_low_rssi"); add_rc_support("loclist"); add_rc_support("mfp"); nvram_set("wl0_HT_TxStream", "2"); diff --git a/release/src/router/rc/lan.c b/release/src/router/rc/lan.c index c729f80d08..1d4b0f9097 100644 --- a/release/src/router/rc/lan.c +++ b/release/src/router/rc/lan.c @@ -5845,9 +5845,9 @@ void restart_wireless(void) if(nvram_get_int("AllLED") == 0) setAllLedOff(); #endif -#ifdef RTCONFIG_NEW_USER_LOW_RSSI +//#ifdef RTCONFIG_NEW_USER_LOW_RSSI start_roamast(); -#endif +//#endif #if defined(RTCONFIG_RALINK_MT7621) setup_smp(); /* for adjust smp_affinity of cpu */ diff --git a/release/src/router/rc/services.c b/release/src/router/rc/services.c index 92cca5292f..1cf434b2b2 100644 --- a/release/src/router/rc/services.c +++ b/release/src/router/rc/services.c @@ -7549,9 +7549,9 @@ start_services(void) #ifdef RTCONFIG_QCA_PLC_UTILS start_plchost(); #endif -#ifdef RTCONFIG_NEW_USER_LOW_RSSI +//#ifdef RTCONFIG_NEW_USER_LOW_RSSI start_roamast(); -#endif +//#endif #if defined(RTCONFIG_KEY_GUARD) start_keyguard(); @@ -11773,9 +11773,9 @@ _dprintf("multipath(%s): unit_now: (%d, %d, %s), unit_next: (%d, %d, %s).\n", mo start_dnsmasq(); start_httpd(); start_telnetd(); -#ifdef RTCONFIG_NEW_USER_LOW_RSSI +//#ifdef RTCONFIG_NEW_USER_LOW_RSSI start_roamast(); -#endif +//#endif #ifdef RTCONFIG_SSH start_sshd(); @@ -13594,6 +13594,24 @@ void start_roamast(void){ } } } +#elif defined(RTMIR3G) || defined(RTMIR4A) || defined(RTRM2100) || defined(RTR2100) +void start_roamast(void){ + int rssi, i; + char prefix[] = "wl_XXXXX"; + char cmd[64], tmp[32]; + for (i = 0; i < 2; i++) { + sprintf(prefix, "wl%d_", i); + rssi = nvram_get_int(strcat_r(prefix, "user_rssi", tmp)); + if ((rssi < -1) && (rssi > -100)) { + snprintf(cmd, 64, "iwpriv ra%s0 set KickStaRssiLow=%d", i ? "i" : "", rssi); + system(cmd); + snprintf(cmd, 64, "iwpriv ra%s0 set AssocReqRssiThres=%d", i ? "i" : "", rssi); + system(cmd); + } + } +} +#else +inline void start_roamast(void) {} #endif #if defined(RTCONFIG_KEY_GUARD)