90 lines
2.7 KiB
Diff
90 lines
2.7 KiB
Diff
|
|
From 4cfe56040171e791b021d5490f8fd58c55b088fb Mon Sep 17 00:00:00 2001
|
|||
|
|
From: Ke Zhang <ke1x.zhang@intel.com>
|
|||
|
|
Date: Wed, 8 Jun 2022 15:11:17 +0300
|
|||
|
|
Subject: [PATCH] kni: use dedicated function to set MAC address
|
|||
|
|
MIME-Version: 1.0
|
|||
|
|
Content-Type: text/plain; charset=UTF-8
|
|||
|
|
Content-Transfer-Encoding: 8bit
|
|||
|
|
|
|||
|
|
[ upstream commit b99bd4a0aacab47165d045a6aeee88ee74744600 ]
|
|||
|
|
|
|||
|
|
The warning info:
|
|||
|
|
warning: passing argument 1 of ‘memcpy’ discards ‘const’
|
|||
|
|
qualifier from pointer target type
|
|||
|
|
|
|||
|
|
Variable dev_addr is done const intentionally in v5.17 to prevent using
|
|||
|
|
it directly. See the following Linux kernel changeset for details:
|
|||
|
|
|
|||
|
|
commit adeef3e32146 ("net: constify netdev->dev_addr")
|
|||
|
|
|
|||
|
|
Used helper function was introduced earlier in v5.15.
|
|||
|
|
|
|||
|
|
Fixes: ea6b39b5b847 ("kni: remove ethtool support")
|
|||
|
|
|
|||
|
|
Signed-off-by: Ke Zhang <ke1x.zhang@intel.com>
|
|||
|
|
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
|
|||
|
|
Acked-by: Ferruh Yigit <ferruh.yigit@xilinx.com>
|
|||
|
|
---
|
|||
|
|
kernel/linux/kni/compat.h | 4 ++++
|
|||
|
|
kernel/linux/kni/kni_misc.c | 9 +++++++--
|
|||
|
|
kernel/linux/kni/kni_net.c | 4 ++++
|
|||
|
|
3 files changed, 15 insertions(+), 2 deletions(-)
|
|||
|
|
|
|||
|
|
diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h
|
|||
|
|
index 0db29a4a6f..3a86d12bbc 100644
|
|||
|
|
--- a/kernel/linux/kni/compat.h
|
|||
|
|
+++ b/kernel/linux/kni/compat.h
|
|||
|
|
@@ -142,6 +142,10 @@
|
|||
|
|
#define HAVE_TSK_IN_GUP
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
+#if KERNEL_VERSION(5, 15, 0) <= LINUX_VERSION_CODE
|
|||
|
|
+#define HAVE_ETH_HW_ADDR_SET
|
|||
|
|
+#endif
|
|||
|
|
+
|
|||
|
|
#if KERNEL_VERSION(5, 18, 0) > LINUX_VERSION_CODE
|
|||
|
|
#define HAVE_NETIF_RX_NI
|
|||
|
|
#endif
|
|||
|
|
diff --git a/kernel/linux/kni/kni_misc.c b/kernel/linux/kni/kni_misc.c
|
|||
|
|
index 38fcd7f4f2..feed12b568 100644
|
|||
|
|
--- a/kernel/linux/kni/kni_misc.c
|
|||
|
|
+++ b/kernel/linux/kni/kni_misc.c
|
|||
|
|
@@ -404,11 +404,16 @@ kni_ioctl_create(struct net *net, uint32_t ioctl_num,
|
|||
|
|
pr_debug("mbuf_size: %u\n", kni->mbuf_size);
|
|||
|
|
|
|||
|
|
/* if user has provided a valid mac address */
|
|||
|
|
- if (is_valid_ether_addr(dev_info.mac_addr))
|
|||
|
|
+ if (is_valid_ether_addr(dev_info.mac_addr)) {
|
|||
|
|
+#ifdef HAVE_ETH_HW_ADDR_SET
|
|||
|
|
+ eth_hw_addr_set(net_dev, dev_info.mac_addr);
|
|||
|
|
+#else
|
|||
|
|
memcpy(net_dev->dev_addr, dev_info.mac_addr, ETH_ALEN);
|
|||
|
|
- else
|
|||
|
|
+#endif
|
|||
|
|
+ } else {
|
|||
|
|
/* Assign random MAC address. */
|
|||
|
|
eth_hw_addr_random(net_dev);
|
|||
|
|
+ }
|
|||
|
|
|
|||
|
|
if (dev_info.mtu)
|
|||
|
|
net_dev->mtu = dev_info.mtu;
|
|||
|
|
diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c
|
|||
|
|
index 41805fcabf..779ee3451a 100644
|
|||
|
|
--- a/kernel/linux/kni/kni_net.c
|
|||
|
|
+++ b/kernel/linux/kni/kni_net.c
|
|||
|
|
@@ -783,7 +783,11 @@ kni_net_set_mac(struct net_device *netdev, void *p)
|
|||
|
|
return -EADDRNOTAVAIL;
|
|||
|
|
|
|||
|
|
memcpy(req.mac_addr, addr->sa_data, netdev->addr_len);
|
|||
|
|
+#ifdef HAVE_ETH_HW_ADDR_SET
|
|||
|
|
+ eth_hw_addr_set(netdev, addr->sa_data);
|
|||
|
|
+#else
|
|||
|
|
memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
|
|||
|
|
+#endif
|
|||
|
|
|
|||
|
|
ret = kni_net_process_request(netdev, &req);
|
|||
|
|
|
|||
|
|
--
|
|||
|
|
2.23.0
|
|||
|
|
|