commit | d1340b5dd0b879fb66b599c0dbb70b41d4f2d02e | [log] [tgz] |
---|---|---|
author | developer <developer@mediatek.com> | Mon Mar 03 11:07:22 2025 +0800 |
committer | developer <developer@mediatek.com> | Mon Mar 03 19:27:25 2025 +0800 |
tree | f1d929466e4bcd78d2e013ed049838c1dde4f0e2 | |
parent | 0202018722c394f7df5c8219d1f1ce04c83d85a8 [diff] |
[][kernel-6.6][common][eth][Add Ethernet HW LRO support] [Description] Add Ethernet HW LRO support. We can use the standard interface command to adjust the HW LRO configuration. Add HW LRO RX rule: ethtool -N [interface] flow-type tcp4 dst-ip [IP] action 0 loc [0/1] Delete HW LRO RX rule: ethtool -N [interface] delete [0/1] Enable/Disable HW LRO rule: ethtool -K [interface] lro [on | off] Show the current offload features: ethtool -k [interface] We can use the following command to adjust SMP affinity, ensuring that interrupts are evenly assigned to 4 CPUs: echo [CPU bitmap num] > /proc/irq/[virtual IRQ ID]/smp_affinity. Since HW LRO only has 4 RX rings, we can only accelerate 4 streams simultaneously. We were able to measure RX throughput of 9.4Gbps using iperf3 on the MT7988A. The experimental command is as follows, PC: iperf3 -c [IP] -P 4 DUT: iperf3 -s When we added the HW LRO feature, we also adjusted the global configuration of ADMA and the usage conditions of the page pool, increasing the RX throughput of RSS from 7.3Gbps to 9Gbps. [Release-log] N/A Change-Id: Id6225bb7ffa66da72db223e7b6bf2e558f8b45e5 Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/10305109
Currently two release branches are supported:
21.02 This is the current in-use branch
git clone -b openwrt-21.02 https://git.openwrt.org/openwrt/openwrt.git
master (will be 24.0x branch later) The next version in development
git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt echo "src-git mtk_openwrt_feed https://git01.mediatek.com/openwrt/feeds/mtk-openwrt-feeds" >> feeds.conf.default ./scripts/feeds update -a ./scripts/feeds install -a
21.02 branch
cp -af ./feeds/mtk_openwrt_feed/21.02/files/* . cp -af ./feeds/mtk_openwrt_feed/tools . for file in $(find ./feeds/mtk_openwrt_feed/21.02/patches-base -name "*.patch" | sort); do patch -f -p1 -i ${file}; done for file in $(find ./feeds/mtk_openwrt_feed/21.02/patches-feeds -name "*.patch" | sort); do patch -f -p1 -i ${file}; done
master branch
cp -af ./feeds/mtk_openwrt_feed/master/files/* . for file in $(find ./feeds/mtk_openwrt_feed/master/patches-base -name "*.patch" | sort); do patch -f -p1 -i ${file}; done
make menuconfig
21.02 branch
Target System -> MediaTek Ralink ARM Subtarget -> MT7981 / MT7986 / MT7988 Target Profile -> select as needed
master branch
Target System -> MediaTek Ralink ARM Subtarget -> Filogic 8x0 (MT798x) Target Profile -> select as needed
make V=s -j$(nproc)
#Get Openwrt 21.02 source code from Git server git clone --branch openwrt-21.02 https://git.openwrt.org/openwrt/openwrt.git #Get Openwrt master source code from Git Server git clone --branch master https://git.openwrt.org/openwrt/openwrt.git mac80211_package #Get mtk-openwrt-feeds source code git clone --branch master https://git01.mediatek.com/openwrt/feeds/mtk-openwrt-feeds #Change to openwrt folder cp -rf mtk-openwrt-feeds/autobuild/autobuild_5.4_mac80211_release openwrt cd openwrt; mv autobuild_5.4_mac80211_release autobuild #Add MTK feed echo "src-git mtk_openwrt_feed https://git01.mediatek.com/openwrt/feeds/mtk-openwrt-feeds" >> feeds.conf.default #Build MT7987 (Only for the 1st build) bash autobuild/mt7987-npu/lede-branch-build-sanity.sh #Further Build (After 1st full build) ./scripts/feeds update -a make V=s PKG_HASH=skip PKG_MIRROR_HASH=skip