Patch "iavf: remove INITIAL_MAC_SET to allow gARP to work properly" has been added to the 6.0-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    iavf: remove INITIAL_MAC_SET to allow gARP to work properly

to the 6.0-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     iavf-remove-initial_mac_set-to-allow-garp-to-work-pr.patch
and it can be found in the queue-6.0 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit d6d6113ac5026ef0b61aeb6adf51eed27a3a3974
Author: Stefan Assmann <sassmann@xxxxxxxxx>
Date:   Thu Nov 10 15:14:44 2022 +0100

    iavf: remove INITIAL_MAC_SET to allow gARP to work properly
    
    [ Upstream commit bb861c14f1b8cb9cbf03a132db7f22ec4e692b91 ]
    
    IAVF_FLAG_INITIAL_MAC_SET prevents waiting on iavf_is_mac_set_handled()
    the first time the MAC is set. This breaks gratuitous ARP because the
    MAC address has not been updated yet when the gARP packet is sent out.
    
    Current behaviour:
    $ echo 1 > /sys/class/net/ens4f0/device/sriov_numvfs
    iavf 0000:88:02.0: MAC address: ee:04:19:14:ec:ea
    $ ip addr add 192.168.1.1/24 dev ens4f0v0
    $ ip link set dev ens4f0v0 up
    $ echo 1 > /proc/sys/net/ipv4/conf/ens4f0v0/arp_notify
    $ ip link set ens4f0v0 addr 00:11:22:33:44:55
    07:23:41.676611 ee:04:19:14:ec:ea > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.1.1 tell 192.168.1.1, length 28
    
    With IAVF_FLAG_INITIAL_MAC_SET removed:
    $ echo 1 > /sys/class/net/ens4f0/device/sriov_numvfs
    iavf 0000:88:02.0: MAC address: 3e:8a:16:a2:37:6d
    $ ip addr add 192.168.1.1/24 dev ens4f0v0
    $ ip link set dev ens4f0v0 up
    $ echo 1 > /proc/sys/net/ipv4/conf/ens4f0v0/arp_notify
    $ ip link set ens4f0v0 addr 00:11:22:33:44:55
    07:28:01.836608 00:11:22:33:44:55 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.1.1 tell 192.168.1.1, length 28
    
    Fixes: 35a2443d0910 ("iavf: Add waiting for response from PF in set mac")
    Signed-off-by: Stefan Assmann <sassmann@xxxxxxxxx>
    Tested-by: Konrad Jankowski <konrad0.jankowski@xxxxxxxxx>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/intel/iavf/iavf.h b/drivers/net/ethernet/intel/iavf/iavf.h
index 3f6187c16424..0d1bab4ac1b0 100644
--- a/drivers/net/ethernet/intel/iavf/iavf.h
+++ b/drivers/net/ethernet/intel/iavf/iavf.h
@@ -298,7 +298,6 @@ struct iavf_adapter {
 #define IAVF_FLAG_QUEUES_DISABLED		BIT(17)
 #define IAVF_FLAG_SETUP_NETDEV_FEATURES		BIT(18)
 #define IAVF_FLAG_REINIT_MSIX_NEEDED		BIT(20)
-#define IAVF_FLAG_INITIAL_MAC_SET		BIT(23)
 /* duplicates for common code */
 #define IAVF_FLAG_DCB_ENABLED			0
 	/* flags for admin queue service task */
diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c
index f59b725785eb..005bb8378c76 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_main.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_main.c
@@ -1087,12 +1087,6 @@ static int iavf_set_mac(struct net_device *netdev, void *p)
 	if (ret)
 		return ret;
 
-	/* If this is an initial set MAC during VF spawn do not wait */
-	if (adapter->flags & IAVF_FLAG_INITIAL_MAC_SET) {
-		adapter->flags &= ~IAVF_FLAG_INITIAL_MAC_SET;
-		return 0;
-	}
-
 	ret = wait_event_interruptible_timeout(adapter->vc_waitqueue,
 					       iavf_is_mac_set_handled(netdev, addr->sa_data),
 					       msecs_to_jiffies(2500));
@@ -2605,8 +2599,6 @@ static void iavf_init_config_adapter(struct iavf_adapter *adapter)
 		ether_addr_copy(netdev->perm_addr, adapter->hw.mac.addr);
 	}
 
-	adapter->flags |= IAVF_FLAG_INITIAL_MAC_SET;
-
 	adapter->tx_desc_count = IAVF_DEFAULT_TXD;
 	adapter->rx_desc_count = IAVF_DEFAULT_RXD;
 	err = iavf_init_interrupt_scheme(adapter);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux