[rdkb][common][bsp][Refactor and sync kernel from openwrt]
[Description]
6427cab [MAC80211][app][Update smp.sh for eth2]
87b6df6 [MAC80211][infra][Update dts for mt76 to support flash mode]
98ac6c0 [kernel][common][eth][Add phy state sanity check to heartbeat thread for Aquantia firwmare download]
[Release-log]
Change-Id: Ia4c8cfb59a43343a6b4f2d32e7b57b3c8ef44f50
diff --git a/recipes-devtools/smp/files/001-rdkb-smp-ifname.patch b/recipes-devtools/smp/files/001-rdkb-smp-ifname.patch
new file mode 100644
index 0000000..fc0e19b
--- /dev/null
+++ b/recipes-devtools/smp/files/001-rdkb-smp-ifname.patch
@@ -0,0 +1,44 @@
+diff --git a/smp-mt76.sh b/smp-mt76.sh
+index b71c90a..d43ebe8 100755
+--- a/smp-mt76.sh
++++ b/smp-mt76.sh
+@@ -5,7 +5,8 @@ CPU_LIST=`cat /proc/interrupts | sed -n '1p'`
+ NUM_OF_CPU=0; for i in $CPU_LIST; do NUM_OF_CPU=`expr $NUM_OF_CPU + 1`; done;
+ DEFAULT_RPS=0
+
+-. /lib/functions.sh
++#. /lib/functions.sh
++board_name=`cat /proc/device-tree/model`
+
+ RPS_IF_LIST=""
+ NUM_WIFI_CARD=0
+@@ -22,9 +23,9 @@ get_if_info()
+ NET_IF_LIST=`ls /sys/class/net`
+ for vif in $NET_IF_LIST;
+ do
+- if [[ "$vif" == "eth"* ]] || \
++ if [[ "$vif" == "eth"* ]] || [[ "$vif" == "erouter"* ]] || \
+ [[ "$vif" == "lan"* ]] || [[ "$vif" == "wan"* ]] || \
+- [[ "$vif" == "wlan"* ]] || [[ "$vif" == "phy"* ]]; then
++ [[ "$vif" == "wlan"* ]] || [[ "$vif" == "wifi"* ]]; then
+ RPS_IF_LIST="$RPS_IF_LIST $vif"
+ fi
+ done;
+@@ -122,7 +123,7 @@ MT7988()
+
+ for vif in $NET_IF_LIST;
+ do
+- if [[ "$vif" == "wlan"* ]] || [[ "$vif" == "phy"* ]]; then
++ if [[ "$vif" == "wlan"* ]] || [[ "$vif" == "wifi"* ]]; then
+ WIFI_IF_LIST="$WIFI_IF_LIST $vif"
+ fi
+ done;
+@@ -325,7 +326,7 @@ MT7622()
+
+ setup_model()
+ {
+- board=$(board_name)
++ board=$board_name
+ num_of_wifi=$NUM_WIFI_CARD
+
+ if [[ $board == *"7988"* ]]; then
diff --git a/recipes-devtools/smp/files/smp-mt76.sh b/recipes-devtools/smp/files/smp-mt76.sh
index a03bd7c..b71c90a 100644
--- a/recipes-devtools/smp/files/smp-mt76.sh
+++ b/recipes-devtools/smp/files/smp-mt76.sh
@@ -5,8 +5,8 @@
NUM_OF_CPU=0; for i in $CPU_LIST; do NUM_OF_CPU=`expr $NUM_OF_CPU + 1`; done;
DEFAULT_RPS=0
-#. /lib/functions.sh
-board_name=`cat /proc/device-tree/model`
+. /lib/functions.sh
+
RPS_IF_LIST=""
NUM_WIFI_CARD=0
WIFI_RADIO1=0
@@ -14,6 +14,7 @@
WIFI_RADIO3=0
WED_ENABLE=0
+module_param=/sys/module/mt7915e/parameters/wed_enable
get_if_info()
{
# try to get all wifi and eth net interface.
@@ -21,9 +22,9 @@
NET_IF_LIST=`ls /sys/class/net`
for vif in $NET_IF_LIST;
do
- if [[ "$vif" == "erouter"* ]] || [[ "$vif" == "eth1" ]] || \
- [[ "$vif" == "lan"* ]] || \
- [[ "$vif" == "wifi"* ]]; then
+ if [[ "$vif" == "eth"* ]] || \
+ [[ "$vif" == "lan"* ]] || [[ "$vif" == "wan"* ]] || \
+ [[ "$vif" == "wlan"* ]] || [[ "$vif" == "phy"* ]]; then
RPS_IF_LIST="$RPS_IF_LIST $vif"
fi
done;
@@ -39,9 +40,10 @@
if [[ $v == *"wmac"* ]]; then
WIFI_RADIO1=1
fi
+
if [[ $v == *"wbsys"* ]]; then
- WIFI_RADIO1=1
- fi
+ WIFI_RADIO1=1
+ fi
if [[ $v == *"pci0000"* ]]; then
WIFI_RADIO2=1
@@ -52,7 +54,10 @@
fi
done;
- WED_ENABLE_LIST=`cat /sys/module/mt7915e/parameters/wed_enable`
+ WED_ENABLE_LIST=
+ if [[ -f "$module_param" ]]; then
+ WED_ENABLE_LIST=`cat $module_param`
+ fi
for v in $WED_ENABLE_LIST;
do
dbg2 "wed enable ori info $v"
@@ -84,6 +89,75 @@
dbg2 "CPU${1}_RPS=\"\$CPU${1}_RPS $2\""
}
+MT7988()
+{
+ num_of_wifi=$1
+ DEFAULT_RPS=0
+
+ #Physical IRQ# setting
+ eth0_irq=229
+ eth1_irq=230
+ eth2_irq=231
+ wifi1_irq_pcie0=524288
+ wifi1_irq_pcie1=134742016
+ wifi2_irq_pcie0=
+ wifi2_irq_pcie1=
+
+ if [[ "$WED_ENABLE" -eq "1" ]]; then
+ dbg2 "WED_ENABLE ON irq/iptable setting"
+ #TCP Binding
+ iptables -D FORWARD -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -j FLOWOFFLOAD --hw
+ iptables -I FORWARD -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -j FLOWOFFLOAD --hw
+ ip6tables -D FORWARD -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -j FLOWOFFLOAD --hw
+ ip6tables -I FORWARD -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -j FLOWOFFLOAD --hw
+ #UDP Binding
+ iptables -D FORWARD -p udp -j FLOWOFFLOAD --hw
+ iptables -I FORWARD -p udp -j FLOWOFFLOAD --hw
+ ip6tables -D FORWARD -p udp -j FLOWOFFLOAD --hw
+ ip6tables -I FORWARD -p udp -j FLOWOFFLOAD --hw
+
+ else
+ dbg2 "WED_ENABLE OFF irq/iptable seting"
+ fi
+
+ for vif in $NET_IF_LIST;
+ do
+ if [[ "$vif" == "wlan"* ]] || [[ "$vif" == "phy"* ]]; then
+ WIFI_IF_LIST="$WIFI_IF_LIST $vif"
+ fi
+ done;
+ dbg2 "$WIFI_IF_LIST = $WIFI_IF_LIST"
+ # Please update the CPU binding in each cases.
+ # CPU#_AFFINITY="add binding irq number here"
+ # CPU#_RPS="add binding interface name here"
+ if [ "$num_of_wifi" = "0" ]; then
+ CPU0_AFFINITY="$eth0_irq"
+ CPU1_AFFINITY="$eth1_irq"
+ CPU2_AFFINITY="$eth2_irq"
+ CPU3_AFFINITY=""
+
+ CPU0_RPS="$RPS_IF_LIST"
+ CPU1_RPS="$RPS_IF_LIST"
+ CPU2_RPS="$RPS_IF_LIST"
+ CPU3_RPS="$RPS_IF_LIST"
+ else
+ #we bound all wifi card to cpu0 and bound eth to cpu
+ CPU0_AFFINITY=""
+ CPU1_AFFINITY=""
+ CPU2_AFFINITY="$eth1_irq"
+ CPU3_AFFINITY="$eth0_irq $eth2_irq"
+
+ CPU0_RPS="$WIFI_IF_LIST"
+ CPU1_RPS="$WIFI_IF_LIST"
+ CPU2_RPS="$WIFI_IF_LIST"
+ CPU3_RPS=""
+ fi
+ dbg2 "CPU0_AFFINITY = $CPU0_AFFINITY"
+ dbg2 "CPU1_AFFINITY = $CPU1_AFFINITY"
+ dbg2 "CPU2_AFFINITY = $CPU2_AFFINITY"
+ dbg2 "CPU3_AFFINITY = $CPU3_AFFINITY"
+}
+
MT7986()
{
num_of_wifi=$1
@@ -251,10 +325,13 @@
setup_model()
{
- board=$board_name
+ board=$(board_name)
num_of_wifi=$NUM_WIFI_CARD
- if [[ $board == *"7986"* ]]; then
+ if [[ $board == *"7988"* ]]; then
+ dbg "setup_model: MT7988 NUM_WIFI_CARD=$num_of_wifi"
+ MT7988 $num_of_wifi
+ elif [[ $board == *"7986"* ]]; then
dbg "setup_model: MT7986 NUM_WIFI_CARD=$num_of_wifi"
MT7986 $num_of_wifi
elif [[ $board == *"7981"* ]]; then
diff --git a/recipes-devtools/smp/files/smp.service b/recipes-devtools/smp/files/smp.service
index e0d91ec..4473e08 100644
--- a/recipes-devtools/smp/files/smp.service
+++ b/recipes-devtools/smp/files/smp.service
@@ -7,6 +7,7 @@
Type=oneshot
#StandardOutput=kmsg+console
ExecStart=/bin/sh /usr/sbin/smp-mt76.sh
+RemainAfterExit=yes
[Install]
WantedBy=wifi-initialized.target
diff --git a/recipes-devtools/smp/smp_1.0.bb b/recipes-devtools/smp/smp_1.0.bb
index ce7b2ba..ceaaf88 100644
--- a/recipes-devtools/smp/smp_1.0.bb
+++ b/recipes-devtools/smp/smp_1.0.bb
@@ -10,6 +10,7 @@
file://COPYING \
file://smp-mt76.sh \
file://smp.service \
+ file://001-rdkb-smp-ifname.patch \
"
SYSTEMD_PACKAGES = "${PN}"
@@ -18,7 +19,7 @@
do_install() {
install -d ${D}${sbindir}
- install -m 0755 ${WORKDIR}/smp-mt76.sh ${D}${sbindir}
+ install -m 0755 ${S}/smp-mt76.sh ${D}${sbindir}
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${S}/smp.service ${D}${systemd_unitdir}/system
}
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988.dtsi b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988.dtsi
index 3dd999f..46f0708 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988.dtsi
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988.dtsi
@@ -582,6 +582,10 @@
#interrupt-cells = <1>;
interrupt-controller;
};
+
+ slot0: pcie@0,0 {
+ reg = <0x0000 0 0 0 0>;
+ };
};
pcie1: pcie@11310000 {
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts
index c7aa87b..0352d83 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts
@@ -490,3 +490,11 @@
mtketh-max-gmac = <3>;
status = "okay";
};
+
+&slot0 {
+ mt7996@0,0 {
+ reg = <0x0000 0 0 0 0>;
+ device_type = "pci";
+ mediatek,mtd-eeprom = <&factory 0x0>;
+ };
+};
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand.dts
index 58d0733..6045169 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand.dts
@@ -449,3 +449,11 @@
no-sdio;
status = "okay";
};
+
+&slot0 {
+ mt7996@0,0 {
+ reg = <0x0000 0 0 0 0>;
+ device_type = "pci";
+ mediatek,mtd-eeprom = <&factory 0x0>;
+ };
+};
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/patches-5.4/751-net-phy-aquantia-add-firmware-download.patch b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/patches-5.4/751-net-phy-aquantia-add-firmware-download.patch
index f568322..6eb5bf4 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/patches-5.4/751-net-phy-aquantia-add-firmware-download.patch
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/patches-5.4/751-net-phy-aquantia-add-firmware-download.patch
@@ -148,7 +148,7 @@
index 0000000..7aeec86
--- /dev/null
+++ b/drivers/net/phy/aquantia_firmware.c
-@@ -0,0 +1,1095 @@
+@@ -0,0 +1,1096 @@
+// SPDX-License-Identifier: GPL-2.0
+/* FW download driver for Aquantia PHY
+ */
@@ -1062,7 +1062,8 @@
+ if (kthread_should_stop())
+ break;
+
-+ if (aqr_firmware_check_heartbeat(phydev) == 1) {
++ if (phydev->state != PHY_HALTED &&
++ aqr_firmware_check_heartbeat(phydev) == 1) {
+ priv->fw_initialized = false;
+ aqr_firmware_download_single(phydev);
+ }