From patchwork Sat May 27 10:25:34 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 24789 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id AD63F90F5; Sat, 27 May 2017 12:20:11 +0200 (CEST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0070.outbound.protection.outlook.com [104.47.37.70]) by dpdk.org (Postfix) with ESMTP id E9B99378E for ; Sat, 27 May 2017 12:19:21 +0200 (CEST) Received: from BN6PR03CA0075.namprd03.prod.outlook.com (10.164.122.141) by BN1PR03MB170.namprd03.prod.outlook.com (10.255.200.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1101.14; Sat, 27 May 2017 10:19:20 +0000 Received: from BY2FFO11FD037.protection.gbl (2a01:111:f400:7c0c::102) by BN6PR03CA0075.outlook.office365.com (2603:10b6:405:6f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9 via Frontend Transport; Sat, 27 May 2017 10:19:20 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BY2FFO11FD037.mail.protection.outlook.com (10.1.14.222) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1075.5 via Frontend Transport; Sat, 27 May 2017 10:19:19 +0000 Received: from Tophie.ap.freescale.net ([10.232.14.39]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v4RAHYuO029968; Sat, 27 May 2017 03:19:17 -0700 From: Shreyansh Jain To: CC: , Date: Sat, 27 May 2017 15:55:34 +0530 Message-ID: <1495880735-1651-39-git-send-email-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1495880735-1651-1-git-send-email-shreyansh.jain@nxp.com> References: <1495880735-1651-1-git-send-email-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131403539600518205; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39400400002)(39410400002)(39860400002)(39850400002)(39840400002)(39380400002)(39450400003)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(9170700003)(54906002)(77096006)(356003)(104016004)(8656002)(5660300001)(33646002)(105606002)(498600001)(53936002)(110136004)(85426001)(38730400002)(8936002)(81166006)(50226002)(2351001)(189998001)(47776003)(8676002)(106466001)(86362001)(68736007)(2950100002)(36756003)(6916009)(6666003)(48376002)(50986999)(50466002)(5003940100001)(2906002)(76176999)(305945005)(4326008); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR03MB170; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD037; 1:bnMRYhept3DdsY1Qr8sO9cXuPuVFM6if9uVPRZSOvd1cYWyDnqQWtKPRLL0ShWzT8gnQD1FfnuppNlIY28N0mLlYD9h9Z3KG4EDboR/D8lDbHX6cpuc1t0XxDz4gaU54muNMf06LCbpMLW3geuBete+XQhK/OjI8UZqlUdBSSw37WrV/0G8yNfrtkrSZ+roGYsdU+wA8oSoDtHvrWVRruE0BirWjTNXCu+y1A52LqVRIg9GEgoKdPzzfkixSoI61y8uLoO8tBCtROBgMOc/6B1RjqM+ztA9iNYzvoHLUt9qFUK+fN8UNU3YXePQZE2WWdKILWgNEzaZAoMrSKwbL2aLit8dlwsEroOfUKfNqRSDEJ8MnBGjp/RgdzdoylUM/dEoXrYr6sbnFCglGVfxGdreoEQmOGnGg84GsLWyPoHDN1vH2cSOMVNcju++5fwqoWVUELUz4L0C6sXuBh0i7/dlxGOGJBxpnIcMJoujykwipH1YipPp78z6kYQGF0boqrvKtzXrz4ppWUeHboNK8VKa3PqbHG+W2trD6fE6j79xtznJqrrDTXm3oNUsSLivjj8fypU0WSpB//f3Feb2rgTDZSxyIpgsGwDKzfqsFWc8T+ICxP/Kf3RJN99yyxhw/0heUcbYGDkUnTwTmoGAKwDIO4BJhbtwERVwkJOw/41kietJecxib/+/sFfQFqcXcZ1EVFhSuMxaBf2jlMHzCNA== MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PR03MB170: X-MS-Office365-Filtering-Correlation-Id: d7325670-fcbc-42fe-2c3d-08d4a4e9d695 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:BN1PR03MB170; X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB170; 3:R8KnArVCsppfnqkJ384lsUHNXBmRike/SAp5ZuHrnQuty1HoKCJRkk3Ci4P3PJ6KtC76W0oVzBcO8T0f5OT87eMD2jNChzGVi4OoFfvZjSsmHzveGHDS5AXP/tq2WM/axMi3+WpNsD5DY7PT0uAjzAA2J8xf2b4MiXOekGEPAA3hgxPVwheFxomC87tD5YxkR11AQqq3xk+JAn+1kXi6m2xgsL77ePH/DCw2Y4A/BHdYh1dk6j/HG0Z6tE+DKwByvg5pPhgYyZMAyR4u+dOa+OVnL49eGnhbiTI/WJJD8CBpiEqKsAMCmf0F4eaavtQjb3J1wpJ7YsWzdmQnSyD6Ubr8pdvRxx0sVyw7WVIMQgC4bWRFNNybe0v3tW4HH3Gn3urbJE8focjwsZ2K481a/OrfMObG5Ku0tmDHE51HI+XG/56QW+5Dcm6tAEmQ+EPi; 25:0wWk0ssZhUUInyuYLQOhF3i5vfgTjpACirA3bYsZU3L22CZZNn8rc2+bjgcRWLefr3n0+8x7d5CCM3XKRQn6tusOoGJn2VMbFfmybpbdkjIIN9zXcCmSy35ySNEFUs+EdAt6RX4/ESptMCMVAowPPo8vTqqGYyX2y4BAytTsxvNAPVTASSBoMAWL2BaL0wi/wLknAquTNOaJDGfCSks0c2rvICGRJwiHFBu1QZc3VYImw++iaLZ9huS68/BeZBDt2cfcICOW8l1Ye7YTP1lCBq+LT8iVXwYWM+oNPzGNfefzJQOacPO8oozSWewtz0Mm8Dz1+ZiMlVc8h5LcaZCPRT3Yc/skxgzUDtD6xrnVW3MSVLcpCM8eaVja3TNRPSWPQwW0w9ohUzkmXsbwZMQ6F+4u2/rPIGwQmobpW47oC1halMywJqg5k3Vlech73Gb+4U0UCO2/LQHWAluJ0vBsNgoJuXW0xRRTCHHYLiME0ik= X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB170; 31:8k4WlAKV1tiZuSpdpC6S21DULN3oksCYS5gFKyp8v99neHuSW73BpUZ56Aeil921LgkGdZ7giewBx8bVw7SFHJH3V0CgcDrnvqj54zt7VujxDI50qVbcYClhyEUuvJ3g6z1LndH1tswB+kp7zOzL8by+IYGeYzJc6KJ3OJv0EPF7POHZjOLXgg8vnLT4cMJ+HVapLP5sIfNIwSxMnTl4kpdDpyo2O6rJ8yQjtS4er3RcB9fFDNLE2Ic4bWgSS8lix0bf9q1WtxsqI2arw/r0Ug== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(601004)(2401047)(8121501046)(13018025)(5005006)(13016025)(3002001)(10201501046)(93006095)(93001095)(6055026)(6096035)(20161123565025)(201703131430075)(201703131448075)(201703131433075)(201703161259150)(201703151042153)(20161123559100)(20161123563025)(20161123561025)(20161123556025); SRVR:BN1PR03MB170; BCL:0; PCL:0; RULEID:(400006); SRVR:BN1PR03MB170; X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB170; 4:U+Pj066FyqUH2HIfkebKbC36jdTpMe8Bg24+Yjw6VlbDmN5VHs/Q7tVNu6Ti1BbQhb7bswsRUZsify/Xlyc7ja/koG4bpHX9apFuJgWSQ/H7OY4DVMOSThdCF6AplEKbtuNEdGW0O4sdvMb+qy8tvezBpUUgIYvnAUqlm0MaRESN83lIvnDjetb8Vh/+hw89ZTxDQ/FExMdYtrwH65CPQzsqcwmq2PCduzsYs90GNoL0AcikB6/TC2dZXdl+4E4AP3VkkHx2r8JLpd9/cHqlELGKa1+sbidQh32cZUwoa2xFbFIKQX5Nqf8M1jhVR+Fx7uVDUZsWlNd2GWQOUeCcSLXCBYJ9r2JqG/PTpaAAxjOHCwl6n5K6HXiWASLkqgZoX36XAK4/cjOlul3vOJjkcwMnJdMEBwLaCtU9DPLjReUrhVT6cxplk3ShUSZ+u3xO7IVhHVVKC7OU266zJL8/9RFDH7/FTMinNLDUpPnEa9mTmz7Tq56lmtc9EJ4u502wVxBtrk40o0nVzocvVDn6SIVW4PMfmitFdwOaplHq8Z2P7Kd3nQAK9ZLnRkoN3TIfgxW+NVaeKDm6I9GfOZla+DdemHx7+mipmD03hNUBCTY9IPq57C7VJW5BKgu5SfDj855ukdPhKLpTLN9nt+SLeNimW2N8N8wttw9T91T1WwEAbMoeAi6RvX529VQhWrsgbwGRPUXn7SpxRIcnOq2let4Hx+lkWF1ztHZxw1R1wQGsU9q0KTIiVUy1QhrdjHGLMWpp69VeEhYPUoM8RKxpE2s9Bd/ov7T5XuEoM3njxS5p2ijRaB6xTu/eo8NMoevHi2Z+CE7Ld1aa+WM3IV06aAL0lHr2AbQWn0V1rpGOXNajveGaH4UIUqhTJ4A6CMpfWKJk3FWwAFI488CeFLV9Zw== X-Forefront-PRVS: 0320B28BE1 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR03MB170; 23:i9JnHVc6KDgStZ1mL8zWUvGJ5A7a74sxiRl1MM2gWA?= zOzfUsBDjPNzniLH2G99hFIG3Kcnw8KSb3VORFVwl0zRtw5ddNoKkxmIqXCF1ur5MntCe3OcGvmwOMLJjliHQYpaQzTM+1SRdY+Ttjk7Rw0GbRVVJ5VlICK6DmobCSCE2RN9WRaKKA5Mml0sTWJ2Ks16pL36aneShRcCcaEHzkLKXC9CnlCK6U/Yzlzem22xeJVKZWmKK34BmSHdjtKiuPxJ0Fp5ThxWUmRf6PE+JoCt/Sxnt+9CMyDgECzAIzrEMam7vkCcKlR6wqKAnujy3MsF+MAkImHUINVP4jNortOsIOfGtF8A0/IcpW3kq2VD7SXUhHyh9ykpA2VAR3XS5ZFPjjA+FDEwoCSny2WueOchq0Ofzx+EqFCG1mBZwPSUxJQcP/FCK06SF3GpogOLCc0PaRbsKW12UssHlnIE3nLQrE8ron0/gkY8Q5V7JKGF6nljzQ4YhzqUgqHkcg8auYdpXfP6D31Ln9jjZQChk7d/XPQ4YiIMhJ79FQDrqCyAJQb3XPKBwYZrP3uWVQXXcIvGsJYR30AEXOnb75/KAeG93SsMNfoz771fOksm50O8Bzraj3o7xlAn5iAFNz6IVjGhWlUqY/+2l+BmVUDpTmdVZAZLjyhAbyEwLfq88VaklbiSHabWHRIxolAm8pNMaJ/+YDHXwg6ksCD/BulkantW0R6lE4sGFbp+9P/OHsUOVBydkY2t4xBRkxK5m2dT343jpAP4oTf0dK6+R9IeIKGQBgKvQstvVPOk6BI9IccFk1ZYIlRGeHtu+iqr2q2lNODZTpc84Js3tYDlvVgm4jrpk+KFC+8m+hR/ySvck4k/y6K81o7BB5RxN14EIuxyyVPMoa8fiOhIdad0ieu2ObEMoy3OkjJ+C66kYuLv/DuP/QXcYwNVtKAx/YyGFxz8WBKCCO74mXuPVKqy2mC5W7geEDBBuDiDRErwEAQLFPLr+BxMVAP73Nc0zUPUMVMliYzGoksJClwg81NdCmWorjnZ7neFASOTIYKDjCghMghufrfGB8VDWVsGvcaptardiVH9d716q4+uYvRh1Ew+B1L6SQonqe9JkoJvr/4Fy1nvY2n6TGm4qjrAz26s1RyIFDLrl8UWjClnOVsUuDqTAW3l1saMFRD7w5JdvAwCuZVklyix0BF4HGTPgijkU0O6mChrrQNsc7uNuqWVLSY3um0GF95w28ZscEfr/fiuTdma+3WLxtgt8LRK3KvNJvFS4/ X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB170; 6:9ZhBzCf9GcOVrBS7DDD1kr0pz7bUV7WAhzkJ+y+ucQvDX3QJ3alPTGhA19hjApfpx8/KfE8rdOlPtd6ejV1w0y8HftOqJ+5XwFY7b5po7iU8HzNB80Ez7WGnM2X84l7ZQ0COcCIcTK0i/2SNnx4jEMFAfvARcj3IhvHB44MhPjvU42u01mPdC6FTYhN6az3rgp07Urz0vBG+He5x8mCSRQpnHjSUqgaZnpxwQRcZ2zFYX9SCNf8UU3GbRrrvNwnbkf/2jwLlb3TMm4ABuN2YhOJDO/+rJRwoLgddgfRFaVGh1mm8H3+xj8QJlzOPEFa/Ro5yZ0jPioC4uPPxQOjBLaS4FPQfyscEAYpY9Y5APYZXAfL4YxamZqucb1iVADZ2XwXPNq7z/RD3MSPtwd0Y6R8o8yqjXEN3O41/6j4UbxVIJ+PHwIHTGoXq8PVUFVccsvJNJbEeeJNN44Xl1mzMDHENc9ZKNCoSGVhDnPWzOEuHedQsNjEyM7OJVayPqiq55CJCMNWlS3gPiX5dtQI0dQ==; 5:DPMPZcvpdSCeUyg3/y7FhH2m5VcznaGpg+dcCcmIhrSLjUZGq5n8ANtoew3WnoGXLxoKnt5nVAbZfZMDMack4kWN9/F2wT0yvOPOco0ubeTlKl2WzUknvTssInSURV4EW03YtwFGKB3FkYbcPecENcLNT1liyehvdo5yh/RTB7s2//w8BDjJwtIK2krau05d; 24:bMOBhSK5hCeOUAGEQEyCgLQRrzfVUUuovrY15Hoe8FV7rPCxuW/4+faolMgu4hVqenC3eWsqih/7BoRS27kQVMTF6s4ZpdQaEGIPS2UHxfo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB170; 7:Cw43raoIIJKOBrU1zRVi/U5FDiCq9qZWv8NcOY1MZBJX3mhKEHyOXB+zzyOWdDES08iTPvKlkVLm1GkaUtWx1V31CY//ZjB12QrB1MwEs5H06zKxHNHbZwVNR+6amS8BdRAMR5Kt/NwtnavfRKXw2OICjOPXpoErG2gW3E+PeSdLk74eZyuKxAcECYp2SPhwnWenSEd2VKs0kq30qRTIG1kKNjDSUt+GNzMwlbstno406SI5ea+TYltQ+4lNWQBEEHVcNO2zcOjuIB+yoWBhde8puF/5JTIOqUbDd2dqEERB1rmUO9Iz4wqx4R48DB97tAFZ4imfZHqt/uC8QM1zrg== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 May 2017 10:19:19.9426 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR03MB170 Subject: [dpdk-dev] [RFC Patch 38/39] net/dpaa: add support for flow control X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Signed-off-by: Hemant Agrawal Signed-off-by: Shreyansh Jain --- doc/guides/nics/features/dpaa.ini | 1 + drivers/net/dpaa/dpaa_ethdev.c | 112 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) diff --git a/doc/guides/nics/features/dpaa.ini b/doc/guides/nics/features/dpaa.ini index c2f787d..2d91303 100644 --- a/doc/guides/nics/features/dpaa.ini +++ b/doc/guides/nics/features/dpaa.ini @@ -13,6 +13,7 @@ Promiscuous mode = Y Allmulticast mode = Y Unicast MAC filter = Y RSS hash = Y +Flow control = Y L3 checksum offload = Y L4 checksum offload = Y Packet type parsing = Y diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 8204ab7..30ebc2b 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -359,6 +359,85 @@ static int dpaa_link_up(struct rte_eth_dev *dev) } static int +dpaa_flow_ctrl_set(struct rte_eth_dev *dev, + struct rte_eth_fc_conf *fc_conf) +{ + struct dpaa_if *dpaa_intf = dev->data->dev_private; + struct rte_eth_fc_conf *net_fc; + + PMD_INIT_FUNC_TRACE(); + + if (!(dpaa_intf->fc_conf)) { + dpaa_intf->fc_conf = rte_zmalloc(NULL, + sizeof(struct rte_eth_fc_conf), MAX_CACHELINE); + if (!dpaa_intf->fc_conf) { + PMD_DRV_LOG(ERR, "unable to save flow control info"); + return -ENOMEM; + } + } + net_fc = dpaa_intf->fc_conf; + + if (fc_conf->high_water < fc_conf->low_water) { + PMD_DRV_LOG(ERR, "Incorrect Flow Control Configuration"); + return -EINVAL; + } + + if (fc_conf->mode == RTE_FC_NONE) { + return 0; + } else if (fc_conf->mode == RTE_FC_TX_PAUSE || + fc_conf->mode == RTE_FC_FULL) { + fman_if_set_fc_threshold(dpaa_intf->fif, fc_conf->high_water, + fc_conf->low_water, + dpaa_intf->bp_info->bpid); + if (fc_conf->pause_time) + fman_if_set_fc_quanta(dpaa_intf->fif, + fc_conf->pause_time); + } + + /* Save the information in dpaa device */ + net_fc->pause_time = fc_conf->pause_time; + net_fc->high_water = fc_conf->high_water; + net_fc->low_water = fc_conf->low_water; + net_fc->send_xon = fc_conf->send_xon; + net_fc->mac_ctrl_frame_fwd = fc_conf->mac_ctrl_frame_fwd; + net_fc->mode = fc_conf->mode; + net_fc->autoneg = fc_conf->autoneg; + + return 0; +} + +static int +dpaa_flow_ctrl_get(struct rte_eth_dev *dev, + struct rte_eth_fc_conf *fc_conf) +{ + struct dpaa_if *dpaa_intf = dev->data->dev_private; + struct rte_eth_fc_conf *net_fc = dpaa_intf->fc_conf; + int ret; + + PMD_INIT_FUNC_TRACE(); + + if (net_fc) { + fc_conf->pause_time = net_fc->pause_time; + fc_conf->high_water = net_fc->high_water; + fc_conf->low_water = net_fc->low_water; + fc_conf->send_xon = net_fc->send_xon; + fc_conf->mac_ctrl_frame_fwd = net_fc->mac_ctrl_frame_fwd; + fc_conf->mode = net_fc->mode; + fc_conf->autoneg = net_fc->autoneg; + return 0; + } + ret = fman_if_get_fc_threshold(dpaa_intf->fif); + if (ret) { + fc_conf->mode = RTE_FC_TX_PAUSE; + fc_conf->pause_time = fman_if_get_fc_quanta(dpaa_intf->fif); + } else { + fc_conf->mode = RTE_FC_NONE; + } + + return 0; +} + +static int dpaa_dev_add_mac_addr(struct rte_eth_dev *dev, struct ether_addr *addr, uint32_t index, @@ -422,6 +501,9 @@ static struct eth_dev_ops dpaa_devops = { .rx_queue_release = dpaa_eth_rx_queue_release, .tx_queue_release = dpaa_eth_tx_queue_release, + .flow_ctrl_get = dpaa_flow_ctrl_get, + .flow_ctrl_set = dpaa_flow_ctrl_set, + .link_update = dpaa_eth_link_update, .stats_get = dpaa_eth_stats_get, .stats_reset = dpaa_eth_stats_reset, @@ -438,6 +520,33 @@ static struct eth_dev_ops dpaa_devops = { }; +static int dpaa_fc_set_default(struct dpaa_if *dpaa_intf) +{ + struct rte_eth_fc_conf *fc_conf; + int ret; + + PMD_INIT_FUNC_TRACE(); + + if (!(dpaa_intf->fc_conf)) { + dpaa_intf->fc_conf = rte_zmalloc(NULL, + sizeof(struct rte_eth_fc_conf), MAX_CACHELINE); + if (!dpaa_intf->fc_conf) { + PMD_DRV_LOG(ERR, "unable to save flow control info"); + return -ENOMEM; + } + } + fc_conf = dpaa_intf->fc_conf; + ret = fman_if_get_fc_threshold(dpaa_intf->fif); + if (ret) { + fc_conf->mode = RTE_FC_TX_PAUSE; + fc_conf->pause_time = fman_if_get_fc_quanta(dpaa_intf->fif); + } else { + fc_conf->mode = RTE_FC_NONE; + } + + return 0; +} + /* Initialise an Rx FQ */ static int dpaa_rx_queue_init(struct qman_fq *fq, uint32_t fqid) @@ -575,6 +684,9 @@ static int dpaa_eth_dev_init(struct rte_eth_dev *eth_dev) PMD_DRV_LOG(DEBUG, "all fqs created"); + /* Get the initial configuration for flow control */ + dpaa_fc_set_default(dpaa_intf); + /* reset bpool list, initialize bpool dynamically */ list_for_each_entry_safe(bp, tmp_bp, &cfg->fman_if->bpool_list, node) { list_del(&bp->node);