From patchwork Fri Aug 25 10:49:17 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 110983 Delivered-To: patch@linaro.org Received: by 10.140.95.78 with SMTP id h72csp808561qge; Fri, 25 Aug 2017 03:50:14 -0700 (PDT) X-Received: by 10.223.130.49 with SMTP id 46mr6994511wrb.109.1503658214486; Fri, 25 Aug 2017 03:50:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1503658214; cv=none; d=google.com; s=arc-20160816; b=ILgvTGGObWZDoRf2HblqH4bpCeJVSDPI5cf0ID5mpqTzSxS7seHGmtdIA8gG35mfcR qVl3CUnO/8AV/0Dn799TipOqjWQwJFoURxFvCHiMgOCELNY8mqrkwmDprOJxrxMXOqCf QPLQ3RcooM71y4EHjpHrHP3FfPIHiJiZn72jQtsla9quUAvDq2LY4bnQlcquXCYof7Yp ubI+QZc9s1zefguuLrklMVLtbWLD0bCQR6f/NDbFsFz8rmJrWPAy4Xxo9dRDvE08XBit O1uOpOtKWLqzX7o2SeIQACv5MiAooZDoMrjZKHcGiLeqT5OO/Il1Hmx40KQN/+GAEE9N 29Lw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:spamdiagnosticmetadata :spamdiagnosticoutput:mime-version:references:in-reply-to:message-id :date:cc:to:from:arc-authentication-results; bh=357ExG+m4oWFZHVwZdfoFD1fCksMLzZK77z+doiiRZ4=; b=dWXW9QIqhpYPa3Q7WiIGL/Jki2E5nppzCOjwre+jAwAA+mYT2JNCgSSrxEChCMd6Mg hoq18a873nCNvX30SnrH3DIXq1aMRqliIRPiuYlTi9oPPeeexl1HcspaVRfM0Wk2vTLa Yl+bdaEDyv4iSh2fkn/DwBNG5mxbVHvHA2asf9EmzxfpyuRdKIFjJ4Ar/3iRHz8L6r8+ 1cFAIB/BB9oSc7UlrLfJVvyLrZxA+4k9Pa7alMZ7dpGYv/dD5mKJ2z8yhRG82c6nekPb 0EHKemFbZhW6wbblATEDi89IRQ3sPyGWdtmZlTrNbIj2FdgbHHQGecsO3lrsOAnWoa3c gMZA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 2001:4b98:dc0:41:216:3eff:fe72:dd13 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from dpdk.org ([2001:4b98:dc0:41:216:3eff:fe72:dd13]) by mx.google.com with ESMTP id o81si1003391wmb.201.2017.08.25.03.50.14; Fri, 25 Aug 2017 03:50:14 -0700 (PDT) Received-SPF: pass (google.com: domain of dev-bounces@dpdk.org designates 2001:4b98:dc0:41:216:3eff:fe72:dd13 as permitted sender) client-ip=2001:4b98:dc0:41:216:3eff:fe72:dd13; Authentication-Results: mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 2001:4b98:dc0:41:216:3eff:fe72:dd13 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 095BA7D96; Fri, 25 Aug 2017 12:50:09 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0066.outbound.protection.outlook.com [104.47.36.66]) by dpdk.org (Postfix) with ESMTP id 9DB847D82 for ; Fri, 25 Aug 2017 12:50:05 +0200 (CEST) Received: from DM5PR03CA0059.namprd03.prod.outlook.com (10.174.189.176) by BY2PR03MB554.namprd03.prod.outlook.com (10.141.141.156) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1362.18; Fri, 25 Aug 2017 10:50:03 +0000 Received: from BN1BFFO11FD040.protection.gbl (2a01:111:f400:7c10::1:135) by DM5PR03CA0059.outlook.office365.com (2603:10b6:4:3b::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1362.18 via Frontend Transport; Fri, 25 Aug 2017 10:50:03 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) 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.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11FD040.mail.protection.outlook.com (10.58.144.103) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1341.15 via Frontend Transport; Fri, 25 Aug 2017 10:50:03 +0000 Received: from bf-netperf1.ap.freescale.net (bf-netperf1.ap.freescale.net [10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v7PAnw65032070; Fri, 25 Aug 2017 03:50:01 -0700 From: Hemant Agrawal To: CC: , Date: Fri, 25 Aug 2017 16:19:17 +0530 Message-ID: <1503658183-4078-2-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1503658183-4078-1-git-send-email-hemant.agrawal@nxp.com> References: <1503658183-4078-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131481318033632530; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39380400002)(39860400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(50226002)(54906002)(81156014)(81166006)(8676002)(77096006)(47776003)(6666003)(48376002)(6916009)(50466002)(85426001)(2906002)(2950100002)(5660300001)(8656003)(97736004)(104016004)(8936002)(86362001)(36756003)(68736007)(498600001)(626005)(53936002)(4326008)(33646002)(189998001)(356003)(5003940100001)(50986999)(305945005)(106466001)(76176999)(2351001)(110136004)(105606002); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR03MB554; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD040; 1:MsRl1LIvlYzKUHZ92DwxvbVEjoDALGAXKd5xuvoLlNiWAXqfpcVrr7bhl1hAB10P12NZd9f4FDg4AgE1kkPoDM3B+gPhcy4BXsU97WkcadmTRTDR7hHv/eOOgFecHvp5 MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ca295ee6-a832-4563-4bb5-08d4eba70a73 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603199)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BY2PR03MB554; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB554; 3:hAu3Z084NspSD1RINX2JD3fGXP8NJE6qTd2xWS9ZmXqvQZqHJ3Rg94HLMVN175F5QDRN0SYE7Rvw258M1SISv+01qppgLC5J+JhMrI5CWLaTs3UqJ0P0S6LnXWgmV2+uIzbaCpDIe50YjGSaFKr37o6EKF/379P4IB9EYTKsPZQyx0/0PWxA/ofH5B0ndEhVojNp6JRtMRwygtJK5LV3RQqxoFT0zVi24mBmdncDQE2TGxIuW8mgJNu+AbdWNwR+eZzlgwLUbuOHO+dOITswhY0SwyKnWQBDI6ktTGzoFp7r2FjZWnt7IG94yqFwtk2oKUuAGmWmNKsi1JiWvZ+MSsNk9qkUX4HUiut0fZicnYY=; 25:9sHaXSTmTT2wMnKHw+/F2seCSYVuADpkq/UJ0doddVzcKWCWA1BRWhgmpEYEYRN/Cd7xw2LvkOOxfmYTSjd5FX7948uVV0O8LMyzv7VXfvwZSMjhsEUkvkGr2dC6qjix5P7uAyWFYok8NPnktXby2rsA3PNHK3veShq8yJPy9Zest6uKr+XSRvF0d8qndr1VSJV0+kavQ6o+nFH1ZggaDmNZ3ZGeamXqk0l2XLxmvYVsxnGU51IGFZhHowX4OBG7JFNPJd50NC+MCIlByyuIbfKP0dN048e22ddB5nS339CC/dsC6cEbPhafQi3YE3wiitFPTlD+0YXZCT5+5wweyw== X-MS-TrafficTypeDiagnostic: BY2PR03MB554: X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB554; 31:fqEdJHt7DwCM8taZSKh6NF3AKQ9bGRyMczMQHPgpogMn/q0Pm9wmKLWb7uNwPWuFWIITTIP3IcQ1BamobAeNWK0VPFcWJmXLmX1WBogQUedGd07lnZo58uRXGfLlHhL/RmWC+Q3zTtfOGT2WuZ4RDattQeNsUb7wTfu9JpsdBIJJrRr/YMwI98lJFC4kLmRrjM0mhOem9lk2JmPJspM5R/6eGaY7Cw6JQ55Gvex4McM=; 4:L8cOVzDmRreOcR817EEEF/cDUnOL9OjR9tuOujVlcOYmhH0ez0SeUnMvDtcX/fFllxUs7rquEOeNjngh8E3O+Z4mp7oFd8Cmfh5Mee7PdmdmrNz8aZ8KevIEnnPWS5uYrKhumYfvA4cXq00EAuCGnYICj0q9Zs75faKhmKd5meF2faaDW/QvGoNt6hYEiQ2mnVjtNi323NSQhFRUyon+Ha8YYsRRTOra2DQs4EsrFcKN+XwAsqTaJwy2aDCT+9PlbFLEjES3GSebnqGSUrz1CTjkZSEXiZNJ1TfyD88tuxPwWjQgzl+7NjDqx4gYGyZNrrXOQ0igYWqG57yNcJlxow== X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(788757137089); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(8121501046)(13018025)(13016025)(5005006)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(3002001)(6055026)(6096035)(20161123565025)(20161123561025)(20161123559100)(20161123556025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123563025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY2PR03MB554; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY2PR03MB554; X-Forefront-PRVS: 041032FF37 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR03MB554; 23:zV33QeGYLRoQ1BqRKLks/pnzgGKgbuTdte59suY3bG?= k+izJUZgz3YYaG4F35kiFp4p22/6cNjPPURO7zzMydjaRKkV2mWtZuTGqYaBv9KwFDrx4TYro/v1VEMi5R9Nl15+pfWYR81G7p26k5IOv5zCbN6ds2QSe0CMWMZswoOY2bF8drenaiolz4fwTikKNGpooL4bS9jk9BCuImNRW4Ffn2JJnpHcAVi9BhHztrywe5UEZZN5Z3uLhm+xU7Znorf6ttxDFDVuZshZareXbyML8zeeTEPfmODLHEJA+tOay2y+U3d9sbXf80YjBxZC+mI7/alGbyHvonZify5Yky7xTEO8zdbgHjRBJloK1nA+inuF7ll4avedFrOW36qrItkdJnL70rz0gBzgldhiWnBplnCDxjfvQuNRFARjiNaQuGa3Aytxtb+9XyMIsO57rFWwjEnAGZlRZxczOJB+q6+x0ZTjaJ835bl9gUA8Wko0P9yNWQFQjIhToR3JiNvS06m5TFxeDHijqZq8Ps6FTEIXrrjCTrOuFWIGyOF+rgoMDhvrVpNi4feUne7XX3fN2O2pb+bM6YZJWbXmCBshbTkUQ62eKUfpPgGKY23YPO/erB0HdnMkbstkXZ0j08USxgXJxQPhvjN1PnBIuudrpf9IszbtmduGez+wAFKIN1uOoJh4LC4wLPeVu7EOIxiWLS97RikaMMO7t2cuJtAmKzjcMNi6gyq/ByUM6bW+F0d4yx7WHUvnj2PPJHsFWhP5SNopbyhHjpLswQr6sGxKv0hlu0QS3KPaefERCqShTlBfy0GZgYV1XrpN0cwQ2GntQXciEhMjAG7TkUeUCH64oaxQyC3QMhgl97SsaDQuLGeUkNkdBA/JJXrP+JXspkHioEStqZNDaKgLdwLA0stB1sIc+/JW6xGyaG+MG9g7KQUGNCj91W7bfIpNSQrrfYmsEOmFgDwbAXYOeuejvPj7vkax+F2na70Qffsd/JAnvRabcWsLRzxa+tydEl+H9Vm9I/ykZloVS5RV+4UhMpGkkA75Bo5CNO+q3+XeFTbBR4SXMy+i2RdnX6EVybpdkSKRhSQcpjykdln7mlhyiHmZXFuSI0KGpfKDxZO+2V5XVE2cVRJ4NkT/C0CjhXRXpVYKYN X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB554; 6:qytb/615ceAgBVLkzX6BFr/mDA7h2N0NkozXhKpjf1BiS39UZG3IVLNCVkPBpUW1rKnvvlQzNlrvdTaeK3L6u3yZSjneM4iwxOznK40ZbRfmvvdnWtTs7uPIepfkhaqUeE9qbU+1Uprv7Q1ONrxdQewSMGo1gbeNkhOVy2TG/1Dt2qq1SRKnrQ1qXp7WkPzTHOEqKuP2bcophatBpkoeoDceTxZ6iwws4jxzoypetkjdZkNnXgtx2o4jKMBt8JBRKbReVY8aYDLatQ9ifZc1990RcXBUpcRGM1sWETA7mu8dQ7+a3EaVlLGiCBR5w2aM/0dEw6XWAbQ1lOSpU0E7PA==; 5:HlBshCJ1Hyp9gUJt27MunpuMS36OtlC4hpg6IX8USKgdf4KRUCMAtqLqPuHIbBGpe7Ps+PshnePlDU0i60SEcivSraaaJBjX415yoZgxvdtWELDbY4ardd41VT+lefRVBjdKoUI4jka8gnCMuBEGNg==; 24:fYQv4aO43LlJngbCqilhR1F7tKATdgT6Iexoigpu5pIU1XhWJLVOhzSzn1ubpNzvpuRLABvtamdSd7rA3JBv5kuCyI5+cE+aIBHpOaloyGo=; 7:AkvOsiqCFZrPgHObMXbfEvOHjtJ6E00edP7FY4b57JJrrDwYaNzeY0QQREK8c6hiZRbrjq2V2Sr8tpezvmqhX5z5vups8ujD6Hkwn6hF0Mfc0X4OtvYwRpNmb7EtKMSPL/2lFLiXfw+yhat7ofgiowy9Br8qPRXX+VOAKckk+/YVaxaDFucm63rzbTaQsSufILYG3E5Ay0ATMm1dh7rUMOQzillywKcj3cSS3Y41WkQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2017 10:50:03.1448 (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.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB554 Subject: [dpdk-dev] [PATCH 01/27] bus/fslmc: qbman replace word copy with memcpy 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" From: Haiying Wang The word_copy is not as efficient as expected, so remove it from this driver. Signed-off-by: Haiying Wang Signed-off-by: Hemant Agrawal --- drivers/bus/fslmc/qbman/include/compat.h | 42 -------------------------------- drivers/bus/fslmc/qbman/qbman_portal.c | 12 ++++----- drivers/bus/fslmc/qbman/qbman_sys.h | 9 ------- 3 files changed, 5 insertions(+), 58 deletions(-) -- 2.7.4 diff --git a/drivers/bus/fslmc/qbman/include/compat.h b/drivers/bus/fslmc/qbman/include/compat.h index 529f1ea..7b69fd1 100644 --- a/drivers/bus/fslmc/qbman/include/compat.h +++ b/drivers/bus/fslmc/qbman/include/compat.h @@ -229,48 +229,6 @@ typedef uint32_t phandle; #define __raw_readl(p) (*(const volatile unsigned int *)(p)) #define __raw_writel(v, p) {*(volatile unsigned int *)(p) = (v); } -/* memcpy() stuff - when you know alignments in advance */ -#ifdef CONFIG_TRY_BETTER_MEMCPY -static inline void copy_words(void *dest, const void *src, size_t sz) -{ - u32 *__dest = dest; - const u32 *__src = src; - size_t __sz = sz >> 2; - - QBMAN_BUG_ON((unsigned long)dest & 0x3); - QBMAN_BUG_ON((unsigned long)src & 0x3); - QBMAN_BUG_ON(sz & 0x3); - while (__sz--) - *(__dest++) = *(__src++); -} - -static inline void copy_shorts(void *dest, const void *src, size_t sz) -{ - u16 *__dest = dest; - const u16 *__src = src; - size_t __sz = sz >> 1; - - QBMAN_BUG_ON((unsigned long)dest & 0x1); - QBMAN_BUG_ON((unsigned long)src & 0x1); - QBMAN_BUG_ON(sz & 0x1); - while (__sz--) - *(__dest++) = *(__src++); -} - -static inline void copy_bytes(void *dest, const void *src, size_t sz) -{ - u8 *__dest = dest; - const u8 *__src = src; - - while (sz--) - *(__dest++) = *(__src++); -} -#else -#define copy_words memcpy -#define copy_shorts memcpy -#define copy_bytes memcpy -#endif - /* Completion stuff */ #define DECLARE_COMPLETION(n) int n = 0 #define complete(n) { *n = 1; } diff --git a/drivers/bus/fslmc/qbman/qbman_portal.c b/drivers/bus/fslmc/qbman/qbman_portal.c index dd62e9a..f360760 100644 --- a/drivers/bus/fslmc/qbman/qbman_portal.c +++ b/drivers/bus/fslmc/qbman/qbman_portal.c @@ -480,8 +480,8 @@ static int qbman_swp_enqueue_array_mode(struct qbman_swp *s, return -EBUSY; p = qbman_cena_write_start_wo_shadow(&s->sys, QBMAN_CENA_SWP_EQCR(EQAR_IDX(eqar))); - word_copy(&p[1], &cl[1], 7); - word_copy(&p[8], fd, sizeof(*fd) >> 2); + memcpy(&p[1], &cl[1], 28); + memcpy(&p[8], fd, sizeof(*fd)); /* Set the verb byte, have to substitute in the valid-bit */ lwsync(); p[0] = cl[0] | EQAR_VB(eqar); @@ -512,8 +512,8 @@ static int qbman_swp_enqueue_ring_mode(struct qbman_swp *s, p = qbman_cena_write_start_wo_shadow(&s->sys, QBMAN_CENA_SWP_EQCR(s->eqcr.pi & 7)); - word_copy(&p[1], &cl[1], 7); - word_copy(&p[8], fd, sizeof(*fd) >> 2); + memcpy(&p[1], &cl[1], 28); + memcpy(&p[8], fd, sizeof(*fd)); lwsync(); /* Set the verb byte, have to substitute in the valid-bit */ p[0] = cl[0] | s->eqcr.pi_vb; @@ -549,9 +549,7 @@ int qbman_swp_fill_ring(struct qbman_swp *s, } p = qbman_cena_write_start_wo_shadow(&s->sys, QBMAN_CENA_SWP_EQCR((s->eqcr.pi/* +burst_index */) & 7)); - /* word_copy(&p[1], &cl[1], 7); */ memcpy(&p[1], &cl[1], 7 * 4); - /* word_copy(&p[8], fd, sizeof(*fd) >> 2); */ memcpy(&p[8], fd, sizeof(struct qbman_fd)); /* lwsync(); */ @@ -799,7 +797,7 @@ int qbman_swp_pull(struct qbman_swp *s, struct qbman_pull_desc *d) */ qb_attr_code_encode(&code_pull_token, cl, s->desc.idx + 1); p = qbman_cena_write_start_wo_shadow(&s->sys, QBMAN_CENA_SWP_VDQCR); - word_copy(&p[1], &cl[1], 3); + memcpy(&p[1], &cl[1], 12); /* Set the verb byte, have to substitute in the valid-bit */ lwsync(); p[0] = cl[0] | s->vdq.valid_bit; diff --git a/drivers/bus/fslmc/qbman/qbman_sys.h b/drivers/bus/fslmc/qbman/qbman_sys.h index 5dbcaa5..9ea55de 100644 --- a/drivers/bus/fslmc/qbman/qbman_sys.h +++ b/drivers/bus/fslmc/qbman/qbman_sys.h @@ -47,15 +47,6 @@ #undef QBMAN_CINH_TRACE #undef QBMAN_CENA_TRACE -static inline void word_copy(void *d, const void *s, unsigned int cnt) -{ - uint32_t *dd = d; - const uint32_t *ss = s; - - while (cnt--) - *(dd++) = *(ss++); -} - /* Currently, the CENA support code expects each 32-bit word to be written in * host order, and these are converted to hardware (little-endian) order on * command submission. However, 64-bit quantities are must be written (and read)