From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752005AbdJ0OMr (ORCPT ); Fri, 27 Oct 2017 10:12:47 -0400 Received: from mail-sn1nam02on0040.outbound.protection.outlook.com ([104.47.36.40]:59616 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751610AbdJ0OMF (ORCPT ); Fri, 27 Oct 2017 10:12:05 -0400 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; driverdev.osuosl.org; dkim=none (message not signed) header.d=none;driverdev.osuosl.org; dmarc=fail action=none header.from=nxp.com; From: Bogdan Purcareata To: , , , Subject: [PATCH 4/5] staging: fsl-dpaa2/eth: Change RX buffer alignment Date: Fri, 27 Oct 2017 14:11:35 +0000 Message-ID: <1509113496-10810-5-git-send-email-bogdan.purcareata@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1509113496-10810-1-git-send-email-bogdan.purcareata@nxp.com> References: <1509113496-10810-1-git-send-email-bogdan.purcareata@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131535871228415724;(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)(376002)(39860400002)(39380400002)(346002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(6666003)(8656006)(189998001)(86362001)(50466002)(85426001)(53936002)(305945005)(48376002)(97736004)(5660300001)(49486002)(2950100002)(104016004)(77096006)(68736007)(47776003)(8936002)(76176999)(81156014)(2906002)(8676002)(36756003)(2201001)(81166006)(105606002)(356003)(498600001)(316002)(33646002)(50986999)(106466001)(50226002)(110136005)(16586007)(5003940100001);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR03MB2704;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11OLC007;1:d/QsrdYHlhS4Qw4mS7RCTSCwOoilf4ajQcZfeJvSuMdHT8hUm90eGbw1mSYsXETiUzlpI2Lz6DEjYWTSWUHP/JTYQCEHFf40659HGo/zV2JD9tJ2OM7OtV3NIAnbU2Oj MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: da6e3748-f25b-4ef5-8eec-08d51d44b241 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4628075)(201703131517081)(2017052603199);SRVR:MWHPR03MB2704; X-Microsoft-Exchange-Diagnostics: 1;MWHPR03MB2704;3:rzABgl/eUVNKSyzOR2iNvelX2YiFTAncVaHloqcDPCgzYV1IWU2IUlgbV/6+wKgMJeeStsniAqs255IcXCcG55Hl4Kw0YOnyHbgpiJm09qf2VcAttHnB1bor0SxYTuKN6C5Hqtz/XTRV7q/N+xe2oQYIDA3v+C3/+x6esOxSwgd+npL5bynWv7LsH34GB+XTtDKqSAEvpt3Sw6PdTayHbmSyclkX6m04au9KLxUlYt1a6mAvvb4eu8ZmVzKo+WZXXasWXltk8uSTkqzurlfvxzi7EODV+l5xuSsAJpOCaZDLvY8JKn22ednUF6dDAAV3eqlnQJGuQHesZWF9a0H9kMfnHEhqdz1MWZJ3IW1PHws=;25:jZNINzs1RUu8y7zk1EDcRN6PHWjaaYj4qPaYjN9nwI9nFA2x78eUfvYcm2M9oJaZXX/uUN5y9hUWUJfn2vy8Ug+rCid3iBGGP3vyOmc+o+kQGJL+6kuJM8t/UXnse+Lh8GqP1Sg+uxKwvIbEehXaWuedmRA26c61NZxBDaNUln44cDJnXZM+HDa4GNQpgHyF+Ni9nWa+Ieb4qiJC5GhBlHpbe6dg7tdURAsAszWz82BGAvex0rNZBFaMm6fz9i5+Eg0/TIJWhs5t2rU3fA2LlaXB/sk3fFuUjak+N8rzp3HZPHK/iLxbOGU0bKiCBmcck4Yq8xrKJ1mCyVjRCDwBdg== X-MS-TrafficTypeDiagnostic: MWHPR03MB2704: X-Microsoft-Exchange-Diagnostics: 1;MWHPR03MB2704;31:w8WvKeHFEO0ndebiXTDAmz2sLbiqmhPCGv/vCzBbDzcd9OIpUr+DuZ0YxIFjiix6HWjIe1aBqgR652x/AgDZcGu6TowNR35u+0UNUP3lSRPjAkw02cP3FJHtVN2WgYqXlL6Th2NcekHK9AbhGT4TqnGeAk+KvriSmRaKOEnNp+QGgD54mJMkz02gs6oQj8dLSa5vqIqYPkbEw0FYrCZsbkMebMgjWnfQK1giQgsh3x0=;4:mnHk90VKGZN6+0XBdVIvd9W1HUujvtDdo+KmSktL3+xNBhwjbWAHTEjwiF9GTURHymAFgcXB0OuNWIfiqox5XUqFieDfPlSPtiH9LSV0OYOBm9DIUBen+iHxvUGN8QcGYFg8QSo21gYLKcQx7VFoMCBe7iOn4YOM7E+lZQPxn+O4mZX+dyz4kO3VqBKmXxY9861LbNgiukIQQ0SM11G+H8BrlmKJAcq2Z+0PEytlYz40mQeD5/Aq/CG/AF3s0/u3B5iPOlCYIZfryHB0Kux+MsxGRFcl2xjLNGAm3IkXDAY= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(100000703101)(100105400095)(3231020)(10201501046)(6055026)(6096035)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123559100)(20161123563025)(20161123556025)(20161123561025)(20161123565025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:MWHPR03MB2704;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:MWHPR03MB2704; X-Forefront-PRVS: 0473A03F3F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;MWHPR03MB2704;23:6ZjZ3ybBxl7ALUiBiI9OPshC5Cj3G1Hx+sXS85BKH?= =?us-ascii?Q?xCI2Eygmp8p3hGmg7rf85gn7huX4d/OSA+UmQBiWoYbTkewYJlspQGOl5J2R?= =?us-ascii?Q?s/iWM9ueYvrJtMlXEY6e6vv8jYHxvlbVvIDMLZoUb4x6Z2HX7pQGnRQG21jZ?= =?us-ascii?Q?aLJJPedZRfalXHZY4dQCv0xuOsy4+L4OuBHMAz+vs7STbOXAlBCCVvgeRLNp?= =?us-ascii?Q?mRFpyzRVuX3XHAqFFhWe7vMT/AabupoMlSvUBGYbbJrqUdqLN5QGjgU+enoe?= =?us-ascii?Q?8iZ2t8pS6ELcA25HV+tV0/sKl4hKXwnBGR595HfFjhPrIkIEk1oT/hWLJw0w?= =?us-ascii?Q?zjVXs+fmCBR1bb7pRpGIZ39zJs05BUmVjCdxPhz2hqmHjyOetPV4ha7kqfUz?= =?us-ascii?Q?uqMlEsMdpFFGynOGlJOKOz5IUZBEea0pZX+ZcSS2WDxanxVDxEVPXTfH3JDi?= =?us-ascii?Q?ukqzuLwbOWwh3mhBlIBunyinas46FxzA6p8dBA0F9+yLRvHojI+XfeU0TqK6?= =?us-ascii?Q?z9+8pIpdbEteJ17xkbUPQ+xGUNJjLUMpFdLKR5IKhCE/hLB/VyBEB/5zbbD5?= =?us-ascii?Q?6VeOUIRPpd0PaVTJUNLCf8qxTQEtgvyKT8CnE4lEEpjTmMVX6N0mE06y1tgM?= =?us-ascii?Q?WnFbwQRno3OTNe/jCou36VZOBYLxMKzlPwQHMuqByzQOoRWEy2zV4OXu/0t4?= =?us-ascii?Q?b0Qd7t7IQaHv8TzrR0Z00I2U65CmPh+M6ILOjh11SwSVeCAadUaCDvauVOtY?= =?us-ascii?Q?piNVBps6nv2s1KhBwsOk2rRdSFIvP1WhP5hokusuOlL8z4QyUqvAoEB6T2n3?= =?us-ascii?Q?x9+OmgXRl1vVCSvpRsAHFq4ZmiroIrem9ld8QVI4ryUIhSslFlhlw2bWXazE?= =?us-ascii?Q?dfBHfW2Nt5cZKqO+fbq70wXs+73jlMbj833voNgElxT/uL0rvO9T9SONNlOu?= =?us-ascii?Q?SPX/04GWd/rAX7SnhVpZlm1OuGv+YKT68/0XYJR/CnhDWcJPPW48D9FX0PpC?= =?us-ascii?Q?H5ERGYD302AvT8G5mEIQCud6r/MdYndRaWQ2tul0MN9QjuWQHhGCYJ58g3li?= =?us-ascii?Q?vLjbW3n1QXEWZUJO/0GELChgQptDBChPuXB+VIZoaJRlx8zedQ0XgajDsDjg?= =?us-ascii?Q?cXOnE87SN30XxD+SBSn479sHGP4C1Fd?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR03MB2704;6:psOktGPbhY8sYflK/gl+RdnDOG1dQ+wYSB2tp4RjBsoJNrdeePCDPv2wOwU4mR9Aa7R5K3rZpyjcT3CNZZ+nXKximEI94xcT0lBf7X1hNyYKO00Bhtm0mvJoJfk1QF9RsP5mDkOtoDPMDWeGjOkPuRvGFKPfl2c3XtxpUh0otaH7eIB2YNFOpOMtO+LJLgkeJ0MGyuuxREuAePRv6UmZyNVufALgs/KjErD2hi4EFmHArNVOVRMEu394o+hc74F6XeNmXPhMxgj5H1hPjd+BzNXVcIA/JLPqm+/CCAb7IKqgZjayKJuw7E+GrOVL4pZkZtZZ7Lj0ON0CuHxOk2k/DA==;5:ocxz+yLEWgiY1WwRPJbGgdN6PmVmXaHC7esHCcWfQZ0qaX67zJmeAqaBCWV+Fy3l37f4aZ/vD+59OeqIr8YCxa+E7WjzLe61SAkV2ogCvqfg6zc0YD44ULFoLVe2UeDeFWlb2Q/7LByLwLTbyGqwxQ==;24:Vw5kyhFNlLDNCXxBH2RhlqyLxMGWUDbOWYwcRTqEOSpb8Z2j0rxQobA1VmYaG/APlBULe84M9Mv3Sj/wPWakZMqqGxPMjH96TCOsM9mEoOE=;7:bDv8wVC9fGtX/eQsNIptCnlY9rExOI1YFburlq/ahBIq9HE+GWNbBUzD5Pz5a3QDp/IfQ3zPua1NPtUXP9JyInJZTaZ7OnA8ceDKko+wvzAhMRDyn/oJyvxd/P6HdINSh6XeZmbWVBrfVQWCWV2oqDs1KHx5iOGoURkbm4k2REjUmTPh/jU+13YW2ZyqHJxS1UNqPVLOWhr39Xyf4W1Z369nKEzMTHlrfGnRlDDdsik= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2017 14:12:02.6855 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: da6e3748-f25b-4ef5-8eec-08d51d44b241 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: MWHPR03MB2704 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The WRIOP hardware block v1.0.0 (found on LS2080A board) requires data in RX buffers to be aligned to 256B, but newer revisions (e.g. on LS2088A, LS1088A) only require 64B alignment. Check WRIOP version and decide at runtime which alignment requirement to configure for ingress buffers. Signed-off-by: Bogdan Purcareata Signed-off-by: Ioana Radulescu --- drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c | 18 ++++++++++++++---- drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h | 14 +++++++++++--- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c index d68c1f5..29b4928 100644 --- a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c +++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c @@ -766,11 +766,11 @@ static int add_bufs(struct dpaa2_eth_priv *priv, u16 bpid) /* Allocate buffer visible to WRIOP + skb shared info + * alignment padding */ - buf = napi_alloc_frag(DPAA2_ETH_BUF_RAW_SIZE); + buf = napi_alloc_frag(DPAA2_ETH_BUF_RAW_SIZE(priv)); if (unlikely(!buf)) goto err_alloc; - buf = PTR_ALIGN(buf, DPAA2_ETH_RX_BUF_ALIGN); + buf = PTR_ALIGN(buf, priv->rx_buf_align); addr = dma_map_single(dev, buf, DPAA2_ETH_RX_BUF_SIZE, DMA_FROM_DEVICE); @@ -781,7 +781,7 @@ static int add_bufs(struct dpaa2_eth_priv *priv, u16 bpid) /* tracing point */ trace_dpaa2_eth_buf_seed(priv->net_dev, - buf, DPAA2_ETH_BUF_RAW_SIZE, + buf, DPAA2_ETH_BUF_RAW_SIZE(priv), addr, DPAA2_ETH_RX_BUF_SIZE, bpid); } @@ -1782,11 +1782,21 @@ static int set_buffer_layout(struct dpaa2_eth_priv *priv) struct dpni_buffer_layout buf_layout = {0}; int err; + /* We need to check for WRIOP version 1.0.0, but depending on the MC + * version, this number is not always provided correctly on rev1. + * We need to check for both alternatives in this situation. + */ + if (priv->dpni_attrs.wriop_version == DPAA2_WRIOP_VERSION(0, 0, 0) || + priv->dpni_attrs.wriop_version == DPAA2_WRIOP_VERSION(1, 0, 0)) + priv->rx_buf_align = DPAA2_ETH_RX_BUF_ALIGN_REV1; + else + priv->rx_buf_align = DPAA2_ETH_RX_BUF_ALIGN; + /* rx buffer */ buf_layout.pass_parser_result = true; buf_layout.pass_frame_status = true; buf_layout.private_data_size = DPAA2_ETH_SWA_SIZE; - buf_layout.data_align = DPAA2_ETH_RX_BUF_ALIGN; + buf_layout.data_align = priv->rx_buf_align; buf_layout.options = DPNI_BUF_LAYOUT_OPT_PARSER_RESULT | DPNI_BUF_LAYOUT_OPT_FRAME_STATUS | DPNI_BUF_LAYOUT_OPT_PRIVATE_DATA_SIZE | diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h index bfbabae..374a99a 100644 --- a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h +++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h @@ -45,6 +45,8 @@ #include "dpaa2-eth-trace.h" +#define DPAA2_WRIOP_VERSION(x, y, z) ((x) << 10 | (y) << 5 | (z) << 0) + #define DPAA2_ETH_STORE_SIZE 16 /* Maximum number of scatter-gather entries in an ingress frame, @@ -85,7 +87,12 @@ */ #define DPAA2_ETH_RX_BUF_SIZE 2048 #define DPAA2_ETH_TX_BUF_ALIGN 64 -#define DPAA2_ETH_RX_BUF_ALIGN 256 +/* Due to a limitation in WRIOP 1.0.0, the RX buffer data must be aligned + * to 256B. For newer revisions, the requirement is only for 64B alignment + */ +#define DPAA2_ETH_RX_BUF_ALIGN_REV1 256 +#define DPAA2_ETH_RX_BUF_ALIGN 64 + #define DPAA2_ETH_NEEDED_HEADROOM(p_priv) \ ((p_priv)->tx_data_offset + DPAA2_ETH_TX_BUF_ALIGN) @@ -93,10 +100,10 @@ * buffers large enough to allow building an skb around them and also account * for alignment restrictions */ -#define DPAA2_ETH_BUF_RAW_SIZE \ +#define DPAA2_ETH_BUF_RAW_SIZE(priv) \ (DPAA2_ETH_RX_BUF_SIZE + \ SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) + \ - DPAA2_ETH_RX_BUF_ALIGN) + (priv)->rx_buf_align) /* We are accommodating a skb backpointer and some S/G info * in the frame's software annotation. The hardware @@ -318,6 +325,7 @@ struct dpaa2_eth_priv { struct iommu_domain *iommu_domain; u16 tx_qdid; + u16 rx_buf_align; struct fsl_mc_io *mc_io; /* Cores which have an affine DPIO/DPCON. * This is the cpu set on which Rx and Tx conf frames are processed -- 2.7.4