From patchwork Sun May 21 09:10:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mintz, Yuval" X-Patchwork-Id: 765054 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3wVwyw6QF9z9s7f for ; Sun, 21 May 2017 19:11:52 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="TuA2lNvh"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752678AbdEUJLn (ORCPT ); Sun, 21 May 2017 05:11:43 -0400 Received: from mail-sn1nam01on0089.outbound.protection.outlook.com ([104.47.32.89]:35040 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752637AbdEUJLi (ORCPT ); Sun, 21 May 2017 05:11:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=4Tn42xzlVS2FJVY5heZOliV8K1r94bIdyMKu0bE+sP8=; b=TuA2lNvhGbnRfqdBd7SG7rhWil82AoKrAt45K61tnm0BG+qK5AQK8o1UF/VQGqC2wK2Qo9jKC/SsENPYfqfs685KMZhVWF89KgJ2x8YHJLAGdIRdKQQLWdItkue0cHrs2F+r6aI4s96lmWzyA3vCkk4Antniu10vEUNrmD1lKfU= Received: from MWHPR07CA0011.namprd07.prod.outlook.com (10.172.94.21) by BLUPR07MB417.namprd07.prod.outlook.com (10.141.28.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1101.14; Sun, 21 May 2017 09:11:36 +0000 Received: from BN1AFFO11FD029.protection.gbl (2a01:111:f400:7c10::112) by MWHPR07CA0011.outlook.office365.com (2603:10b6:300:dc::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1101.14 via Frontend Transport; Sun, 21 May 2017 09:11:34 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=cavium.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) Received: from CAEXCH02.caveonetworks.com (50.232.66.26) by BN1AFFO11FD029.mail.protection.outlook.com (10.58.52.184) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1075.5 via Frontend Transport; Sun, 21 May 2017 09:11:34 +0000 Received: from localhost.qlogic.org (10.185.6.94) by CAEXCH02.caveonetworks.com (10.17.4.29) with Microsoft SMTP Server id 14.2.347.0; Sun, 21 May 2017 02:11:29 -0700 From: Yuval Mintz To: , CC: Yuval Mintz Subject: [PATCH net-next 04/10] qede: Don't use an internal MAC field Date: Sun, 21 May 2017 12:10:55 +0300 Message-ID: <1495357860-28280-5-git-send-email-Yuval.Mintz@cavium.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1495357860-28280-1-git-send-email-Yuval.Mintz@cavium.com> References: <1495357860-28280-1-git-send-email-Yuval.Mintz@cavium.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(39840400002)(39850400002)(39450400003)(39410400002)(39400400002)(2980300002)(428002)(199003)(189002)(9170700003)(38730400002)(107886003)(47776003)(72206003)(2906002)(106466001)(50226002)(36756003)(86362001)(478600001)(77096006)(8676002)(53416004)(76506005)(105586002)(81166006)(101416001)(305945005)(2950100002)(6666003)(5660300001)(8936002)(50466002)(50986999)(4326008)(189998001)(5003940100001)(76176999)(104016004)(356003)(48376002); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR07MB417; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD029; 1:xoloyYeSl9pdQ1nz7VL5CUbI8vd5jGNAvjL8KUY2vQamJ3nHyQyUq4SDVgR/Ephlsg3NiWhLAqPhYfgFmBitWuo9drWOc/Pe1rcQUEbqXg8fJ3uEM56h0TQlfnEbOHUqYEgg7PMkehyEbEeuQf0zv1OLNqa2yHYwoXNys/bpnBJjdHeR8ZY0OhvmvzqAjMojN9XDEw9dqCKxqBrKcfbn9+9Mkoam7VJF1a4NnKuxiN+rd4+fNWPzTJqSeVoI0tqDL/uO8gZezAAuTybsKedVaJ0HdfG/Uql/j60wdDMpffBxTujSn8ZMrpGnTd2R82eNTP6gtAS9LpigOcYHIS8Q9qhI9nih80GAf88zlvqPMTFuNTstTPdlTSFsQf54dYk2L5mHbb0/AxxUXJVtq1M2JK9BUznug2AXv35++7RsFb2zYkdHX5eXb7aOLhpyVSE8VxDADyxBehRHC0izRFU+rSu1eqMn2C6tUspKLzQ9qgqHrcYhgpJknT+UVqSCB3oQ4RCwHAYph8qWDbuDLljER/s0J+eu6uUhJwtZudFLhFc= X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BLUPR07MB417: X-MS-Office365-Filtering-Correlation-Id: ed150ee6-49a2-4776-fb3d-08d4a029610b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(201703131423075)(201703031133081)(201702281549075); SRVR:BLUPR07MB417; X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB417; 3:eZIbRa0cCMTgjMZ6i/Ohey4gnJ/8k1AaFcWhbEE8YsI2AkKkmsDsOOp9mthPbyrpq9osz2/VjSEayR8Xy74uPmZ5O+vKwSt5JKMwKKeufT3grUNSLJ6Dp8ICWhVEENaF4kKzGyhxDCtOo5o+ZcmjCk+HCOvZ6DNzrpkgn6E8gyKIknQvdCRJoF9f30rRnQNsr5rDFcbFpVkHCMFYUSfmpL23qLGToc7Q8QGJKnlcXQT3o5cPHQr/GCU/VqFoaVYc864eRHbQtrAo2j9xd5aKBN4avvpiy7umWI2wEZ6Kw+jCcN9gK57Qprdfwid21aXbJ/KqOQAHAIWWdrtxT+cohLa4R/JmagziEfSaSqArEFyCJ990jO0g1DxIXwaCARAyRW+/hf1jn1DrbN6ykSh8qMuLI5ghKNXaJGrSMkxwLkamRE4W0jMHsFEi/mwvpITGMenYH+532nKCbd7qS9BYuNk4VhJjFIOy5NclXEmSKUDUF7UYSgUzHwB7Ksvu2/sC X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB417; 25:umUY/L1VZOu7mqix6FYMp1jqOSFA0ytE/OPoT+sPpkgcP1OOTRepzUHihBlsnpWAIBhvmU26f/1DL9exjbRVNMWbSJKYjEZNSTiEVaW7q8oD7DQ+lM5mV3+rYKvaWW9kPKupMxFdSHdJLwkLJ4sclpyS/6bkUrceg0DkuIMwpYaUdfVY66vgcv2BjeFb73lGcs3kv7o6BMVOu+nYRUb088DcwH35nGbKUMJKCptsLO94J/ldOGkzRqINdsoiYrKnbldjxU2mhcwtQsssOYxDsjIW+nwXTTumN+FrmN68PiDCU+WT++vs+9QpRrMgSszq6hN/JHJ1t0RiNiNkUqezIYanK1O5j4bMtIn5hnAtIsRpQ6geBooDxQ/uf9I4tzt68vx89tYkY8tPZNm/1WpW01z2s/4txsoIB1o39qAILUIOUYhX3JCJLuju9OlC5yds5Rb1ozl4LkXCeenGmyOMkyINgJmdcRiJKuYMp9c+/18=; 31:VJ1XBnSz2jyoc7JE+5wFQCUT0WMkGXYrbIWmaemnE4ZhCrBcGHY+2aHVB/2wJJSXqBkZZbXOapabwANQyQXtCi8nEUCQLrBoCQnoajyzyKtDOcjBoiOIeMRNh9MhWkO1ZUqIDYpIcCFR0ZW194Md+XFjhUZhal35QDZRZkZ34e21mWoB3vuw6gKylHkjHMywoY0q/GUkm0dBuWc34+tpDDGVnA85bTl/ZEGQQm1H/5M+o37sMSizj5PHN99ea7qZgzH72bDA/o2EeJyWM6zo2w== X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB417; 20:+yAso1LFqiYCAqvxuegK8O2oNvO0ApSWRz2qigvCPgI7eDPaGBqTIdM+TlGdqdAIll7KJz4l3aYgPKywth9F3OIaY5XeT7MdWbW6FiG05OtIPjq17w3oV5i2OwfjMAudLEhBPipRqVfkeGmetLsVS+2ndFsxMn7HROrdmPjfOkihEQ0VVjcWFvLCTM9CxKiQxNkQvo+tyWA9sCJnmtCO0Ba047arAmglbAa6I0JRhz3uZPi8o+/DD1rKwxQLk1IEZWBGFOeigYK6SyNHChIthnf2S8troV8QAn8YD6elkn7ZaFiPimU3ztnLRkLJqZ6wEKSsq4k9EOMFO4XtanuB3oOE+0zodnmtNe0VlZ7s8SVMB6Rn34Z9mp93auSyNvlrlV9PjZKbXsMmw1bN+zr7VXEeBDHtRSh1ASxFR320navqqHAIxRz1/DwLF2h5Ydfy5sU/tP0peW+7v0YvW44eG3eoY+UxK0nhwnCggPpsb7zZJVqOgEzaba+Dk4Wgl+/9 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(13018025)(8121501046)(13023025)(13015025)(13024025)(5005006)(13017025)(93006095)(93001095)(10201501046)(3002001)(6041248)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(20161123562025)(20161123564025)(6072148); SRVR:BLUPR07MB417; BCL:0; PCL:0; RULEID:; SRVR:BLUPR07MB417; X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB417; 4:wmsSe0eqC1jrd7ZQpbJ6sYg8n1Pff2CKvw2rPvrBDzgE0yJahkkQaxfcyEQHTLQlNbqesQwrPoM5+Y0rt846k0mSuTYZ85IES2zHyQpupTGhq/GnvLQ3rORaSfwFnmtzWHjT5bqNI6nnI/q52AP6DNejvgwQgVVXOA2HAbNO+qkdPRSSAibG0+8314Rz+dJfnCuAjMqvIHAxZQJAbZxC90PJclITY8jWNV2If4M942z1jJyAdTL9ECiTKASzzM6GFFedJkQZZkG2VoaiohpiN+d6ORYrgi/EPZx7jAEiCREaGlZXmc/P5ZfBGJamsfEAWBgxbBMvDJvnP24M3+pk5SWCRJr7uinTHZ6BNFSAN/S+/C8Fv9k1tq8JcdUx6BXomdI7a+UByVSf9GS55JeghmU8k4JzTLsFvRaCI8EmuxuhvJKbnN12t523DEaBdCSwczp3tP66/ANfrTgFO9qu74bCO2xAJBKIf8ia9IvGFehe29/sp7U9Nsj+UG9qukBHJ7edsSAR23CGltiMYbsz86emureGPeiL3/xDBT00BD3uGdaZ1PDknjsFmKAbyQLj/cp3kDyG6FftXb9I49nVjyhI4gu1LTtuj6vBwOGU2fnKqSU4w7twEQ/+t+DcjuTiRfwdRacq5TTJEZoDL3VtPGDT4kPZoZ1EP1xCcY4pmgVWzv7yvWYlvsg2TRoW753FNCa8O/wWty+zpglpf4iHy6pmY2YntTbWYcCChl0md0meyoDuTFz9Akzhhs2HwKCzrJqLLNysIyJMqcjYrbBm5i4VxIXu2qqZh0stChOIgh4kgkM+uOs057Z/EKA10K2dpYVW5AYavOheZnZ4FNdsIhNQ2FOkzpKcA46XKF8EZr6k6SWeQZ+uKyQcw3eBOwLA X-Forefront-PRVS: 03142412E2 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR07MB417; 23:6xyZZFNz3lx1vKzN7tD/2sobINtesW2qr5IdJRjZhd?= =?us-ascii?Q?giDlXjJh1VtLl70UK8be/1Y6l04n6fzfB0B96JGJloafV3BX4LbnMj0zZwXS?= =?us-ascii?Q?ArfXXEZrtDPIRNCTk0Y2MekesSPgNI4SJTpVHOLsEJCpWUeE9XgguNDCZWLH?= =?us-ascii?Q?8h2qjQqkak+5msiJ53NXBWIAZ8ZYakOGzOoMaj2HXXuhBrxx5GCUzzR8Som4?= =?us-ascii?Q?fSUIqCgGqWUI801j8zMc8sayPDo5k5jdZm5By97pN0Mcd/WAlR6UpE+QU526?= =?us-ascii?Q?uZ5Ss2L5Hpg/jRyAX0ykWyI0r/NneGH80IDSHK71iO/IFoKy2vR9bs5VyFeG?= =?us-ascii?Q?VQHSHK9TwWfhzy1Zyp2qODvxAcckayHSlXSECGyoXcHyFEz4ka2uhV8rgnzN?= =?us-ascii?Q?RaVKd8m9LHshtkpbxfc4q0MdE18eCpyUF5WHg3Rn19ubJ+B6xUZ1VM5tZH6s?= =?us-ascii?Q?WUuAW0CKe3Gef+Zr9quxrvTS3FkXs7OGvUKkrW9yviUVh2fwNq4HSa5p2G2K?= =?us-ascii?Q?+NbIAM56/PdS51whiG3CFXP1ks5UbzMqVT4WbKpV1c66vp4H9u6HG6KZ+36/?= =?us-ascii?Q?SEJ6Js7HgCM6ogFc9bSyR0Mr81xMcHKWTwfXDPjN3+uctv0i6ts/JAI0O3AO?= =?us-ascii?Q?BvjDECcve6b5WQ9uwBhA4/om/yoFuMo5SF63HgCQv5RliKdilrnk85q7A7Tu?= =?us-ascii?Q?dXsjZfMROhl9+JbotawRdAojjUYi3r/wq1+QKpWAMzWsOxhsUccNwj8Ct6Yg?= =?us-ascii?Q?60zxvjn08j1y9dh97kGhXSnOcFx57wKA+jIZXUJ5kfPqMx2tXY5MENhmLzK4?= =?us-ascii?Q?gq4o8FAmvL7DKmNOpOnU6bqZJ+ho0yAmPE6Fp4PgYTYIoUadBospBWeWJiDr?= =?us-ascii?Q?CPpZrRtMKZsvgU+q5Dk16G8SkrPsngHm/noOQ2g5SLSCOU0rXzRkSyPoQ+ac?= =?us-ascii?Q?sbQmi7I5H5ANiqL4GKSVfTfZPL8xa9G7RM/BtoQnnLkGaQaEnhweqIUGolXV?= =?us-ascii?Q?Hcrm0ZDKyFiZBguTQcDdxz868RDTWbyWNsU0BLdx8+WvP6reqQd7B2A+B62k?= =?us-ascii?Q?0NPd/8JrDik5399u0se5OI5i1X?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB417; 6:wL7JlFpx52ujwdrVCOYr8Iixt6J3uI5vJQbFd2zon6XCj9UQX1FLs3M/VzsAb5rWIbGOLnrya08f6bqQ/M4gDANS0LDOrrlJyS+P3WgkouyMRZqErqrGX8zwtAvsGA2+m4bpzG0nQEzfQFU0eMuVugMCLXtgdW4oONCtf577+NK7xI3jgpFwZTmvpmTbslw4d5cFfD44i5aJpaUUimSOQ6/hTcRkgCY0RLUOjyN/DYuDKPYe7JHRD84n082blxQ5KdapsELpMCnv47zkljKSE+ByyppaklEmcKH22qYOZRbgTUbiN6WCIx5zWg6hjLoe+2cWzsutIxsYvkpA6mS/wTjXz8yuCMamfhqJF4Vu5G4Vpt3XjgN/7YSXaDJdBM1u4nSn8Xe32lMjBO8RqrJAYczAlyLsvPk80gitz1vx5mZkkK1kX6Xq6EUzRWy9lsCZ9rOXB0ON20GLPta7h+0MdJBsbJUzIAmcXQcWGqH6gRwReguBskZ9mcEhwn8CEmMVv4Iqc5POdPk2EQc5wwgmtw==; 5:L1+emZKQvHaCmPCjrM3qxVOOQ8FEalILPcXEtqNtMfMsS0a4oRb0nRCCAxsrYk+lbgql1GPJyYu2q0d2s1lJPpY3OtGpxBZ7p6zIb0dRVOVyc7EBkxIEaWRXpTICG5tAub8xrB5EDfIS/IhEA6vM1w==; 24:4hWqVpD4L/S5rClty0m5ALS6/n4lUa3yUzUPn+QBy2Q7TZckSewWuShD7QKvV1bW2rq+xvIHI/JooNIPlvNMXDHbIVEmO3Wjpdit0qFqlQw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB417; 7:WU35p8SBDjp253FVTNPYAEuSKYcMykU6uEW7AeN00HVJPFhNDZg10dSA05kIxqrqoeC/5ybJhkHBPasiHYAXH6gJ1vGtqJhYrHuEu4wkYLrpXxA5Z7K96oIJW6rsWO3kJ22Cl+UrX4nfR0Zb5x3mqBhLtfjX8MDH6JNnrlF3zX1K7J5NfyODNwuTi536PCt3JvDaFQ3jQ0Kfcnk3LvYnMA7htzoII1oAZ2OVs3+7PRSKgbk8GhV378pp5Ew6WVmHyWJDgEqYzX7ntJf+MvgHUefaOzDgx1NIJG86vbidg/Z+r6cyacQPM8nqBKmMOHMm1D9pc8egngZUWQXEhAWqNw== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2017 09:11:34.4928 (UTC) X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=711e4ccf-2e9b-4bcf-a551-4094005b6194; Ip=[50.232.66.26]; Helo=[CAEXCH02.caveonetworks.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR07MB417 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Driver maintains its primary MAC in a private field which gets updated when ndo_dev_set_mac() gets called. However, there are flows where the primary MAC of the device can change without said NDO being called [bond device in TLB mode configuring slaves' addresses], resulting in a configuration where there's a mismatch between what's apparent to user [the netdevice's value] and what's configured in the HW [the private value]. As we don't have any real motivation of maintaining this private field, simply remove it and start using the netdevice's field instead. Signed-off-by: Yuval Mintz --- drivers/net/ethernet/qlogic/qede/qede.h | 1 - drivers/net/ethernet/qlogic/qede/qede_filter.c | 62 ++++++++++++++++---------- drivers/net/ethernet/qlogic/qede/qede_main.c | 3 -- 3 files changed, 38 insertions(+), 28 deletions(-) diff --git a/drivers/net/ethernet/qlogic/qede/qede.h b/drivers/net/ethernet/qlogic/qede/qede.h index 9b4f08b..694c09b 100644 --- a/drivers/net/ethernet/qlogic/qede/qede.h +++ b/drivers/net/ethernet/qlogic/qede/qede.h @@ -197,7 +197,6 @@ struct qede_dev { #define QEDE_TSS_COUNT(edev) ((edev)->num_queues - (edev)->fp_num_rx) struct qed_int_info int_info; - unsigned char primary_mac[ETH_ALEN]; /* Smaller private varaiant of the RTNL lock */ struct mutex qede_lock; diff --git a/drivers/net/ethernet/qlogic/qede/qede_filter.c b/drivers/net/ethernet/qlogic/qede/qede_filter.c index 333876c..13955a3 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_filter.c +++ b/drivers/net/ethernet/qlogic/qede/qede_filter.c @@ -495,12 +495,16 @@ void qede_force_mac(void *dev, u8 *mac, bool forced) { struct qede_dev *edev = dev; + __qede_lock(edev); + /* MAC hints take effect only if we haven't set one already */ - if (is_valid_ether_addr(edev->ndev->dev_addr) && !forced) + if (is_valid_ether_addr(edev->ndev->dev_addr) && !forced) { + __qede_unlock(edev); return; + } ether_addr_copy(edev->ndev->dev_addr, mac); - ether_addr_copy(edev->primary_mac, mac); + __qede_unlock(edev); } void qede_fill_rss_params(struct qede_dev *edev, @@ -1061,41 +1065,51 @@ int qede_set_mac_addr(struct net_device *ndev, void *p) { struct qede_dev *edev = netdev_priv(ndev); struct sockaddr *addr = p; - int rc; - - ASSERT_RTNL(); /* @@@TBD To be removed */ + int rc = 0; - DP_INFO(edev, "Set_mac_addr called\n"); + /* Make sure the state doesn't transition while changing the MAC. + * Also, all flows accessing the dev_addr field are doing that under + * this lock. + */ + __qede_lock(edev); if (!is_valid_ether_addr(addr->sa_data)) { DP_NOTICE(edev, "The MAC address is not valid\n"); - return -EFAULT; + rc = -EFAULT; + goto out; } if (!edev->ops->check_mac(edev->cdev, addr->sa_data)) { - DP_NOTICE(edev, "qed prevents setting MAC\n"); - return -EINVAL; + DP_NOTICE(edev, "qed prevents setting MAC %pM\n", + addr->sa_data); + rc = -EINVAL; + goto out; + } + + if (edev->state == QEDE_STATE_OPEN) { + /* Remove the previous primary mac */ + rc = qede_set_ucast_rx_mac(edev, QED_FILTER_XCAST_TYPE_DEL, + ndev->dev_addr); + if (rc) + goto out; } ether_addr_copy(ndev->dev_addr, addr->sa_data); + DP_INFO(edev, "Setting device MAC to %pM\n", addr->sa_data); - if (!netif_running(ndev)) { - DP_NOTICE(edev, "The device is currently down\n"); - return 0; + if (edev->state != QEDE_STATE_OPEN) { + DP_VERBOSE(edev, NETIF_MSG_IFDOWN, + "The device is currently down\n"); + goto out; } - /* Remove the previous primary mac */ - rc = qede_set_ucast_rx_mac(edev, QED_FILTER_XCAST_TYPE_DEL, - edev->primary_mac); - if (rc) - return rc; - - edev->ops->common->update_mac(edev->cdev, addr->sa_data); + edev->ops->common->update_mac(edev->cdev, ndev->dev_addr); - /* Add MAC filter according to the new unicast HW MAC address */ - ether_addr_copy(edev->primary_mac, ndev->dev_addr); - return qede_set_ucast_rx_mac(edev, QED_FILTER_XCAST_TYPE_ADD, - edev->primary_mac); + rc = qede_set_ucast_rx_mac(edev, QED_FILTER_XCAST_TYPE_ADD, + ndev->dev_addr); +out: + __qede_unlock(edev); + return rc; } static int @@ -1200,7 +1214,7 @@ void qede_config_rx_mode(struct net_device *ndev) * (configrue / leave the primary mac) */ rc = qede_set_ucast_rx_mac(edev, QED_FILTER_XCAST_TYPE_REPLACE, - edev->primary_mac); + edev->ndev->dev_addr); if (rc) goto out; diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c index aea9dcf..a66bdfe 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_main.c +++ b/drivers/net/ethernet/qlogic/qede/qede_main.c @@ -1997,9 +1997,6 @@ static int qede_load(struct qede_dev *edev, enum qede_load_mode mode, goto err4; DP_INFO(edev, "Start VPORT, RXQ and TXQ succeeded\n"); - /* Add primary mac and set Rx filters */ - ether_addr_copy(edev->primary_mac, edev->ndev->dev_addr); - /* Program un-configured VLANs */ qede_configure_vlan_filters(edev);