From patchwork Wed Apr 25 18:23:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 904655 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=cavium.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="GbMei193"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40WT9K1JrKz9s0v for ; Thu, 26 Apr 2018 04:23:49 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756355AbeDYSXq (ORCPT ); Wed, 25 Apr 2018 14:23:46 -0400 Received: from mail-sn1nam02on0079.outbound.protection.outlook.com ([104.47.36.79]:50720 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756156AbeDYSXj (ORCPT ); Wed, 25 Apr 2018 14:23:39 -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=kK808acg7t8MLOlBadqLFwO4zK4U5PgpLGCFMYFVi5A=; b=GbMei193Rpc5DHQq/4imDeWAsJtmDT7eJL5Lh+NzlaMAFsDMmnc/N+YboIZXKmhYCkiumm1zEUlG4qc7E5R9BQKhM9UnI+6Ijo/JyGv86BjiMvtRtSg/OT1nK+a2ae0S3CjJJytm+At3zTJxIiVcg1IiwNbj3GE+GICLHStwVz4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by BN7PR07MB4211.namprd07.prod.outlook.com (2603:10b6:406:b2::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.13; Wed, 25 Apr 2018 18:23:38 +0000 Date: Wed, 25 Apr 2018 11:23:33 -0700 From: Felix Manlunas To: davem@davemloft.net Cc: netdev@vger.kernel.org, raghu.vatsavayi@cavium.com, derek.chickles@cavium.com, satananda.burla@cavium.com, felix.manlunas@cavium.com, intiyaz.basha@cavium.com Subject: [PATCH net-next 1/6] liquidio: Moved common function if_cfg_callback to lio_core.c Message-ID: <20180425182333.GA13856@felix-thinkpad.cavium.com> References: <20180425182301.GA13840@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180425182301.GA13840@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: CO1PR15CA0070.namprd15.prod.outlook.com (2603:10b6:101:20::14) To BN7PR07MB4211.namprd07.prod.outlook.com (2603:10b6:406:b2::15) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BN7PR07MB4211; X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4211; 3:vCyd6aqGncWTkFrTQBEgmgF3vx9nH3aX/DgAGmRhlbBFcx1tEmOaXsDkqIUrL+7G9viD6rqO2zyEIecJoIW3NfpLlzkM2DLwL+LIvZrtljUwT83aC1s8FdeBUzyc1SPM/Zngdffbi8Q4rVyAANr4StsyKICoGYsX5UPMoEnJCmF1DT82V45qGOUeelDbeZgVH7+koboMqym493qVJHst8gEWGMWM8nvDi/SFfQr8RVnSPdTv5CG0gyWwQCjeOauf; 25:XhbSJUceim3Qg6HcbQ0tIzCr9GkWOgPr70wTNQoOmUTGR9C/CD7jK57DbPepJTvmrD5EL7drDd04SUQMBcge1lL/rOSAN1CWyPUT1HMWdqq+x2DPVfj76WeISJJqIkcaNg1yxcnSQLxTzmIoRE6hCF+Apn9aNzhtYO8jmJqf4OSzC41xUS2Ouurlqyv/pG8xNyvVo4rWCLW3ILH8H4nnb1c042lULw7pC2gNmnfTASGOh4hWPn1VNK5KQcxJohdk/rYWtsPtM7lDgtipd/jlfy0JuNhS3CyfWeQLwsLRpfC+9jsOpbHGKlzPlQlz12LfClBhwSJ1KMr+KeHDiCZ/bA==; 31:2EAcBRDUWogeHNN8htns1dKIYQ4EvlARqza3VRg4bhNNl85vKaPHTdmCXVnNKVC0NbbsfScdbY2r62TBD57obLqeHtQtJSlgXFcQjsCRiBwx8cCw4UiO/e+istrEfSIHoYUovF8hgcQGJOU0D9fGd9BnDHMyFAeTBjjAna7ieSqDrmo9TJbaX33H78wYvoTBZNNk0v8spdjcPe67KktURC50czNyBsVWaieFask2Aic= X-MS-TrafficTypeDiagnostic: BN7PR07MB4211: X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4211; 20:uM6c4j8ndUG2Qyt8686YwfwcSFmTZL83RtWGq4XV4hKCtmxhwE1xwaHwdgv3WiRYFt69+39Vd6Ba04Koy5kO/4QIq7/Ta9QI3wcXZRbFE/F3WX528RZp8WgG7bJcASzuR1GhYOhiAb7xd5x6qsCrxgJUIGIfsoDCFATNwI3RK/msFRHk4pG6kclP8qu12LsowCBh1NoFVQx8x/hVrQeYdnmXdwIS+24pxWDpsrh4nq6w5lDBaH9ay+HWQ4vQ0ZW50xWUeq8yWtD2o9y7OGY/4KLsel/kqRXLQs2KoATbrZnbsfjLyybr49RHQbi2vGiFx5Dg/XFEr49IfZnwt0iOO0OdX+NZzg5GJdQ9mWDZvcx4ts8MuhXT80F+FkBsXerrLmyucWhAgmdQIQtAQxIlUMU/r2NSlfFZwZpePgrJk4Z6IaCzJDQFiyWq5sDZRjqxodUctQaPjDIg0416yE/pqRWXofHp3rMkRBk+UpRcczQEucALccsNnoMYx9fCHc45; 4:3/uv3yC9/QsSb3xdnPpdG5ech+P77MC60uRgJl0WsVd17+hl4hL5DAeqQtt62SNZOiBXBy150d2Mwe2XkFxE60KlJo5Wow+8Ixi76FymmaknNA4m71QYZ4+F09SJbC0ms1lkdaMvp8jcvOGEVr72gn00dOinhk0JWgsSQt6Vko0Ah1kyTqNvVBHSlgifGT1zEoRzTuWxxJS5woi3vT3XWVDZqS0r1IA6cT7DutgwpoGITBTL4HIgz0/k1IvFGpZdQhvZGKE+NTqidLoEl/VMXQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231232)(944501410)(52105095)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123558120)(20161123562045)(6072148)(201708071742011); SRVR:BN7PR07MB4211; BCL:0; PCL:0; RULEID:; SRVR:BN7PR07MB4211; X-Forefront-PRVS: 06530126A4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(376002)(366004)(346002)(396003)(39380400002)(39860400002)(189003)(199004)(478600001)(72206003)(33656002)(8936002)(2906002)(81166006)(8676002)(7736002)(97736004)(105586002)(76506005)(81156014)(2351001)(68736007)(2361001)(5660300001)(11346002)(6116002)(6916009)(1076002)(3846002)(6666003)(25786009)(23726003)(53936002)(47776003)(186003)(305945005)(4326008)(66066001)(107886003)(50466002)(26005)(486006)(44832011)(386003)(58126008)(476003)(16526019)(16586007)(86362001)(59450400001)(106356001)(446003)(6496006)(76176011)(956004)(52116002)(6486002)(316002)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN7PR07MB4211; H:localhost; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4211; 23:CnwLIno/f5CywWQ4gBab5yrA2bteX2v+8PaPe7Y7LwNHdeI7/ei7fZB605g+H1Jxo0tsGy2+Zq/BtYH9WUah1AvQsdR4zuUR5IkPdYoZelkO8Dp0QMcrckWm+WSR82WzeBTv2ZCPNfoebPnmv4yVk1BJWS3ixuwvq67vkQQMiSY+hnvGx14JajKSxKf9RIDHNSgmX/4JbAnvo/UhWwkwJWiXcei8s3gFMyAxrlAkUPBpjb7QGkmU+mPBr2yTmQJZ6dXMAcuvpvTyLlBRb+TD3nlo9/4Iue8w7lSfBtyhLPPmCnn9wz+cFR8O7dUq6KqRMNpmbN5eLazrYTl+BAukJTRSUAK7WEcX7okE2dhp1Lyq749KB5Uvc0InmzZdXoi7qROumsoc/LMRkZJIYr+EHn/+AcW9EWBx2odQm2JSJDeWLWBWN9Nerr8/lbxp04n8es7BE/TBmCVNEy+yFnZMu7zGaaH1WQo3qRSo+hg6MtmT9ggcUka1ifjd99glvXDujwQYJS3PsCCb3M5OJA8JZ+voRvYMe4hm/NLdvP1dhnPvD4VSMNTjgwQgtEWT4UWnb2+l94QOrF3xslAps+t5ai2ODaMH9fh8KuwsZ/iT7hbamNM46teGUYTZPbHkYZRXpCoosQaa7r+gPZXq0kJ0jooKUBX5mxfiADrgny+r2jJwdu88HGle8NhxPQcQqw13/CjQ9W+KchVWn2Sp3hekVKAzVNxnHQHCM303n7uJKb+tUysYaxDkv0JSmBDAMF27IcA9gQ8B3typwSZZsHlahmrNvQ6jt+pQINtjnxejNaI1/jTUGQH9RgCpe5cW/hiImgoZC2N608atnVgHV0XR9z2ZyyshqW3e8OkHwj+95mEZGTdJHEVHRgmMz8xtECDrwWZJuax8PAG4uYKdUMfo00nh5VTV6ajfcuathrOF/dylgIW/bMkpJn6PKOkT412l9rzZaHAa9XNZ8iQV1F0P/bOJC4Xme0gUTrIVET7ns9oh5/jQsInWbcbrVoFI1G2AaPKhIGSwAl1L3pZ4IU91KddR1z+tKimDBzbFfmqD7JG7afgyy+8bZBRZiWToJWICgx2haA6ul/LaL0RRft74TIrGwnuBhGb4TNqOHItXkO5JfLki5nFD4ZDWH/ZMb4WiojcSQWciLvqLLuBblWmHxZbLRzeLZMRjKKoWEJTeSOKnqQ1YCHAMNTSx7H7sL+y9xdG1tI9YFXKuNKBkoJVSroCPZu/7zSL9p60dAV/GbiIavKRgYcYnIN6AJDiOLbg4QtM9I7DsQ9FxkolmvJoRM+l0F5QoHouQ4zjIgZCfa4mFs/ktno+mHLLsyHlKuQDw X-Microsoft-Antispam-Message-Info: Wim+TrsOAuet3ewaKw6sIJLay7cxcVI5vPkYYBu8VeKqA4XwU+Jl4PZpyVngug9We94EG6NUybxspQcOymXqkAHSPfjGT/2O9pRSGkMk1GfRUH9SMEbzbBo/w2ML2RWxgMDHIhXKaOFTqtrtsqy60p7POJbwmlFykjOm9x5e2Bcg2GqvYUYe0u+FfytSy+e8 X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4211; 6:qCnuHchAoT2SzfOvyv2TJyvMHzwr3wDddtScdPRwOYzb0lGrPqkP4WvuKiPABDUH30ts0YD4+4YaerTNjGmOi7DLHFV5topz0gewg6IoFSih8KjYQ8fd22ZQpjmtaAnFG6LgEjTrvIdzuzZHu28k7c5BUJ8t4lNY6UNzbRLXA5aSdJ/slLxvwI94aRKQaH56JkAt2brDfTFiJakEGGYaNtpjiy9Awt64jOGvFbejARE1V+OefEWgTv8M9ctV1ysSr3mMgw4vheHqkq8RhVgGy007AGpJHaGI3Dx0X/xReiFJwJ7W3+H7FwG1m8yENvMJzWqzzqZuCDxReix3xvdwsNRxb7Kn13XGmWEw8mSXoa9BGYwk9cAHspyisEwQ1NzFjbq25/SvoBT8Uf7/cVlDmToiVvbsSUBxTMtHChyqJar6cHZvtqQPAEZZVRq9dzPDGKkrVatLWgL7obhElTC6lA==; 5:GXoFs+xk8cFewphL+Bzz6WDidLz8KAjD6N2xwDRQ5w71L0JqC3y6qVVErQ7cW2TH9corFvWR462jVZjhf207+yhM8378AOt9XhbfB2OM6joUSgW+69d8tyNwYZyWuIaJgpAvaOCnlbcjszBh6VldqKdOtXdtvPiiOGgY/7xCYg0=; 24:FdQBHViscpoZzrtkNK0oDMGk4dOOAnTFFqi6sOgiN8qdZKzDJzniDFwpQL9g0hGf2MtIQoczC4aA29gMUDm9zVKGs7bmWA/NsxaH2FaMohg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN7PR07MB4211; 7:7i6Y2MBEfh/HL2pS2S+JHHyjES60FLCDhnDkEevCzyTrS6vGbyeFiEQDMDUNs0IzREVLjZGH3L9z5WF87GEfVnNYYlOrCxNi/+NvQvhuBnbm2o3yyiZE5Tn0aG1RY8bjNJvr9tfX99ahDOoEAiM6wSmzsm7V6aZhltqU58JuIRy2hFneomJz03iHeOMl1Sjan6KfBH/e2w17KktLiQ3dEGXm+JuQaX/Qmb9F/1r8BjZD5SRuxfty8hVZvCQzNiJO X-MS-Office365-Filtering-Correlation-Id: 9bb48568-ade7-4deb-c43b-08d5aad9aa3a X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Apr 2018 18:23:38.1052 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9bb48568-ade7-4deb-c43b-08d5aad9aa3a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR07MB4211 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha Moved common function if_cfg_callback to lio_core.c and renamed it to lio_if_cfg_callback. Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_core.c | 32 ++++++++++++++++++++ drivers/net/ethernet/cavium/liquidio/lio_main.c | 35 +--------------------- drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 34 +-------------------- .../net/ethernet/cavium/liquidio/octeon_network.h | 4 +++ 4 files changed, 38 insertions(+), 67 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_core.c b/drivers/net/ethernet/cavium/liquidio/lio_core.c index 2a94eee..66fc375 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_core.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_core.c @@ -29,6 +29,38 @@ /* OOM task polling interval */ #define LIO_OOM_POLL_INTERVAL_MS 250 +/** + * \brief Callback for getting interface configuration + * @param status status of request + * @param buf pointer to resp structure + */ +void lio_if_cfg_callback(struct octeon_device *oct, + u32 status __attribute__((unused)), void *buf) +{ + struct octeon_soft_command *sc = (struct octeon_soft_command *)buf; + struct liquidio_if_cfg_context *ctx; + struct liquidio_if_cfg_resp *resp; + + resp = (struct liquidio_if_cfg_resp *)sc->virtrptr; + ctx = (struct liquidio_if_cfg_context *)sc->ctxptr; + + oct = lio_get_device(ctx->octeon_id); + if (resp->status) + dev_err(&oct->pci_dev->dev, "nic if cfg instruction failed. Status: %llx\n", + CVM_CAST64(resp->status)); + WRITE_ONCE(ctx->cond, 1); + + snprintf(oct->fw_info.liquidio_firmware_version, 32, "%s", + resp->cfg_info.liquidio_firmware_version); + + /* This barrier is required to be sure that the response has been + * written fully before waking up the handler + */ + wmb(); + + wake_up_interruptible(&ctx->wc); +} + int liquidio_set_feature(struct net_device *netdev, int cmd, u16 param1) { struct lio *lio = GET_LIO(netdev); diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index f3891ae..e78b3d8 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -1942,39 +1942,6 @@ static int load_firmware(struct octeon_device *oct) } /** - * \brief Callback for getting interface configuration - * @param status status of request - * @param buf pointer to resp structure - */ -static void if_cfg_callback(struct octeon_device *oct, - u32 status __attribute__((unused)), - void *buf) -{ - struct octeon_soft_command *sc = (struct octeon_soft_command *)buf; - struct liquidio_if_cfg_resp *resp; - struct liquidio_if_cfg_context *ctx; - - resp = (struct liquidio_if_cfg_resp *)sc->virtrptr; - ctx = (struct liquidio_if_cfg_context *)sc->ctxptr; - - oct = lio_get_device(ctx->octeon_id); - if (resp->status) - dev_err(&oct->pci_dev->dev, "nic if cfg instruction failed. Status: 0x%llx (0x%08x)\n", - CVM_CAST64(resp->status), status); - WRITE_ONCE(ctx->cond, 1); - - snprintf(oct->fw_info.liquidio_firmware_version, 32, "%s", - resp->cfg_info.liquidio_firmware_version); - - /* This barrier is required to be sure that the response has been - * written fully before waking up the handler - */ - wmb(); - - wake_up_interruptible(&ctx->wc); -} - -/** * \brief Poll routine for checking transmit queue status * @param work work_struct data structure */ @@ -3556,7 +3523,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) OPCODE_NIC_IF_CFG, 0, if_cfg.u64, 0); - sc->callback = if_cfg_callback; + sc->callback = lio_if_cfg_callback; sc->callback_arg = sc; sc->wait_time = 3000; diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index f92dfa4..83d8bf6 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -1059,38 +1059,6 @@ static void free_netsgbuf_with_resp(void *buf) } /** - * \brief Callback for getting interface configuration - * @param status status of request - * @param buf pointer to resp structure - */ -static void if_cfg_callback(struct octeon_device *oct, - u32 status __attribute__((unused)), void *buf) -{ - struct octeon_soft_command *sc = (struct octeon_soft_command *)buf; - struct liquidio_if_cfg_context *ctx; - struct liquidio_if_cfg_resp *resp; - - resp = (struct liquidio_if_cfg_resp *)sc->virtrptr; - ctx = (struct liquidio_if_cfg_context *)sc->ctxptr; - - oct = lio_get_device(ctx->octeon_id); - if (resp->status) - dev_err(&oct->pci_dev->dev, "nic if cfg instruction failed. Status: %llx\n", - CVM_CAST64(resp->status)); - WRITE_ONCE(ctx->cond, 1); - - snprintf(oct->fw_info.liquidio_firmware_version, 32, "%s", - resp->cfg_info.liquidio_firmware_version); - - /* This barrier is required to be sure that the response has been - * written fully before waking up the handler - */ - wmb(); - - wake_up_interruptible(&ctx->wc); -} - -/** * \brief Net device open for LiquidIO * @param netdev network device */ @@ -2156,7 +2124,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) OPCODE_NIC_IF_CFG, 0, if_cfg.u64, 0); - sc->callback = if_cfg_callback; + sc->callback = lio_if_cfg_callback; sc->callback_arg = sc; sc->wait_time = 5000; diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index 4069710..ad5195c 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -197,6 +197,10 @@ int lio_wait_for_clean_oq(struct octeon_device *oct); */ void liquidio_set_ethtool_ops(struct net_device *netdev); +void lio_if_cfg_callback(struct octeon_device *oct, + u32 status __attribute__((unused)), + void *buf); + /** * \brief Net device change_mtu * @param netdev network device From patchwork Wed Apr 25 18:23:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 904656 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=cavium.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="J7V9hYw4"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40WT9Q1wfQz9s0v for ; Thu, 26 Apr 2018 04:23:54 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756472AbeDYSXw (ORCPT ); Wed, 25 Apr 2018 14:23:52 -0400 Received: from mail-co1nam03on0044.outbound.protection.outlook.com ([104.47.40.44]:22992 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756444AbeDYSXm (ORCPT ); Wed, 25 Apr 2018 14:23:42 -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=gqq+r6wwVeJMfqueHkjO+A5EHbA/tIv//gMEeEWU//I=; b=J7V9hYw4t7T1njLlFIM9r4sMV9+eoFCqkVxuBD6OWpAlFXP2cgR3g4mM4LpZPWNwao3ugLFcgND1NUffupLQjqZuJ3UzBNTW4PO0nxgbg8Xkw2uP/1+A4X1STIwNQ7ZegwWu25eeL7Qj2QrlRk75xfYKzwEycvBAh/ojyfpsnVE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by BYAPR07MB4214.namprd07.prod.outlook.com (2603:10b6:a02:be::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.13; Wed, 25 Apr 2018 18:23:40 +0000 Date: Wed, 25 Apr 2018 11:23:38 -0700 From: Felix Manlunas To: davem@davemloft.net Cc: netdev@vger.kernel.org, raghu.vatsavayi@cavium.com, derek.chickles@cavium.com, satananda.burla@cavium.com, felix.manlunas@cavium.com, intiyaz.basha@cavium.com Subject: [PATCH net-next 2/6] liquidio: Moved common function list_delete_head to octeon_network.h Message-ID: <20180425182338.GA13867@felix-thinkpad.cavium.com> References: <20180425182301.GA13840@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180425182301.GA13840@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: BYAPR02CA0010.namprd02.prod.outlook.com (2603:10b6:a02:ee::23) To BYAPR07MB4214.namprd07.prod.outlook.com (2603:10b6:a02:be::16) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4214; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4214; 3:+Owt7RqP2MB8NnqSKA9N6LZHB0BhtEbgRGtQuY+sBT/Sw0Z1tbDDR5PjY1HD9g63S/ole+iPmzYsRBeEHBN+AOH7vyuV9gSD8elaxSi9ovRxBqdD8En6qws/paL7/AJPFMgWZF6Rfs+Aq27WBXpnbdQKp8Ca2hEGbupYRm0+SDXz+CQNVXi7IoZpEHxfqaxhQKaZsgl4uAbJ1y9S2iXqN1oP4s9J56P5dpfe90HE0KZ+1c05CfWYTEYe9Zpm9rKl; 25:vKxcjsZ6sRLW0WEX5mv4zSsPtM2/2iTvHgLioNee9eJfBXp9y4oV8AAajhQldLCuxDfFxf3c3af4uW0fqjZZGu7Qgfqh/QiujPZwfY8cSKbPLioMmxgOKJuFA17H+8QdNwk9xP1EMmKuljd1yWf1IjccP45Vj6VE4FvQQNNa7daRwCbf9vTWDbhnVHj6Xajjkw31eILRuDjMymYEXXOXaIcgZY0oXDrTXtf3+zdNErWF/Qb6EF+pDFyrox8RivJcTZAKKL6pHanq4h/gJGp9ecoevhVxPbSEwDfWIGmPunG18kGay1pp0rCv5NNPGYgnfVhGdQbLmKKCm1hhlJ/h8w==; 31:8fZsh1HVOqhrLIaHGXWgls4pfSmicnc6flHC+J236/st39ezvNsyoWSowPTLU3XRT8qapXfx1uZQPdIBb7oAzkzJtBGjvuy1pnYJXL3EovYezD+IbYJ2Pob7kWHs+ZVe9lVCh1OjDfIODL0B+Fgv2RByoZ8ML3fUobEv6z6zUaoMSNtkqV8F0M2N/o1oD3UAF62KAbv+Xm9uotMgu3jNBbuNPvBGCcnNSBHkf3ifYQk= X-MS-TrafficTypeDiagnostic: BYAPR07MB4214: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4214; 20:lKTt8JNaaEU5sh0o1pSOre3I/M6urD3HkGAkMRo3rjX5kvr/w6HOVQLLqFqLdDf7NkjfupChLu0Tr9X48N1VEBOnUX2T2VfZYpt5JKU88tHZfPugchFROpl2edf3Pyqk7yCQ77gYcE08v94cxJbSY1d4AGXFmE6zoFCXUQIQU5NinLU6dUiapn65NH+ir5RrZulyqg/AKryy82kjIcs8z42gOY///P9e4cXl0C6hmLMGN134pp2OCKujR+J7P0MlUDgGC1eRNdW2FvFRjsOl4HcZlq75rOAMf6W0yRKKRySGK++/cVnaSObrx1htbRd21WpUV6795Jdwj0BMXruec2OHCfmeOvNrdQUsYBHOE5fQV6yp8PcvsnovZcDeIok3/mi04SXceBQN3aP97CiFzddZ6ZxGQyllcYS1hpDSVO0HzSWv7+aYjd4Z+z86gYJxQRbuGDPPDqWD+1MYyrxMWKJC6/oYHHyLFb56KnjW92ZP/26kAlQ/WFA15prr9soP; 4:Yt0+J1FypwTX+WCprM3Okqt616+Ss3NBvlfq0ScWAy7RbwFzQFeVuLtba2rR3qioBzZXAgc8T0ej9B7/T4Peo/2q/vMgRrpBVGd7PKAQqd/T0IzHvzPg6XrFo0CJVn1C/+1SN6JAx9nKH1un5+CG33NN/AkwlD7czcsgq101TCW3AmoaAfoDI6EqgqqZ7Fy42VI57LmJehFfa/A1dP1zAXMNC2QW4t2DyxxYDjwKAcuKSLzLCo/tF2Pz8rjoFEx0Ovk69Q1n4qXAfT9agysonA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(3231232)(944501410)(52105095)(10201501046)(93006095)(93001095)(6041310)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123558120)(6072148)(201708071742011); SRVR:BYAPR07MB4214; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4214; X-Forefront-PRVS: 06530126A4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(366004)(376002)(396003)(39380400002)(39860400002)(346002)(199004)(189003)(2361001)(1076002)(6496006)(52116002)(8676002)(76176011)(476003)(2906002)(53936002)(33656002)(305945005)(7736002)(107886003)(8936002)(86362001)(486006)(58126008)(44832011)(26005)(956004)(50466002)(186003)(446003)(59450400001)(386003)(81166006)(16586007)(11346002)(2351001)(81156014)(16526019)(76506005)(316002)(105586002)(97736004)(106356001)(6486002)(478600001)(72206003)(23726003)(66066001)(6916009)(5660300001)(47776003)(25786009)(68736007)(6116002)(3846002)(4326008)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4214; H:localhost; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4214; 23:qkrPvQ7vw+D/Q15az5vmQVm67PT7DH+Wj/FxDHBwbvVZveyD7W6u5cGqM3fzjM8wHJnK2IyQWzPH84hi/GUvKzoG00Wz9FzT3eGPWLbopd7fESPd/x+0YTCTYKxgnGYLzpB469/OUENtTBUxVYJXGJvqB1LBNcgMpwz+6gGOyCTF7TKr+KS4Srae0+60HvAueHgzrXHBaJR7wjyBQf4sJIWYfRf2FivHriAkGiekTZz/lLhB/KzdyImLXym0K9yVZr9lG+oJjWRMUMnP8Lfynjy3SjQ9xXJDgGujO+Z1uSx4V5Zc9PwwLbaM1M+l2K8rAsDyUCPk3I5JoqgHGmSDgu2jPBsD0KxXnnDlDV3U2LoQB0H2+fa65sgvBI7Oaw9DQne5UpSE1SnGhUvzU4/R0g7AO2DESCnDLzJuvNKJeGhqstg//XZL1zDbYqiNcObQxoTx9r/WKuYKTCCK6d/Cd+bKtlZrnp9pzY6/5aMYgM73f3/uyBR/PQNqnvwGFBl8xQN3dtXdOY4/5RdZzLU/JeNwVeZLhgLGsuTHBfSKN8TEnw90Ul1M7XkPZaZI2jsqebKZDJiZtEd8VgWIhEGkbSZViwxRRR900+RNTEcVHvky9VKL7GBNo5X2TMtpxkrz+APr+rkBXxzoQ8UxPXrT11WYiGLrAk4d0TEkzfWn12MZwNMeqloxZRiVYxsGfd8f/kYRvZLTRLBfcOEURKqskbPPNgW73KDbgaVbJkopbjU05lCjCSUAtQz3oey72Sjr0sYPGgQGXO9ph0S4iTgVt42ACCqN/Vm7wv99rmF64dTUwjNKjUuQPLgw587RiI4BlumDix1Hx/Ml+x/M4gxVSoiUT1LhNv/xh3O5OZ9jBp0TSEq77hWR2GwVBtY+6ZLf6qcczEWqLzOT55pI3jEDeAN6KyfdlWdbWUDEhTJbkOoMcWcTQr61mTl8x9iVuxKcOcRZex3rB5f3GHX6nOpTxxly+u1M6Wa3OCFvm0JaR0fq5ytMHVn7S2RgSuC3MQp+2BjdgNGpCwco8W9PJTmzcSWLY7TiyZ5ctja15mAtIGYPBPpsyH6520+I1I+rb1zkvG8ePgN074aEG3opBDXcSX0D/MmjYij+Cypm85hRdhFECsSsF+aJU7VhlJbMG2JPR+ZerdjfXrzTALD9I9AGpzY3IT27G06UHzmJy83nDOOfw2LitB6CDltxjHicvnKHpmG/KqYNG9uwJ0E6SVwSiJKr5zv63a3DhSXzIf/g72JoUd6MLLKy5lZNvJWEXplqOGBemkMFYMMM8n6igiYLn4uOA3FR9L9UbjZCgelcCWE= X-Microsoft-Antispam-Message-Info: muk6V5lG1BDfzfAO3frP4Y+8iXin61TwI35RxwE/e3LwbU5numIpDnaeGAAEr8f9PQ9r2fVFp1acB54dcXIJDKffiSdS5NdyBUrs6zc39TQUgXrpuxjAK6LKzTV//WlmU6FaEMc5amVaTarOkf/hZH3/nU0SslfvZJOEirGqbAgxWjeHmW6HgOuk3cDTO5D3 X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4214; 6:NwF1tH1sCRcicSWPFubZzRZ1islA2iEP6/m33OhHyrWb7iiKlvnoZdnC1U1pE1I+qIKzwqnsX9zsQmiZEa6AOrAG1/ssLdsql6aE7515U8/tVi5HzUDqhXFAsxrfnliE5AXYmp6o/J8MoSPgs4ucrp/AsaMd/gPYO7SNGCV6n75VTJCL3H9CaHrWwIbQcdA2kRfilMSPBuyLa1jjs198T7UWFIYJP1ZTcxMNWa3c76wJTASGCDG/fol8FlooBq+WBdbJOFZyc6BB5yZ2ay9TXkPTQQynL4n1ayLo848s8nMjpSmI6tUnmDH7CEnQEAfuwzyJ79Z7UqpTaMKXsDQhBA8Li2jbxOVZ1MuVGZYqWOgGf89LlAGUxzdRxwyrJmwIPyr9rt08slSpYBfO0zaWv5xiIOevKXCGK2rXILTzD/Ts51iPyH6LCEvEosNY5NwHj5nM4bm/dDplZvN/v16rlA==; 5:GwFvo+79gWxy8Cy4rQtrQxOsm5xssxYrERtevaFhDiTNelGnyVa4COIoa7jHW6++TRfJiVa8sQOhGZMlA+sEFAg5a/goyNNWjaBzJrJXPfZD8eCh6pOeCS1J/wYY+/JV3hcTe/z2U8scGYv+1ejp2wJnaXXSzRALrqOZZouTWqA=; 24:P+7OLFkMuqv6Ne5EG8pv5ITCvq2B38HNJ8asYIpNtZ2WegMUZszTTa7WlOx2lVNm52EdmQS4tU5+xXyWDXv0QWJuVPQyJupas2ouVjYSWfI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4214; 7:1wnsD9oYtfi9Nhsu+M1LXtPpxedi6A7K014zPrSvOGxZrf6IU11OR2hA9LarUduBnkG8Ut43KPD0hIWQNcfp+LCJ1Sl1gM7COWhenxHB2lzNZQZkdyKX/x/tTfpXKWUCKhify1VricwYvlPxJiUn0NTEfWNOcRmKPZY4/LhJZ1nEd7B8gHOsVVHDqb6IFLthfA8jvJtH1PO2nr+VPtDpm5a44x8Tb/34w9a05dwGYdzeBzvB9c/jNlZI5hd47/tp X-MS-Office365-Filtering-Correlation-Id: 3ecdb401-d5d7-42fe-346a-08d5aad9abcb X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Apr 2018 18:23:40.9327 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3ecdb401-d5d7-42fe-346a-08d5aad9abcb X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4214 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha Moved common function list_delete_head to octeon_network.h and renamed it to lio_list_delete_head Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_main.c | 23 ++------------------ drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 25 +++------------------- .../net/ethernet/cavium/liquidio/octeon_network.h | 19 ++++++++++++++++ 3 files changed, 24 insertions(+), 43 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index e78b3d8..8b3ab98 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -542,25 +542,6 @@ static inline int check_txq_status(struct lio *lio) } /** - * Remove the node at the head of the list. The list would be empty at - * the end of this call if there are no more nodes in the list. - */ -static inline struct list_head *list_delete_head(struct list_head *root) -{ - struct list_head *node; - - if ((root->prev == root) && (root->next == root)) - node = NULL; - else - node = root->next; - - if (node) - list_del(node); - - return node; -} - -/** * \brief Delete gather lists * @param lio per-network private data */ @@ -578,7 +559,7 @@ static void delete_glists(struct lio *lio) for (i = 0; i < lio->linfo.num_txpciq; i++) { do { g = (struct octnic_gather *) - list_delete_head(&lio->glist[i]); + lio_list_delete_head(&lio->glist[i]); if (g) kfree(g); } while (g); @@ -2570,7 +2551,7 @@ static int liquidio_xmit(struct sk_buff *skb, struct net_device *netdev) spin_lock(&lio->glist_lock[q_idx]); g = (struct octnic_gather *) - list_delete_head(&lio->glist[q_idx]); + lio_list_delete_head(&lio->glist[q_idx]); spin_unlock(&lio->glist_lock[q_idx]); if (!g) { diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index 83d8bf6..7725b3f 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -285,25 +285,6 @@ static struct pci_driver liquidio_vf_pci_driver = { }; /** - * Remove the node at the head of the list. The list would be empty at - * the end of this call if there are no more nodes in the list. - */ -static struct list_head *list_delete_head(struct list_head *root) -{ - struct list_head *node; - - if ((root->prev == root) && (root->next == root)) - node = NULL; - else - node = root->next; - - if (node) - list_del(node); - - return node; -} - -/** * \brief Delete gather lists * @param lio per-network private data */ @@ -321,7 +302,7 @@ static void delete_glists(struct lio *lio) for (i = 0; i < lio->linfo.num_txpciq; i++) { do { g = (struct octnic_gather *) - list_delete_head(&lio->glist[i]); + lio_list_delete_head(&lio->glist[i]); kfree(g); } while (g); @@ -1629,8 +1610,8 @@ static int liquidio_xmit(struct sk_buff *skb, struct net_device *netdev) int i, frags; spin_lock(&lio->glist_lock[q_idx]); - g = (struct octnic_gather *)list_delete_head( - &lio->glist[q_idx]); + g = (struct octnic_gather *) + lio_list_delete_head(&lio->glist[q_idx]); spin_unlock(&lio->glist_lock[q_idx]); if (!g) { diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index ad5195c..3cb3d72 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -563,4 +563,23 @@ static inline int skb_iq(struct lio *lio, struct sk_buff *skb) return skb->queue_mapping % lio->linfo.num_txpciq; } +/** + * Remove the node at the head of the list. The list would be empty at + * the end of this call if there are no more nodes in the list. + */ +static inline struct list_head *lio_list_delete_head(struct list_head *root) +{ + struct list_head *node; + + if (root->prev == root && root->next == root) + node = NULL; + else + node = root->next; + + if (node) + list_del(node); + + return node; +} + #endif From patchwork Wed Apr 25 18:23:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 904661 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=cavium.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="FkD1jwCP"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40WTB800Xsz9s0v for ; Thu, 26 Apr 2018 04:24:31 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756438AbeDYSYS (ORCPT ); Wed, 25 Apr 2018 14:24:18 -0400 Received: from mail-sn1nam01on0062.outbound.protection.outlook.com ([104.47.32.62]:35134 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755223AbeDYSXp (ORCPT ); Wed, 25 Apr 2018 14:23:45 -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=t/t3ifjQlXQnTAaCMlnGraAsdM0GeU6zjJrXHEH6f4A=; b=FkD1jwCPXO8I61TLPy9SntM2X2LV7mer35hpXhMTmk49PS05OuG/WPiPB06u45BiW/m8IBCKqMEAhVRYMDT7RTIvxVlkF4o5UzJ3iaK9ZnkmhnkGqnOVpXC4Rvjwd/08W67HFDflF4Ji9v25uOz4cpSJ9SLc9/sEA9ktAbOUUHU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by SN6PR07MB4221.namprd07.prod.outlook.com (2603:10b6:805:62::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.13; Wed, 25 Apr 2018 18:23:43 +0000 Date: Wed, 25 Apr 2018 11:23:41 -0700 From: Felix Manlunas To: davem@davemloft.net Cc: netdev@vger.kernel.org, raghu.vatsavayi@cavium.com, derek.chickles@cavium.com, satananda.burla@cavium.com, felix.manlunas@cavium.com, intiyaz.basha@cavium.com Subject: [PATCH net-next 3/6] liquidio: Moved common function delete_glists to lio_core.c Message-ID: <20180425182341.GA13878@felix-thinkpad.cavium.com> References: <20180425182301.GA13840@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180425182301.GA13840@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: BYAPR02CA0035.namprd02.prod.outlook.com (2603:10b6:a02:ee::48) To SN6PR07MB4221.namprd07.prod.outlook.com (2603:10b6:805:62::13) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:SN6PR07MB4221; X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 3:mjuVTac2F3nbK5fGZ33BF5zoobfmQOMCmI1+LkZte+ZiQCBCd37INu1IG8wja3kLiaz6ma/dhhS7nwh7XO7Vx1DG5tQ2uhXwMg0xAsMbpYpnjVmduaFa76ZrN9rfJVtiI3+/0gft4aBGwYl7s8WB32NHNB6Po53QLr+96lnFbs6A/1U6pX0+53Obefhivj5ElnmJVi26s5L/RFNRIBcbPn7YThFVEighrTvVk1YKhwr8qaAY7/pwW/s1SZVI0XbK; 25:6jd0rWPjm7FntHSQ4YCrBcGLdMla1gRWZt9CccfWeZPMt9ChngzxHHoQ9xkgPL5og5EKVKZeXv+iqDg7S8FlqPkbRSubm8qZ0fi9yqIyv3XcRILFyD5ah+eEp87BxxYUG+fd+gq8Mt3Z1d7bIbltZeL4AVfc4qU01xrZPUgGEZTtBO190cLxtmU1Fy3FmYFovAQ492nOUAG89IMfJ9rslWducEq0YqtjyfL/K9+f3CAi8qmSzphCytV4lrL6O/JyNfQT0gSeoRnTnE09OPIpAiI8EeihHCnYNh3rDRqWvyKPP/iFvf4CgpzKPNbs23FSN6TkkE47KPrceLckq1uTYA==; 31:ELwLE7BCBFZfgTAD9F9DWdlPc0Zz4vuwMgYnzA7yvEN8l5jSx04P76aaWIEIvP5mjqWFOiiibY1npd65AlPvtrtadrxtolBg2yPI5+wib8X3YliHfxumLNtq2+3nDQ0IEMB1piKMFDcWCBl0623Hc5dYl928DrMLh/sxvUN56HtFqqnbkVC00ckAD5//AR2ozSVeSv2maQL8NaGbCPRti0xaVLHLIMFJTT0EqP6mBZY= X-MS-TrafficTypeDiagnostic: SN6PR07MB4221: X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 20:YuYzm81p75jdW21wz3Q2nwby6C6+nLh7Ge4Nd8D4iNtB6E/ov+yhPlaFB/HTRb9wd6VcOEWkHHqZ1pPRzvL1qxuRvjgeyQU+wSJEcnv4y38+O8gQrN0GVx5+8DgWa2c5lG/lUqsvqEkDdIM9NT+61f4Tlbt99wXiq6zUo9E/8lLM1LNRmQf0UT9/w7MghIQSq0Zq4LHYVaj0Tn8iQH3/j326chCiBgYUBtF3fRtydmwwI78IXVrTKNa0aOTRMf0tG06WzUhRhHCY6hi9bK7+wLpdnbtAp3IS++4H7tQbve8hRj3NDgdDvtm0x5TX8a7531pBhqMIv4a0HDGbtPIJaJejO6XA16ax53Fp6oba2oOTEG7W+EqxcrmiwgIedZ3wmosqcZqOmPv8hl3LaqHE+lUMlbiYOuYJSfV6lgz2pfpoqm+fscEC8zh0VmdYK/gn8FlNf20Wo6v4aK/Fz5DtvSUw+2jk0aPrIxVLRhuXad/e92metXW+lfIxtvOC/OEa; 4:KC9D0ONc+0BAtoby5Z0gj03HR4HcgBz+60OdUWPB1YDG1IMgdgE3mvclfRQ4XX4sOxaLlKl9e5OfakzPL+74yWoRM+A6I1I4E3hagXoe2Fe0NAuLys94iHPNF8w3DxMpasgBhlRjb1ZTXMihKekYEZFqXCM+pzV8ctjYchmfPy6s0B9jQr35wxpMz82gF8skAgvvmAlzqJ2lOXPM4cgY4rhckPyfQaaUp6jxGJNQmcuskhLOF7Pn/tta69wt1/akI7cDHqLXFQGi8M3Xcr8HzQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3231232)(944501410)(52105095)(93006095)(93001095)(3002001)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(6072148)(201708071742011); SRVR:SN6PR07MB4221; BCL:0; PCL:0; RULEID:; SRVR:SN6PR07MB4221; X-Forefront-PRVS: 06530126A4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(376002)(346002)(39860400002)(366004)(39380400002)(396003)(189003)(199004)(97736004)(8936002)(53936002)(47776003)(58126008)(6916009)(105586002)(2351001)(76506005)(478600001)(25786009)(16586007)(5660300001)(50466002)(6486002)(107886003)(72206003)(316002)(2361001)(33656002)(76176011)(11346002)(4326008)(186003)(16526019)(26005)(106356001)(44832011)(3846002)(6116002)(486006)(446003)(8676002)(6496006)(23726003)(81166006)(68736007)(476003)(305945005)(7736002)(66066001)(81156014)(52116002)(1076002)(59450400001)(956004)(2906002)(86362001)(386003)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR07MB4221; H:localhost; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 23:Wm4gPUT4h82DVfuRda/gXGmslAsk23DDUQ7PxdkuOIF+AEC6JNXkmNfzA09WaViVPiSoGXeJ546yfvAwz2vhcV8m2Ugn+2U6imT5HQ2zVLiuEvJ+x4/zSxTbNmhfuuvtULVLmq8MG984DihRWX7BodMfrc1G4BBA/e6ghCExHVWSiBLce48C2cbj6XCTIt+SV/hLowuOOM1ciVkRYwc24TsZGo0eVhaD6g8jN09VVtVwIzunEc+gJG4K1JqV5W4mRn2oJg87Mv7PJ9uOYo2/h0nj2C1iduDZHFyMLzbc/g3Wc4OBEuT5DqfjrFtU2p6Wyu8uhnMQIw4XegZgB9caCgQoJyOGGsP5ZWL6hzaVUnX9ouu8rZfoDDDUBb/cj5hNQzC3Gml182oF9RdPUsUAmEGmuxFAwcU+ux8gCGGXhuPCCZGG6Ey4MQqdyCc9JeaBObFHyFUhK6q97VML4+ubPcd0oAOo6zKGLuZSqsARY3T9XR4n7kKzsL/BnhViVEjMDj/l+u6E2+TPUvPE+tySq9PgQKk+gqcIuV7d5+wt+RSgqUJ/pnIemRaUsgWX/c+2WTmJ9LkJOUQcxhqYWokeeuJwQCbMAVY4ULSxkhgHlYVneX32Gtk977CWTj7PHESO5sLVSR8qbEr7dKQftp6u21Wcjy+DIHTDE+kQaC+xIFkOU0fQ0nlFZ3pKniPGZFMrn3luD5eGu4PmZw0zARd269Mqf/tW6IBhfjd8UA8C7qEDozHD02DZSstGg96X7Z9PHpItNTcUA1SDU8WF+AT6MKP0WK/yQgMFhwqktjDt9gF82LfHcJueMIrUiR7EE7hYHJLdm0IPQocLshUHLEkmkkp4ORymdAy9B+6l+bMbsTD4IgCTVqp9yY0OqSjk+SfFTWgv0FsItHGFzf3PjFyhZfkUyDbVuosiMt7t6RXjF4XYZZPXjKtv9GNTHJ793QKMnntusoS7AZojljPFuIQ7YUwM3bpT23beMh9WJQm9ssc8z1zA4EwOrg7yPX+ebSRTCO2wU40gEAd3LHvIt66FnabtNROdiec8erVMYAGyUPhBH9bFaB0NFVRo7n8vXrGhaq5M2hvyRPAu9a+/ClV0ezGPgr48PboE2qGIqClMAZd0oVpFb3EWyF0DNgF0w5zZrsG/Zikfz39mly/Mcy0McivRzZYlQOO/GpJGe1n6tp+1OGHxL2fH+efoekFpJPRHNboqbRkFkPkG97Kfs0BceUSSvCtqh07ADOiXIJDJkQQlvZ6YQrsH464pCw5CiEq1yM/Nr23JLsO1/F3SkWifBH1sNDU0/S4J618DOF/wGwU= X-Microsoft-Antispam-Message-Info: DoG9pgysjUJnXWreHN9Ou7OFSClGH+Yc/JMh2hzM5aztUv/FrBMmgFYI/1x614Ih2+C3KzfUjf/MH1+ryorWcitrhPZor+5x1LI+TA8gEn7Dc5g9p0XSCqhdwUgE4aDN7HQQTDZJKg3oxN2DhwXabNp7NUrj2hKxRIIlVxfyvsuuHs/44xZjhVWSagRKq1VS X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 6:wiI6xqOHln7HoVHOek+JY9WVNQmkAACRJewFmjhtc/94cVRS9GQ9+lUDeox/pK8dZzATX/fMGp0XiHukfHMpk+6GzXZMRnNaYYtcCZD4jajyYs7jjbbrot5Fby/iCE96cy9vICf94EysRW67iNN+9D6LucVuHgGXIFn3fN37vwFdQC5yzJPTokedHxJThCjxkNB8SeRuYKmCb3h9/4xT9DBDIdq9lOBnWVNXRinzW/X5dL1XUW1fzPptZ4dlR3j2zxDZe7R5g+4LmPlB1bx7V26ABgafDenPl6JXNY4R8HJZZ5xJOsPzPxFhRlwcWJZ3euUi304M7LF9YZvZkLWsBNhIr+WrTMByQLRNjfEM+UxEDLn68Smd+1qcSYGK+sR5lWNceMU8foCV2Bx/nUPyTKVdW8uVGvgA39yo1dA6nxHBTmCwxNaxNiwQDkR9amNSS8nOvlFCAXXf5ImLEg7GBA==; 5:FHIH2gSEQJQO8JxH6rFSAWJ3F4/vIOfS9pEDX1AqwXTEw/sXZTQ+IMNOSxZD5sRiyu5ezDlF4k3Kcnq4SQ7MDRVlvpVWjR/3snTWbKJWJbkwLRihWbH+2HrtAfNbB9+sbwdXZcyC1Ty5Mt/a42LPErfNxjsBr9X5wxmphqMZhd8=; 24:ZSy7wPmh6WsdI86jxpGni/2Z2boZ+pADo43HMaYG8JVFe6m8wH94SmYYTR/sJmAKd25aRe7J0D/hE3kLWPcn8Tvai4VWw5bsEBkq3nEgz3s= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 7:w+yno6C1dLvlcWrpvqPqInu25NoyKH/ACg4bh30iO+k8U7YmWsDUxyyhpIy5IY88Hn3MyzjUE1XUsmYhFkfe8D6iLVM7dlwryNC5pp1wY6mA4uMDSW66tBZiNbhCHVy0kO26SsmkY9n/t7QF30lmtyD53sv6MKKPFXRnJ5vTU50m5x/Hag/RSpkbMWFqgYIm9y7ymT3gB+qTmVR5H7nlQFOWRaCfkxkREau0Wun7SKxL0WQTmgXsQVjlxeLRDYdj X-MS-Office365-Filtering-Correlation-Id: bb078459-2614-45ac-1217-08d5aad9ad78 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Apr 2018 18:23:43.6183 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bb078459-2614-45ac-1217-08d5aad9ad78 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR07MB4221 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha Moved common function delete_glists to lio_core.c and renamed it to lio_delete_glists Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_core.c | 41 ++++++++++++++++++ drivers/net/ethernet/cavium/liquidio/lio_main.c | 50 ++-------------------- drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 49 ++------------------- .../net/ethernet/cavium/liquidio/octeon_network.h | 2 + 4 files changed, 51 insertions(+), 91 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_core.c b/drivers/net/ethernet/cavium/liquidio/lio_core.c index 66fc375..76aee81 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_core.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_core.c @@ -61,6 +61,47 @@ void lio_if_cfg_callback(struct octeon_device *oct, wake_up_interruptible(&ctx->wc); } +/** + * \brief Delete gather lists + * @param lio per-network private data + */ +void lio_delete_glists(struct lio *lio) +{ + struct octnic_gather *g; + int i; + + kfree(lio->glist_lock); + lio->glist_lock = NULL; + + if (!lio->glist) + return; + + for (i = 0; i < lio->linfo.num_txpciq; i++) { + do { + g = (struct octnic_gather *) + lio_list_delete_head(&lio->glist[i]); + kfree(g); + } while (g); + + if (lio->glists_virt_base && lio->glists_virt_base[i] && + lio->glists_dma_base && lio->glists_dma_base[i]) { + lio_dma_free(lio->oct_dev, + lio->glist_entry_size * lio->tx_qsize, + lio->glists_virt_base[i], + lio->glists_dma_base[i]); + } + } + + kfree(lio->glists_virt_base); + lio->glists_virt_base = NULL; + + kfree(lio->glists_dma_base); + lio->glists_dma_base = NULL; + + kfree(lio->glist); + lio->glist = NULL; +} + int liquidio_set_feature(struct net_device *netdev, int cmd, u16 param1) { struct lio *lio = GET_LIO(netdev); diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index 8b3ab98..afe22b2 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -542,48 +542,6 @@ static inline int check_txq_status(struct lio *lio) } /** - * \brief Delete gather lists - * @param lio per-network private data - */ -static void delete_glists(struct lio *lio) -{ - struct octnic_gather *g; - int i; - - kfree(lio->glist_lock); - lio->glist_lock = NULL; - - if (!lio->glist) - return; - - for (i = 0; i < lio->linfo.num_txpciq; i++) { - do { - g = (struct octnic_gather *) - lio_list_delete_head(&lio->glist[i]); - if (g) - kfree(g); - } while (g); - - if (lio->glists_virt_base && lio->glists_virt_base[i] && - lio->glists_dma_base && lio->glists_dma_base[i]) { - lio_dma_free(lio->oct_dev, - lio->glist_entry_size * lio->tx_qsize, - lio->glists_virt_base[i], - lio->glists_dma_base[i]); - } - } - - kfree(lio->glists_virt_base); - lio->glists_virt_base = NULL; - - kfree(lio->glists_dma_base); - lio->glists_dma_base = NULL; - - kfree(lio->glist); - lio->glist = NULL; -} - -/** * \brief Setup gather lists * @param lio per-network private data */ @@ -617,7 +575,7 @@ static int setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs) GFP_KERNEL); if (!lio->glists_virt_base || !lio->glists_dma_base) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } @@ -634,7 +592,7 @@ static int setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs) &lio->glists_dma_base[i]); if (!lio->glists_virt_base[i]) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } @@ -656,7 +614,7 @@ static int setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs) } if (j != lio->tx_qsize) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } } @@ -1452,7 +1410,7 @@ static void liquidio_destroy_nic_device(struct octeon_device *oct, int ifidx) cleanup_rx_oom_poll_fn(netdev); - delete_glists(lio); + lio_delete_glists(lio); free_netdev(netdev); diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index 7725b3f..dac2d29 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -285,47 +285,6 @@ static struct pci_driver liquidio_vf_pci_driver = { }; /** - * \brief Delete gather lists - * @param lio per-network private data - */ -static void delete_glists(struct lio *lio) -{ - struct octnic_gather *g; - int i; - - kfree(lio->glist_lock); - lio->glist_lock = NULL; - - if (!lio->glist) - return; - - for (i = 0; i < lio->linfo.num_txpciq; i++) { - do { - g = (struct octnic_gather *) - lio_list_delete_head(&lio->glist[i]); - kfree(g); - } while (g); - - if (lio->glists_virt_base && lio->glists_virt_base[i] && - lio->glists_dma_base && lio->glists_dma_base[i]) { - lio_dma_free(lio->oct_dev, - lio->glist_entry_size * lio->tx_qsize, - lio->glists_virt_base[i], - lio->glists_dma_base[i]); - } - } - - kfree(lio->glists_virt_base); - lio->glists_virt_base = NULL; - - kfree(lio->glists_dma_base); - lio->glists_dma_base = NULL; - - kfree(lio->glist); - lio->glist = NULL; -} - -/** * \brief Setup gather lists * @param lio per-network private data */ @@ -359,7 +318,7 @@ static int setup_glists(struct lio *lio, int num_iqs) GFP_KERNEL); if (!lio->glists_virt_base || !lio->glists_dma_base) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } @@ -374,7 +333,7 @@ static int setup_glists(struct lio *lio, int num_iqs) &lio->glists_dma_base[i]); if (!lio->glists_virt_base[i]) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } @@ -393,7 +352,7 @@ static int setup_glists(struct lio *lio, int num_iqs) } if (j != lio->tx_qsize) { - delete_glists(lio); + lio_delete_glists(lio); return -ENOMEM; } } @@ -837,7 +796,7 @@ static void liquidio_destroy_nic_device(struct octeon_device *oct, int ifidx) cleanup_link_status_change_wq(netdev); - delete_glists(lio); + lio_delete_glists(lio); free_netdev(netdev); diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index 3cb3d72..60db303 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -201,6 +201,8 @@ void lio_if_cfg_callback(struct octeon_device *oct, u32 status __attribute__((unused)), void *buf); +void lio_delete_glists(struct lio *lio); + /** * \brief Net device change_mtu * @param netdev network device From patchwork Wed Apr 25 18:23:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 904657 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=cavium.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="c99lH/OL"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40WT9T2kMZz9s0v for ; Thu, 26 Apr 2018 04:23:57 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756475AbeDYSXz (ORCPT ); Wed, 25 Apr 2018 14:23:55 -0400 Received: from mail-by2nam01on0079.outbound.protection.outlook.com ([104.47.34.79]:30432 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756156AbeDYSXr (ORCPT ); Wed, 25 Apr 2018 14:23:47 -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=AzNavNa+OB94rEVcB7xBAmIL+uugVk60KEOLSmeY9fM=; b=c99lH/OLefI+9aLUZxDNF5/jeKKoC5S4VxKhkKkncGobbBuRROY4DBjci1UUCVTuQT69if2JI+ALMQZKAnsBkEUv4/6M4t0ZD30rjTo3u8TOILJvjZSyMut0C2fhPHiVDVMvQSjvfboaaaxvik+mdegsgdZTd7FNpG0W2qlvDz8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by DM6PR07MB4219.namprd07.prod.outlook.com (2603:10b6:5:bd::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.13; Wed, 25 Apr 2018 18:23:46 +0000 Date: Wed, 25 Apr 2018 11:23:44 -0700 From: Felix Manlunas To: davem@davemloft.net Cc: netdev@vger.kernel.org, raghu.vatsavayi@cavium.com, derek.chickles@cavium.com, satananda.burla@cavium.com, felix.manlunas@cavium.com, intiyaz.basha@cavium.com Subject: [PATCH net-next 4/6] liquidio: Moved common definition octnic_gather to octeon_network.h Message-ID: <20180425182344.GA13889@felix-thinkpad.cavium.com> References: <20180425182301.GA13840@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180425182301.GA13840@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: BYAPR02CA0016.namprd02.prod.outlook.com (2603:10b6:a02:ee::29) To DM6PR07MB4219.namprd07.prod.outlook.com (2603:10b6:5:bd::28) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DM6PR07MB4219; X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4219; 3:LyH+8u+sv2uUrYactBvfYEZDLVuX2WBeQnPZ+rbe8wQtzJzWaPw8k9DCeiZeKniwMNWUuZsqrkgmBF7bWapJZ74A/PTNjuBROh8mWZeyTU2tBIshcEXY/xHu9q4stGOWlNjYUHlGvqYiuvbpz1VdGIhie1ivCOx4qTKlg3poN6jlz5bsPDTgdum37ISUKrn9dAdcIsxnAwYZOSFKx3nQ2D6Zifvn2a4ONwbeBqm98z0j5PuOtWNkZnKGDPaXahUh; 25:S6pkf63kYEP8hCb73ufZLZ7qJorbBi7WqxKGGxg14P+B85Ob2AT3vovwriwK3Z5vqr4+9NB6e545mh5rJtGVfVYQD3J7livGoiuxgWAIhA0EGkYbeTQBOPTwFIn/AUsIEInJLi+sDZOqHT9hh80w6uVdG6UOsy74YQtq/RQDYEXlEMwHgu1ECRbMOA+Azt5OVQJJdvyE0fovQVGMunHPKHMpjjAuQX7e5ykVntUdDn/ZWhys3IIYhF+QIQ02MnwhMDDuiHjYeNya7dzNeKZU9ksIwVO7RGegI2o5Bi7PVjY8ZswqCCkigG6eaDd4okJOscQYSQsRFuxE7dEv2unKkg==; 31:8RUN760QqS+xXo2UuFpkJHxO12BAPJCzSZeTA5LVcUnM0aDHEe6v5HNsZE6wPhOANU3sqvB+NfUDtcbH5NAaJQxHhU5jtG4Vg2o6kwMXH7SQDQvUUiY3fkclc7ZHpoUx/VzFZ7ACkuEJm1i5A/kKgaHWDmkcLHUiMzykpdWRrDRpq4ztdaSIXTw1U6BQaibSh1+AZhWmrn7Xf5lPD/lukCj0++y1FNYa3SMS47MJZ08= X-MS-TrafficTypeDiagnostic: DM6PR07MB4219: X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4219; 20:RrkeZ3bmrWhCq4GYf6eVNeWMaZRU/W+sIxDAwUH417hTc80oidofuMTNMHvxURbhlY/DXlrMHkGyhzVtErMSWjm3J19rPO0Wj7NTXpMGsX11o+NcNqZ9uzmfKBliRMzCGKw40h79/4sMsVecxsbY4Jy7eI0jtVi9csfcO+6XtumySb7TivPI/iOgU+iTFAx/aY0ETDKFCC4ud1YQzzmEOlNMWpHEzlXcb2khksttM5G2b5w3gd5Nq8WzRtYDiLa+rGEn+xL+onnDgbz+dBuWttNf8edooIIySel+cgqp/gfWGVqJmNrv4SmLrET031VDkZVxjrCWaKJbtbO9zVFADTv8LfOORpKQ9PjYxjxgA0dTvZp0SlwyLKofivw34cWEi35K0+mjFzQrSb0rmvUMOm5aj3gVBZfzSIoVAD3kcBP6UO0+ySPw0Yb2kbIBKT8exp0Fs7j9s5O0EZ5cFKClGFLgGScBxK/A4F08YfhkSqqbI6Ho4J5NOv4ZPnRMpZLL; 4:En79sGjF6r1RxW6AYgVyxelMqd/PjTbyCPTZqbeWpc0c2H+i4Immmv4g6rYJ8DeCzo3lcwK9aJ6W6hH9JE/ClK3vQh0GNvzz96Xxn/RRU2EHvjIiI1XLD0WV0eGoVh4VQrbdkRYy+XaIluVPJ9XrN3lpBCKAf8GEeCiMg1EdJ6Kx1CkHfVmBFk/4zdr3ZOskKyaoktJqLDxyJetIBdu5saF0Huw9wMirO7nwvfJteHkm7/b8mNDGdiq50eJax2JK11eI3acIKh3DQXfsa81a9Q== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231232)(944501410)(52105095)(93006095)(93001095)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011); SRVR:DM6PR07MB4219; BCL:0; PCL:0; RULEID:; SRVR:DM6PR07MB4219; X-Forefront-PRVS: 06530126A4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(39850400004)(366004)(346002)(396003)(376002)(39380400002)(189003)(199004)(2361001)(68736007)(25786009)(44832011)(386003)(6916009)(76176011)(305945005)(7736002)(52116002)(53936002)(486006)(1076002)(2351001)(446003)(66066001)(50466002)(26005)(11346002)(33656002)(186003)(3846002)(6486002)(6496006)(23726003)(956004)(47776003)(6116002)(476003)(81166006)(81156014)(575784001)(86362001)(5660300001)(8676002)(316002)(97736004)(58126008)(16586007)(4326008)(106356001)(16526019)(107886003)(2906002)(8936002)(105586002)(76506005)(478600001)(72206003)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR07MB4219; H:localhost; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4219; 23:SHukNkJvnyWCxp6TG7lqnQFF+72oY+Q6lrOdukeKMXRYa6MtWEgFTaCzsTB5AHWGgkcK/l5RmPKxkSc+Q8jdLHCeFAOmJlcFIy1+RTyRaf/nEdP3JBUt1qHiW3ICTfVXlXzP+pmGzGYP66aj4ITKhLQGb7JCqIJu0lXkXaDVtNK/SSOfxdqqNlfQHI3ng6Y2VhTKVZXnzVkgiChwLI+80wrpLpZBiLsJQYHoeIbZijjKHQhAkK1MKi41gGxxW3Md8IMwmjkLbmRPvGWYgQMP7jAFo7wMn8Yr4pao4ElyCcmzao4Qy8D+tf+OnX5/uucjsV1OT3ezJwVCPRWsZXOLMrUDBeHC+SvQth4CehJXXW3ISlvm1Dh5tLEi9lNeYIlP27A998FSc6MqRvuByALRK3Z6p7G8rjJSPFhvFHXHshZutfDfnohebZpGEoDXPZiQiWjH+RbBgoYo5t17jbu7/+n86RbkLn+xNgoJSFKkiptukdXKL1j8XevhbxNEBmymUJFVF68K6tuprZMq1eubFBqRQ+qlZm5PRE1qzFoRc1wmouVEYimluaaifm3lIhiroPxsm79vKIPeVUyz4vja3rC4EvlRgITOKqoKDq/Yn+cseEdLPgxExomM533EHng0MtyjijUIo6dEr/8CDu2FIblqOz1VhxiIpL4nTQBnigDuheJK856b3bWFkBiTGptHOO4ScaodzJbpjylaNUqV11Z+BMWLVlgbx9KXpPQYE+ewPg0XdxF5RuT1AChkoWBeq01A4bABW5bNP7a1DpK594DI+mP8g+aA6sJd6sij38pPNQ1J9kmlo/GXanSm5ND8tzkxVklG2IefxwBxaUEQkNHHby1aFkuYXVGMdMkK+VuuR99jQJuRstSym02WF7QuOqgqpyDeORfmHTH5/b4Z9xJxI6IsIj8T0pF3JUd7gLpLj40+GeBaB1+hdsxH5t8DhP1ymivQPI2q9IbvJwIldpiD+1kjOgv2EW10zvOY1tedPATXuJ+kBgF10zVm3SZbrC/8E8dgfKH9c9mtNxLlPkSXyp8bH0YpxGP3K1lDFkoSPknf858EUJvI1fMkNjzF79ZRxnMB45zXoFSfZGMYsuYtoYqG9axlJfpiGwHkP/nYTb0zuzmh3k6hje3FnhFsptAU9CQR/ozZrsjoWZlqVSE3XbLotK+zwJjcCO1oeT2FisiLIrwKGxvhpSNrxXmjptZ94mlgjxGj+OCFV/OKtibE+SDwDBamIUT2SwqDxJlDmWQrElz3HXtK0LMPKiLUuVz8zreUCjEp2YhhbgCK7K6q85qya7vOecLdpbjyO74= X-Microsoft-Antispam-Message-Info: uk+0VMx5rX19APbeq9/9Jg4KHzBUFu2rtBy8t/8rYwXZ9+3g6iyctD6iqbMtvSdpxZIzMdyn8HE5g9e37Lqh0ArFuArXAaTeE8Z11eDf3bF376Jb/93vbFfpYG9fFyD4Si0s8IwNGDUzVgdfw6eZ0UboFsWzrSpS69tjHzmoxouG1SFYX04JJfWnpF62/qaa X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4219; 6:T5nBO1WV2hTZO/mMqSRvbbIFXGmz6H8k9DmsSsapkerpFmLsd64xiVWqfbKDarzKUPo1dGPBjUqarDeJuXKMqzGfNZWUwtNAvqPwpNa60y0fOtiRiDvGYq0eICwqdOfUeCWTXUpFvkt8R8umbXZx0zhP1PAY1MTDT/yHN0Tot4/E4oXgSyzF6AWR2NwKRNdQwIvopZzB3MEw9SiDkueYxP9DuKrFpqHKqNdzpXED8whuwpkCkCbLEPHGcH7Citzb9vbiCiqvBdAsd0tk67RzQL/e+QnjlBYZ353o9AjTCLqTCJ/xbBGR4BbGd7vTSXHl495j+HO6H1Kjbm34ybzAnUsTKspBeskibZLCE8ffPbCnn6065+/Gr5vQR3sBI41RzmeYtXdSj/FzU4rWMdiQVYxpvYhhPcOd9SJTlN2xmYmYS+DX3O4RtZJVC+uzcHx34FfAjqOW7fMtmVOTrkx9iA==; 5:5+ZcqfHHjnzuabmzDnBrE0PY1ilFBQiAICMRN9LLfJBvAp3qV1cwNiqHTnt8HV9yvGEGbkbFkxqwkRk8npcQsxcnI3EMi5pnnorXhac9HOP+ErOMmajpd8P/nvg2gxeOnsQuy7xvZFlclXujEWOjB5F+eB3Akds2/fboKlQy0wo=; 24:kMOwJJ+NWDubc4278wDjPYTuDOPlpocQQqXNCz6s9NBlNNkvblyckTK8hIoC85rBt+jl+9FYGvWr6A1/zy2cuvm4MblB5jwjGFBDPf9mGcI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4219; 7:oeDCy9wAiWHVb2rpj86KV6d1ueZQbdZj5zsrGsmtsjGCtjxbim0GrrPOBdrA9mKXt3jVvQ0H5AkZwQuTE4PwQI4/ELgjB2EWjKV9cfu8eNf98FGUa0h9wHQMgGHpJsMX+gotzFYYk2etHaCumZOo0uvExckAF2U39ma39Thj4T2zRVcp647OO/T6Rr+hxeoMjJAaayCMNdvXL8dOYB1hrJ88s6ulXpu+TQoAB7YwBk+UTqn/bmPDEJtOK8rrVkz9 X-MS-Office365-Filtering-Correlation-Id: fcb22023-bb2f-466a-19a4-08d5aad9aef4 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Apr 2018 18:23:46.1713 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fcb22023-bb2f-466a-19a4-08d5aad9aef4 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR07MB4219 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha Moving common definition octnic_gather to octeon_network.h Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_main.c | 21 --------------------- drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 18 ------------------ .../net/ethernet/cavium/liquidio/octeon_network.h | 21 +++++++++++++++++++++ 3 files changed, 21 insertions(+), 39 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index afe22b2..c0bd489 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -144,27 +144,6 @@ union tx_info { #define OCTNIC_GSO_MAX_SIZE \ (CN23XX_DEFAULT_INPUT_JABBER - OCTNIC_GSO_MAX_HEADER_SIZE) -/** Structure of a node in list of gather components maintained by - * NIC driver for each network device. - */ -struct octnic_gather { - /** List manipulation. Next and prev pointers. */ - struct list_head list; - - /** Size of the gather component at sg in bytes. */ - int sg_size; - - /** Number of bytes that sg was adjusted to make it 8B-aligned. */ - int adjust; - - /** Gather component that can accommodate max sized fragment list - * received from the IP layer. - */ - struct octeon_sg_entry *sg; - - dma_addr_t sg_dma_ptr; -}; - struct handshake { struct completion init; struct completion started; diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index dac2d29..8151d11 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -75,24 +75,6 @@ union tx_info { #define OCTNIC_GSO_MAX_SIZE \ (CN23XX_DEFAULT_INPUT_JABBER - OCTNIC_GSO_MAX_HEADER_SIZE) -struct octnic_gather { - /* List manipulation. Next and prev pointers. */ - struct list_head list; - - /* Size of the gather component at sg in bytes. */ - int sg_size; - - /* Number of bytes that sg was adjusted to make it 8B-aligned. */ - int adjust; - - /* Gather component that can accommodate max sized fragment list - * received from the IP layer. - */ - struct octeon_sg_entry *sg; - - dma_addr_t sg_dma_ptr; -}; - static int liquidio_vf_probe(struct pci_dev *pdev, const struct pci_device_id *ent); static void liquidio_vf_remove(struct pci_dev *pdev); diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index 60db303..26961e1 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -47,6 +47,27 @@ struct liquidio_if_cfg_resp { u64 status; }; +/* Structure of a node in list of gather components maintained by + * NIC driver for each network device. + */ +struct octnic_gather { + /* List manipulation. Next and prev pointers. */ + struct list_head list; + + /* Size of the gather component at sg in bytes. */ + int sg_size; + + /* Number of bytes that sg was adjusted to make it 8B-aligned. */ + int adjust; + + /* Gather component that can accommodate max sized fragment list + * received from the IP layer. + */ + struct octeon_sg_entry *sg; + + dma_addr_t sg_dma_ptr; +}; + struct oct_nic_stats_resp { u64 rh; struct oct_link_stats stats; From patchwork Wed Apr 25 18:23:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 904658 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=cavium.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="U/HYoA7s"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40WT9X0Qh3z9s0v for ; Thu, 26 Apr 2018 04:24:00 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756140AbeDYSX5 (ORCPT ); Wed, 25 Apr 2018 14:23:57 -0400 Received: from mail-sn1nam01on0055.outbound.protection.outlook.com ([104.47.32.55]:35807 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756469AbeDYSXv (ORCPT ); Wed, 25 Apr 2018 14:23:51 -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=2O8cEF0CSQVod/OVJiTmMJQIl47eP5xpcEuvgb5RAa0=; b=U/HYoA7s1QnS6TgqrNgtHDq5EvhmUvt6BpV26Go4XtZeEEn88QQeA/AOdWyVWeHHQInXijQdZPRNGm6eemfVbskmjc0Z9v3AGybJt/Z+1bRTK8IQ4tOv/8uzFrU2oMvOZyX16o2h/qcs4plpE11cBURa/Rpq1XVUX1ThLFp9C+I= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.156) by SN6PR07MB4221.namprd07.prod.outlook.com (2603:10b6:805:62::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.13; Wed, 25 Apr 2018 18:23:49 +0000 Date: Wed, 25 Apr 2018 11:23:46 -0700 From: Felix Manlunas To: davem@davemloft.net Cc: netdev@vger.kernel.org, raghu.vatsavayi@cavium.com, derek.chickles@cavium.com, satananda.burla@cavium.com, felix.manlunas@cavium.com, intiyaz.basha@cavium.com Subject: [PATCH net-next 5/6] liquidio: Moved common function setup_glists to lio_core.c Message-ID: <20180425182346.GA13900@felix-thinkpad.cavium.com> References: <20180425182301.GA13840@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180425182301.GA13840@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: CO1PR15CA0089.namprd15.prod.outlook.com (2603:10b6:101:20::33) To SN6PR07MB4221.namprd07.prod.outlook.com (2603:10b6:805:62::13) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:SN6PR07MB4221; X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 3:muZthqBH8SiQtojIs1wXdtE8L+J5I7R6DeO+KQJqSdDQNMSWvNFglsEzhUPBiGWEKZ9vNuDSDv2s7mlHm88ZcTJheGh7I5GM8KcqD5tRNTauC9FyLPUdnX2wVPqd6W3n3SubvKwjObC3E13wJDa3U2gklz3G4Z+yWfHUclLTr3xCprP3hkIJ1BV9BdAfQre5DAycVsNcW8bMVsqoiZNCRFmF36i4K9icc+57a1XmOgvq4PFipxoB9X629CKyM897; 25:c4KC9NDIiNCB924SIot5DTumL7k73wPCSkIAmqMpHY3fXkFz0z4JtNWsh6RI7qiAXw6ii3Uhr4mYQTLnb734APBdeqjHHCB5gvQ3tKB8mPAmCMLCOMwP9jmHEC0uqQfQFEbhI+aK0PuwOuHmpuyRSvdC9Ifg4Yo8XIWd1jMXEybBw8sHdGcskqi89oRMdYtVyFBTYt1Ntq57C6/As4Jo5Sf9Dd5bG2y60KKtBLLeRE9aDUPP2FqOER//i93j9hLqp4KTUeeBhT87yON7ZlWj86Z7OOPNqc3xZTW2CS9Y9QZh9p8F//CQS910Tz+ecNTaAeoy8xanQdZCsq4WZMFQsQ==; 31:oWIQWhvUOXKRZut38TcmS/Yng7vzmkiUTQvQn+e041V7fxLyAsrJsxXw3zVqblecwzdz2TSSQ7GnwMfYX+HchmMNHSN8bU8uUgW6qW21UZNdkcqCB+a6LCe1hfq+bzB+lkPVWVoV+yN1B3sXwIt3n0N4+j569/pfOno88x6NrPEnmZOqwArE479Gq5QmAGeQTxcQBVGoGbzspO3N7pmJD9OI6wbqfmfBPtN7yXrafaQ= X-MS-TrafficTypeDiagnostic: SN6PR07MB4221: X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 20:0Ec3SQoVXOcU8EIzMEPG5PWqnaPrSfMVefJTTtew4FQWx5ikyDNcGirV2DzTZIXxUAt2QkiSdujk5r9B3P4ULB7UrcQkYIOZf401Wt4ZjhRo0m86fYbNN42zarcr21ASi2J73kBNxLHyG4rsyeZRh9yiHno2FDoeHpBxA3iuGal24vCmAZukafBlAOeSXOzPfRDciQRPcySlvl0vEOhrs99MDZ4PwHKA3OPSxbpv90tw8gS/AwG7fXaYehl2r1S4jiIMBeQOtVTseFx5Gn5uFpvHTBOHJVA+iJEgwnfVrgKLguCcl7I/1W1QMOmkMXnUgP+WrTpvEcwLB7jjfQSl/ZFMbNTKQeXPWy7h/bFiiOLwfJToBk3YEQAVPr55Z9UHxXgCQ4/Oxy/ZCtiFd5hVKsBCb9eWThEgOoAo3f3LUOxnR4YoxxHxey4FnHPaxdMga7nX4f0TeSr+F8ULaLzIMH1CCQCUYvTiFDKn6z0/7nFvLSWntKy05BhUmnG3AHsw; 4:izKiETWgHgIZM7WUgOxLrfCPCePoyAau/g6+JFqAnFeItCb1iI5p+aCnxBjZvrC7Y7hzOMoCspDP91XTHc7OM4cu5FuOFB5buSbt6SCp48i2NOeMC02DyhNJYxiLv1xJ+EzIDavjpL0skBdBuXn5A6yNTcaINuAGg06X0XSjyP8fDXdZ000EqAkG2vV+XOaURmPW2K0Kpho1TRD5HDrCAJoqV13uxSiSfKRBlbaWELxehy+zrDuzcLtW5Wsgojuy1nhh1bCHUpuafU9As1bnQA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3231232)(944501410)(52105095)(93006095)(93001095)(3002001)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(6072148)(201708071742011); SRVR:SN6PR07MB4221; BCL:0; PCL:0; RULEID:; SRVR:SN6PR07MB4221; X-Forefront-PRVS: 06530126A4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(376002)(346002)(39860400002)(366004)(39380400002)(396003)(189003)(199004)(97736004)(8936002)(53936002)(47776003)(58126008)(6916009)(6666003)(105586002)(2351001)(76506005)(478600001)(25786009)(16586007)(5660300001)(50466002)(6486002)(107886003)(72206003)(316002)(2361001)(33656002)(76176011)(11346002)(4326008)(186003)(16526019)(26005)(106356001)(44832011)(3846002)(6116002)(486006)(575784001)(446003)(8676002)(6496006)(23726003)(81166006)(68736007)(476003)(305945005)(7736002)(66066001)(81156014)(52116002)(1076002)(59450400001)(956004)(2906002)(86362001)(386003)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR07MB4221; H:localhost; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 23:MOZh2DJ7+Rp6VzbB+VCB5LdpQKsZDoxfP2Fwye3muKwypbcSKuEPdWdRBwgXF+vcy74eMAC9+R7jHET9StU55ozQcNDxsY3+bqQI04kCwyyywf/h29qZUUPZZ1ELsI2WnfnS2RwkcBklJ3t849PE8ikPu8UVlW6ULrnLrSkqLF5DMLlZTtluDnCYDaEda9wL5auAXivbUHN4G5OwetKp1vPBjEEixdUG3kdmgNOUbCKcCEQiDEFS3XrrJgQjsD/RnInmhRkLpktaTafTZ1whiM8eYLsXQSOeLm5S9ESdlg6x/f2mOhSrZt/19Uf6sj9JuZUpfVpW9APqOyAatMtelgTjbRZ8GGZo1gSupT7Yh1TCQYvVF9gMZfGRMaD502uc1QfF7YjOKgFKVfedSRmFpngb3zD+2uFBG/rC7yEBmD3AVPj65aDJRsJwD1yZk2i9iBfoz8fDOujnw/Ipy3eYWV2z/mZGdgJiXUCZ4zGVj7/vSYolZqqu54FsL+RQGNaFpknSpOF1N7s4lB5N7dY8mm6dpUCKivqSQpp7EmvqlSkwtlO/5qu7GLUIHWV6q/QMrzKVk0tZ2KPKW70JAKHuVIdRnlAZuKAznfoPaKucaP0iY0k6TTH6O7kkeX/05+3fTwLSTBTpLnrfCIDnEfqTjBSp/J5JgeVX090GMWMhN1IHGnXUYUvDCqd66lFRnnqPii6BX+halTeEAMTCpYl4m4NBLfdxBG2OLoGPZ75MJqqbpkCLSllttOIcTkWNFMFv4XoBS3kiI7iuD8ARFDxPrxBCqosM530vjpKsA6IMvjoEPHogRqr1OTso+Jf1G0fpU3fSqzgvYMI9nEPAz9wTuIEGJi4FVIIlyvnFcNKAkpy6J1ML7UvVj2FGdk1xQvzRcVLuNRgjzUGSiwD7rmqQ3Lnq3DvTew0kGwfPcgV37v756a8WrR8GQSfUPRpm2drCBoFcvQD7t4rK7kRFkYCnZS1GNcHpWPD77wQbEKKDOYxx+1IdJoCStmjURdMVvFMpMEjyrz2AQ68x/Wcwmq2lathQ/BRD+WF3s7+o7lJTfV6ytBK3XSUPsGADYQYIFgk0dTlocx5Y1diiNXbpDK9phZ/mAa4mez15EYW1hKhT5iGehB43ilUasi/3dRjWc9CmifrCBNrwhY7E6YT6pHUPYJ2pr9S6qjJOHmqn9RadhRQA1Zsd669Mzmb72vNAfcLHeAiDnkGa3GNnrhna1MQOOXmHFullZ4La7roRgm3sx7UvSdBgFHMgO4Rk+PSpnViVnxMFGY5RgLmRwHZWSbFzYkMqJtnHJ8bGmB6sn/Mt+zpD0PLic9Q9brhiBgw51UCbOEXEFzw+9rEb29u4eUyqrg== X-Microsoft-Antispam-Message-Info: Hv5Y9Do5wHKHau6z8CesEQW6teyqoozmDpLrYpNXPDaV0Fn4rOvzBT3S7piUdjME4fS1fJMrzIStsACGIT4RQ4RfS96XVNlcwYIMR7ma5+M1TgK0auZSJaV+fel+nAh0WyDo+nlmSd7MwhLcMFqHvDp6djQub9drrwtVviNiQT7dmBcimIcCbe3u8eHXqhoM X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 6:HpAZc0iVGt10lAuGFEW3FtEgTIV6W4tlQPrJ1LX14k6BXXnn5UrVIHPPVhw7La7g6QfdUqdbPImvdlx9DwsYgc5xF3y74mb1+8NJwzFV2dyWOC19RYHG8cMzxvfeeCxGDZNHSm7bqnj/KjwUmbCEVfTSuZ6FVxGy+QOn/SOpHHBgq9vuUrGg/0D2wqYIfg2XEagNXcgIBliGF537p5UYl+8qdgUlxtCR+8Ofv6YcUZ2RMUUiY5MwVQauGZXcLVDmAaTLXlaJhc0n8Oggn/dzRzTwXGuiu2cojbTQ7NuxM+Xy8TxpG4FCl6f9aTZO5LKTn2HjJnWcsDX3C/2r2M0GoZC7QcgxrodbpqkUhvI3B9uWuqQiF4S4hj0jdxynhRf5AplyBpK30ADeYzcggKgVYRmbOzdRYuYkL3qCLcHn/fmxBK3zCgnyUk5KksWHmmXxtVzfE2tZp6s8PbI6xILMFQ==; 5:pCOA0HqG07X/R6g4Ud5EqqsxMJjl0/5LBOcR9sGgn1jdgnMHrZwvQ+TAF3vgi0E+U8+CKOtFhKXE7DBmyLr51gD/NsAkonRvMIZ8M8RGQCFQZ/i96nX9h1O8q1l74xpqLWn8TR6imICG/BZTzHjhep6CRqMSY+p2KKUyO/dktS4=; 24:UfljuEpDpnZ5Pw0XhQpM90yXBXZPK9YpQaa1KROivOIpPs+QfgjjGgnzIXm1ly9XTui+Yr2xzAwyJPOqnC5gGwjNSd0Y8dYfvwrXKI6gp84= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4221; 7:JU87J6zJZUuruvVPm9L0nfmcJ39YKMwT36nkauqwvcPslGXjSTAyBbYmKVZFGG7Lv2Mt8kGhDkEIZ6pwfvMTOuLGv/Foo0cvR7i4s80DJ1IRAnpbegr7WA6qh16n+r7bc1cOD0c8jB9ZLZS6WIAFhqKo+mMoj35V5vyBzCthiOBhdWTdXvchZgEwK1JkiemuULCmEiFZLOP8HBv0ACc7aHdQyI4Su7gNzp95Mldf5pLaIvFYs1V39GralhUrFgfh X-MS-Office365-Filtering-Correlation-Id: e980be79-29aa-44b1-7eff-08d5aad9b136 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Apr 2018 18:23:49.8838 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e980be79-29aa-44b1-7eff-08d5aad9b136 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR07MB4221 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha Moved common function setup_glists to lio_core.c and reamed it to lio_setup_glists Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/lio_core.c | 83 +++++++++++++++++++++ drivers/net/ethernet/cavium/liquidio/lio_main.c | 85 +--------------------- drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 80 +------------------- .../net/ethernet/cavium/liquidio/octeon_network.h | 2 + 4 files changed, 87 insertions(+), 163 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_core.c b/drivers/net/ethernet/cavium/liquidio/lio_core.c index 76aee81..b4f9275 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_core.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_core.c @@ -29,6 +29,8 @@ /* OOM task polling interval */ #define LIO_OOM_POLL_INTERVAL_MS 250 +#define OCTNIC_MAX_SG MAX_SKB_FRAGS + /** * \brief Callback for getting interface configuration * @param status status of request @@ -102,6 +104,87 @@ void lio_delete_glists(struct lio *lio) lio->glist = NULL; } +/** + * \brief Setup gather lists + * @param lio per-network private data + */ +int lio_setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs) +{ + struct octnic_gather *g; + int i, j; + + lio->glist_lock = + kcalloc(num_iqs, sizeof(*lio->glist_lock), GFP_KERNEL); + if (!lio->glist_lock) + return -ENOMEM; + + lio->glist = + kcalloc(num_iqs, sizeof(*lio->glist), GFP_KERNEL); + if (!lio->glist) { + kfree(lio->glist_lock); + lio->glist_lock = NULL; + return -ENOMEM; + } + + lio->glist_entry_size = + ROUNDUP8((ROUNDUP4(OCTNIC_MAX_SG) >> 2) * OCT_SG_ENTRY_SIZE); + + /* allocate memory to store virtual and dma base address of + * per glist consistent memory + */ + lio->glists_virt_base = kcalloc(num_iqs, sizeof(*lio->glists_virt_base), + GFP_KERNEL); + lio->glists_dma_base = kcalloc(num_iqs, sizeof(*lio->glists_dma_base), + GFP_KERNEL); + + if (!lio->glists_virt_base || !lio->glists_dma_base) { + lio_delete_glists(lio); + return -ENOMEM; + } + + for (i = 0; i < num_iqs; i++) { + int numa_node = dev_to_node(&oct->pci_dev->dev); + + spin_lock_init(&lio->glist_lock[i]); + + INIT_LIST_HEAD(&lio->glist[i]); + + lio->glists_virt_base[i] = + lio_dma_alloc(oct, + lio->glist_entry_size * lio->tx_qsize, + &lio->glists_dma_base[i]); + + if (!lio->glists_virt_base[i]) { + lio_delete_glists(lio); + return -ENOMEM; + } + + for (j = 0; j < lio->tx_qsize; j++) { + g = kzalloc_node(sizeof(*g), GFP_KERNEL, + numa_node); + if (!g) + g = kzalloc(sizeof(*g), GFP_KERNEL); + if (!g) + break; + + g->sg = lio->glists_virt_base[i] + + (j * lio->glist_entry_size); + + g->sg_dma_ptr = lio->glists_dma_base[i] + + (j * lio->glist_entry_size); + + list_add_tail(&g->list, &lio->glist[i]); + } + + if (j != lio->tx_qsize) { + lio_delete_glists(lio); + return -ENOMEM; + } + } + + return 0; +} + int liquidio_set_feature(struct net_device *netdev, int cmd, u16 param1) { struct lio *lio = GET_LIO(netdev); diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index c0bd489..f414cd7 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -138,8 +138,6 @@ union tx_info { * by this structure in the NIC module. */ -#define OCTNIC_MAX_SG (MAX_SKB_FRAGS) - #define OCTNIC_GSO_MAX_HEADER_SIZE 128 #define OCTNIC_GSO_MAX_SIZE \ (CN23XX_DEFAULT_INPUT_JABBER - OCTNIC_GSO_MAX_HEADER_SIZE) @@ -521,87 +519,6 @@ static inline int check_txq_status(struct lio *lio) } /** - * \brief Setup gather lists - * @param lio per-network private data - */ -static int setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs) -{ - int i, j; - struct octnic_gather *g; - - lio->glist_lock = kcalloc(num_iqs, sizeof(*lio->glist_lock), - GFP_KERNEL); - if (!lio->glist_lock) - return -ENOMEM; - - lio->glist = kcalloc(num_iqs, sizeof(*lio->glist), - GFP_KERNEL); - if (!lio->glist) { - kfree(lio->glist_lock); - lio->glist_lock = NULL; - return -ENOMEM; - } - - lio->glist_entry_size = - ROUNDUP8((ROUNDUP4(OCTNIC_MAX_SG) >> 2) * OCT_SG_ENTRY_SIZE); - - /* allocate memory to store virtual and dma base address of - * per glist consistent memory - */ - lio->glists_virt_base = kcalloc(num_iqs, sizeof(*lio->glists_virt_base), - GFP_KERNEL); - lio->glists_dma_base = kcalloc(num_iqs, sizeof(*lio->glists_dma_base), - GFP_KERNEL); - - if (!lio->glists_virt_base || !lio->glists_dma_base) { - lio_delete_glists(lio); - return -ENOMEM; - } - - for (i = 0; i < num_iqs; i++) { - int numa_node = dev_to_node(&oct->pci_dev->dev); - - spin_lock_init(&lio->glist_lock[i]); - - INIT_LIST_HEAD(&lio->glist[i]); - - lio->glists_virt_base[i] = - lio_dma_alloc(oct, - lio->glist_entry_size * lio->tx_qsize, - &lio->glists_dma_base[i]); - - if (!lio->glists_virt_base[i]) { - lio_delete_glists(lio); - return -ENOMEM; - } - - for (j = 0; j < lio->tx_qsize; j++) { - g = kzalloc_node(sizeof(*g), GFP_KERNEL, - numa_node); - if (!g) - g = kzalloc(sizeof(*g), GFP_KERNEL); - if (!g) - break; - - g->sg = lio->glists_virt_base[i] + - (j * lio->glist_entry_size); - - g->sg_dma_ptr = lio->glists_dma_base[i] + - (j * lio->glist_entry_size); - - list_add_tail(&g->list, &lio->glist[i]); - } - - if (j != lio->tx_qsize) { - lio_delete_glists(lio); - return -ENOMEM; - } - } - - return 0; -} - -/** * \brief Print link information * @param netdev network device */ @@ -3637,7 +3554,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) lio->tx_qsize = octeon_get_tx_qsize(octeon_dev, lio->txq); lio->rx_qsize = octeon_get_rx_qsize(octeon_dev, lio->rxq); - if (setup_glists(octeon_dev, lio, num_iqueues)) { + if (lio_setup_glists(octeon_dev, lio, num_iqueues)) { dev_err(&octeon_dev->pci_dev->dev, "Gather list allocation failed\n"); goto setup_nic_dev_fail; diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index 8151d11..246752a 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -69,8 +69,6 @@ union tx_info { } s; }; -#define OCTNIC_MAX_SG (MAX_SKB_FRAGS) - #define OCTNIC_GSO_MAX_HEADER_SIZE 128 #define OCTNIC_GSO_MAX_SIZE \ (CN23XX_DEFAULT_INPUT_JABBER - OCTNIC_GSO_MAX_HEADER_SIZE) @@ -267,82 +265,6 @@ static struct pci_driver liquidio_vf_pci_driver = { }; /** - * \brief Setup gather lists - * @param lio per-network private data - */ -static int setup_glists(struct lio *lio, int num_iqs) -{ - struct octnic_gather *g; - int i, j; - - lio->glist_lock = - kzalloc(sizeof(*lio->glist_lock) * num_iqs, GFP_KERNEL); - if (!lio->glist_lock) - return -ENOMEM; - - lio->glist = - kzalloc(sizeof(*lio->glist) * num_iqs, GFP_KERNEL); - if (!lio->glist) { - kfree(lio->glist_lock); - lio->glist_lock = NULL; - return -ENOMEM; - } - - lio->glist_entry_size = - ROUNDUP8((ROUNDUP4(OCTNIC_MAX_SG) >> 2) * OCT_SG_ENTRY_SIZE); - - /* allocate memory to store virtual and dma base address of - * per glist consistent memory - */ - lio->glists_virt_base = kcalloc(num_iqs, sizeof(*lio->glists_virt_base), - GFP_KERNEL); - lio->glists_dma_base = kcalloc(num_iqs, sizeof(*lio->glists_dma_base), - GFP_KERNEL); - - if (!lio->glists_virt_base || !lio->glists_dma_base) { - lio_delete_glists(lio); - return -ENOMEM; - } - - for (i = 0; i < num_iqs; i++) { - spin_lock_init(&lio->glist_lock[i]); - - INIT_LIST_HEAD(&lio->glist[i]); - - lio->glists_virt_base[i] = - lio_dma_alloc(lio->oct_dev, - lio->glist_entry_size * lio->tx_qsize, - &lio->glists_dma_base[i]); - - if (!lio->glists_virt_base[i]) { - lio_delete_glists(lio); - return -ENOMEM; - } - - for (j = 0; j < lio->tx_qsize; j++) { - g = kzalloc(sizeof(*g), GFP_KERNEL); - if (!g) - break; - - g->sg = lio->glists_virt_base[i] + - (j * lio->glist_entry_size); - - g->sg_dma_ptr = lio->glists_dma_base[i] + - (j * lio->glist_entry_size); - - list_add_tail(&g->list, &lio->glist[i]); - } - - if (j != lio->tx_qsize) { - lio_delete_glists(lio); - return -ENOMEM; - } - } - - return 0; -} - -/** * \brief Print link information * @param netdev network device */ @@ -2211,7 +2133,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) lio->tx_qsize = octeon_get_tx_qsize(octeon_dev, lio->txq); lio->rx_qsize = octeon_get_rx_qsize(octeon_dev, lio->rxq); - if (setup_glists(lio, num_iqueues)) { + if (lio_setup_glists(octeon_dev, lio, num_iqueues)) { dev_err(&octeon_dev->pci_dev->dev, "Gather list allocation failed\n"); goto setup_nic_dev_fail; diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index 26961e1..8894889 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -224,6 +224,8 @@ void lio_if_cfg_callback(struct octeon_device *oct, void lio_delete_glists(struct lio *lio); +int lio_setup_glists(struct octeon_device *oct, struct lio *lio, int num_qs); + /** * \brief Net device change_mtu * @param netdev network device From patchwork Wed Apr 25 18:23:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 904659 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=cavium.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="EjCRVX1n"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40WT9k4vHGz9s0v for ; Thu, 26 Apr 2018 04:24:10 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756298AbeDYSYJ (ORCPT ); Wed, 25 Apr 2018 14:24:09 -0400 Received: from mail-co1nam03on0081.outbound.protection.outlook.com ([104.47.40.81]:16160 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756183AbeDYSXz (ORCPT ); Wed, 25 Apr 2018 14:23:55 -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=JJqvsrW2Yqv7LvGMcayWzT6TcJBpo2ukrglquWbkF9Q=; b=EjCRVX1nqVZy8r/WGEHWLmgAUhEEpmMEYYS1XHQWBR394ikhzmn8luM3aupEGv3mp6cZtC/eedSrF8X1S/hgiXqTX1mNE/bMv5nYr9vIM1CEmH2ohCaB5dPBISAuEHFuKU1rxJJSPiGnDUfaMDIqEVyL6a9YGqAu0mneTFr/r2Y= Received: from localhost (50.233.148.156) by DM6PR07MB4218.namprd07.prod.outlook.com (2603:10b6:5:bd::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.715.18; Wed, 25 Apr 2018 18:23:53 +0000 Date: Wed, 25 Apr 2018 11:23:50 -0700 From: Felix Manlunas To: davem@davemloft.net Cc: netdev@vger.kernel.org, raghu.vatsavayi@cavium.com, derek.chickles@cavium.com, satananda.burla@cavium.com, felix.manlunas@cavium.com, intiyaz.basha@cavium.com Subject: [PATCH net-next 6/6] liquidio: enhanced ethtool --set-channels feature Message-ID: <20180425182350.GA13911@felix-thinkpad.cavium.com> References: <20180425182301.GA13840@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180425182301.GA13840@felix-thinkpad.cavium.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: CO2PR07CA0081.namprd07.prod.outlook.com (2603:10b6:100::49) To DM6PR07MB4218.namprd07.prod.outlook.com (2603:10b6:5:bd::27) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(2017052603328)(7153060)(7193020); SRVR:DM6PR07MB4218; X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4218; 3:Ej48VGOoteoi4gq5hTkR4ebaOz3TChSxG5dInfk1v8xHiIN7S6eH78PJENo6SXshT3R0Cf/j0fem59KlN98eepGC6Zg+x6J4nY5WUuLxS4kFW/YGNffNS0cxi0E0gYi0gghQmFS2GhQlMFSLaK5KlJJGHT3Z/w2/YIeKbVtQdaE6Rhf38Akt4YIm/4HIrmNsRcaaVIxkkV221hUdIne8aVH6t/J0SrN/dHC8qQ4UQ9AGHAwubvaq9lTD6no1qLRU; 25:oPikceF+z0AUMtufgaXS+8p035WO2x27sYAX20OrBs8bvWlxJaEeyd6Bqr+lLwneicv/PJnsvjkGEq9FyQZ3YYUxa4fClNOYVsp1zBBPAMPZ+ZBNOnRlPsVS86xFae9+pVcr1t5D1VkSrn6nw5z3l+ZQo/YmBRMjOCgOqqG+53UOk4vHFF1cw/nVShoEahA0mbejvGd/sFgXmsj5tVrj+3sXXm6nsThvHwV8YE++h30DsAOZPS0cC58cjU6Mk4FioLSo4lhJdeGmH56eQaujIAzvTS2ItxW/Bi/9RuIjBpx4fHVlhgVJseyRaojyVtW/2jK7Juz2fhreDGPpDgr+qQ==; 31:3kOuTyH0jy4GTPKzH3MS1rcWc+x0KqSm86uU2ybCpwYFNZv4zrfD3opM8MIjvnUMr3kgV9Oh2UZ+ByG+ffGw2JKyAoJSWnlmZvW018aCRkB5+KCr7jZlSekFjOq2g1uUycQCBt8R93Puz1U1NZSKjF5yfULela1ueDwjRHLLy0OQFow9GD2GdqWbRgskZmz0jt9LD0L3On6KsiCL0nBA5jdR1lz4StIV61j6NEFBM98= X-MS-TrafficTypeDiagnostic: DM6PR07MB4218: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4218; 20:NmnRjWIUdOJ6RjWGPCk6Aw6/roQIoYZHJVgY6rD3a9eG5WCZ6j2sBd7Yqho/LC4QgJDww1XPtAzD4yLSKtrAKCaiqzpxmzIQnYyNcUJheykP6AMbAY1uRx3BayrdZZzkznN7C+gMg+BL3/KLPQEYFuCrDJVPmlZMeQ9HMsa10JwHgpHp0pMCfNqJ2bJhdRO+BCxHX27vCxlld9sd2f8bz2cnFhWFqg/FQDK5FqfMJo1qjsOrpe/h46xq0t1bdAMgjeQfwx8b4pBd6N1cvmQG08aAecmYWqJZxVvxT/u09Ra/aMl4ndia5axOg7QBm2i5yPoWzgYv9xezIq7lelmH14cN/oerrm8zyoH138E2JTOIE5JLt33iGWNXAk9bXeUifs3F0Q3jLtpqt1uRi3isb9rJcyvyahZ12x50O1nmYvIaQKWRtumKXd5yTvkDKcLmEvt6oH90IJocOfTr0WfMqx3mhIaBidH1kiWsByjtkLQHqJJkz96NtEDrG2JOzgtM; 4:Vt3tllIMNUaHwSNHZ9w0UhdVjiQZUqB7zTGJ3SqtwKjFCDflQGiq04u09mxiYeTIBm2+QyMz9xGTLtNYSS4Gl+wOF964Lf+tgyDwFgJc/mjrdJ6T7g6x8iJ7D7eL1mJWe7MDU1QgNFLTzRM+sGn2Q6B4OSZ7ZhV6AaYA+UDt9P6pZ68HzsxIjeq9fezySDgEqNQyUUmLC7mINAsLrITn9AKH738ZNB2H1L1Zr75y7b3jlgexA414z1k+ZfNNzqwy7egwPVwyFO9yUFRWkEjbwg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231232)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:DM6PR07MB4218; BCL:0; PCL:0; RULEID:; SRVR:DM6PR07MB4218; X-Forefront-PRVS: 06530126A4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(396003)(39380400002)(366004)(39850400004)(346002)(376002)(189003)(199004)(66066001)(97736004)(50466002)(4326008)(76176011)(25786009)(107886003)(6496006)(52116002)(11346002)(86362001)(486006)(476003)(47776003)(44832011)(23726003)(3846002)(1076002)(575784001)(305945005)(6116002)(956004)(7736002)(446003)(81166006)(81156014)(53936002)(72206003)(2351001)(2361001)(8936002)(16586007)(316002)(5660300001)(8676002)(33656002)(76506005)(105586002)(68736007)(26005)(386003)(59450400001)(6486002)(58126008)(478600001)(6916009)(2906002)(106356001)(186003)(16526019)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR07MB4218; H:localhost; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4218; 23:s0QJGKY7xep8pBtm3zKoyOeaFfm1z9dJPF5pDDej1kCxPS4JHJNoL4gfOBN+SyT8DxYRRK2r9ciFiQbx8WsP656jEUX08xWlga2hyX1PKsBbN8zw9HahhEdxuYbUjyORXB1RgXXUTZMsfD0KnGeL/dkl7JCvIr8mirDQRF31ToSoWdZNgHr4wnmAfwrIlVwL0caIAew2uBoQQpYpjTHM7Fsw5iG0gBPzLePqfUGSvVihCfzXIXfCycq7adExDSdpNWN3zmcAo+tMyxxNLdxs3+bMMJD7F+gtmkFHpEriNwKEq4evAycdIX7xzAbf5zPn8fbjIURD9n2Sh6XGIXgpYdmTiKKe+a54rnc3YV6om3SuciWwk91dCP5lJKqILsIx4Rx3zRPYg4aZWjPl9iDvMLqe77o/UJD4xcyjGdrZ4deD6lIYekXC0rw9mhZAZeS5b6D2oKeKZWy55A16HpZ7fduz0z1abfOB1XOGpjKK0X7ZPd6i+1o6FGsQQSCHYEK13mTDEca+9Lv48FzIPqsDMRvMhJjquhfcHrW9MNw+HDZTsyUEcAvoLLUNmZBk/zZ7TPCDJcVi5QU90zb6PkvqIyDHIWVa7TcyG+ZuMl+ms+Um7xbz3mNNNAkKqdVZiSgZUAs8ZaVzgmNHJITwPHYCB8bnMuEERvvqTbFUs4C8ffPh8CaOnMpGQIth3r++AGwoE4LM/+6ziTIUMQkt3TXMkiefCbSa/0pTrKI106kutxU2h5rLqiAM3wfcklRRx5yCTXLQqV6pkE9zdohxRQoiantTCPHkvNK+J88VXoun3UF5LTflhBtB8je4KgGh0MNEPADgQ48uspzd+XGqSXG32VS7dMb5PsXMwRsF6eP6kKufCnGjW3rtU5eEAtZqXqAJu5GeZdQK6vmg6Kr8YEKbHs75YLhOdd3KHAX4rZtETS5L3xy+giEkcN0sTVYmYilq2gM/ROzOmYUez/Bx5wOXhbiIUTIDC0dHP99NIkwgJDye/ytUQBEDGPMm7yqw16SS4Pgc1x3O8EeH6nx7db7yxc8R1QsdVKK6NFPDtlV+wviJuVIa6bZjJKXexrVQVmKx+vMfsD+3P11POc0NjTr/RNetWk4QHlK5l30Eahg4Dgr78AUOSgivHvAf0ryHDucYqSWY4qAVcS5dojagpcuzGoF6FHmfuoWPu+n2rupWW9ddT4DfRPD7LqSaOi404/T6pmpr0KRwT91rGDCDLMJWTnT2m4tmVT2IBwdWWN6JN7khYTCT55xDHVvx1er4BJMJBI5p03QanPuhDiZYGz8IlQ29iR1XNQEpPiOMAqd3eXFURiks3aNNBRVNDqwqqKqL X-Microsoft-Antispam-Message-Info: B1HJ7eOWFiimPnrWX9hBbgdf7QvxhLfPeVexYyi2R4wC/futE4E9kUaVzu7x8Sl18rWEqi4KbBdWkVXzqCQbwypiUMITZXXAubLlBXlqw6VQ3hqee22WSIaOsWyX4FuLEHzb9VjyGOI0g+bpNHZAC147Oh2Gi2PhPuUdo+r4UVwQqXNb7tVQ1kCg2q3+cB52 X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4218; 6:WRh3ePxYxU+VsHzZLZ6T48nYD2YblrZ5yGxtE2ywajBjBhvNk0GxDLrY8sWnrlKNONOe2G/qPFLHz5KFLVECJFdLLulgciCj5rj3aykHO+uZADhD2LTQkDAjSgrPfe+XfYf2jQttJ/GEejyYAfxDIlWwGEVMHHo31ZycAyQHD26bzHwuukSMnd9HWvU0xTf5BsaNBW0JWwyYQE6vV/1DRYb3KLY7ozXmZ085/Y/XG6LAMwGtFBZJNDwS8ULKZ5FfmJcpU3/WdSdpHfOihpXOhzQJvgE5I87pnQ2xcOhXodepH9W+wabMjCOaTro7b2xwwX25ktFvHrDC4b4z7LZo+tckzrgPwbxWO1TdAbK7nN39sSjkdMAG/u253gkIUHg6Y9ABef6sBrc75vh8CWbuEokDceR/Ar/XjdVT/DmNjdRqmajvOzuYQ4L4dl3mG3kYylxyO3rp5cApWpQinDCjNg==; 5:g+Tp891gOwzsIASCy1/xN1BBnIb7muSxVC1MmubtXpXuDcBkLe3CWJ0qVQpX7Vg2amYB9miBj4TOC4gtrZY2pIdsxxCZW8JS2nwftZOfrwX9KrJwGOHiqTRI0ulWGqyypGWp20H7zsqp1SpQbpTyOFwFsx1qwJGiVjx01dcnYC8=; 24:MJ5lTT9+mLCSSR7fc81WmJXJWv0YH8i7jVEyhTnil3WLuI2lwBLNRQ7MQ0pPIk059Ydc3lnEnJGZHONDB7igP70OWdZjY3NyJ5BSwTSqa1Y= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM6PR07MB4218; 7:RWWZ8oV+6nFlYsJ54zmtgNs1p2q/FRVT/D3/HsEHuXmO1SIvTUz5pM4pxMT+ZsXkpDAZ4CEEcdlAwmnEVIZgBXI0qVSaLI+TrFBDjeKjshVwt81bTu3uOTIzaiWGsJBYNF7BQB44luRvmhOw+xR4idITq9fKOL9s+7MgMKSghFL7npJMQpnEXjhR7H7CoeEmOaFNEkPCfqmZHoKdn2qKt3c93VtZCK9ON1jfj3WgBpkaSGy9ZcOoG9PGOSJMcPMy X-MS-Office365-Filtering-Correlation-Id: d6110d1d-ffb2-469b-789e-08d5aad9b32c X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Apr 2018 18:23:53.2048 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d6110d1d-ffb2-469b-789e-08d5aad9b32c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR07MB4218 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha Enhancing driver to accept max supported queues for ethtool --set-channels Signed-off-by: Intiyaz Basha Acked-by: Derek Chickles Signed-off-by: Felix Manlunas --- .../ethernet/cavium/liquidio/cn23xx_pf_device.c | 6 +- .../ethernet/cavium/liquidio/cn23xx_pf_device.h | 2 + drivers/net/ethernet/cavium/liquidio/lio_core.c | 4 +- drivers/net/ethernet/cavium/liquidio/lio_ethtool.c | 263 +++++++++++++++++++-- drivers/net/ethernet/cavium/liquidio/lio_main.c | 64 +++-- drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 8 +- .../net/ethernet/cavium/liquidio/liquidio_common.h | 1 + .../net/ethernet/cavium/liquidio/octeon_device.c | 12 +- .../net/ethernet/cavium/liquidio/octeon_device.h | 2 +- .../net/ethernet/cavium/liquidio/octeon_network.h | 12 +- 10 files changed, 316 insertions(+), 58 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c index bc9861c..929d485 100644 --- a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c +++ b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c @@ -1245,7 +1245,7 @@ static void cn23xx_setup_reg_address(struct octeon_device *oct) CN23XX_SLI_MAC_PF_INT_ENB64(oct->pcie_port, oct->pf_num); } -static int cn23xx_sriov_config(struct octeon_device *oct) +int cn23xx_sriov_config(struct octeon_device *oct) { struct octeon_cn23xx_pf *cn23xx = (struct octeon_cn23xx_pf *)oct->chip; u32 max_rings, total_rings, max_vfs, rings_per_vf; @@ -1269,8 +1269,8 @@ static int cn23xx_sriov_config(struct octeon_device *oct) break; } - if (max_rings <= num_present_cpus()) - num_pf_rings = 1; + if (oct->sriov_info.num_pf_rings) + num_pf_rings = oct->sriov_info.num_pf_rings; else num_pf_rings = num_present_cpus(); diff --git a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.h b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.h index 63b3de4..e6f31d0 100644 --- a/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.h +++ b/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.h @@ -61,6 +61,8 @@ u32 cn23xx_pf_get_oq_ticks(struct octeon_device *oct, u32 time_intr_in_us); void cn23xx_dump_pf_initialized_regs(struct octeon_device *oct); +int cn23xx_sriov_config(struct octeon_device *oct); + int cn23xx_fw_loaded(struct octeon_device *oct); void cn23xx_tell_vf_its_macaddr_changed(struct octeon_device *oct, int vfidx, diff --git a/drivers/net/ethernet/cavium/liquidio/lio_core.c b/drivers/net/ethernet/cavium/liquidio/lio_core.c index b4f9275..7e24b51 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_core.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_core.c @@ -78,7 +78,7 @@ void lio_delete_glists(struct lio *lio) if (!lio->glist) return; - for (i = 0; i < lio->linfo.num_txpciq; i++) { + for (i = 0; i < lio->oct_dev->num_iqs; i++) { do { g = (struct octnic_gather *) lio_list_delete_head(&lio->glist[i]); @@ -1036,8 +1036,8 @@ int octeon_setup_interrupt(struct octeon_device *oct, u32 num_ioqs) int num_ioq_vectors; int irqret, err; - oct->num_msix_irqs = num_ioqs; if (oct->msix_on) { + oct->num_msix_irqs = num_ioqs; if (OCTEON_CN23XX_PF(oct)) { num_interrupts = MAX_IOQ_INTERRUPTS_PER_PF + 1; diff --git a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c index 9926a12..7ca246e 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c @@ -353,7 +353,14 @@ lio_ethtool_get_channels(struct net_device *dev, rx_count = CFG_GET_NUM_RXQS_NIC_IF(conf6x, lio->ifidx); tx_count = CFG_GET_NUM_TXQS_NIC_IF(conf6x, lio->ifidx); } else if (OCTEON_CN23XX_PF(oct)) { - max_combined = lio->linfo.num_txpciq; + if (oct->sriov_info.sriov_enabled) { + max_combined = lio->linfo.num_txpciq; + } else { + struct octeon_config *conf23_pf = + CHIP_CONF(oct, cn23xx_pf); + + max_combined = CFG_GET_IQ_MAX_Q(conf23_pf); + } combined_count = oct->num_iqs; } else if (OCTEON_CN23XX_VF(oct)) { u64 reg_val = 0ULL; @@ -417,9 +424,15 @@ lio_irq_reallocate_irqs(struct octeon_device *oct, uint32_t num_ioqs) kfree(oct->irq_name_storage); oct->irq_name_storage = NULL; + + if (octeon_allocate_ioq_vector(oct, num_ioqs)) { + dev_err(&oct->pci_dev->dev, "OCTEON: ioq vector allocation failed\n"); + return -1; + } + if (octeon_setup_interrupt(oct, num_ioqs)) { dev_info(&oct->pci_dev->dev, "Setup interrupt failed\n"); - return 1; + return -1; } /* Enable Octeon device interrupts */ @@ -449,7 +462,16 @@ lio_ethtool_set_channels(struct net_device *dev, combined_count = channel->combined_count; if (OCTEON_CN23XX_PF(oct)) { - max_combined = channel->max_combined; + if (oct->sriov_info.sriov_enabled) { + max_combined = lio->linfo.num_txpciq; + } else { + struct octeon_config *conf23_pf = + CHIP_CONF(oct, + cn23xx_pf); + + max_combined = + CFG_GET_IQ_MAX_Q(conf23_pf); + } } else if (OCTEON_CN23XX_VF(oct)) { u64 reg_val = 0ULL; u64 ctrl = CN23XX_VF_SLI_IQ_PKT_CONTROL64(0); @@ -477,7 +499,6 @@ lio_ethtool_set_channels(struct net_device *dev, if (lio_reset_queues(dev, combined_count)) return -EINVAL; - lio_irq_reallocate_irqs(oct, combined_count); if (stopped) dev->netdev_ops->ndo_open(dev); @@ -816,12 +837,120 @@ lio_ethtool_get_ringparam(struct net_device *netdev, ering->rx_jumbo_max_pending = 0; } +int lio_23xx_reconfigure_queue_count(struct lio *lio) +{ + struct octeon_device *oct = lio->oct_dev; + struct liquidio_if_cfg_context *ctx; + u32 resp_size, ctx_size, data_size; + struct liquidio_if_cfg_resp *resp; + struct octeon_soft_command *sc; + union oct_nic_if_cfg if_cfg; + struct lio_version *vdata; + u32 ifidx_or_pfnum; + int retval; + int j; + + resp_size = sizeof(struct liquidio_if_cfg_resp); + ctx_size = sizeof(struct liquidio_if_cfg_context); + data_size = sizeof(struct lio_version); + sc = (struct octeon_soft_command *) + octeon_alloc_soft_command(oct, data_size, + resp_size, ctx_size); + if (!sc) { + dev_err(&oct->pci_dev->dev, "%s: Failed to allocate soft command\n", + __func__); + return -1; + } + + resp = (struct liquidio_if_cfg_resp *)sc->virtrptr; + ctx = (struct liquidio_if_cfg_context *)sc->ctxptr; + vdata = (struct lio_version *)sc->virtdptr; + + vdata->major = cpu_to_be16(LIQUIDIO_BASE_MAJOR_VERSION); + vdata->minor = cpu_to_be16(LIQUIDIO_BASE_MINOR_VERSION); + vdata->micro = cpu_to_be16(LIQUIDIO_BASE_MICRO_VERSION); + + ifidx_or_pfnum = oct->pf_num; + WRITE_ONCE(ctx->cond, 0); + ctx->octeon_id = lio_get_device_id(oct); + init_waitqueue_head(&ctx->wc); + + if_cfg.u64 = 0; + if_cfg.s.num_iqueues = oct->sriov_info.num_pf_rings; + if_cfg.s.num_oqueues = oct->sriov_info.num_pf_rings; + if_cfg.s.base_queue = oct->sriov_info.pf_srn; + if_cfg.s.gmx_port_id = oct->pf_num; + + sc->iq_no = 0; + octeon_prepare_soft_command(oct, sc, OPCODE_NIC, + OPCODE_NIC_QCOUNT_UPDATE, 0, + if_cfg.u64, 0); + sc->callback = lio_if_cfg_callback; + sc->callback_arg = sc; + sc->wait_time = LIO_IFCFG_WAIT_TIME; + + retval = octeon_send_soft_command(oct, sc); + if (retval == IQ_SEND_FAILED) { + dev_err(&oct->pci_dev->dev, + "iq/oq config failed status: %x\n", + retval); + goto qcount_update_fail; + } + + if (sleep_cond(&ctx->wc, &ctx->cond) == -EINTR) { + dev_err(&oct->pci_dev->dev, "Wait interrupted\n"); + return -1; + } + + retval = resp->status; + if (retval) { + dev_err(&oct->pci_dev->dev, "iq/oq config failed\n"); + goto qcount_update_fail; + } + + octeon_swap_8B_data((u64 *)(&resp->cfg_info), + (sizeof(struct liquidio_if_cfg_info)) >> 3); + + lio->ifidx = ifidx_or_pfnum; + lio->linfo.num_rxpciq = hweight64(resp->cfg_info.iqmask); + lio->linfo.num_txpciq = hweight64(resp->cfg_info.iqmask); + for (j = 0; j < lio->linfo.num_rxpciq; j++) { + lio->linfo.rxpciq[j].u64 = + resp->cfg_info.linfo.rxpciq[j].u64; + } + + for (j = 0; j < lio->linfo.num_txpciq; j++) { + lio->linfo.txpciq[j].u64 = + resp->cfg_info.linfo.txpciq[j].u64; + } + + lio->linfo.hw_addr = resp->cfg_info.linfo.hw_addr; + lio->linfo.gmxport = resp->cfg_info.linfo.gmxport; + lio->linfo.link.u64 = resp->cfg_info.linfo.link.u64; + lio->txq = lio->linfo.txpciq[0].s.q_no; + lio->rxq = lio->linfo.rxpciq[0].s.q_no; + + octeon_free_soft_command(oct, sc); + dev_info(&oct->pci_dev->dev, "Queue count updated to %d\n", + lio->linfo.num_rxpciq); + + return 0; + +qcount_update_fail: + octeon_free_soft_command(oct, sc); + + return -1; +} + static int lio_reset_queues(struct net_device *netdev, uint32_t num_qs) { struct lio *lio = GET_LIO(netdev); struct octeon_device *oct = lio->oct_dev; + int i, queue_count_update = 0; struct napi_struct *napi, *n; - int i, update = 0; + int ret; + + schedule_timeout_uninterruptible(msecs_to_jiffies(100)); if (wait_for_pending_requests(oct)) dev_err(&oct->pci_dev->dev, "There were pending requests\n"); @@ -830,7 +959,7 @@ static int lio_reset_queues(struct net_device *netdev, uint32_t num_qs) dev_err(&oct->pci_dev->dev, "IQ had pending instructions\n"); if (octeon_set_io_queues_off(oct)) { - dev_err(&oct->pci_dev->dev, "setting io queues off failed\n"); + dev_err(&oct->pci_dev->dev, "Setting io queues off failed\n"); return -1; } @@ -843,9 +972,40 @@ static int lio_reset_queues(struct net_device *netdev, uint32_t num_qs) netif_napi_del(napi); if (num_qs != oct->num_iqs) { - netif_set_real_num_rx_queues(netdev, num_qs); - netif_set_real_num_tx_queues(netdev, num_qs); - update = 1; + ret = netif_set_real_num_rx_queues(netdev, num_qs); + if (ret) { + dev_err(&oct->pci_dev->dev, + "Setting real number rx failed\n"); + return ret; + } + + ret = netif_set_real_num_tx_queues(netdev, num_qs); + if (ret) { + dev_err(&oct->pci_dev->dev, + "Setting real number tx failed\n"); + return ret; + } + + /* The value of queue_count_update decides whether it is the + * queue count or the descriptor count that is being + * re-configured. + */ + queue_count_update = 1; + } + + /* Re-configuration of queues can happen in two scenarios, SRIOV enabled + * and SRIOV disabled. Few things like recreating queue zero, resetting + * glists and IRQs are required for both. For the latter, some more + * steps like updating sriov_info for the octeon device need to be done. + */ + if (queue_count_update) { + lio_delete_glists(lio); + + /* Delete mbox for PF which is SRIOV disabled because sriov_info + * will be now changed. + */ + if ((OCTEON_CN23XX_PF(oct)) && !oct->sriov_info.sriov_enabled) + oct->fn_list.free_mbox(oct); } for (i = 0; i < MAX_OCTEON_OUTPUT_QUEUES(oct); i++) { @@ -860,24 +1020,91 @@ static int lio_reset_queues(struct net_device *netdev, uint32_t num_qs) octeon_delete_instr_queue(oct, i); } + if (queue_count_update) { + /* For PF re-configure sriov related information */ + if ((OCTEON_CN23XX_PF(oct)) && + !oct->sriov_info.sriov_enabled) { + oct->sriov_info.num_pf_rings = num_qs; + if (cn23xx_sriov_config(oct)) { + dev_err(&oct->pci_dev->dev, + "Queue reset aborted: SRIOV config failed\n"); + return -1; + } + + num_qs = oct->sriov_info.num_pf_rings; + } + } + if (oct->fn_list.setup_device_regs(oct)) { dev_err(&oct->pci_dev->dev, "Failed to configure device registers\n"); return -1; } - if (liquidio_setup_io_queues(oct, 0, num_qs, num_qs)) { - dev_err(&oct->pci_dev->dev, "IO queues initialization failed\n"); - return -1; + /* The following are needed in case of queue count re-configuration and + * not for descriptor count re-configuration. + */ + if (queue_count_update) { + if (octeon_setup_instr_queues(oct)) + return -1; + + if (octeon_setup_output_queues(oct)) + return -1; + + /* Recreating mbox for PF that is SRIOV disabled */ + if (OCTEON_CN23XX_PF(oct) && !oct->sriov_info.sriov_enabled) { + if (oct->fn_list.setup_mbox(oct)) { + dev_err(&oct->pci_dev->dev, "Mailbox setup failed\n"); + return -1; + } + } + + /* Deleting and recreating IRQs whether the interface is SRIOV + * enabled or disabled. + */ + if (lio_irq_reallocate_irqs(oct, num_qs)) { + dev_err(&oct->pci_dev->dev, "IRQs could not be allocated\n"); + return -1; + } + + /* Enable the input and output queues for this Octeon device */ + if (oct->fn_list.enable_io_queues(oct)) { + dev_err(&oct->pci_dev->dev, "Failed to enable input/output queues\n"); + return -1; + } + + for (i = 0; i < oct->num_oqs; i++) + writel(oct->droq[i]->max_count, + oct->droq[i]->pkts_credit_reg); + + /* Informing firmware about the new queue count. It is required + * for firmware to allocate more number of queues than those at + * load time. + */ + if (OCTEON_CN23XX_PF(oct) && !oct->sriov_info.sriov_enabled) { + if (lio_23xx_reconfigure_queue_count(lio)) + return -1; + } } - /* Enable the input and output queues for this Octeon device */ - if (oct->fn_list.enable_io_queues(oct)) { - dev_err(&oct->pci_dev->dev, "Failed to enable input/output queues"); + /* Once firmware is aware of the new value, queues can be recreated */ + if (liquidio_setup_io_queues(oct, 0, num_qs, num_qs)) { + dev_err(&oct->pci_dev->dev, "I/O queues creation failed\n"); return -1; } - if (update && lio_send_queue_count_update(netdev, num_qs)) - return -1; + if (queue_count_update) { + if (lio_setup_glists(oct, lio, num_qs)) { + dev_err(&oct->pci_dev->dev, "Gather list allocation failed\n"); + return -1; + } + + /* Send firmware the information about new number of queues + * if the interface is a VF or a PF that is SRIOV enabled. + */ + if (oct->sriov_info.sriov_enabled || OCTEON_CN23XX_VF(oct)) + if (lio_send_queue_count_update(netdev, num_qs)) + return -1; + } return 0; } @@ -922,7 +1149,7 @@ static int lio_ethtool_set_ringparam(struct net_device *netdev, CFG_SET_NUM_RX_DESCS_NIC_IF(octeon_get_conf(oct), lio->ifidx, rx_count); - if (lio_reset_queues(netdev, lio->linfo.num_txpciq)) + if (lio_reset_queues(netdev, oct->num_iqs)) goto err_lio_reset_queues; if (stopped) diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index f414cd7..dc801b1 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -497,7 +497,7 @@ static void liquidio_deinit_pci(void) */ static inline int check_txq_status(struct lio *lio) { - int numqs = lio->netdev->num_tx_queues; + int numqs = lio->netdev->real_num_tx_queues; int ret_val = 0; int q, iq; @@ -1521,7 +1521,7 @@ static void free_netsgbuf(void *buf) i++; } - iq = skb_iq(lio, skb); + iq = skb_iq(lio->oct_dev, skb); spin_lock(&lio->glist_lock[iq]); list_add_tail(&g->list, &lio->glist[iq]); spin_unlock(&lio->glist_lock[iq]); @@ -1564,7 +1564,7 @@ static void free_netsgbuf_with_resp(void *buf) i++; } - iq = skb_iq(lio, skb); + iq = skb_iq(lio->oct_dev, skb); spin_lock(&lio->glist_lock[iq]); list_add_tail(&g->list, &lio->glist[iq]); @@ -1851,11 +1851,6 @@ static int liquidio_open(struct net_device *netdev) ifstate_set(lio, LIO_IFSTATE_RUNNING); - /* Ready for link status updates */ - lio->intf_open = 1; - - netif_info(lio, ifup, lio->netdev, "Interface Open, ready for traffic\n"); - if (OCTEON_CN23XX_PF(oct)) { if (!oct->msix_on) if (setup_tx_poll_fn(netdev)) @@ -1865,7 +1860,12 @@ static int liquidio_open(struct net_device *netdev) return -1; } - start_txqs(netdev); + netif_tx_start_all_queues(netdev); + + /* Ready for link status updates */ + lio->intf_open = 1; + + netif_info(lio, ifup, lio->netdev, "Interface Open, ready for traffic\n"); /* tell Octeon to start forwarding packets to host */ send_rx_ctrl_cmd(lio, 1); @@ -1888,11 +1888,15 @@ static int liquidio_stop(struct net_device *netdev) ifstate_reset(lio, LIO_IFSTATE_RUNNING); - netif_tx_disable(netdev); + /* Stop any link updates */ + lio->intf_open = 0; + + stop_txqs(netdev); /* Inform that netif carrier is down */ netif_carrier_off(netdev); - lio->intf_open = 0; + netif_tx_disable(netdev); + lio->linfo.link.s.link_up = 0; lio->link_changes++; @@ -2312,7 +2316,7 @@ static int liquidio_xmit(struct sk_buff *skb, struct net_device *netdev) lio = GET_LIO(netdev); oct = lio->oct_dev; - q_idx = skb_iq(lio, skb); + q_idx = skb_iq(oct, skb); tag = q_idx; iq_no = lio->linfo.txpciq[q_idx].s.q_no; @@ -3278,6 +3282,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) struct liquidio_if_cfg_resp *resp; struct octdev_props *props; int retval, num_iqueues, num_oqueues; + int max_num_queues = 0; union oct_nic_if_cfg if_cfg; unsigned int base_queue; unsigned int gmx_port_id; @@ -3360,7 +3365,7 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) sc->callback = lio_if_cfg_callback; sc->callback_arg = sc; - sc->wait_time = 3000; + sc->wait_time = LIO_IFCFG_WAIT_TIME; retval = octeon_send_soft_command(octeon_dev, sc); if (retval == IQ_SEND_FAILED) { @@ -3414,11 +3419,20 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) resp->cfg_info.oqmask); goto setup_nic_dev_fail; } + + if (OCTEON_CN6XXX(octeon_dev)) { + max_num_queues = CFG_GET_IQ_MAX_Q(CHIP_CONF(octeon_dev, + cn6xxx)); + } else if (OCTEON_CN23XX_PF(octeon_dev)) { + max_num_queues = CFG_GET_IQ_MAX_Q(CHIP_CONF(octeon_dev, + cn23xx_pf)); + } + dev_dbg(&octeon_dev->pci_dev->dev, - "interface %d, iqmask %016llx, oqmask %016llx, numiqueues %d, numoqueues %d\n", + "interface %d, iqmask %016llx, oqmask %016llx, numiqueues %d, numoqueues %d max_num_queues: %d\n", i, resp->cfg_info.iqmask, resp->cfg_info.oqmask, - num_iqueues, num_oqueues); - netdev = alloc_etherdev_mq(LIO_SIZE, num_iqueues); + num_iqueues, num_oqueues, max_num_queues); + netdev = alloc_etherdev_mq(LIO_SIZE, max_num_queues); if (!netdev) { dev_err(&octeon_dev->pci_dev->dev, "Device allocation failed\n"); @@ -3433,6 +3447,20 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) netdev->netdev_ops = &lionetdevops; SWITCHDEV_SET_OPS(netdev, &lio_pf_switchdev_ops); + retval = netif_set_real_num_rx_queues(netdev, num_oqueues); + if (retval) { + dev_err(&octeon_dev->pci_dev->dev, + "setting real number rx failed\n"); + goto setup_nic_dev_fail; + } + + retval = netif_set_real_num_tx_queues(netdev, num_iqueues); + if (retval) { + dev_err(&octeon_dev->pci_dev->dev, + "setting real number tx failed\n"); + goto setup_nic_dev_fail; + } + lio = GET_LIO(netdev); memset(lio, 0, sizeof(struct lio)); @@ -4053,7 +4081,9 @@ static int octeon_device_init(struct octeon_device *octeon_dev) } atomic_set(&octeon_dev->status, OCT_DEV_MBOX_SETUP_DONE); - if (octeon_allocate_ioq_vector(octeon_dev)) { + if (octeon_allocate_ioq_vector + (octeon_dev, + octeon_dev->sriov_info.num_pf_rings)) { dev_err(&octeon_dev->pci_dev->dev, "OCTEON: ioq vector allocation failed\n"); return 1; } diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c index 246752a..4b5ba02 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c @@ -849,7 +849,7 @@ static void free_netsgbuf(void *buf) i++; } - iq = skb_iq(lio, skb); + iq = skb_iq(lio->oct_dev, skb); spin_lock(&lio->glist_lock[iq]); list_add_tail(&g->list, &lio->glist[iq]); @@ -893,7 +893,7 @@ static void free_netsgbuf_with_resp(void *buf) i++; } - iq = skb_iq(lio, skb); + iq = skb_iq(lio->oct_dev, skb); spin_lock(&lio->glist_lock[iq]); list_add_tail(&g->list, &lio->glist[iq]); @@ -1392,7 +1392,7 @@ static int liquidio_xmit(struct sk_buff *skb, struct net_device *netdev) lio = GET_LIO(netdev); oct = lio->oct_dev; - q_idx = skb_iq(lio, skb); + q_idx = skb_iq(lio->oct_dev, skb); tag = q_idx; iq_no = lio->linfo.txpciq[q_idx].s.q_no; @@ -2324,7 +2324,7 @@ static int octeon_device_init(struct octeon_device *oct) } atomic_set(&oct->status, OCT_DEV_MBOX_SETUP_DONE); - if (octeon_allocate_ioq_vector(oct)) { + if (octeon_allocate_ioq_vector(oct, oct->sriov_info.rings_per_vf)) { dev_err(&oct->pci_dev->dev, "ioq vector allocation failed\n"); return 1; } diff --git a/drivers/net/ethernet/cavium/liquidio/liquidio_common.h b/drivers/net/ethernet/cavium/liquidio/liquidio_common.h index 34a94da..ba854f1 100644 --- a/drivers/net/ethernet/cavium/liquidio/liquidio_common.h +++ b/drivers/net/ethernet/cavium/liquidio/liquidio_common.h @@ -84,6 +84,7 @@ enum octeon_tag_type { #define OPCODE_NIC_IF_CFG 0x09 #define OPCODE_NIC_VF_DRV_NOTICE 0x0A #define OPCODE_NIC_INTRMOD_PARAMS 0x0B +#define OPCODE_NIC_QCOUNT_UPDATE 0x12 #define OPCODE_NIC_SET_TRUSTED_VF 0x13 #define OPCODE_NIC_SYNC_OCTEON_TIME 0x14 #define VF_DRV_LOADED 1 diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_device.c b/drivers/net/ethernet/cavium/liquidio/octeon_device.c index f38abf6..f878a55 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_device.c +++ b/drivers/net/ethernet/cavium/liquidio/octeon_device.c @@ -824,23 +824,18 @@ int octeon_deregister_device(struct octeon_device *oct) } int -octeon_allocate_ioq_vector(struct octeon_device *oct) +octeon_allocate_ioq_vector(struct octeon_device *oct, u32 num_ioqs) { - int i, num_ioqs = 0; struct octeon_ioq_vector *ioq_vector; int cpu_num; int size; - - if (OCTEON_CN23XX_PF(oct)) - num_ioqs = oct->sriov_info.num_pf_rings; - else if (OCTEON_CN23XX_VF(oct)) - num_ioqs = oct->sriov_info.rings_per_vf; + int i; size = sizeof(struct octeon_ioq_vector) * num_ioqs; oct->ioq_vector = vzalloc(size); if (!oct->ioq_vector) - return 1; + return -1; for (i = 0; i < num_ioqs; i++) { ioq_vector = &oct->ioq_vector[i]; ioq_vector->oct_dev = oct; @@ -856,6 +851,7 @@ octeon_allocate_ioq_vector(struct octeon_device *oct) else ioq_vector->ioq_num = i; } + return 0; } diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_device.h b/drivers/net/ethernet/cavium/liquidio/octeon_device.h index 91937cc..9430c0a 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_device.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_device.h @@ -867,7 +867,7 @@ void *oct_get_config_info(struct octeon_device *oct, u16 card_type); struct octeon_config *octeon_get_conf(struct octeon_device *oct); void octeon_free_ioq_vector(struct octeon_device *oct); -int octeon_allocate_ioq_vector(struct octeon_device *oct); +int octeon_allocate_ioq_vector(struct octeon_device *oct, u32 num_ioqs); void lio_enable_irq(struct octeon_droq *droq, struct octeon_instr_queue *iq); /* LiquidIO driver pivate flags */ diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h index 8894889..f3bf635 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h @@ -47,6 +47,8 @@ struct liquidio_if_cfg_resp { u64 status; }; +#define LIO_IFCFG_WAIT_TIME 3000 /* In milli seconds */ + /* Structure of a node in list of gather components maintained by * NIC driver for each network device. */ @@ -544,7 +546,7 @@ static inline void stop_txqs(struct net_device *netdev) { int i; - for (i = 0; i < netdev->num_tx_queues; i++) + for (i = 0; i < netdev->real_num_tx_queues; i++) netif_stop_subqueue(netdev, i); } @@ -557,7 +559,7 @@ static inline void wake_txqs(struct net_device *netdev) struct lio *lio = GET_LIO(netdev); int i, qno; - for (i = 0; i < netdev->num_tx_queues; i++) { + for (i = 0; i < netdev->real_num_tx_queues; i++) { qno = lio->linfo.txpciq[i % lio->oct_dev->num_iqs].s.q_no; if (__netif_subqueue_stopped(netdev, i)) { @@ -578,14 +580,14 @@ static inline void start_txqs(struct net_device *netdev) int i; if (lio->linfo.link.s.link_up) { - for (i = 0; i < netdev->num_tx_queues; i++) + for (i = 0; i < netdev->real_num_tx_queues; i++) netif_start_subqueue(netdev, i); } } -static inline int skb_iq(struct lio *lio, struct sk_buff *skb) +static inline int skb_iq(struct octeon_device *oct, struct sk_buff *skb) { - return skb->queue_mapping % lio->linfo.num_txpciq; + return skb->queue_mapping % oct->num_iqs; } /**