From mboxrd@z Thu Jan 1 00:00:00 1970 From: Corinna Vinschen Subject: Regression introduced by "r8169: simplify rtl_set_mac_address" Date: Mon, 2 Jul 2018 21:48:12 +0200 Message-ID: <20180702194812.GG3111@calimero.vinschen.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 To: netdev@vger.kernel.org, Heiner Kallweit Return-path: Received: from mx3-rdu2.redhat.com ([66.187.233.73]:37870 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752639AbeGBTsO (ORCPT ); Mon, 2 Jul 2018 15:48:14 -0400 Content-Disposition: inline Sender: netdev-owner@vger.kernel.org List-ID: Hi, the patch 1f7aa2bc268e, "r8169: simplify rtl_set_mac_address", introduced a regression found by trying to team a r8169 NIC. Try the following (assuming the r8169 NIC is eth0): $ nmcli con add type team con-name team0 ifname nm-team config \ '{"runner": {"name": "lacp"}, "link_watch": {"name": "ethtool"}}' \ ipv4.method disable ipv6.method ignore $ nmcli con add type ethernet ifname eth0 con-name team0.0 master nm-team $ nmcli con up team0.0 $ teamdctl nm-team port present eth0 command call failed (No such device) Bisecting turned up commit 1f7aa2bc268e, "r8169: simplify rtl_set_mac_address" as the culprit. Reverting this patch fixes the issue and the teamdctl call succeeds. The reason is apparently the usage of eth_mac_addr here. eth_mac_addr calls eth_prepare_mac_addr_change which checks for IFF_LIVE_ADDR_CHANGE. Debugging shows this flag not being set on r8169, thus eth_prepare_mac_addr_change returns -EBUSY (no idea why userspace claims "No such device", rather than "Device or resource busy", but that's not the point here). Note that other devices like igb, don't call eth_mac_addr either, but rather call memcpy by themselves to copy the new MAC, just as the original r8169 code did, too. Consequentially this problem is not present on igb. I suggest to revert this change in the first place, but I wonder if we're not just missing to set IFF_LIVE_ADDR_CHANGE in a lot of drivers. Thanks, Corinna