From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0050.outbound.protection.outlook.com [104.47.40.50]) by dpdk.org (Postfix) with ESMTP id 06337F932 for ; Thu, 2 Mar 2017 12:38:21 +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=H+H1381jHU/CWuKimZAoyM6u3mKAnAb4R9CItrxDcms=; b=QijeJEKXAF3kIdSnL8rGpav041dg23U8FalWVfIzVTEityhBsgqcRk5HOxFdW2NFgwn5TPvMlvFjKHaosmRHTLRF0ZRZJtiFTSrnmsLnoOzrEyy2iX+CqDO8MJR/P/dM6DraiP5xeFfgOUUduzGQmwbZjw3Cc4L/KPix/mk/4MY= 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 CY1PR07MB2277.namprd07.prod.outlook.com (10.164.112.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Thu, 2 Mar 2017 11:38:16 +0000 From: Shijith Thotton To: ferruh.yigit@intel.com Cc: dev@dpdk.org, Jerin Jacob , Derek Chickles , Venkat Koppula , Srisivasubramanian S , Mallesham Jatharakonda Date: Thu, 2 Mar 2017 17:02:13 +0530 Message-Id: <1488454371-3342-9-git-send-email-shijith.thotton@caviumnetworks.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1488454371-3342-1-git-send-email-shijith.thotton@caviumnetworks.com> References: <1487669225-30091-1-git-send-email-shijith.thotton@caviumnetworks.com> <1488454371-3342-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: BM1PR01CA0021.INDPRD01.PROD.OUTLOOK.COM (10.163.198.156) To CY1PR07MB2277.namprd07.prod.outlook.com (10.164.112.155) X-MS-Office365-Filtering-Correlation-Id: b9ac8868-039b-4a2a-17a2-08d46160a00b X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:CY1PR07MB2277; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2277; 3:/5QgwPZ80KFTYXAW+hD8PJ0ooRVi8URkYeqUs1EJw7pFAhN05+IJUFQyWP6FSFGusjYDD7O4EnHhi7uv5ARjTkko+qkjre6tvoc4NsnbtCNeX6CJ77Dufo1Zhut9GPahAwUdO+p3F71rqoF2Xcv908mk1AVHjJm4D1/WgFQu4AlaQ6N0pM9t7ObIZ4eeGjj5w6LINXMfy/hnassvXaU3JBkcco3lC3fawRrKmefieTv3O3uW5TGijCaTUn216QMSxU+HfJsn8xJCWiBGOIgvBQ==; 25:KcKG+M511vz+Ha/MRkzd7iOv8hmTkf1sVwjLwFQf3tcP9c4ljH9JbKAtGsX4XO+OJqjTc21wHnN0/9M/LhkyLNGzPLAn3RvOXtgAjtJI5+U665I9cVdz5BL/d0mmHxIFmUEEiU1iTlzY6BZIPpZyBVX2dfFhBlqaPc2D8doft3RZ68uBFmc8R4bt/oLt3jCkXcFbxB/MPK44QhLnmhx0f1KDZnE1lsAQ8gIJ+QQJcjFqrVb71vKzDEPty6sHDMaSTWmHgqm+Ly5z6h//bzy2VrfzZXlD0a6HQrfpHBQMUrDs7q/QjpI+c2v3+RAPGxMUXzb18IEfHLZb2ttCuWnGqQkmUtllt4zt5ucDzVABJUeMOzICcmwmKapo1JFHEsn4Zb9cNmn/TZjDlN9N5Tpl+JaP7hf2h5/l3TYIXR3Z/SJywHL8IroXZkaAch8L7p7TzR5f64huUlpyLyKg+/vp2Q== X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2277; 31:a5W1k4exhenNwchhRczZdEM4QHDWO99Z2g61Ku9oU59BKnUs9boOLGndYG314dWJBTBSTvis5kjx2JXYs/QWXLpQyGHhjSvKtt291WivhZXyr3Qm/ljaSCtzsu/3rJVc+ES2my8TQCcfSdyE45drJv83Ygjr6IYHBT9IG4NhZHDjIT6pay2zpoqoKEuWror/VdukyQXTpQ9G+qGiVA0byhwOMzv2fbQjFKjvpOidMH6x2cadjwlS9yHg6sEduWuX; 20:74yXYu9FxU8YZSF5+tqoUvfRsx7QmoL8t0Cdb3ym+P3aT+vWNzlykc66BsKWOciVISeNtUrCxjvmFU8iIj3yVnXY5H3C1mUYipZ4n6PUpyMCGoWXMmWEzJToi3fvW/+XEaoJGgz6vyyBW5Q38Vg74bJ+D+rr73CxEav5gKkqLzj89MzpVHNBb/9GkIs5SDfRrEHSO2i0qD5ZyBQbzk9bQ2GSLuRmgIGZdtNQOSLE1Luz0qfKLBNrxOz5GJglEisruNoWrOeRjXXcvNqo+IPVrIHM/OGRIBkvzUEG32EqZ490pTXdL6DWBJ3TqlEAZHHfXW5tlV5kQxbkyCEv+jrJaavwuNv+scpRQuTeHs4Sr6DHvwZVV1zYuQsf6Zp4+DRaVmO3b9/Xf3QCjrySECLg27zR4hjF/1y+fpGZ/e1+L7jmTmeu7hC7v+OvoYG/RtpQjdqs9PQ11AxzZUbv16j3o7P/UBoSFVBHf/FCy8kUPiBqT3OSYwVPmDTIWRRo9PrFbxGqPHnmtbRIa5aQrL0JHGLXpMp3grHp7bGhlrxQ/NhyN086lx6UtF78aAagQcUj886kl33TOzJiJftwimnfBPIOFngiUW0cNgknm9cRX/Q= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041248)(20161123558025)(20161123555025)(20161123560025)(20161123564025)(20161123562025)(6072148); SRVR:CY1PR07MB2277; BCL:0; PCL:0; RULEID:; SRVR:CY1PR07MB2277; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2277; 4:vC++3GvpohTM1qHx3ThX53fmqBXv6JzuSut4xc1ll7WgIgKp7aHNS6gX9Afk5WV1Iokv0+pwCzK82DjDekF/mYuoPnIe05xPL4oyHsJt3c7O1aRfHiWlJ6ikUk097wyKEPpnb+ZjQS0282GLehDwtY0mjnnNR5CfILqhrcYt48lUZI7ygmykL+De+W4p6NJ6afTTzX+3vaGLXB/elHsBU7QLFeHX3GCn2p8lNeMDCgaZ5ctP2lSO2tgKomh7bHzTylTb6cxy4FJJL8h1Ko3kmYAOaKeUEcxCkhLAS07l6sfap3nMbApookm90nKvyDSIDoY+TMb0oxj3dc0eXj5ZDkoaH3WBvuhSJ+051xL6q+TGFf3t6oReu9T9qQZPRAOl81ff6hhKZ/vPjKKWAK47DxViqBYALdBg/8NdyJcgIOd5neW4pBhOagSaBzKyBHLY/iR01UFWR/Tf5UnBO9ev2INJMp71YtqWyeQScAWrzivV5BGMz3E1Y9lg9Mm6S7/25m+1SByyVCy3AbE3VkS3KyYZRm+R2aEJbDh8tP2S+F2azNRqUKgwS9hMOHQDVtzEVnsINsC4e++lprqg9A4CQp3OP7kE1dhMUunrU+0JrwY= X-Forefront-PRVS: 023495660C X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(39450400003)(2950100002)(6916009)(42882006)(5660300001)(92566002)(4720700003)(33646002)(48376002)(50226002)(6666003)(2906002)(5003940100001)(36756003)(8676002)(50466002)(81166006)(110136004)(38730400002)(4326008)(305945005)(2361001)(53936002)(2351001)(25786008)(6512007)(189998001)(54906002)(47776003)(6506006)(6486002)(66066001)(6116002)(3846002)(50986999)(76176999)(5009440100003)(42186005)(7736002)(7099028)(110426004); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR07MB2277; H:lio357.in.caveonetworks.com; FPR:; SPF:None; MLV:nov; PTR:InfoNoRecords; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR07MB2277; 23:NqDAYxcWqbLEDAFjBWU+qUarNIRP5+1cHUAU1jt0a?= =?us-ascii?Q?iqmerso+KwynsVv4TiAtdintM9fI/SETRkMjawkj5pdlxtfUbRh8i5DSUCCv?= =?us-ascii?Q?B4zC5fgL1Bh1lp9HIUyrGwmb+VBxmbtqeVl7Cfq68oxPMqTaNTAGOPTs9a+z?= =?us-ascii?Q?6wMRP1OXn5kqktN3Rmo2OrEBQdfZEgoCO3q3r9qfYChoV+VwuFSm46utu0U0?= =?us-ascii?Q?6H62fbq1PNdlFywbgz/rh0xkZDPMf/KhjqJAdcQVm1eHb4AXGZDjmOxwBleD?= =?us-ascii?Q?fDj41Ietm0Lbqf5Na73HOWOvS7M19L8UyT8czWItFP9F2z6p/7KXaFrXH3ZI?= =?us-ascii?Q?lY90GHj8sE045uKLnelmwUTK1uTFbrz+Gj3zk1nZO61tRHUD702Y7+w4hnbj?= =?us-ascii?Q?tUwKUR7l1gph/4lq7i1XqB84bM3d9EdVnMlYPGWUgr3RmxZR3gcE5QqZF57G?= =?us-ascii?Q?0oubQ6Zf0DOjsDa8xyy3+FOVU0b0zFoHdgnQZF8Aaycpis7pxfHJVf1+CPMU?= =?us-ascii?Q?fTYIIQoD5XiUVmhBSg/uPO2cB927iFAV/URjywHLs4L9PMwNQiZoH8A+H9fB?= =?us-ascii?Q?T1Gtn4Ft4FibVDOVJWpdRA8rUASeZt+gxG3RT8QjMHpMZoqcfE6Z0RoFG3H5?= =?us-ascii?Q?Tz0TXn9tMtcZGDWPsK2k8LywUm1jhr+Q/dKr3B1D7Q/1KqOTsQCWpu5FuFKU?= =?us-ascii?Q?XIj4RuNpTnFt6Ja1dCNwSPVpOhBXlJEkhfbAKZsafgtravkD6/TQWoooOqec?= =?us-ascii?Q?ZCSpW93iHVW4RCRai2vzduspFfmc3RHguarvgGct6ZbLXGZ+ktmGw+AhMq1n?= =?us-ascii?Q?6/vqUECMSGSUOCWXKVX72ZDGu2m32p7/1KUdg17Tn0H+/BqhrhFeMkN4fEtM?= =?us-ascii?Q?IRLPwsRZ0oeKVo6uh9uuVl/e9TFmQtP/Rz3QSlyr/HB1pmRV/KPYUvlJik1+?= =?us-ascii?Q?j/7gHNT3nY8povkkY9s9PXXR+Dxe23sSbIu8FiFZO18AS7z1DEaPaeTbVVOw?= =?us-ascii?Q?nFDc1bozaoM6nIYaKqBUA0jwYSDEnusHWC3VBVbdMGh6sLUQLGSlXOezMQVo?= =?us-ascii?Q?HFdgj9woAvXK6De0fYoHlESpTXo782mKyOM6R3uSJ2Mj5KCOg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2277; 6:H2ks9XLnei+FxSprrIKr++kSGMOFkLYtbhmXYGwhrsx67wkA/veisHnkwhhiVow1yf54H0AL3uahmsU6gsbMEZvuZdccaRUgV61BatrZrgFNqWv6YWhMPaqLVRvI6ymIiptsA98aHXYxrX2GqBbUUM5ZXBtkwydvw33ytZovJrr5Z2SqgaWUxCfVK44+6mzpBf0SeoZBQvfDeHcjNKUOB+fFU7nY3JKkTasOg/Z/I+TSYoM7HFUGxkmC7eY4HVPWZTi/y75rPR7tS5ldycfTztYyRN5Mio/3P2D+Gzvej9/zkxp/UI7VtG1X2vmC6TXOAq9u7R3IL+OMH3cvtCw36JjP6rtM8J4nKmr7iBp6Yc3YnJHZBtDyVdLMe9K5WIc4viz0xKYvaDudTbD+gWeeYw==; 5:MMVAbiGOBwhFAyDrF4m1EQI8F2G/T5P1nm0WyOOBWQah/hdTs/TDJ1BcBb9x51JNAQD/B1BSAMe3s8Havs2zFOo2h/kYkanqXZsv+wSl5qSe5TTcDDId1zupbku7gvGykR06yd9v9zHf08ZMG+zaYw==; 24:DkEviqtvbqiwfQysoXHFRTvv9wGWsfHk/CbCR+DRchu2v+uwNvImHpPR6hTJwYcwhWoewSNcJL/rCnrXqc2kadhIdqrZFDmzsAoVJH02YBA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2277; 7:FzMInXHnennX6rqaOaUSxtpWoEyrrhq417JFiFY9YgrXliYYBKmrtSbidKcEtyAdOIFMO6XNYLESTPmZyXwlFU3FhuGub/7x83y6xdevwWjlBBXVObSeCwlQBUZ0jI6xflhSJV1xSLJGd/rFqIJAK6TI8obXeQUSeZ5WjDDTOkgYnC1A83OHoHFHhwNY0jViCAjhION8uGPeDLGW+8GzRxGfmv9WuiYpJLEmGbDDukItiBDrWKPE0ka/s2GQPDRsZLHvy10LsTfB6kFyRxT46IlmwokF+YhVyhm8A0JQoGyo0PHT6t/IyMCrVInki8Mpu5AbSVmvLz/gD+P5R+yx8w== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Mar 2017 11:38:16.3261 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2277 Subject: [dpdk-dev] [PATCH v2 08/46] net/liquidio: add API to setup IO queue registers 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: Thu, 02 Mar 2017 11:38:21 -0000 Set default configuration values for input and output queue registers. 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/base/lio_23xx_vf.c | 160 ++++++++++++++++++++++++++++++++ drivers/net/liquidio/lio_ethdev.c | 5 + drivers/net/liquidio/lio_struct.h | 7 ++ 3 files changed, 172 insertions(+) diff --git a/drivers/net/liquidio/base/lio_23xx_vf.c b/drivers/net/liquidio/base/lio_23xx_vf.c index d9b9e2a..f61f185 100644 --- a/drivers/net/liquidio/base/lio_23xx_vf.c +++ b/drivers/net/liquidio/base/lio_23xx_vf.c @@ -39,6 +39,164 @@ #include "lio_23xx_vf.h" #include "lio_23xx_reg.h" +static int +cn23xx_vf_reset_io_queues(struct lio_device *lio_dev, uint32_t num_queues) +{ + uint32_t loop = CN23XX_VF_BUSY_READING_REG_LOOP_COUNT; + uint64_t d64, q_no; + int ret_val = 0; + + PMD_INIT_FUNC_TRACE(); + + for (q_no = 0; q_no < num_queues; q_no++) { + /* set RST bit to 1. This bit applies to both IQ and OQ */ + d64 = lio_read_csr64(lio_dev, + CN23XX_SLI_IQ_PKT_CONTROL64(q_no)); + d64 = d64 | CN23XX_PKT_INPUT_CTL_RST; + lio_write_csr64(lio_dev, CN23XX_SLI_IQ_PKT_CONTROL64(q_no), + d64); + } + + /* wait until the RST bit is clear or the RST and QUIET bits are set */ + for (q_no = 0; q_no < num_queues; q_no++) { + volatile uint64_t reg_val; + + reg_val = lio_read_csr64(lio_dev, + CN23XX_SLI_IQ_PKT_CONTROL64(q_no)); + while ((reg_val & CN23XX_PKT_INPUT_CTL_RST) && + !(reg_val & CN23XX_PKT_INPUT_CTL_QUIET) && + loop) { + reg_val = lio_read_csr64( + lio_dev, + CN23XX_SLI_IQ_PKT_CONTROL64(q_no)); + loop = loop - 1; + } + + if (loop == 0) { + lio_dev_err(lio_dev, + "clearing the reset reg failed or setting the quiet reg failed for qno: %lu\n", + (unsigned long)q_no); + return -1; + } + + reg_val = reg_val & ~CN23XX_PKT_INPUT_CTL_RST; + lio_write_csr64(lio_dev, CN23XX_SLI_IQ_PKT_CONTROL64(q_no), + reg_val); + + reg_val = lio_read_csr64( + lio_dev, CN23XX_SLI_IQ_PKT_CONTROL64(q_no)); + if (reg_val & CN23XX_PKT_INPUT_CTL_RST) { + lio_dev_err(lio_dev, + "clearing the reset failed for qno: %lu\n", + (unsigned long)q_no); + ret_val = -1; + } + } + + return ret_val; +} + +static int +cn23xx_vf_setup_global_input_regs(struct lio_device *lio_dev) +{ + uint64_t q_no; + uint64_t d64; + + PMD_INIT_FUNC_TRACE(); + + if (cn23xx_vf_reset_io_queues(lio_dev, + lio_dev->sriov_info.rings_per_vf)) + return -1; + + for (q_no = 0; q_no < (lio_dev->sriov_info.rings_per_vf); q_no++) { + lio_write_csr64(lio_dev, CN23XX_SLI_IQ_DOORBELL(q_no), + 0xFFFFFFFF); + + d64 = lio_read_csr64(lio_dev, + CN23XX_SLI_IQ_INSTR_COUNT64(q_no)); + + d64 &= 0xEFFFFFFFFFFFFFFFL; + + lio_write_csr64(lio_dev, CN23XX_SLI_IQ_INSTR_COUNT64(q_no), + d64); + + /* Select ES, RO, NS, RDSIZE,DPTR Fomat#0 for + * the Input Queues + */ + lio_write_csr64(lio_dev, CN23XX_SLI_IQ_PKT_CONTROL64(q_no), + CN23XX_PKT_INPUT_CTL_MASK); + } + + return 0; +} + +static void +cn23xx_vf_setup_global_output_regs(struct lio_device *lio_dev) +{ + uint32_t reg_val; + uint32_t q_no; + + PMD_INIT_FUNC_TRACE(); + + for (q_no = 0; q_no < lio_dev->sriov_info.rings_per_vf; q_no++) { + lio_write_csr(lio_dev, CN23XX_SLI_OQ_PKTS_CREDIT(q_no), + 0xFFFFFFFF); + + reg_val = + lio_read_csr(lio_dev, CN23XX_SLI_OQ_PKTS_SENT(q_no)); + + reg_val &= 0xEFFFFFFFFFFFFFFFL; + + reg_val = + lio_read_csr(lio_dev, CN23XX_SLI_OQ_PKT_CONTROL(q_no)); + + /* set IPTR & DPTR */ + reg_val |= + (CN23XX_PKT_OUTPUT_CTL_IPTR | CN23XX_PKT_OUTPUT_CTL_DPTR); + + /* reset BMODE */ + reg_val &= ~(CN23XX_PKT_OUTPUT_CTL_BMODE); + + /* No Relaxed Ordering, No Snoop, 64-bit Byte swap + * for Output Queue Scatter List + * reset ROR_P, NSR_P + */ + reg_val &= ~(CN23XX_PKT_OUTPUT_CTL_ROR_P); + reg_val &= ~(CN23XX_PKT_OUTPUT_CTL_NSR_P); + +#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN + reg_val &= ~(CN23XX_PKT_OUTPUT_CTL_ES_P); +#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN + reg_val |= (CN23XX_PKT_OUTPUT_CTL_ES_P); +#endif + /* No Relaxed Ordering, No Snoop, 64-bit Byte swap + * for Output Queue Data + * reset ROR, NSR + */ + reg_val &= ~(CN23XX_PKT_OUTPUT_CTL_ROR); + reg_val &= ~(CN23XX_PKT_OUTPUT_CTL_NSR); + /* set the ES bit */ + reg_val |= (CN23XX_PKT_OUTPUT_CTL_ES); + + /* write all the selected settings */ + lio_write_csr(lio_dev, CN23XX_SLI_OQ_PKT_CONTROL(q_no), + reg_val); + } +} + +static int +cn23xx_vf_setup_device_regs(struct lio_device *lio_dev) +{ + PMD_INIT_FUNC_TRACE(); + + if (cn23xx_vf_setup_global_input_regs(lio_dev)) + return -1; + + cn23xx_vf_setup_global_output_regs(lio_dev); + + return 0; +} + int cn23xx_vf_setup_device(struct lio_device *lio_dev) { @@ -63,6 +221,8 @@ if (lio_dev->default_config == NULL) return -1; + lio_dev->fn_list.setup_device_regs = cn23xx_vf_setup_device_regs; + return 0; } diff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c index 0487f3d..34b7b54 100644 --- a/drivers/net/liquidio/lio_ethdev.c +++ b/drivers/net/liquidio/lio_ethdev.c @@ -91,6 +91,11 @@ return -1; } + if (lio_dev->fn_list.setup_device_regs(lio_dev)) { + lio_dev_err(lio_dev, "Failed to configure device registers\n"); + return -1; + } + dpdk_queues = (int)lio_dev->sriov_info.rings_per_vf; lio_dev->max_tx_queues = dpdk_queues; diff --git a/drivers/net/liquidio/lio_struct.h b/drivers/net/liquidio/lio_struct.h index a1203e4..577ea49 100644 --- a/drivers/net/liquidio/lio_struct.h +++ b/drivers/net/liquidio/lio_struct.h @@ -43,6 +43,11 @@ #include "lio_hw_defs.h" +struct lio_device; +struct lio_fn_list { + int (*setup_device_regs)(struct lio_device *); +}; + struct lio_sriov_info { /** Number of rings assigned to VF */ uint32_t rings_per_vf; @@ -117,6 +122,8 @@ struct lio_device { uint8_t *hw_addr; + struct lio_fn_list fn_list; + struct lio_sriov_info sriov_info; char dev_string[LIO_DEVICE_NAME_LEN]; /* Device print string */ -- 1.8.3.1