From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0047.outbound.protection.outlook.com [104.47.33.47]) by dpdk.org (Postfix) with ESMTP id 03B2EF958 for ; Sat, 25 Mar 2017 07:28:12 +0100 (CET) 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=MpzzDVjH0wLYgXaC/u3VJM3UKNGr4dkcIBBn4mPcxNI=; b=fQdTC5fwz8UGCovji58ZvcLO9CCoez/luvemsOfNVCtvgl7QCb4/uvYWjcUevvcEeu/u7EbXICLtCmbNWcKJWvzCLEfEWwAPQsnioAVWkFlU9DM/OEJFYUxNCzyAjDq3gnuhNH9WUC0wVLpGlVD9H5ugwhPF3KtsPVRY1xrfq6k= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=caviumnetworks.com; Received: from lio357.in.caveonetworks.com (14.140.2.178) by CY1PR07MB2280.namprd07.prod.outlook.com (10.164.112.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.977.11; Sat, 25 Mar 2017 06:28:08 +0000 From: Shijith Thotton To: Ferruh Yigit Cc: dev@dpdk.org, Jerin Jacob , Derek Chickles , Venkat Koppula , Srisivasubramanian S , Mallesham Jatharakonda Date: Sat, 25 Mar 2017 11:54:36 +0530 Message-Id: <1490423097-6797-26-git-send-email-shijith.thotton@caviumnetworks.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1490423097-6797-1-git-send-email-shijith.thotton@caviumnetworks.com> References: <1488454371-3342-1-git-send-email-shijith.thotton@caviumnetworks.com> <1490423097-6797-1-git-send-email-shijith.thotton@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: BM1PR01CA0117.INDPRD01.PROD.OUTLOOK.COM (10.174.208.33) To CY1PR07MB2280.namprd07.prod.outlook.com (10.164.112.158) X-MS-Office365-Filtering-Correlation-Id: cbd0b5d2-c8b9-471d-79c7-08d473481c03 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:CY1PR07MB2280; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2280; 3:H0zXkGqA9XGqJhXmtlCWpyrTczFi/rFoliG0r7JOAi+T/BV30CMpaUVVwKFm9iRh3PRlpsfyfCRG3jV5mvo3aZup5hrHhzcjX8sQFIoEeNgEsh9Pbj4fzR5do5TurNybXUQ4ksKG2O3z3tW6K8+//KM3PFqRosXhIeyF56avwZ/htNgFtcx6rSI7147JGjjwZ25Cq2rckTFZY5/TYaeCR9vuZvj3U53+L/TrE0ew2fvM4wE/pGhZg+ZQ/0385TZwt50Nm1BVsKLrrgS9rfBOMw==; 25:f91/lqE3sXUcRt4Qx0EP9dRqHlWZB/LtV9gOUYqI4bPRR9dY/wCo2nBoYowf5E76IxDXiVVFe49a9Z9oqPxo3ubTen85STSiz9kqaws6ZXkvOdXizv37fwDD208RonFyKCBtPuS+evVkuIIl4b7b8mry+192tG9osOjy9oEDOT3PNXUjAAsSkUOP/+uVVcV4W/fqznRrbCp1/gMVC5NNeOwa7zx4vKNuoil9+7JPyNKKl5br0fIAP2KMmC9rmiR4p2mToaxcAe/ySF2Cvw+Rk/xMnGGNWHUoW9lZLwmBp5WTAILy1HW26si/rN9woEMmJfRZVh5fALb0jBqpjhRjylGE5XiK0i04I1lmHS9yt45k/vuydw0hVRgIHBdlTk0uRCKvY73nBJW1+7dmvlIfNW2rhJkac80uyo5Fu+qFaOs1m0hq62INziMBZ77yjkwKpc37ur3K+9u0UqsIlcSX8Q== X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2280; 31:PZTt5H7apQVHZeN2foZU+Qc7+LmvPQvFd5LE2MdPH48Bd0+QMg1EDr2LX+tX+iBCW7q1hvIeci/Xocja81Hzg1d65c2mMOfBHFZ8GMWOBryq/2j/ery8up6Dq8nR1WD3j9yR3p7kukP62kmjrKTRXYgd8Dg5WKIIKMZcCKermO58jjcCW5EHaZwsyub250eje+E5HCGAK56e/PRDPhFIR4DvsOi13/MLptdnl6GJUWJ3Mo1fxZOp6ynC5TpFAkz+; 20:c17Lp2SpYjBINwl8XOgIxfW7SaPa6MPeCvA5mFN6rtUytVzEmEatcvYMLWQHNPRqWWJyOZItQDDHI4CSxFhi+uMPdwNSqZAASaaPYRA7dIhBoOP4TDy50YrRZ5viPHhrebiunISll2PxcBZJkbLzupweGe80IcyNMqpVpWLWSDbE3GPb2+7vrzTdfxH8fpv0a46ANgmwQIdpkV470LyYnLwEJg08ZWaMF+0lpCKL0LUIf2VyklSegnMOL+g0ovIN/3po17wucFM5AKJLrPIqrWaVEBcIC5626yvkhFDbThGvaABXq3v6PXXqT9FnplifwE5fb6EhIjScJklT2QiMcCm/NUwPX2zRE2Z2yUvQ/hz6djK6z6/PvYJ7yO836Wa+4ASayR0CDk7Ru/lCvyLDMAAtu53czrJC2yeItzXEaR6gr/nLXJv6E7dGTe6+ngwiTMs4WTDDTr9bIBWesJdgVcoS7K+zQjLWL9+NIigkXxTmvuFUoP/l8Hglwtamy/PHLZldqEmeATTsXX5OJzj/N8dBeL61ki8xHLVBf/6fC7oE1weidu9PrI8qsfLlelnNe8vFX9fvNuDFss5q4khCJ0uQgI4z36Z79CjYwFIfFd0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041248)(20161123564025)(20161123560025)(20161123562025)(20161123558025)(20161123555025)(6072148); SRVR:CY1PR07MB2280; BCL:0; PCL:0; RULEID:; SRVR:CY1PR07MB2280; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2280; 4:a16vPzQlZjsJgAJ3nGGMuqn7BpX6qXbcc7w7QnIsEpQvVsmmVwjwwcd1H6AADRspOWUFnRh0w2VrWwxpFA24J0U9vfMHIAL0s9oc/7sK41BEkm7yOpe2Q6mAAT5C+OKCtcdahNDsbLKgoBYQh6jJhKP8jtmAA7GZOxhFdQgMFPG1UekUy7jqJG3kvxi35k4ip0lfVoeEXaw2FBNIXnMG52lmnxgWYGXE2rVyXDAn+7bg7P5RCPkrrmcQfNSDjh3c6pOzFMiS5f2z5g63lNv+uQ+uVTwl05jQYkKAfjMbF7WX3Cns0QOnoDvIB2qw0mydWLfGS+n/bcg2C2VQWvSNPhApNfV2m5CbDEDHcB53lT3NBbd/LN+ugEth9S0ddtjJN4K/ggMigpexej3UE2xZGw/fLnL/U2Lo+Ypc5IsmRRnplmZASsXPWDInHZo3iVrC9+e3oSD3ltccbTyQdXXjlMA6JUG5PGhk4VrrSTUD0/qnv06Tbf/h+zhy58OvHgVQVG6cvC8VnKE1dRmbjDuerq2zkZD7MfEYjMD2rMzI3gwstXNKk2cT3N38vfnz9G7l+s5B0CGI8vo3mmVEV30fr3ld9bLYCA0lZb1a8a6USYw= X-Forefront-PRVS: 025796F161 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39450400003)(39410400002)(39830400002)(2906002)(2950100002)(5003940100001)(66066001)(575784001)(42882006)(6916009)(50466002)(48376002)(47776003)(42186005)(53936002)(6512007)(68736007)(5009440100003)(54906002)(50226002)(38730400002)(6486002)(6666003)(25786009)(305945005)(81166006)(7736002)(6116002)(3846002)(4326008)(8676002)(6506006)(189998001)(36756003)(50986999)(76176999)(33646002)(4720700003)(5660300001)(110136004)(110426004); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR07MB2280; H:lio357.in.caveonetworks.com; FPR:; SPF:None; MLV:nov; PTR:InfoNoRecords; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR07MB2280; 23:o5WF8ix6VkStMc+yY+Nx24VJJaxVVdn5c0m5HA1Q0?= =?us-ascii?Q?xJP+A3XGILihusmxoXGQPv6U0XxgYHLnt17OMgtK8wOGxkCVumJqZNzXkfKz?= =?us-ascii?Q?olvXaAMyIzwSSmUJUsRhoyZZplneA/pQq0kICx6GtRiLu9E7F5FBe47zDJm4?= =?us-ascii?Q?xJiRU5mPVmxNeaT7F/OdupiLUYlWkg+z09FEvB+ctys2aDMbDEDns1iAv/v5?= =?us-ascii?Q?zS/sN0+MkdlJlCLJEIhBOU8JsBn2Uen2p2I+1bG/y1fBgh01mGGNpLaVY+5b?= =?us-ascii?Q?KNWC2dn1aTjmyCJjVX210KII0cS2lQ/UIlpmOQdyBe4JmbwOD23zHQSYGtB2?= =?us-ascii?Q?TM3QAul9aZj7LQ4q0mIfM0qo7mr84B28w4jeN1Oxb/nDhhtJF0M5CrJtlFL/?= =?us-ascii?Q?4AAGKWZIRX3n6oHajo72VbVNzgCU7+BH1440AU4KPvvpP0X1AMJns0635PW/?= =?us-ascii?Q?VX96hjhr5x0m2UHiM6StggKHpeEOsdT0wJaerRVfDO7TCNnK1RL/KeAGkrVf?= =?us-ascii?Q?L0cZQ/iM35PNkwPV0j/elyGfZeweVoPFlxQi5JuqZDCYFfbjNpVjLUjQxeh+?= =?us-ascii?Q?gXYLvW5df+hizs9zlIen+7QzCOOkoFY7Af8LBwH8UdR+9xuTUPDeOnqLJES5?= =?us-ascii?Q?q79yIv+ZsEjt1ugBgdjvo8U65KswuGgMGaUw9DTY78GwJL1oSaMH8eu5yMEn?= =?us-ascii?Q?bT/Dqox8FowQxcEKb6/zSjTaF6qx1zXxeoipG1wajFdHGA1Ht1yteM/Nt6T6?= =?us-ascii?Q?cO6F3LzuG+7p9Q6Qa2i46784J4XTPA/jz51grMkRrKtmd5VAHmKZEKWyFKDW?= =?us-ascii?Q?qGrqmfsjO5/rItgSg+PjOpUTzbGcW459TEIc7YK0q/MVAC9tPh+MdEyqsMqK?= =?us-ascii?Q?zNoR+6PSaim7vVQ3t6wHTzQFThcVypmzity+e8gJfkb6wRM7deHiQ7BlH/Xm?= =?us-ascii?Q?L3JPe0cfyUEphbaXd9kWKsAvAcHFiCQ8ium4ZZcoa6Qs4KwEV4qwA52GApyY?= =?us-ascii?Q?D44+pnpuP6MLLVOUFxeNKjajNKVBJybyHo2ycxkJ8/yh80x0Vswhi9p6awX4?= =?us-ascii?Q?sl5DMBA8BjJBua1A1q9GN4zK4g2I0a1IJAJsHelT5Y5XiqtfA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2280; 6:qZA0mSrkJRdvz9vizsuB6D1kgKXO9sRsPdliYJWB0SRtXOEsGClsccENSlojwzUWq/IW6sQRAo/CdwSPy8TasQMtDBD5Xyfc39o0PhJTxJG7R7KD+yJVaB7bQkD0kIOiZffhX+x+gchyx4J5xOnUw6GC1nITIEMgoOAIWClCGZSNLV2F+KLe2O9SMDpD8D1rrURvAmEHYj8BtRBWgC2NWJNbQL0tkIV7MhDbqhJR7oAXKh3t6XPmQhuaE0v5fkbhVzCMOFMgHpqiQb8xlVsDLGkhT9lqOvsoYQYoreqfVLceOwBcOtHVADb93Nsg1vG3iTSXb30ZjAxzhN1CKBXhPWRRiQsSgUWkAwewDyEpXi5OokaOL3YbaHC6xnIQe7+bgiYxDdItxe5qvfCX4yTZlQ==; 5:N1DgCApRXxExH4AekuqtbrmxcoSSF3sfPoifnDCaKmqRIJU8y0bJOPmuDpERO+QJJfUaWaMaSxHrVJ1vKsNyb159+cw8arVtjP4JIiUkNv5PoScTZiK1xnFIW5WHOwhdHxH61OuTd0h1Jhno2T85sw==; 24:nD61sxiRtV9IHoy4+1SYhgUCY0q32tiybaOEciX4DiHPc8gt6moT4SEh4C9iq7o/yF4sRcn8EWT8Nve6NGXw/uOcm1kTuLqiZuGCvjtPgFo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2280; 7:Ute0PQ58Qcd5gzcGp6Odhz0xHgXVt6tRWn2+Lh2q13q2AQYFRVVn5gQH6jchiSLpYCGZPK1fC/Z4RNypPN12DMx/LgSsTd9YBpMiAB3HJ6Oq4uw990v/JMBCFtXHGQKsZeLVMJ/eFYrlIeE42FwbZvaNr/RaTfdJvoHQxZPZwf99TjdqwUPLXSjrFEd0ihBzyAV+6AETV4NXs/B24kFrJ7zNpvlxG6YRLdX08fYkSJunumXEWJGngae5qg4ymgxJKdVT7UyQT2lCybBMajfurUH/TI4SedliQa6MfSCy/F6gu+n+ZjauVG7EPQAU3o1y52JI8SuUb9lqgg8RGgdtAw== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2017 06:28:08.7162 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2280 Subject: [dpdk-dev] [PATCH v3 25/46] net/liquidio: add APIs for SG list 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: , X-List-Received-Date: Sat, 25 Mar 2017 06:28:13 -0000 Add APIs to setup and free Scatter-Gather list. SG list is used while sending packets with multiple segments. Signed-off-by: Shijith Thotton Signed-off-by: Jerin Jacob Signed-off-by: Derek Chickles Signed-off-by: Venkat Koppula Signed-off-by: Srisivasubramanian S Signed-off-by: Mallesham Jatharakonda --- drivers/net/liquidio/lio_ethdev.c | 23 ++++++++ drivers/net/liquidio/lio_rxtx.c | 107 ++++++++++++++++++++++++++++++++++++++ drivers/net/liquidio/lio_rxtx.h | 7 +++ drivers/net/liquidio/lio_struct.h | 40 ++++++++++++++ 4 files changed, 177 insertions(+) diff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c index 9e2d3f8..77106f6 100644 --- a/drivers/net/liquidio/lio_ethdev.c +++ b/drivers/net/liquidio/lio_ethdev.c @@ -202,6 +202,15 @@ return retval; } + retval = lio_setup_sglists(lio_dev, q_no, fw_mapped_iq, + lio_dev->instr_queue[fw_mapped_iq]->max_count, + socket_id); + + if (retval) { + lio_delete_instruction_queue(lio_dev, fw_mapped_iq); + return retval; + } + eth_dev->data->tx_queues[q_no] = lio_dev->instr_queue[fw_mapped_iq]; return 0; @@ -334,6 +343,20 @@ static int lio_dev_configure(struct rte_eth_dev *eth_dev) /* Copy the permanent MAC address */ ether_addr_copy((struct ether_addr *)mac, ð_dev->data->mac_addrs[0]); + lio_dev->glist_lock = + rte_zmalloc(NULL, sizeof(*lio_dev->glist_lock) * num_iqueues, 0); + if (lio_dev->glist_lock == NULL) + return -ENOMEM; + + lio_dev->glist_head = + rte_zmalloc(NULL, sizeof(*lio_dev->glist_head) * num_iqueues, + 0); + if (lio_dev->glist_head == NULL) { + rte_free(lio_dev->glist_lock); + lio_dev->glist_lock = NULL; + return -ENOMEM; + } + lio_dev->port_configured = 1; lio_free_soft_command(sc); diff --git a/drivers/net/liquidio/lio_rxtx.c b/drivers/net/liquidio/lio_rxtx.c index b0dfc9b..50deaba 100644 --- a/drivers/net/liquidio/lio_rxtx.c +++ b/drivers/net/liquidio/lio_rxtx.c @@ -40,6 +40,8 @@ #include "lio_ethdev.h" #include "lio_rxtx.h" +#define LIO_MAX_SG 12 + static void lio_droq_compute_max_packet_bufs(struct lio_droq *droq) { @@ -1272,3 +1274,108 @@ struct lio_soft_command * return 0; } + +static inline struct lio_stailq_node * +list_delete_first_node(struct lio_stailq_head *head) +{ + struct lio_stailq_node *node; + + if (STAILQ_EMPTY(head)) + node = NULL; + else + node = STAILQ_FIRST(head); + + if (node) + STAILQ_REMOVE(head, node, lio_stailq_node, entries); + + return node; +} + +static void +lio_delete_sglist(struct lio_instr_queue *txq) +{ + struct lio_device *lio_dev = txq->lio_dev; + int iq_no = txq->q_index; + struct lio_gather *g; + + if (lio_dev->glist_head == NULL) + return; + + do { + g = (struct lio_gather *)list_delete_first_node( + &lio_dev->glist_head[iq_no]); + if (g) { + if (g->sg) + rte_free( + (void *)((unsigned long)g->sg - g->adjust)); + rte_free(g); + } + } while (g); +} + +/** + * \brief Setup gather lists + * @param lio per-network private data + */ +int +lio_setup_sglists(struct lio_device *lio_dev, int iq_no, + int fw_mapped_iq, int num_descs, unsigned int socket_id) +{ + struct lio_gather *g; + int i; + + rte_spinlock_init(&lio_dev->glist_lock[iq_no]); + + STAILQ_INIT(&lio_dev->glist_head[iq_no]); + + for (i = 0; i < num_descs; i++) { + g = rte_zmalloc_socket(NULL, sizeof(*g), RTE_CACHE_LINE_SIZE, + socket_id); + if (g == NULL) { + lio_dev_err(lio_dev, + "lio_gather memory allocation failed for qno %d\n", + iq_no); + break; + } + + g->sg_size = + ((ROUNDUP4(LIO_MAX_SG) >> 2) * LIO_SG_ENTRY_SIZE); + + g->sg = rte_zmalloc_socket(NULL, g->sg_size + 8, + RTE_CACHE_LINE_SIZE, socket_id); + if (g->sg == NULL) { + lio_dev_err(lio_dev, + "sg list memory allocation failed for qno %d\n", + iq_no); + rte_free(g); + break; + } + + /* The gather component should be aligned on 64-bit boundary */ + if (((unsigned long)g->sg) & 7) { + g->adjust = 8 - (((unsigned long)g->sg) & 7); + g->sg = + (struct lio_sg_entry *)((unsigned long)g->sg + + g->adjust); + } + + STAILQ_INSERT_TAIL(&lio_dev->glist_head[iq_no], &g->list, + entries); + } + + if (i != num_descs) { + lio_delete_sglist(lio_dev->instr_queue[fw_mapped_iq]); + return -ENOMEM; + } + + return 0; +} + +void +lio_delete_instruction_queue(struct lio_device *lio_dev, int iq_no) +{ + lio_delete_instr_queue(lio_dev, iq_no); + rte_free(lio_dev->instr_queue[iq_no]); + lio_dev->instr_queue[iq_no] = NULL; + lio_dev->num_iqs--; +} diff --git a/drivers/net/liquidio/lio_rxtx.h b/drivers/net/liquidio/lio_rxtx.h index 86d5864..10bca4c 100644 --- a/drivers/net/liquidio/lio_rxtx.h +++ b/drivers/net/liquidio/lio_rxtx.h @@ -42,6 +42,10 @@ #include "lio_struct.h" +#ifndef ROUNDUP4 +#define ROUNDUP4(val) (((val) + 3) & 0xfffffffc) +#endif + #define LIO_STQUEUE_FIRST_ENTRY(ptr, type, elem) \ (type *)((char *)((ptr)->stqh_first) - offsetof(type, elem)) @@ -548,9 +552,12 @@ uint16_t lio_dev_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t budget); void lio_delete_droq_queue(struct lio_device *lio_dev, int oq_no); +int lio_setup_sglists(struct lio_device *lio_dev, int iq_no, + int fw_mapped_iq, int num_descs, unsigned int socket_id); int lio_setup_iq(struct lio_device *lio_dev, int q_index, union octeon_txpciq iq_no, uint32_t num_descs, void *app_ctx, unsigned int socket_id); +void lio_delete_instruction_queue(struct lio_device *lio_dev, int iq_no); /** Setup instruction queue zero for the device * @param lio_dev which lio device to setup * diff --git a/drivers/net/liquidio/lio_struct.h b/drivers/net/liquidio/lio_struct.h index 7a7a4a6..4d67eb6 100644 --- a/drivers/net/liquidio/lio_struct.h +++ b/drivers/net/liquidio/lio_struct.h @@ -298,6 +298,41 @@ struct lio_instr_queue { const struct rte_memzone *iq_mz; }; +/* The Scatter-Gather List Entry. The scatter or gather component used with + * input instruction has this format. + */ +struct lio_sg_entry { + /** The first 64 bit gives the size of data in each dptr. */ + union { + uint16_t size[4]; + uint64_t size64; + } u; + + /** The 4 dptr pointers for this entry. */ + uint64_t ptr[4]; +}; + +#define LIO_SG_ENTRY_SIZE (sizeof(struct lio_sg_entry)) + +/** Structure of a node in list of gather components maintained by + * driver for each network device. + */ +struct lio_gather { + /** List manipulation. Next and prev pointers. */ + struct lio_stailq_node 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 lio_sg_entry *sg; +}; + struct lio_io_enable { uint64_t iq; uint64_t oq; @@ -516,6 +551,11 @@ struct lio_device { uint32_t num_iqs; + /** Guards each glist */ + rte_spinlock_t *glist_lock; + /** Array of gather component linked lists */ + struct lio_stailq_head *glist_head; + /* The pool containing pre allocated buffers used for soft commands */ struct rte_mempool *sc_buf_pool; -- 1.8.3.1