[rdkb][common][config][Add flow offload feature]
[Description]
Add flow offload feature
1. kernel, mac80211 and mt76 will use flow offload feature to decide patch wed patch or not
[Release-log]
diff --git a/recipes-kernel/linux/linux-mediatek_5.4.bb b/recipes-kernel/linux/linux-mediatek_5.4.bb
index e976566..9a51c17 100644
--- a/recipes-kernel/linux/linux-mediatek_5.4.bb
+++ b/recipes-kernel/linux/linux-mediatek_5.4.bb
@@ -70,13 +70,15 @@
do_filogic_patches() {
cd ${S}
+ DISTRO_FlowBlock_ENABLED="${@bb.utils.contains('DISTRO_FEATURES','flow_offload','true','false',d)}"
if [ ! -e patch_applied ]; then
patch -p1 < ${WORKDIR}/001-rdkb-eth-mtk-change-ifname-for.patch
patch -p1 < ${WORKDIR}/003-rdkb-mtd-kernel-ubi-relayout.patch
patch -p1 < ${WORKDIR}/0600-net-phylink-propagate-resolved-link-config-via-mac_l.patch
patch -p1 < ${WORKDIR}/9010-iwconfig-wireless-rate-fix.patch
-
- for i in ${WORKDIR}/mediatek/flow_patch/*.patch; do patch -p1 < $i; done
+ if [ $DISTRO_FlowBlock_ENABLED = 'true' ]; then
+ for i in ${WORKDIR}/mediatek/flow_patch/*.patch; do patch -p1 < $i; done
+ fi
touch patch_applied
fi
}
diff --git a/recipes-wifi/linux-mac80211/linux-mac80211.bb b/recipes-wifi/linux-mac80211/linux-mac80211.bb
index 93c478b..dc4f026 100644
--- a/recipes-wifi/linux-mac80211/linux-mac80211.bb
+++ b/recipes-wifi/linux-mac80211/linux-mac80211.bb
@@ -24,6 +24,9 @@
require files/patches/build/build.inc
require files/patches/subsys/subsys.inc
+SRC_URI_remove = "${@bb.utils.contains('DISTRO_FEATURES', 'flow_offload', '', 'file://908-mac80211-mtk-mask-kernel-version-limitation-and-fill-for.patch', d)}"
+SRC_URI_remove = "${@bb.utils.contains('DISTRO_FEATURES', 'flow_offload', '', 'file://909-mac80211-mtk-add-fill-receive-path-ops-to-get-wed-idx.patch', d)}"
+
S = "${WORKDIR}/backports-${PV}-1"
do_filogic_patches() {
diff --git a/recipes-wifi/linux-mt76/files/0001-mt76-add-internal-wed_tiny-header-file.patch b/recipes-wifi/linux-mt76/files/0001-mt76-add-internal-wed_tiny-header-file.patch
new file mode 100644
index 0000000..0056540
--- /dev/null
+++ b/recipes-wifi/linux-mt76/files/0001-mt76-add-internal-wed_tiny-header-file.patch
@@ -0,0 +1,72 @@
+From 1430e7a7a3d5ae7693d6fa8e795524ee4c78c0ef Mon Sep 17 00:00:00 2001
+From: Shayne Chen <shayne.chen@mediatek.com>
+Date: Mon, 7 Nov 2022 23:05:51 +0800
+Subject: [PATCH] mt76: add internal wed_tiny header file
+
+To prevent build fail of WED related parts.
+
+Change-Id: I907cae30e0775337a0c670010b450be15b510e18
+---
+ mt76.h | 4 ++++
+ wed_tiny.h | 31 +++++++++++++++++++++++++++++++
+ 2 files changed, 35 insertions(+)
+ create mode 100644 wed_tiny.h
+
+diff --git a/mt76.h b/mt76.h
+index a3cf0d95..5edb986b 100755
+--- a/mt76.h
++++ b/mt76.h
+@@ -13,7 +13,11 @@
+ #include <linux/leds.h>
+ #include <linux/usb.h>
+ #include <linux/average.h>
++#ifdef CONFIG_NET_MEDIATEK_SOC_WED
+ #include <linux/soc/mediatek/mtk_wed.h>
++#else
++#include "wed_tiny.h"
++#endif
+ #include <net/mac80211.h>
+ #include "util.h"
+ #include "testmode.h"
+diff --git a/wed_tiny.h b/wed_tiny.h
+new file mode 100644
+index 00000000..91c98e7d
+--- /dev/null
++++ b/wed_tiny.h
+@@ -0,0 +1,33 @@
++#ifndef __WED_TINY_H
++#define __WED_TINY_H
++
++#include <linux/pci.h>
++
++struct mtk_wed_device {
++};
++
++static inline int
++mtk_wed_device_attach(struct mtk_wed_device *dev)
++{
++ int ret = -ENODEV;
++ return ret;
++}
++
++static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
++{
++ return false;
++}
++#define mtk_wed_device_detach(_dev) do {} while (0)
++#define mtk_wed_device_start(_dev, _mask) do {} while (0)
++#define mtk_wed_device_stop(_dev, _reset) do {} while (0)
++#define mtk_wed_device_tx_ring_setup(_dev, _ring, _regs, _reset) -ENODEV
++#define mtk_wed_device_txfree_ring_setup(_dev, _ring, _regs) -ENODEV
++#define mtk_wed_device_rx_ring_setup(_dev, _ring, _regs, _reset) -ENODEV
++#define mtk_wed_device_reg_read(_dev, _reg) 0
++#define mtk_wed_device_reg_write(_dev, _reg, _val) do {} while (0)
++#define mtk_wed_device_irq_get(_dev, _mask) 0
++#define mtk_wed_device_irq_set_mask(_dev, _mask) do {} while (0)
++#define mtk_wed_device_dma_reset(_dev) do {} while (0)
++#define mtk_wed_device_ppe_check(_dev, _hash) do {} while (0)
++
++#endif
+--
+2.25.1
+
diff --git a/recipes-wifi/linux-mt76/linux-mt76.bb b/recipes-wifi/linux-mt76/linux-mt76.bb
index bf4b282..69d67b0 100644
--- a/recipes-wifi/linux-mt76/linux-mt76.bb
+++ b/recipes-wifi/linux-mt76/linux-mt76.bb
@@ -11,21 +11,53 @@
SRC_URI = " \
git://git@github.com/openwrt/mt76.git;protocol=https \
file://COPYING;subdir=git \
+ file://0001-mt76-add-internal-wed_tiny-header-file.patch;apply=no \
"
SRC_URI += " \
file://src \
"
+
+
DEPENDS += "virtual/kernel"
DEPENDS += "linux-mac80211"
FILESEXTRAPATHS_prepend := "${THISDIR}/files/patches:"
FILESEXTRAPATHS_prepend := "${THISDIR}/src:"
-require files/patches/patches.inc
+#require files/patches/patches.inc
+SRC_URI += "file://*.patch;apply=no"
S = "${WORKDIR}/git"
+do_mtk_patches() {
+ cd ${S}
+
+ DISTRO_FlowBlock_ENABLED="${@bb.utils.contains('DISTRO_FEATURES','flow_offload','true','false',d)}"
+
+ if [ ! -e mtk_wifi_patch_applied ]; then
+ for i in ${WORKDIR}/*.patch
+ do
+ if [ $DISTRO_FlowBlock_ENABLED = 'true' ]; then
+ patch -p1 < $i;
+ else
+ prefix=$(echo -n "${WORKDIR}"|wc -c)
+ patch_number_start=$(expr $prefix + 2)
+ patch_number_end=$(expr $patch_number_start + 3 )
+ patch_number=$(echo "$i" | cut -c"$patch_number_start"-"$patch_number_end")
+
+ if [ "$patch_number" -ge "3000" ]; then
+ continue;
+ else
+ patch -p1 < $i;
+ fi
+ fi
+ done
+ fi
+ touch mtk_wifi_patch_applied
+}
+addtask mtk_patches after do_patch before do_configure
+
NOSTDINC_FLAGS = " \
-I${B} \
-I${STAGING_KERNEL_BUILDDIR}/usr/include/mac80211-backport/uapi \
diff --git a/recipes-wifi/linux-mt76/mt76-test.bb b/recipes-wifi/linux-mt76/mt76-test.bb
index f831b9f..6af254f 100644
--- a/recipes-wifi/linux-mt76/mt76-test.bb
+++ b/recipes-wifi/linux-mt76/mt76-test.bb
@@ -13,9 +13,12 @@
SRC_URI = " \
git://git@github.com/openwrt/mt76.git;protocol=https \
file://COPYING;subdir=git \
+ file://0001-mt76-add-internal-wed_tiny-header-file.patch;apply=no \
"
+
+
DEPENDS += "virtual/kernel"
DEPENDS += "linux-mac80211"
DEPENDS += "linux-mt76"
@@ -29,11 +32,28 @@
SRC_URI += "file://*.patch;apply=no"
-
do_mtk_patches() {
cd ${S}/../
+ DISTRO_FlowBlock_ENABLED="${@bb.utils.contains('DISTRO_FEATURES','flow_offload','true','false',d)}"
+
if [ ! -e mtk_wifi_patch_applied ]; then
- for i in ${WORKDIR}/*.patch; do patch -p1 < $i; done
+ for i in ${WORKDIR}/*.patch
+ do
+ if [ $DISTRO_FlowBlock_ENABLED = 'true' ]; then
+ patch -p1 < $i;
+ else
+ prefix=$(echo -n "${WORKDIR}"|wc -c)
+ patch_number_start=$(expr $prefix + 2)
+ patch_number_end=$(expr $patch_number_start + 3 )
+ patch_number=$(echo "$i" | cut -c"$patch_number_start"-"$patch_number_end")
+
+ if [ "$patch_number" -ge "3000" ]; then
+ continue;
+ else
+ patch -p1 < $i;
+ fi
+ fi
+ done
fi
touch mtk_wifi_patch_applied
}