Convert iavf from ndo_set_rx_mode to ndo_set_rx_mode_async.
iavf_set_rx_mode now takes explicit uc/mc list parameters and
uses __hw_addr_sync_dev on the snapshots instead of __dev_uc_sync
and __dev_mc_sync.

The iavf_configure internal caller passes the real lists directly.

Cc: Tony Nguyen <[email protected]>
Cc: Przemek Kitszel <[email protected]>
Signed-off-by: Stanislav Fomichev <[email protected]>
---
 drivers/net/ethernet/intel/iavf/iavf_main.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c 
b/drivers/net/ethernet/intel/iavf/iavf_main.c
index 7925ee152c76..6632d35ad0fe 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_main.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_main.c
@@ -1147,14 +1147,18 @@ bool iavf_promiscuous_mode_changed(struct iavf_adapter 
*adapter)
 /**
  * iavf_set_rx_mode - NDO callback to set the netdev filters
  * @netdev: network interface device structure
+ * @uc: snapshot of uc address list
+ * @mc: snapshot of mc address list
  **/
-static void iavf_set_rx_mode(struct net_device *netdev)
+static void iavf_set_rx_mode(struct net_device *netdev,
+                            struct netdev_hw_addr_list *uc,
+                            struct netdev_hw_addr_list *mc)
 {
        struct iavf_adapter *adapter = netdev_priv(netdev);
 
        spin_lock_bh(&adapter->mac_vlan_list_lock);
-       __dev_uc_sync(netdev, iavf_addr_sync, iavf_addr_unsync);
-       __dev_mc_sync(netdev, iavf_addr_sync, iavf_addr_unsync);
+       __hw_addr_sync_dev(uc, netdev, iavf_addr_sync, iavf_addr_unsync);
+       __hw_addr_sync_dev(mc, netdev, iavf_addr_sync, iavf_addr_unsync);
        spin_unlock_bh(&adapter->mac_vlan_list_lock);
 
        spin_lock_bh(&adapter->current_netdev_promisc_flags_lock);
@@ -1207,7 +1211,7 @@ static void iavf_configure(struct iavf_adapter *adapter)
        struct net_device *netdev = adapter->netdev;
        int i;
 
-       iavf_set_rx_mode(netdev);
+       iavf_set_rx_mode(netdev, &netdev->uc, &netdev->mc);
 
        iavf_configure_tx(adapter);
        iavf_configure_rx(adapter);
@@ -5150,7 +5154,7 @@ static const struct net_device_ops iavf_netdev_ops = {
        .ndo_open               = iavf_open,
        .ndo_stop               = iavf_close,
        .ndo_start_xmit         = iavf_xmit_frame,
-       .ndo_set_rx_mode        = iavf_set_rx_mode,
+       .ndo_set_rx_mode_async  = iavf_set_rx_mode,
        .ndo_validate_addr      = eth_validate_addr,
        .ndo_set_mac_address    = iavf_set_mac,
        .ndo_change_mtu         = iavf_change_mtu,
-- 
2.53.0


Reply via email to