I found a solution! Refer the following link:
https://www.gargoyle-router.com/phpbb/viewtopic.php?f=7&t=8614
1-- Set SquashFS to 1024K
2-- Disable Kernel Debug
3-- Disable unnecessary package
And I have referenced some configuration from following link:
THX for @amq
OpenWRT Configuration:
_Target Devices -> TP-Link TL-WR840N-v2
【Enable】:
_Target Images -> squashfs -> Block size -> 1024
_Global build settings -> Strip unnecessary exports from the kernel image + Strip unnecessary functions from libraries
_LuCI -> Collections -> luci-ssl
_LuCI -> Applications -> luci-app-adblock
_LuCI -> Applications -> luci-app-ddns or luci-app-mqs
_LuCI -> Applications -> luci-app-upnp
【Disable】:
_Global build settings -> Kernel build options -> everything
_Global build settings -> Enable IPv6 support in package
_Kernel modules -> Wireless Drivers -> kmod-ath9k -> Support for Ubiquiti Unify Outdoor+
_Kernel modules -> Wireless Drivers -> kmod-mac80211 -> Export mac80211 internals in DebugFS
_Kernel modules -> Wireless Drivers -> kmod-ath -> Force Atheros drivers to respect the user's regdomain settings + Enable DFS support
_Kernel modules -> USB -> everything
I build a Test version(LEDE TP-Link TL-WR840N-v2 For 4M flash):
OPENWRT/LEDE TP-LINK WR840N v2 (Eu) Special Firmware for 4M Flash
Function List:
SFE(Qualcomm FAST PATCH) / SQM-QOS / UPNP / IPv6 Support / VLAN Support / WIFI-Schedule / Bandwidth-Montior / ARP Binding / Wake-On-Lan / Auto Reboot
https://drive.google.com/open?id=1UoCyLy-1t_ilAhGPI7XsLV4GygRN1kDv
[Update 2018-Feb-4] v0.42 (English+Chinese)
LUCI-SFE-SQM-UPNP-IPv6-VLAN-WifiSchedule-BandwidthMontior-ArpBinding-WOL-AutoReboot