]> git.droids-corp.org - dpdk.git/commitdiff
kni: use dedicated function to set MAC address
authorKe Zhang <ke1x.zhang@intel.com>
Wed, 8 Jun 2022 12:11:17 +0000 (15:11 +0300)
committerAndrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Wed, 8 Jun 2022 17:17:21 +0000 (19:17 +0200)
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")
Cc: stable@dpdk.org
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
kernel/linux/kni/kni_misc.c
kernel/linux/kni/kni_net.c

index 0db29a4a6f618808dd4ac4d552d64417e375cc66..3a86d12bbc5c01d25d0e483b6dd4c6b6ae9b48aa 100644 (file)
 #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
index 4f6dd373a39bae1d12f182aabfbf33012d4df288..0c3a86ee352ea53d86b69c3e484e03f68c40b040 100644 (file)
@@ -402,11 +402,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;
index 41805fcabf7b600c6814c86047f4e9d1505f8d2a..779ee3451a4c385b8740a18b6729fdb749cdc4c5 100644 (file)
@@ -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);