File 0006-kni-use-dedicated-function-to-set-MAC-address.patch of Package dpdk.38653

index 0db29a4a6f..3a86d12bbc 100644
Index: dpdk-stable-19.11.10/kernel/linux/kni/compat.h
===================================================================
--- dpdk-stable-19.11.10.orig/kernel/linux/kni/compat.h
+++ dpdk-stable-19.11.10/kernel/linux/kni/compat.h
@@ -141,6 +141,10 @@
 #define HAVE_TX_TIMEOUT_TXQUEUE
 #endif
 
+/*#if KERNEL_VERSION(5, 15, 0) <= LINUX_VERSION_CODE*/
+#define HAVE_ETH_HW_ADDR_SET
+/*#endif*/
+
 #if KERNEL_VERSION(5, 9, 0) > LINUX_VERSION_CODE
 #define HAVE_TSK_IN_GUP
 #endif
Index: dpdk-stable-19.11.10/kernel/linux/kni/kni_misc.c
===================================================================
--- dpdk-stable-19.11.10.orig/kernel/linux/kni/kni_misc.c
+++ dpdk-stable-19.11.10/kernel/linux/kni/kni_misc.c
@@ -394,11 +394,16 @@ kni_ioctl_create(struct net *net, uint32
 	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;
Index: dpdk-stable-19.11.10/kernel/linux/kni/kni_net.c
===================================================================
--- dpdk-stable-19.11.10.orig/kernel/linux/kni/kni_net.c
+++ dpdk-stable-19.11.10/kernel/linux/kni/kni_net.c
@@ -752,7 +752,11 @@ kni_net_set_mac(struct net_device *netde
 		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
 
 	kni = netdev_priv(netdev);
 	ret = kni_net_process_request(kni, &req);
openSUSE Build Service is sponsored by