From patchwork Mon Aug 28 18:52:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Belous X-Patchwork-Id: 806719 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=AQUANTIA1COM.onmicrosoft.com header.i=@AQUANTIA1COM.onmicrosoft.com header.b="SK1spmP0"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xh1BJ3nPzz9s9Y for ; Tue, 29 Aug 2017 04:53:28 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751455AbdH1Sx0 (ORCPT ); Mon, 28 Aug 2017 14:53:26 -0400 Received: from mail-sn1nam01on0088.outbound.protection.outlook.com ([104.47.32.88]:52421 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751306AbdH1SxY (ORCPT ); Mon, 28 Aug 2017 14:53:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=AQUANTIA1COM.onmicrosoft.com; s=selector1-aquantia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=xskdjX+P6KZFxoYdtq592q625+eFl39QIbAIsX1eJT8=; b=SK1spmP0FUrS5dasvimFFxRbWd9hsibSG91F37C0le5sSHPt86mD+TGIaA02Lcm8CeSG92EiGUpgqi6aIAnlLPWWJrS9o4Hz+EWjsBGcysLDFHqcAOC9jIhOce33mJfcsviPaEyAjwryv9wtV6YvgeM8Yu6ZhLL3IiWooyuRyXo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Pavel.Belous@aquantia.com; Received: from atltest07.rdc.aquantia.com (83.149.43.106) by CY1PR07MB2554.namprd07.prod.outlook.com (10.167.16.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1385.9; Mon, 28 Aug 2017 18:53:16 +0000 From: Pavel Belous To: "David S . Miller" Cc: netdev@vger.kernel.org, David Arcari , Igor Russkikh , Nadezhda Krupnina , Simon Edelhaus , Pavel Belous , Pavel Belous Subject: [PATCH net v2 4/6] net:ethernet:aquantia: Fix for incorrect speed index. Date: Mon, 28 Aug 2017 21:52:11 +0300 Message-Id: <457d1909678cfce99beba71e3b3096c8e468292c.1503945861.git.pavel.belous@aquantia.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [83.149.43.106] X-ClientProxiedBy: HE1PR0202CA0019.eurprd02.prod.outlook.com (10.168.182.29) To CY1PR07MB2554.namprd07.prod.outlook.com (10.167.16.21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a5b3c80a-ea86-49e6-255e-08d4ee460f2b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:CY1PR07MB2554; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2554; 3:lfRJJe7+JXmUK3lY6nTX+cZg7D9LSIcKrwoS+b5w8cT1hcJgSon463tRPqJ4hNJZg/ywyd5/asuu9FpRL/jD0AAexnsfHq9LwB2dPKJm8+0qIY2V0GMo0GaHb73bctN0xG9+1WjFPWukjpl/GTSVGIeF8NSsfwQdTH3/i1L+PwHVm8ul2OQs4R7s8YWvvGE7aLeF443K0wUB06CFHaLeLkb0hmdmnE42aGlFr1FDlXmCQWjSH+Hpy4ncX0iH5h9c; 25:H2p6/jd0TbNKtA5WVWi6OC671L9r4UUeHRd2oLzz2tKSq9R1nqPrnGM+jn8KSa72T5N795ThfoNiVZMTwZEwUvAaY1uzVVIzPDC4MyPYwnWZd3JvRFzFaK4BKKg4B8fRV5ddpKL3GzbOPAzHGC6foRg3Ypy2HAuOt65o6eNrlenWHN1yZhP42PseFjBmsRF5PKB+RELqO9Q0mBgJON9a8UmYYffiNulzWkNCAwQ1hMjSGiMCztjaNOFpJPNI69g3IQ8PcJTH5OlJlWSJ6Yx1IyTsVVYJa/uan96BgAP6vdch5oQfRekNy49UXCi0uoDmQq3W1qqUR3U13JgdzfJE7A==; 31:/TH4wd+PKlcCGoSKFsCjenXI9MxCgWqh4uJcucUgsV/TiMKTiqKqQBzXEcI/U5qn+utVR1jZLqEyHTCbdU0fxtAsuALBoR5nUr3jaVROWgM0AoNyfqcyLkmQa13DiIlhMl7QlSTeRsBuPfSJlgoezp98FTE9gDBJ+8kuphgxtp3949rnp0ZzXnP5ggSb4mQ66scxB0rajal5gaIdiwndZHiI5E/E6UZ2ciwFNSwIkxM= X-MS-TrafficTypeDiagnostic: CY1PR07MB2554: X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2554; 20:2/w3EGQ+bfnpXhlFeuL15eLBxfS0AkXH3At309+YU0n6P01hMrxxWceH6MXct+ghQl/QuwW1pBFzDwJLoxBX92dFvEHjUe/XzcFm1pcIXBY4g1Ml+DJ5KQwMTG+vtX3SkQ8Y8t58as4Yafv8ZYNIVOpnLbNC8rUHfda0an1AA+OOgd8T8oEsmotgRkIDGJZihUaEIiayG/MKu8/i3YVTAzz0q7ZT1mf3iKo0uG4JWDSPdb7qjB41hOzMAsDdr3Qgw4qANr06lC1LlkhRyg2ri5NbCEe7GEnp1DwSCnN7m3AH9V2WWnXuPhCgkeCYhjMgmySranQFM9whg8nXf38Eg1dqN4Pu/kQzCJgKIlAs9Gv7BYjpMMQxI/c9vEPK0CV16fwAAXXgyDHwo3uwQNKrG7Iqi2hccrCQOdb7rq9ZkBJmzxnrtZ2lB9PRK/7gmr2uwLTUNB5rjm4Ab9T9qZByJj+pS5DPzbR4vxbHrZLZOdk//KqUOlLxxJQZzdpqNsyr; 4:TWEAxoAiFctmU+LZzBls9nrUbHNbTn1SD8vcvIKgEc0Sarf51mUqoKTY1IXTlcZ6ZztXMPTXCfIhfx6A3frjklTvlHutk8FA+sJ4oy4QGbDPqSkgTs1JR38lvreLASRdMk5+IP2E1EEI7oRf+kirEQ8wX4/MQ1SqFV3G7q2rKdYfcusoXbNXO4XXDfdBVIDqxu2n7Mj08Gv9UffN2IRe+s06svyd9Pszixumw92GyLr3JIXOGjeZRcMwjDoJMVzV X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY1PR07MB2554; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1PR07MB2554; X-Forefront-PRVS: 0413C9F1ED X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(7370300001)(4630300001)(6009001)(189002)(199003)(54906002)(6916009)(50226002)(189998001)(36756003)(2950100002)(5003940100001)(106356001)(575784001)(25786009)(86362001)(33646002)(7736002)(8676002)(66066001)(81156014)(305945005)(81166006)(50466002)(48376002)(47776003)(53936002)(478600001)(118296001)(72206003)(107886003)(76176999)(50986999)(2906002)(68736007)(6486002)(105586002)(6116002)(110136004)(6666003)(5660300001)(3846002)(7350300001)(4326008)(101416001)(97736004)(42186005); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR07MB2554; H:atltest07.rdc.aquantia.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: aquantia.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2554; 23:5414diKuV/JiaTlTQ/WtduLvmkDq2B4w2RZEJsZebHh7lXuILh7WMInwlIuyZk/MlW6jGqU2UaHDp8GYUziqn7HzkKnX4Sk2U2gSP8jGg5nh6JA9XhF/LgFGJQIST9nFkrHt6jVMheIQIivkzf/knxuAI0TxH7C6/DRMtgXR9zEPht4P3mDDjRLwtoMncXMegXpRzIdB+qdEeyOadPMveS4h7j2fuVKriyDnbsqzad3+ArOtRoh/XPd8YW9bpEdWAFsZ2WMXc4VqHBTQtDDm69Si4TyJN1PBzirFgqGrKLpoLN60uR21c75+lKABVnsgYrNH3b3ZEJk2+FLt7b1fqtI1/dGLRxtj0F+xDrkFrSIGLDd+n3CMZBkvv3XyceFgHc8fS59XkOyfNyPbde61TGGgGLPPLvGdvreQ1u601eVy1FIYYBM1/ld9LEYf5PDCAB4Ei6bhWgfX3FYWYbvoUFzORlu5tfg9c0lEKzp1R+HLR/KwG6HJKs4cjIHKkEMcHokids3fcI3ordhVocUmKmyKZcqltYt+JYQfhqEr1H56hHJhvUXaRkRWpzzwDMlBsbPAlEkTvmEBft76v+eAif7FW8AvdK3tBalbsAA41gKXlP7JzJ9eIasR0YHol99dQlJ6ZG8/pJZC0UBMg+akKByR2+mgubXmVZSGVMtZQWcDPcADks9aAzdARWl78R2OcwEz1hViwEcgFrsn249hdmQ/x716odcdPMReFWHY2M4XxWC8uRmmQgWGQS30c69xIiG6QACiR6WQauIds+J5JgoWiiZpCmBnEfm8lRrHkLK1qCE6cV8umHdQDCdj8LVJ0CKGxrUfv3y7hCmvtcjA0jHQ07+V85Rserim/YMd2DMZewjhYR2YbLhuSqNKgYJH3+KRaCbBO+xSPmdIr+/SHVEB90UsyfzqegyRIab0hH0Y9Thuo4+wmH2rydtj3xay+T2iHz9rb6LsI45ikTASoECRNdIzl7519h/b0uDF+euZ1rxW+w1fY3ZJT2SCJSv6L0DepIG0FEAMHPcgU8b9PgFJ0CObMjjtItRUsmT/HdLzz1uTrzYlZPSnVvrTqki3lLV7y1fF3Y5b1sBRlLdat0pwyJ94xGUGW5T/u+vouJdCStVEpGqkLq1eUjwEEjN/DH0lML6Q28HGOWmxWP6oJg== X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2554; 6:6iiqWSJ23ISWAJRdEtxAuf6G4fI+lKhg/Qd5KM90wXnt593qcUOXj5a8Q63BcXT1CtsL8rsBEFK0LHFtxb1CXCJn6oskF7VZ7S+Q0SF9DIlcNKd/+EThQbTJ644JE7mB9mkTolIiLvR1zfQanBdXyHrC/ya8uytGqA3hL8a68esov7OSWqB2mpc4yuw/f1Iqd13BJf5qL7JXIn8RNU0Q7ibuFhPWB7C8JXl2rBI+/Rdstu692NrgsKCAtE7OIODSM9KakEacAb+DpPA6qLXLYFLOV9XJ3mkQfVBZ5UllVkftO2k/S1ZmpHNxFahr1RuAAvmkGLrO2n9oiA3wdka/8Q==; 5:nEgKfph6ykU9TAXW/uFsFo5+ZyIhlVgiMnZ6VvpmeMzI+IP/qgMTb3DsOs6C64Offh9knxq3SoJ0Vt9aBKUU9HjlFh1YioZFHiX65UPfb+s3mX48DI9W6J66Hl2Uyvie4y2Utu3Ulhb7tN7UrDBFwQ==; 24:5zRjFN4y7NsJAbEgOxw8j4fbYoypcAG+QDL8AqnswnoC4bsdkffT6dUYRwmMRdMYSLm0VGqANxNB3XnAaG+AuNWXVRR0gyt8SzXRKok7nyU=; 7:jtFbU5DF/tNuau6mtLWs6pprLfDHAuag8PrJaHiGamEvPlU5Y/XV7XwGd60YYLJ9IxFhVQjeYvdpoxWhS1UlzMxfvhJ0F/IyVsPOXJySR+uVFClmUUuqqzuy0C3kSqeHKsR2X9WTmWSWrWCcF92fh7M6JX54Oo6TE2y6y862RQrdfFHLP7qxSvUNs8SZJbT3KdzYLKucs6nC4umwgD5zEnijdo4ZgdIo82If5OdTJpg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: aquantia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Aug 2017 18:53:16.4126 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2554 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Pavel Belous The driver choose the optimal interrupt throttling settings depends of current link speed. Due this bug link_status field from aq_hw is never updated and as result always used same interrupt throttling values. Fixes: 3d2ff7eebe26 ("net: ethernet: aquantia: Atlantic hardware abstraction layer") Signed-off-by: Pavel Belous --- drivers/net/ethernet/aquantia/atlantic/aq_hw.h | 3 +-- drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 31 ++++++++++------------ .../aquantia/atlantic/hw_atl/hw_atl_utils.c | 4 +-- .../aquantia/atlantic/hw_atl/hw_atl_utils.h | 3 +-- 4 files changed, 18 insertions(+), 23 deletions(-) diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_hw.h b/drivers/net/ethernet/aquantia/atlantic/aq_hw.h index fce0fd3..bf9b3f0 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_hw.h +++ b/drivers/net/ethernet/aquantia/atlantic/aq_hw.h @@ -105,8 +105,7 @@ struct aq_hw_ops { int (*hw_set_mac_address)(struct aq_hw_s *self, u8 *mac_addr); - int (*hw_get_link_status)(struct aq_hw_s *self, - struct aq_hw_link_status_s *link_status); + int (*hw_get_link_status)(struct aq_hw_s *self); int (*hw_set_link_speed)(struct aq_hw_s *self, u32 speed); diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c index d6d8e70..dce17a5 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c +++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c @@ -125,33 +125,30 @@ static void aq_nic_service_timer_cb(unsigned long param) struct net_device *ndev = aq_nic_get_ndev(self); int err = 0; unsigned int i = 0U; - struct aq_hw_link_status_s link_status; struct aq_ring_stats_rx_s stats_rx; struct aq_ring_stats_tx_s stats_tx; if (aq_utils_obj_test(&self->header.flags, AQ_NIC_FLAGS_IS_NOT_READY)) goto err_exit; - err = self->aq_hw_ops.hw_get_link_status(self->aq_hw, &link_status); + err = self->aq_hw_ops.hw_get_link_status(self->aq_hw); if (err < 0) goto err_exit; - self->aq_hw_ops.hw_interrupt_moderation_set(self->aq_hw, - self->aq_nic_cfg.is_interrupt_moderation); - - if (memcmp(&link_status, &self->link_status, sizeof(link_status))) { - if (link_status.mbps) { - aq_utils_obj_set(&self->header.flags, - AQ_NIC_FLAG_STARTED); - aq_utils_obj_clear(&self->header.flags, - AQ_NIC_LINK_DOWN); - netif_carrier_on(self->ndev); - } else { - netif_carrier_off(self->ndev); - aq_utils_obj_set(&self->header.flags, AQ_NIC_LINK_DOWN); - } + self->link_status = self->aq_hw->aq_link_status; - self->link_status = link_status; + self->aq_hw_ops.hw_interrupt_moderation_set(self->aq_hw, + self->aq_nic_cfg.is_interrupt_moderation); + + if (self->link_status.mbps) { + aq_utils_obj_set(&self->header.flags, + AQ_NIC_FLAG_STARTED); + aq_utils_obj_clear(&self->header.flags, + AQ_NIC_LINK_DOWN); + netif_carrier_on(self->ndev); + } else { + netif_carrier_off(self->ndev); + aq_utils_obj_set(&self->header.flags, AQ_NIC_LINK_DOWN); } memset(&stats_rx, 0U, sizeof(struct aq_ring_stats_rx_s)); diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c index 8d6d8f5..7a1332e 100644 --- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c +++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c @@ -313,11 +313,11 @@ void hw_atl_utils_mpi_set(struct aq_hw_s *self, err_exit:; } -int hw_atl_utils_mpi_get_link_status(struct aq_hw_s *self, - struct aq_hw_link_status_s *link_status) +int hw_atl_utils_mpi_get_link_status(struct aq_hw_s *self) { u32 cp0x036C = aq_hw_read_reg(self, HW_ATL_MPI_STATE_ADR); u32 link_speed_mask = cp0x036C >> HW_ATL_MPI_SPEED_SHIFT; + struct aq_hw_link_status_s *link_status = &self->aq_link_status; if (!link_speed_mask) { link_status->mbps = 0U; diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h index a66aee5..e0360a6 100644 --- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h +++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h @@ -180,8 +180,7 @@ void hw_atl_utils_mpi_set(struct aq_hw_s *self, int hw_atl_utils_mpi_set_speed(struct aq_hw_s *self, u32 speed, enum hal_atl_utils_fw_state_e state); -int hw_atl_utils_mpi_get_link_status(struct aq_hw_s *self, - struct aq_hw_link_status_s *link_status); +int hw_atl_utils_mpi_get_link_status(struct aq_hw_s *self); int hw_atl_utils_get_mac_permanent(struct aq_hw_s *self, struct aq_hw_caps_s *aq_hw_caps,