Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752016AbbLULvR (ORCPT ); Mon, 21 Dec 2015 06:51:17 -0500 Received: from mail-by2on0141.outbound.protection.outlook.com ([207.46.100.141]:39856 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751585AbbLULvK (ORCPT ); Mon, 21 Dec 2015 06:51:10 -0500 Authentication-Results: spf=permerror (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none;freescale.mail.onmicrosoft.com; dmarc=none action=none header.from=freescale.com; From: To: CC: , , , , , , , , , , , Igal Liberman Subject: [v10, 4/6] fsl/fman: Add FMan SP support Date: Mon, 21 Dec 2015 02:21:28 +0200 Message-ID: <1450657290-6644-5-git-send-email-igal.liberman@freescale.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1450657290-6644-1-git-send-email-igal.liberman@freescale.com> References: <1450657290-6644-1-git-send-email-igal.liberman@freescale.com> Reply-To: X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD041;1:WXaPZOsMFcVlxg0fYdyk0o3ZN5kp12F9/3N1v+pcptta1sh82WcPWyKkKVoKGkSN7hVqnost3CsG+ZL6Uv7X2cgM3IEv5VNar+Ra8tXVkSyBgP/Me5SurmiRaR2NDzOlr/Zy0xxyd6qcaOhBACWPpeuBVM/Jsa8kRaNZ5FQKRwhmqNRMn/FvymOJeEK/UhzK4PDdhySgo/OTR9UyskP1cwWztelLxO1WDSEGgXRNxmb0NgDB93wXd0NtteeBoZ/ECsP8tpv458GV+cRKc6HKONi1HY0U0hX0nOBRxMXkrZFZo8DNJMHQIhjCfjwy+LFFPjbtbWOnPM371plwiIzn+0Auvcrxk+0S9YzEe1clAB45vTugVNHm/wAaqnHCDqqSsMpAww8lQaHi6w0EINBJzg== X-Forefront-Antispam-Report: CIP:192.88.158.2;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(448002)(189002)(199003)(77096005)(47776003)(586003)(1096002)(1220700001)(5003940100001)(43066003)(97736004)(2876002)(50986999)(81156007)(48376002)(33646002)(86152002)(76176999)(53806999)(50466002)(86362001)(5001960100002)(19580405001)(107886002)(110136002)(2950100001)(19580395003)(229853001)(2351001)(189998001)(4001430100002)(50226001)(6806005)(104016004)(5008740100001)(106466001)(87936001)(85326001)(36756003)(69596002)(2004002);DIR:OUT;SFP:1102;SCL:1;SRVR:BL2PR03MB500;H:az84smr01.freescale.net;FPR:;SPF:PermError;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB500;2:nVjvxzQtFORA+DFI0wpXemFJl8Lyxc7fsKEKbjLEThKzei8IAmNkOV1EzyIErP4jA/36LIM+w0s/MNEhzPaypN5lf0EVJUEewNs1OBHoZjRzV7hkh2y/EaEjMtOE3GlyKhBRMsTYI5UuyFPw3+h9pw==;3:B8EbLmCA4+VkKG2XeqTULP4JAtmmsSXa6u+bcyIE9UvhRJXe96qVDGe4hxMHU1EJf/q+buyGMekZuu63fgGS/NfxEUUEND6FiKpo1zRd1QMn5z1XO8F+ZQ7Zu04CV53LV4tXO5spqNNvjrg9gdBuF4LYo/gbovm2GfT4dFUCEeYA2l/c2ynFBLp+5qAISmuBwLlpK0DvtCn89DkUaE97+zEhMz+uLnijkZDwqTS0Hd0=;25:+Q5IZZhMyaIbOlgX5bUf8RH7F09qMl7I4n7t0RHWNQGyrwKuMbDKlQuoNu+mDYDZLzzVKDV/z1fJjgF2NAJLcQcUlHaITA4iLe7qZyxv7FGooRQxVsCKTYlKEoODrIebJ7eZ4uHqA0rVNtN0X05AtsfW1LBjtbuKtjga6CCOQqZrix1AncO+u/H9vFIJfqDVrbfaSpWG00VipbmidrcZAjtOhVucicv1SbDQ/MOfFnAngnGfBZ/KpqtcAU0A0SKSIPv/nC45iq/VKTbNWt8Xxg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BL2PR03MB500; X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB500;20:9EnDpd+P7Yl+Es/0bzsonhC0OtNaDlbQFyBlKdcRAPU2OPIx9m7zjOL659ETUgE+kCLOFhTVMklSc9aXaaRQjgSyx+H6SsUtfXfj13iVLzlLdThGV0Owz4QDWRYhZn90tc1B7QAOnpOutyGY8dIwdQ0fLf+F2q45edVjDyPP6NnNILqKgM7+/V9Z6i0DL3KHmMNpILfblmpawELPPJT9p2txofK2nozUraFD2ohDyBIg2PfO6P40gX7GnTskAupqLTFm6IYiz7ExXggROPsp7APIoxTmaNekgXSlN3MTv+Ta6jGAp3r7kjZZnx4ya+R00FA+JsQqaMehr3JfX6tJclwkxm52Bwy5q6i0tPpFfdI=;4:/l+CfopsNqur8guD/Z5f52tMFiPZ9Wu+kPYPGaTGwQx5Oq+v0m8H9nauSJE3wGUDBFeXQN1VqRRDRA2qhMmIDHZ1F8JsxM8FcWNsobkaNCsOKpTdtvDIpo80vcJBcwgI772iUQNq3Z/Sx6kCNeDZiR/tG4fo78zQtqPeiyFPx6Q/uGSkpPlTcDnbKUKFVKr94Mpo1f541H82SfskQMRd0rfFwkbSP9Bd0k+1WgMP61UMhv+kRifMOh1Udt/ze+PasIGSj9pAyUk3syJyYM0nVvsWF3bmwMWUPW8OoTnrKqAUNVjDq4bsNMYno9LWKvYdWH3ckCeNCe+ljW4/5muugUL5vALkTJpZ1pN5oKOxbLgOuZOowiMGjRv7CQmJQMEcw5/THD29GZXzxkZDNIVg2mca+mmNheXXcteW1Xayk7Xc8keqVvj395Ztjh8EyN7O X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001)(10201501046);SRVR:BL2PR03MB500;BCL:0;PCL:0;RULEID:;SRVR:BL2PR03MB500; X-Forefront-PRVS: 079756C6B9 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2PR03MB500;23:dVFzaSWAf17NFUdtGCU6bdgm+T/aLjVT7mWSaQDvaU?= =?us-ascii?Q?jhymkp1zsGdVBGXu++wxe0pP88GU01wjohiptWKjtD9Y/I5amK9qs7n9zMl5?= =?us-ascii?Q?5XDPcgtZTcOTWEtSFRyHHPFACaHMAi+x13JOEuvbSkZ04yBXt+VcR/YR5Cgj?= =?us-ascii?Q?+FXgpjRc0TkOdiKHeh27o2fn+B0N8jLrV4GBhnULZ8Yxj9kQI4WUXbsPr9qY?= =?us-ascii?Q?J6PYW9hSEQfoL0aYNERw8Zlsbzh5e39yI0jEmsIQKDrZ0wD1L6DYk3sD4tkh?= =?us-ascii?Q?WqDclcu0agxdo6HMdR1PjqByIX5o9La0ehlwHdFLV6iauKIfZu9f9//FJfeH?= =?us-ascii?Q?7Er/WoOeLX9XbD+udGt6oPTLRxNSPXpjjmUb/mA51ONQ76QIo5J6w50jB91y?= =?us-ascii?Q?IPEh9VKQH9qTQ1M/eGKaaHWLhcZ/trLMAqbiRaGZ5u33k4Zs7VrCN6jY41HW?= =?us-ascii?Q?pNRFVxqDHIT/GnFXBRdkI+TvrKLNatWN2tTQWF0Qzin9QHuHTdhN5tHt1ycg?= =?us-ascii?Q?9LSzZFqMRXESf106Xmpdu59D+2uoDo5AIfFwb8W6t56JAwX8OqyChgsSZ8XF?= =?us-ascii?Q?4fsz1+qJl3jGh9Ayp5kD3GWfuscGVUBN3GO3d+vPKTrWlV+ankyvb4+TQBMF?= =?us-ascii?Q?kbWLyQV4YsP0czrryzj1KZt7/5kB2mwV8BWaPzA/N+oYNJMN/fiwK96N2bKe?= =?us-ascii?Q?D0Q8P4NdLddIqYfp8VzIqh5ZdoUadrf4EIFGK1YmxRGMj1lbLgWtxkPzvMNT?= =?us-ascii?Q?YHVSW3k5RY8FOlHzoRibi9beZ+K02HM1qpZtmhzT0UlpwjtTU0ZEHJdVRwL3?= =?us-ascii?Q?HcZZm2IwQzPqftovrlxIVIOWVbuSysoUiIOg74DYhpA+NcdwwU+kE+E8JECj?= =?us-ascii?Q?0RWfcdU8/+6v/pS8alBuOIbvnh2vLb+CnE/okjGJP2j6nkAUSPMcixbHA0d6?= =?us-ascii?Q?TjD6fk7Gd18iJ/EiWZGuSsceXLCkpdjOLcFBR/7yM1R97DdJw2ULnmSu1WRE?= =?us-ascii?Q?65zJyn6j8RXoLb6gNWZI7knI7RRIWs+qlvAYY+CVDwB5poNjALoPS8KFbd8E?= =?us-ascii?Q?LK5zdoIqZrK130a+Z7S+YYCHXt9fD4wEFdPyJZ/OCXPOeHscKYyaowIVx/Bu?= =?us-ascii?Q?pVFJCi53g=3D?= X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB500;5:Zp+AscvK3R/PPjs7tPTZuLcJja609uWUT5tmPiOQEHVEoaL28/qZ5uKeeM2qNzyGUt7CWBZuhN7JIf2wyAyhM1YpYhu/Gzk4bA9dIfAoZ4SSiXmO7ytUQ7I4jt+5hB6bUxTQYsVEy/iSbluC78IlTQ==;24:IMfJn9UL0K04m7GeGGzJV4TMLC2kBSrF58r31yZ1a4uwcD9R6fwST4bOoTMBQZeA7c+Vg+s7wvENztR0YMnLeCISgyBRrxkkX6YQpPyiuro= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Dec 2015 11:51:03.7176 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR03MB500 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 11969 Lines: 315 From: Igal Liberman The Storage Profiles contain parameters that are used by the FMan for frame reception and transmission. Signed-off-by: Igal Liberman --- drivers/net/ethernet/freescale/fman/Makefile | 2 +- drivers/net/ethernet/freescale/fman/fman_sp.c | 167 +++++++++++++++++++++++++ drivers/net/ethernet/freescale/fman/fman_sp.h | 103 +++++++++++++++ 3 files changed, 271 insertions(+), 1 deletion(-) create mode 100644 drivers/net/ethernet/freescale/fman/fman_sp.c create mode 100644 drivers/net/ethernet/freescale/fman/fman_sp.h diff --git a/drivers/net/ethernet/freescale/fman/Makefile b/drivers/net/ethernet/freescale/fman/Makefile index 43360d70..5141532 100644 --- a/drivers/net/ethernet/freescale/fman/Makefile +++ b/drivers/net/ethernet/freescale/fman/Makefile @@ -2,5 +2,5 @@ subdir-ccflags-y += -I$(srctree)/drivers/net/ethernet/freescale/fman obj-y += fsl_fman.o fsl_fman_mac.o -fsl_fman-objs := fman_muram.o fman.o +fsl_fman-objs := fman_muram.o fman.o fman_sp.o fsl_fman_mac-objs := fman_dtsec.o fman_memac.o fman_tgec.o diff --git a/drivers/net/ethernet/freescale/fman/fman_sp.c b/drivers/net/ethernet/freescale/fman/fman_sp.c new file mode 100644 index 0000000..f36c622 --- /dev/null +++ b/drivers/net/ethernet/freescale/fman/fman_sp.c @@ -0,0 +1,167 @@ +/* + * Copyright 2008 - 2015 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "fman_sp.h" +#include "fman.h" + +void fman_sp_set_buf_pools_in_asc_order_of_buf_sizes(struct fman_ext_pools + *fm_ext_pools, + u8 *ordered_array, + u16 *sizes_array) +{ + u16 buf_size = 0; + int i = 0, j = 0, k = 0; + + /* First we copy the external buffers pools information + * to an ordered local array + */ + for (i = 0; i < fm_ext_pools->num_of_pools_used; i++) { + /* get pool size */ + buf_size = fm_ext_pools->ext_buf_pool[i].size; + + /* keep sizes in an array according to poolId + * for direct access + */ + sizes_array[fm_ext_pools->ext_buf_pool[i].id] = buf_size; + + /* save poolId in an ordered array according to size */ + for (j = 0; j <= i; j++) { + /* this is the next free place in the array */ + if (j == i) + ordered_array[i] = + fm_ext_pools->ext_buf_pool[i].id; + else { + /* find the right place for this poolId */ + if (buf_size < sizes_array[ordered_array[j]]) { + /* move the pool_ids one place ahead + * to make room for this poolId + */ + for (k = i; k > j; k--) + ordered_array[k] = + ordered_array[k - 1]; + + /* now k==j, this is the place for + * the new size + */ + ordered_array[k] = + fm_ext_pools->ext_buf_pool[i].id; + break; + } + } + } + } +} + +int fman_sp_build_buffer_struct(struct fman_sp_int_context_data_copy * + int_context_data_copy, + struct fman_buffer_prefix_content * + buffer_prefix_content, + struct fman_sp_buf_margins *buf_margins, + struct fman_sp_buffer_offsets *buffer_offsets, + u8 *internal_buf_offset) +{ + u32 tmp; + + /* Align start of internal context data to 16 byte */ + int_context_data_copy->ext_buf_offset = (u16) + ((buffer_prefix_content->priv_data_size & (OFFSET_UNITS - 1)) ? + ((buffer_prefix_content->priv_data_size + OFFSET_UNITS) & + ~(u16)(OFFSET_UNITS - 1)) : + buffer_prefix_content->priv_data_size); + + /* Translate margin and int_context params to FM parameters */ + /* Initialize with illegal value. Later we'll set legal values. */ + buffer_offsets->prs_result_offset = (u32)ILLEGAL_BASE; + buffer_offsets->time_stamp_offset = (u32)ILLEGAL_BASE; + buffer_offsets->hash_result_offset = (u32)ILLEGAL_BASE; + + /* Internally the driver supports 4 options + * 1. prsResult/timestamp/hashResult selection (in fact 8 options, + * but for simplicity we'll + * relate to it as 1). + * 2. All IC context (from AD) not including debug. + */ + + /* This case covers the options under 1 */ + /* Copy size must be in 16-byte granularity. */ + int_context_data_copy->size = + (u16)((buffer_prefix_content->pass_prs_result ? 32 : 0) + + ((buffer_prefix_content->pass_time_stamp || + buffer_prefix_content->pass_hash_result) ? 16 : 0)); + + /* Align start of internal context data to 16 byte */ + int_context_data_copy->int_context_offset = + (u8)(buffer_prefix_content->pass_prs_result ? 32 : + ((buffer_prefix_content->pass_time_stamp || + buffer_prefix_content->pass_hash_result) ? 64 : 0)); + + if (buffer_prefix_content->pass_prs_result) + buffer_offsets->prs_result_offset = + int_context_data_copy->ext_buf_offset; + if (buffer_prefix_content->pass_time_stamp) + buffer_offsets->time_stamp_offset = + buffer_prefix_content->pass_prs_result ? + (int_context_data_copy->ext_buf_offset + + sizeof(struct fman_prs_result)) : + int_context_data_copy->ext_buf_offset; + if (buffer_prefix_content->pass_hash_result) + /* If PR is not requested, whether TS is + * requested or not, IC will be copied from TS + */ + buffer_offsets->hash_result_offset = + buffer_prefix_content->pass_prs_result ? + (int_context_data_copy->ext_buf_offset + + sizeof(struct fman_prs_result) + 8) : + int_context_data_copy->ext_buf_offset + 8; + + if (int_context_data_copy->size) + buf_margins->start_margins = + (u16)(int_context_data_copy->ext_buf_offset + + int_context_data_copy->size); + else + /* No Internal Context passing, STartMargin is + * immediately after private_info + */ + buf_margins->start_margins = + buffer_prefix_content->priv_data_size; + + /* align data start */ + tmp = (u32)(buf_margins->start_margins % + buffer_prefix_content->data_align); + if (tmp) + buf_margins->start_margins += + (buffer_prefix_content->data_align - tmp); + buffer_offsets->data_offset = buf_margins->start_margins; + + return 0; +} + diff --git a/drivers/net/ethernet/freescale/fman/fman_sp.h b/drivers/net/ethernet/freescale/fman/fman_sp.h new file mode 100644 index 0000000..820b7f6 --- /dev/null +++ b/drivers/net/ethernet/freescale/fman/fman_sp.h @@ -0,0 +1,103 @@ +/* + * Copyright 2008 - 2015 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __FM_SP_H +#define __FM_SP_H + +#include "fman.h" +#include + +#define ILLEGAL_BASE (~0) + +/* defaults */ +#define DFLT_FM_SP_BUFFER_PREFIX_CONTEXT_DATA_ALIGN 64 + +/* Registers bit fields */ +#define FMAN_SP_EXT_BUF_POOL_EN_COUNTER 0x40000000 +#define FMAN_SP_EXT_BUF_POOL_VALID 0x80000000 +#define FMAN_SP_EXT_BUF_POOL_BACKUP 0x20000000 +#define FMAN_SP_DMA_ATTR_WRITE_OPTIMIZE 0x00100000 +#define FMAN_SP_SG_DISABLE 0x80000000 + +/* shifts */ +#define FMAN_SP_EXT_BUF_MARG_START_SHIFT 16 +#define FMAN_SP_DMA_ATTR_SWP_SHIFT 30 +#define FMAN_SP_IC_TO_EXT_SHIFT 16 +#define FMAN_SP_IC_FROM_INT_SHIFT 8 + +/* structure for defining internal context copying */ +struct fman_sp_int_context_data_copy { + /* < Offset in External buffer to which internal + * context is copied to (Rx) or taken from (Tx, Op). + */ + u16 ext_buf_offset; + /* Offset within internal context to copy from + * (Rx) or to copy to (Tx, Op). + */ + u8 int_context_offset; + /* Internal offset size to be copied */ + u16 size; +}; + +/* struct for defining external buffer margins */ +struct fman_sp_buf_margins { + /* Number of bytes to be left at the beginning + * of the external buffer (must be divisible by 16) + */ + u16 start_margins; + /* number of bytes to be left at the end + * of the external buffer(must be divisible by 16) + */ + u16 end_margins; +}; + +struct fman_sp_buffer_offsets { + u32 data_offset; + u32 prs_result_offset; + u32 time_stamp_offset; + u32 hash_result_offset; +}; + +int fman_sp_build_buffer_struct(struct fman_sp_int_context_data_copy + *int_context_data_copy, + struct fman_buffer_prefix_content + *buffer_prefix_content, + struct fman_sp_buf_margins *buf_margins, + struct fman_sp_buffer_offsets + *buffer_offsets, + u8 *internal_buf_offset); + +void fman_sp_set_buf_pools_in_asc_order_of_buf_sizes(struct fman_ext_pools + *fm_ext_pools, + u8 *ordered_array, + u16 *sizes_array); + +#endif /* __FM_SP_H */ -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/