aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/qca-nss-dp/patches/0015-nss-dp-allow-setting-netdev-name-from-DTS.patch
diff options
context:
space:
mode:
authorRobert Marko <robimarko@gmail.com>2022-08-20 12:39:26 +0200
committerRobert Marko <robimarko@gmail.com>2023-01-16 12:42:23 +0100
commit2558e7b443d08dfdf4a93948e0e56e4f6a4c98f7 (patch)
tree66fb009acc7547d3e6a7a1c31eb5ee235934dbe7 /package/kernel/qca-nss-dp/patches/0015-nss-dp-allow-setting-netdev-name-from-DTS.patch
parentc608f7032576296943f6d0914f226ebcfa1cbe4f (diff)
downloadupstream-2558e7b443d08dfdf4a93948e0e56e4f6a4c98f7.tar.gz
upstream-2558e7b443d08dfdf4a93948e0e56e4f6a4c98f7.tar.bz2
upstream-2558e7b443d08dfdf4a93948e0e56e4f6a4c98f7.zip
kernel: add Qualcomm NSS dataplane ethernet driver
Qualcomm NSS-DP is as its name says Qualcomms ethernet driver for the NSS subsystem (Networking subsystem) built-into various Qualcomm SoCs. It has 2 modes of operation: * Without NSS FW and rest of code required for offloading This is the one that we will use as the amount of kernel patching required for NSS offloading and the fact that its not upstreamable at all makes it unusable for us. Driver in this mode is rather basic, it currently only offers NAPI GRO (Added by us as part of the fixup) and basically relies on the powerfull CPU to get good throughput. * With NSS FW and rest of code required for offloading In this mode, driver just registers the interfaces and hooks them into NSS-ECM to allow offloading. This mode is not viable for use in OpenWrt due to reasons already described above. This driver is required for ipq807x to have wired networking until a better one is available, so lets add the fixed-up version for 5.15 for now. Signed-off-by: Robert Marko <robimarko@gmail.com>
Diffstat (limited to 'package/kernel/qca-nss-dp/patches/0015-nss-dp-allow-setting-netdev-name-from-DTS.patch')
-rw-r--r--package/kernel/qca-nss-dp/patches/0015-nss-dp-allow-setting-netdev-name-from-DTS.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/package/kernel/qca-nss-dp/patches/0015-nss-dp-allow-setting-netdev-name-from-DTS.patch b/package/kernel/qca-nss-dp/patches/0015-nss-dp-allow-setting-netdev-name-from-DTS.patch
new file mode 100644
index 0000000000..b1aebc268f
--- /dev/null
+++ b/package/kernel/qca-nss-dp/patches/0015-nss-dp-allow-setting-netdev-name-from-DTS.patch
@@ -0,0 +1,55 @@
+From 358b93e40d0c6b6d381fe0e9d2a63c45a10321b3 Mon Sep 17 00:00:00 2001
+From: Robert Marko <robimarko@gmail.com>
+Date: Sun, 4 Dec 2022 18:41:36 +0100
+Subject: [PATCH] nss-dp: allow setting netdev name from DTS
+
+Allow reading the desired netdev name from DTS like DSA allows and then
+set it as the netdev name during registration.
+
+If label is not defined, simply fallback to kernel ethN enumeration.
+
+Signed-off-by: Robert Marko <robimarko@gmail.com>
+---
+ nss_dp_main.c | 17 ++++++++++++++---
+ 1 file changed, 14 insertions(+), 3 deletions(-)
+
+diff --git a/nss_dp_main.c b/nss_dp_main.c
+index 18e1088..19e14fb 100644
+--- a/nss_dp_main.c
++++ b/nss_dp_main.c
+@@ -685,18 +685,29 @@ static int32_t nss_dp_probe(struct platform_device *pdev)
+ struct nss_dp_dev *dp_priv;
+ struct device_node *np = pdev->dev.of_node;
+ struct nss_gmac_hal_platform_data gmac_hal_pdata;
++ const char *name = of_get_property(np, "label", NULL);
+ int32_t ret = 0;
++ int assign_type;
+ #if defined(NSS_DP_PPE_SUPPORT)
+ uint32_t vsi_id;
+ fal_port_t port_id;
+ #endif
+
++ if (name) {
++ assign_type = NET_NAME_PREDICTABLE;
++ } else {
++ name = "eth%d";
++ assign_type = NET_NAME_ENUM;
++ }
++
+ /* TODO: See if we need to do some SoC level common init */
+
+- netdev = alloc_etherdev_mqs(sizeof(struct nss_dp_dev),
+- NSS_DP_NETDEV_TX_QUEUE_NUM, NSS_DP_NETDEV_RX_QUEUE_NUM);
++ netdev = alloc_netdev_mqs(sizeof(struct nss_dp_dev),
++ name, assign_type,
++ ether_setup,
++ NSS_DP_NETDEV_TX_QUEUE_NUM, NSS_DP_NETDEV_RX_QUEUE_NUM);
+ if (!netdev) {
+- pr_info("alloc_etherdev() failed\n");
++ dev_err(&pdev->dev, "alloc_netdev_mqs() failed\n");
+ return -ENOMEM;
+ }
+
+--
+2.38.1
+