629 lines
32 KiB
C
Executable File
629 lines
32 KiB
C
Executable File
/* Copyright (c) 2008-2012 Freescale Semiconductor, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
/**************************************************************************//**
|
|
@File fm_ioctls.h
|
|
|
|
@Description FM Char device ioctls
|
|
*//***************************************************************************/
|
|
#ifndef __FM_IOCTLS_H
|
|
#define __FM_IOCTLS_H
|
|
|
|
|
|
/**************************************************************************//**
|
|
@Group lnx_ioctl_FM_grp Frame Manager Linux IOCTL API
|
|
|
|
@Description FM Linux ioctls definitions and enums
|
|
|
|
@{
|
|
*//***************************************************************************/
|
|
|
|
/**************************************************************************//**
|
|
@Collection FM IOCTL device ('/dev') definitions
|
|
*//***************************************************************************/
|
|
#define DEV_FM_NAME "fm" /**< Name of the FM chardev */
|
|
|
|
#define DEV_FM_MINOR_BASE 0
|
|
#define DEV_FM_PCD_MINOR_BASE (DEV_FM_MINOR_BASE + 1) /*/dev/fmx-pcd */
|
|
#define DEV_FM_OH_PORTS_MINOR_BASE (DEV_FM_PCD_MINOR_BASE + 1) /*/dev/fmx-port-ohy */
|
|
#define DEV_FM_RX_PORTS_MINOR_BASE (DEV_FM_OH_PORTS_MINOR_BASE + FM_MAX_NUM_OF_OH_PORTS) /*/dev/fmx-port-rxy */
|
|
#define DEV_FM_TX_PORTS_MINOR_BASE (DEV_FM_RX_PORTS_MINOR_BASE + FM_MAX_NUM_OF_RX_PORTS) /*/dev/fmx-port-txy */
|
|
#define DEV_FM_MAX_MINORS (DEV_FM_TX_PORTS_MINOR_BASE + FM_MAX_NUM_OF_TX_PORTS)
|
|
|
|
#define FM_IOC_NUM(n) (n)
|
|
#define FM_PCD_IOC_NUM(n) (n+20)
|
|
#define FM_PORT_IOC_NUM(n) (n+70)
|
|
/* @} */
|
|
|
|
#define IOC_FM_MAX_NUM_OF_PORTS 64
|
|
|
|
|
|
/**************************************************************************//**
|
|
@Description Enum for defining port types
|
|
(must match enum e_FmPortType defined in fm_ext.h)
|
|
*//***************************************************************************/
|
|
typedef enum ioc_fm_port_type {
|
|
e_IOC_FM_PORT_TYPE_OH_OFFLINE_PARSING = 0, /**< Offline parsing port */
|
|
e_IOC_FM_PORT_TYPE_RX, /**< 1G Rx port */
|
|
e_IOC_FM_PORT_TYPE_RX_10G, /**< 10G Rx port */
|
|
e_IOC_FM_PORT_TYPE_TX, /**< 1G Tx port */
|
|
e_IOC_FM_PORT_TYPE_TX_10G, /**< 10G Tx port */
|
|
e_IOC_FM_PORT_TYPE_DUMMY
|
|
} ioc_fm_port_type;
|
|
|
|
|
|
/**************************************************************************//**
|
|
@Group lnx_ioctl_FM_lib_grp FM library
|
|
|
|
@Description FM API functions, definitions and enums
|
|
The FM module is the main driver module and is a mandatory module
|
|
for FM driver users. Before any further module initialization,
|
|
this module must be initialized.
|
|
The FM is a "single-tone" module. It is responsible of the common
|
|
HW modules: FPM, DMA, common QMI, common BMI initializations and
|
|
run-time control routines. This module must be initialized always
|
|
when working with any of the FM modules.
|
|
NOTE - We assumes that the FML will be initialize only by core No. 0!
|
|
|
|
@{
|
|
*//***************************************************************************/
|
|
|
|
/**************************************************************************//**
|
|
@Description FM Exceptions
|
|
*//***************************************************************************/
|
|
typedef enum ioc_fm_exceptions {
|
|
e_IOC_FM_EX_DMA_BUS_ERROR, /**< DMA bus error. */
|
|
e_IOC_EX_DMA_READ_ECC, /**< Read Buffer ECC error (Valid for FM rev < 6)*/
|
|
e_IOC_EX_DMA_SYSTEM_WRITE_ECC, /**< Write Buffer ECC error on system side (Valid for FM rev < 6)*/
|
|
e_IOC_EX_DMA_FM_WRITE_ECC, /**< Write Buffer ECC error on FM side (Valid for FM rev < 6)*/
|
|
e_IOC_EX_DMA_SINGLE_PORT_ECC, /**< Single Port ECC error on FM side (Valid for FM rev > 6)*/
|
|
e_IOC_EX_FPM_STALL_ON_TASKS, /**< Stall of tasks on FPM */
|
|
e_IOC_EX_FPM_SINGLE_ECC, /**< Single ECC on FPM. */
|
|
e_IOC_EX_FPM_DOUBLE_ECC, /**< Double ECC error on FPM ram access */
|
|
e_IOC_EX_QMI_SINGLE_ECC, /**< Single ECC on QMI. */
|
|
e_IOC_EX_QMI_DOUBLE_ECC, /**< Double bit ECC occurred on QMI */
|
|
e_IOC_EX_QMI_DEQ_FROM_UNKNOWN_PORTID,/**< Dequeue from unknown port id */
|
|
e_IOC_EX_BMI_LIST_RAM_ECC, /**< Linked List RAM ECC error */
|
|
e_IOC_EX_BMI_STORAGE_PROFILE_ECC, /**< Storage Profile ECC Error */
|
|
e_IOC_EX_BMI_STATISTICS_RAM_ECC, /**< Statistics Count RAM ECC Error Enable */
|
|
e_IOC_EX_BMI_DISPATCH_RAM_ECC, /**< Dispatch RAM ECC Error Enable */
|
|
e_IOC_EX_IRAM_ECC, /**< Double bit ECC occurred on IRAM*/
|
|
e_IOC_EX_MURAM_ECC /**< Double bit ECC occurred on MURAM*/
|
|
} ioc_fm_exceptions;
|
|
|
|
/**************************************************************************//**
|
|
@Group lnx_ioctl_FM_runtime_control_grp FM Runtime Control Unit
|
|
|
|
@Description FM Runtime control unit API functions, definitions and enums.
|
|
The FM driver provides a set of control routines for each module.
|
|
These routines may only be called after the module was fully
|
|
initialized (both configuration and initialization routines were
|
|
called). They are typically used to get information from hardware
|
|
(status, counters/statistics, revision etc.), to modify a current
|
|
state or to force/enable a required action. Run-time control may
|
|
be called whenever necessary and as many times as needed.
|
|
@{
|
|
*//***************************************************************************/
|
|
|
|
/**************************************************************************//**
|
|
@Collection General FM defines.
|
|
*//***************************************************************************/
|
|
#define IOC_FM_MAX_NUM_OF_VALID_PORTS (FM_MAX_NUM_OF_OH_PORTS + \
|
|
FM_MAX_NUM_OF_1G_RX_PORTS + \
|
|
FM_MAX_NUM_OF_10G_RX_PORTS + \
|
|
FM_MAX_NUM_OF_1G_TX_PORTS + \
|
|
FM_MAX_NUM_OF_10G_TX_PORTS)
|
|
/* @} */
|
|
|
|
/**************************************************************************//**
|
|
@Description Structure for Port bandwidth requirement. Port is identified
|
|
by type and relative id.
|
|
(must be identical to t_FmPortBandwidth defined in fm_ext.h)
|
|
*//***************************************************************************/
|
|
typedef struct ioc_fm_port_bandwidth_t {
|
|
ioc_fm_port_type type; /**< FM port type */
|
|
uint8_t relative_port_id; /**< Type relative port id */
|
|
uint8_t bandwidth; /**< bandwidth - (in term of percents) */
|
|
} ioc_fm_port_bandwidth_t;
|
|
|
|
/**************************************************************************//**
|
|
@Description A Structure containing an array of Port bandwidth requirements.
|
|
The user should state the ports requiring bandwidth in terms of
|
|
percentage - i.e. all port's bandwidths in the array must add
|
|
up to 100.
|
|
(must be identical to t_FmPortsBandwidthParams defined in fm_ext.h)
|
|
*//***************************************************************************/
|
|
typedef struct ioc_fm_port_bandwidth_params {
|
|
uint8_t num_of_ports;
|
|
/**< num of ports listed in the array below */
|
|
ioc_fm_port_bandwidth_t ports_bandwidths[IOC_FM_MAX_NUM_OF_VALID_PORTS];
|
|
/**< for each port, it's bandwidth (all port's
|
|
bandwidths must add up to 100.*/
|
|
} ioc_fm_port_bandwidth_params;
|
|
|
|
/**************************************************************************//**
|
|
@Description enum for defining FM counters
|
|
*//***************************************************************************/
|
|
typedef enum ioc_fm_counters {
|
|
e_IOC_FM_COUNTERS_ENQ_TOTAL_FRAME, /**< QMI total enqueued frames counter */
|
|
e_IOC_FM_COUNTERS_DEQ_TOTAL_FRAME, /**< QMI total dequeued frames counter */
|
|
e_IOC_FM_COUNTERS_DEQ_0, /**< QMI 0 frames from QMan counter */
|
|
e_IOC_FM_COUNTERS_DEQ_1, /**< QMI 1 frames from QMan counter */
|
|
e_IOC_FM_COUNTERS_DEQ_2, /**< QMI 2 frames from QMan counter */
|
|
e_IOC_FM_COUNTERS_DEQ_3, /**< QMI 3 frames from QMan counter */
|
|
e_IOC_FM_COUNTERS_DEQ_FROM_DEFAULT, /**< QMI dequeue from default queue counter */
|
|
e_IOC_FM_COUNTERS_DEQ_FROM_CONTEXT, /**< QMI dequeue from FQ context counter */
|
|
e_IOC_FM_COUNTERS_DEQ_FROM_FD, /**< QMI dequeue from FD command field counter */
|
|
e_IOC_FM_COUNTERS_DEQ_CONFIRM, /**< QMI dequeue confirm counter */
|
|
} ioc_fm_counters;
|
|
|
|
typedef struct ioc_fm_obj_t {
|
|
void *obj;
|
|
} ioc_fm_obj_t;
|
|
|
|
/**************************************************************************//**
|
|
@Description A structure for returning revision information
|
|
(must match struct t_FmRevisionInfo declared in fm_ext.h)
|
|
*//***************************************************************************/
|
|
typedef struct ioc_fm_revision_info_t {
|
|
uint8_t major; /**< Major revision */
|
|
uint8_t minor; /**< Minor revision */
|
|
} ioc_fm_revision_info_t;
|
|
|
|
/**************************************************************************//**
|
|
@Description A structure for FM counters
|
|
*//***************************************************************************/
|
|
typedef struct ioc_fm_counters_params_t {
|
|
ioc_fm_counters cnt; /**< The requested counter */
|
|
uint32_t val; /**< The requested value to get/set from/into the counter */
|
|
} ioc_fm_counters_params_t;
|
|
|
|
typedef union ioc_fm_api_version_t {
|
|
struct {
|
|
uint8_t major;
|
|
uint8_t minor;
|
|
uint8_t respin;
|
|
uint8_t reserved;
|
|
} version;
|
|
uint32_t ver;
|
|
} ioc_fm_api_version_t;
|
|
|
|
#if (DPAA_VERSION >= 11)
|
|
/**************************************************************************//**
|
|
@Description A structure of information about each of the external
|
|
buffer pools used by a port or storage-profile.
|
|
(must be identical to t_FmExtPoolParams defined in fm_ext.h)
|
|
*//***************************************************************************/
|
|
typedef struct ioc_fm_ext_pool_params {
|
|
uint8_t id; /**< External buffer pool id */
|
|
uint16_t size; /**< External buffer pool buffer size */
|
|
} ioc_fm_ext_pool_params;
|
|
|
|
/**************************************************************************//**
|
|
@Description A structure for informing the driver about the external
|
|
buffer pools allocated in the BM and used by a port or a
|
|
storage-profile.
|
|
(must be identical to t_FmExtPools defined in fm_ext.h)
|
|
*//***************************************************************************/
|
|
typedef struct ioc_fm_ext_pools {
|
|
uint8_t num_of_pools_used; /**< Number of pools use by this port */
|
|
ioc_fm_ext_pool_params ext_buf_pool[FM_PORT_MAX_NUM_OF_EXT_POOLS];
|
|
/**< Parameters for each port */
|
|
} ioc_fm_ext_pools;
|
|
|
|
typedef struct ioc_fm_vsp_params_t {
|
|
void *p_fm; /**< A handle to the FM object this VSP related to */
|
|
ioc_fm_ext_pools ext_buf_pools; /**< Which external buffer pools are used
|
|
(up to FM_PORT_MAX_NUM_OF_EXT_POOLS), and their sizes.
|
|
parameter associated with Rx / OP port */
|
|
uint16_t liodn_offset; /**< VSP's LIODN offset */
|
|
struct {
|
|
ioc_fm_port_type port_type; /**< Port type */
|
|
uint8_t port_id; /**< Port Id - relative to type */
|
|
} port_params;
|
|
uint8_t relative_profile_id; /**< VSP Id - relative to VSP's range
|
|
defined in relevant FM object */
|
|
void *id; /**< return value */
|
|
} ioc_fm_vsp_params_t;
|
|
#endif /* (DPAA_VERSION >= 11) */
|
|
|
|
/**************************************************************************//**
|
|
@Description A structure for defining BM pool depletion criteria
|
|
*//***************************************************************************/
|
|
typedef struct ioc_fm_buf_pool_depletion_t {
|
|
bool pools_grp_mode_enable; /**< select mode in which pause frames will be sent after
|
|
a number of pools (all together!) are depleted */
|
|
uint8_t num_of_pools; /**< the number of depleted pools that will invoke
|
|
pause frames transmission. */
|
|
bool pools_to_consider[BM_MAX_NUM_OF_POOLS];
|
|
/**< For each pool, TRUE if it should be considered for
|
|
depletion (Note - this pool must be used by this port!). */
|
|
bool single_pool_mode_enable; /**< select mode in which pause frames will be sent after
|
|
a single-pool is depleted; */
|
|
bool pools_to_consider_for_single_mode[BM_MAX_NUM_OF_POOLS];
|
|
/**< For each pool, TRUE if it should be considered for
|
|
depletion (Note - this pool must be used by this port!) */
|
|
#if (DPAA_VERSION >= 11)
|
|
bool pfc_priorities_en[FM_MAX_NUM_OF_PFC_PRIORITIES];
|
|
/**< This field is used by the MAC as the Priority Enable Vector in the PFC frame
|
|
which is transmitted */
|
|
#endif /* (DPAA_VERSION >= 11) */
|
|
} ioc_fm_buf_pool_depletion_t;
|
|
|
|
#if (DPAA_VERSION >= 11)
|
|
typedef struct ioc_fm_buf_pool_depletion_params_t {
|
|
void *p_fm_vsp;
|
|
ioc_fm_buf_pool_depletion_t fm_buf_pool_depletion;
|
|
} ioc_fm_buf_pool_depletion_params_t;
|
|
#endif /* (DPAA_VERSION >= 11) */
|
|
|
|
typedef struct ioc_fm_buffer_prefix_content_t {
|
|
uint16_t priv_data_size; /**< Number of bytes to be left at the beginning
|
|
of the external buffer; Note that the private-area will
|
|
start from the base of the buffer address. */
|
|
bool pass_prs_result; /**< TRUE to pass the parse result to/from the FM;
|
|
User may use FM_PORT_GetBufferPrsResult() in order to
|
|
get the parser-result from a buffer. */
|
|
bool pass_time_stamp; /**< TRUE to pass the timeStamp to/from the FM
|
|
User may use FM_PORT_GetBufferTimeStamp() in order to
|
|
get the parser-result from a buffer. */
|
|
bool pass_hash_result; /**< TRUE to pass the KG hash result to/from the FM
|
|
User may use FM_PORT_GetBufferHashResult() in order to
|
|
get the parser-result from a buffer. */
|
|
bool pass_all_other_pcd_info; /**< Add all other Internal-Context information:
|
|
AD, hash-result, key, etc. */
|
|
uint16_t data_align; /**< 0 to use driver's default alignment [64],
|
|
other value for selecting a data alignment (must be a power of 2);
|
|
if write optimization is used, must be >= 16. */
|
|
uint8_t manip_extra_space; /**< Maximum extra size needed (insertion-size minus removal-size);
|
|
Note that this field impacts the size of the buffer-prefix
|
|
(i.e. it pushes the data offset);
|
|
This field is irrelevant if DPAA_VERSION==10 */
|
|
} ioc_fm_buffer_prefix_content_t;
|
|
|
|
typedef struct ioc_fm_buffer_prefix_content_params_t {
|
|
void *p_fm_vsp;
|
|
ioc_fm_buffer_prefix_content_t fm_buffer_prefix_content;
|
|
} ioc_fm_buffer_prefix_content_params_t;
|
|
|
|
#if (DPAA_VERSION >= 11)
|
|
typedef struct ioc_fm_vsp_config_no_sg_params_t {
|
|
void *p_fm_vsp;
|
|
bool no_sg;
|
|
} ioc_fm_vsp_config_no_sg_params_t;
|
|
|
|
typedef struct ioc_fm_vsp_prs_result_params_t {
|
|
void *p_fm_vsp;
|
|
void *p_data;
|
|
} ioc_fm_vsp_prs_result_params_t;
|
|
#endif
|
|
|
|
typedef struct fm_ctrl_mon_t {
|
|
uint8_t percent_cnt[2];
|
|
} fm_ctrl_mon_t;
|
|
|
|
typedef struct ioc_fm_ctrl_mon_counters_params_t {
|
|
uint8_t fm_ctrl_index;
|
|
fm_ctrl_mon_t *p_mon;
|
|
} ioc_fm_ctrl_mon_counters_params_t;
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_IOC_SET_PORTS_BANDWIDTH
|
|
|
|
@Description Sets relative weights between ports when accessing common resources.
|
|
|
|
@Param[in] ioc_fm_port_bandwidth_params Port bandwidth percentages,
|
|
their sum must equal 100.
|
|
|
|
@Return E_OK on success; Error code otherwise.
|
|
|
|
@Cautions Allowed only following FM_Init().
|
|
*//***************************************************************************/
|
|
#define FM_IOC_SET_PORTS_BANDWIDTH _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(2), ioc_fm_port_bandwidth_params)
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_IOC_GET_REVISION
|
|
|
|
@Description Returns the FM revision
|
|
|
|
@Param[out] ioc_fm_revision_info_t A structure of revision information parameters.
|
|
|
|
@Return None.
|
|
|
|
@Cautions Allowed only following FM_Init().
|
|
*//***************************************************************************/
|
|
#define FM_IOC_GET_REVISION _IOR(FM_IOC_TYPE_BASE, FM_IOC_NUM(3), ioc_fm_revision_info_t)
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_IOC_GET_COUNTER
|
|
|
|
@Description Reads one of the FM counters.
|
|
|
|
@Param[in,out] ioc_fm_counters_params_t The requested counter parameters.
|
|
|
|
@Return Counter's current value.
|
|
|
|
@Cautions Allowed only following FM_Init().
|
|
Note that it is user's responsibilty to call this routine only
|
|
for enabled counters, and there will be no indication if a
|
|
disabled counter is accessed.
|
|
*//***************************************************************************/
|
|
#define FM_IOC_GET_COUNTER _IOWR(FM_IOC_TYPE_BASE, FM_IOC_NUM(4), ioc_fm_counters_params_t)
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_IOC_SET_COUNTER
|
|
|
|
@Description Sets a value to an enabled counter. Use "0" to reset the counter.
|
|
|
|
@Param[in] ioc_fm_counters_params_t The requested counter parameters.
|
|
|
|
@Return E_OK on success; Error code otherwise.
|
|
|
|
@Cautions Allowed only following FM_Init().
|
|
*//***************************************************************************/
|
|
#define FM_IOC_SET_COUNTER _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(5), ioc_fm_counters_params_t)
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_IOC_FORCE_INTR
|
|
|
|
@Description Causes an interrupt event on the requested source.
|
|
|
|
@Param[in] ioc_fm_exceptions An exception to be forced.
|
|
|
|
@Return E_OK on success; Error code if the exception is not enabled,
|
|
or is not able to create interrupt.
|
|
|
|
@Cautions Allowed only following FM_Init().
|
|
*//***************************************************************************/
|
|
#define FM_IOC_FORCE_INTR _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(6), ioc_fm_exceptions)
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_IOC_GET_API_VERSION
|
|
|
|
@Description Reads the FMD IOCTL API version.
|
|
|
|
@Param[in,out] ioc_fm_api_version_t The requested counter parameters.
|
|
|
|
@Return Version's value.
|
|
*//***************************************************************************/
|
|
#define FM_IOC_GET_API_VERSION _IOR(FM_IOC_TYPE_BASE, FM_IOC_NUM(7), ioc_fm_api_version_t)
|
|
|
|
#if (DPAA_VERSION >= 11)
|
|
/**************************************************************************//**
|
|
@Function FM_VSP_Config
|
|
|
|
@Description Creates descriptor for the FM VSP module.
|
|
|
|
The routine returns a handle (descriptor) to the FM VSP object.
|
|
This descriptor must be passed as first parameter to all other
|
|
FM VSP function calls.
|
|
|
|
No actual initialization or configuration of FM hardware is
|
|
done by this routine.
|
|
|
|
@Param[in] p_FmVspParams Pointer to data structure of parameters
|
|
|
|
@Retval Handle to FM VSP object, or NULL for Failure.
|
|
*//***************************************************************************/
|
|
#if defined(CONFIG_COMPAT)
|
|
#define FM_IOC_VSP_CONFIG_COMPAT _IOWR(FM_IOC_TYPE_BASE, FM_IOC_NUM(8), ioc_compat_fm_vsp_params_t)
|
|
#endif
|
|
#define FM_IOC_VSP_CONFIG _IOWR(FM_IOC_TYPE_BASE, FM_IOC_NUM(8), ioc_fm_vsp_params_t)
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_VSP_Init
|
|
|
|
@Description Initializes the FM VSP module
|
|
|
|
@Param[in] h_FmVsp - FM VSP module descriptor
|
|
|
|
@Return E_OK on success; Error code otherwise.
|
|
*//***************************************************************************/
|
|
#if defined(CONFIG_COMPAT)
|
|
#define FM_IOC_VSP_INIT_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(9), ioc_compat_fm_obj_t)
|
|
#endif
|
|
#define FM_IOC_VSP_INIT _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(9), ioc_fm_obj_t)
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_VSP_Free
|
|
|
|
@Description Frees all resources that were assigned to FM VSP module.
|
|
|
|
Calling this routine invalidates the descriptor.
|
|
|
|
@Param[in] h_FmVsp - FM VSP module descriptor
|
|
|
|
@Return E_OK on success; Error code otherwise.
|
|
*//***************************************************************************/
|
|
#if defined(CONFIG_COMPAT)
|
|
#define FM_IOC_VSP_FREE_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(10), ioc_compat_fm_obj_t)
|
|
#endif
|
|
#define FM_IOC_VSP_FREE _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(10), ioc_fm_obj_t)
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_VSP_ConfigPoolDepletion
|
|
|
|
@Description Calling this routine enables pause frame generation depending on the
|
|
depletion status of BM pools. It also defines the conditions to activate
|
|
this functionality. By default, this functionality is disabled.
|
|
|
|
@Param[in] ioc_fm_buf_pool_depletion_params_t A structure holding the required parameters.
|
|
|
|
@Return E_OK on success; Error code otherwise.
|
|
|
|
@Cautions Allowed only following FM_VSP_Config() and before FM_VSP_Init().
|
|
*//***************************************************************************/
|
|
#if defined(CONFIG_COMPAT)
|
|
#define FM_IOC_VSP_CONFIG_POOL_DEPLETION_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(11), ioc_compat_fm_buf_pool_depletion_params_t)
|
|
#endif
|
|
#define FM_IOC_VSP_CONFIG_POOL_DEPLETION _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(11), ioc_fm_buf_pool_depletion_params_t)
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_VSP_ConfigBufferPrefixContent
|
|
|
|
@Description Defines the structure, size and content of the application buffer.
|
|
|
|
The prefix will
|
|
In VSPs defined for Tx ports, if 'passPrsResult', the application
|
|
should set a value to their offsets in the prefix of
|
|
the FM will save the first 'privDataSize', than,
|
|
depending on 'passPrsResult' and 'passTimeStamp', copy parse result
|
|
and timeStamp, and the packet itself (in this order), to the
|
|
application buffer, and to offset.
|
|
|
|
Calling this routine changes the buffer margins definitions
|
|
in the internal driver data base from its default
|
|
configuration: Data size: [DEFAULT_FM_SP_bufferPrefixContent_privDataSize]
|
|
Pass Parser result: [DEFAULT_FM_SP_bufferPrefixContent_passPrsResult].
|
|
Pass timestamp: [DEFAULT_FM_SP_bufferPrefixContent_passTimeStamp].
|
|
|
|
@Param[in] ioc_fm_buffer_prefix_content_params_t A structure holding the required parameters.
|
|
|
|
@Return E_OK on success; Error code otherwise.
|
|
|
|
@Cautions Allowed only following FM_VSP_Config() and before FM_VSP_Init().
|
|
*//***************************************************************************/
|
|
#if defined(CONFIG_COMPAT)
|
|
#define FM_IOC_VSP_CONFIG_BUFFER_PREFIX_CONTENT_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(12), ioc_compat_fm_buffer_prefix_content_params_t)
|
|
#endif
|
|
#define FM_IOC_VSP_CONFIG_BUFFER_PREFIX_CONTENT _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(12), ioc_fm_buffer_prefix_content_params_t)
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_VSP_ConfigNoScatherGather
|
|
|
|
@Description Calling this routine changes the possibility to receive S/G frame
|
|
in the internal driver data base
|
|
from its default configuration: optimize = [DEFAULT_FM_SP_noScatherGather]
|
|
|
|
@Param[in] ioc_fm_vsp_config_no_sg_params_t A structure holding the required parameters.
|
|
|
|
@Return E_OK on success; Error code otherwise.
|
|
|
|
@Cautions Allowed only following FM_VSP_Config() and before FM_VSP_Init().
|
|
*//***************************************************************************/
|
|
#if defined(CONFIG_COMPAT)
|
|
#define FM_IOC_VSP_CONFIG_NO_SG_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(13), ioc_compat_fm_vsp_config_no_sg_params_t)
|
|
#endif
|
|
#define FM_IOC_VSP_CONFIG_NO_SG _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(13), ioc_fm_vsp_config_no_sg_params_t)
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_VSP_GetBufferPrsResult
|
|
|
|
@Description Returns the pointer to the parse result in the data buffer.
|
|
In Rx ports this is relevant after reception, if parse
|
|
result is configured to be part of the data passed to the
|
|
application. For non Rx ports it may be used to get the pointer
|
|
of the area in the buffer where parse result should be
|
|
initialized - if so configured.
|
|
See FM_VSP_ConfigBufferPrefixContent for data buffer prefix
|
|
configuration.
|
|
|
|
@Param[in] ioc_fm_vsp_prs_result_params_t A structure holding the required parameters.
|
|
|
|
@Return Parse result pointer on success, NULL if parse result was not
|
|
configured for this port.
|
|
|
|
@Cautions Allowed only following FM_VSP_Init().
|
|
*//***************************************************************************/
|
|
#if defined(CONFIG_COMPAT)
|
|
#define FM_IOC_VSP_GET_BUFFER_PRS_RESULT_COMPAT _IOWR(FM_IOC_TYPE_BASE, FM_IOC_NUM(14), ioc_compat_fm_vsp_prs_result_params_t)
|
|
#endif
|
|
#define FM_IOC_VSP_GET_BUFFER_PRS_RESULT _IOWR(FM_IOC_TYPE_BASE, FM_IOC_NUM(14), ioc_fm_vsp_prs_result_params_t)
|
|
#endif /* (DPAA_VERSION >= 11) */
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_CtrlMonStart
|
|
|
|
@Description Start monitoring utilization of all available FM controllers.
|
|
|
|
In order to obtain FM controllers utilization the following sequence
|
|
should be used:
|
|
-# FM_CtrlMonStart()
|
|
-# FM_CtrlMonStop()
|
|
-# FM_CtrlMonGetCounters() - issued for each FM controller
|
|
|
|
@Return E_OK on success; Error code otherwise.
|
|
|
|
@Cautions Allowed only following FM_Init().
|
|
*//***************************************************************************/
|
|
#define FM_IOC_CTRL_MON_START _IO(FM_IOC_TYPE_BASE, FM_IOC_NUM(15))
|
|
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_CtrlMonStop
|
|
|
|
@Description Stop monitoring utilization of all available FM controllers.
|
|
|
|
In order to obtain FM controllers utilization the following sequence
|
|
should be used:
|
|
-# FM_CtrlMonStart()
|
|
-# FM_CtrlMonStop()
|
|
-# FM_CtrlMonGetCounters() - issued for each FM controller
|
|
|
|
@Return E_OK on success; Error code otherwise.
|
|
|
|
@Cautions Allowed only following FM_Init().
|
|
*//***************************************************************************/
|
|
#define FM_IOC_CTRL_MON_STOP _IO(FM_IOC_TYPE_BASE, FM_IOC_NUM(16))
|
|
|
|
/**************************************************************************//**
|
|
@Function FM_CtrlMonGetCounters
|
|
|
|
@Description Obtain FM controller utilization parameters.
|
|
|
|
In order to obtain FM controllers utilization the following sequence
|
|
should be used:
|
|
-# FM_CtrlMonStart()
|
|
-# FM_CtrlMonStop()
|
|
-# FM_CtrlMonGetCounters() - issued for each FM controller
|
|
|
|
@Param[in] ioc_fm_ctrl_mon_counters_params_t A structure holding the required parameters.
|
|
|
|
@Return E_OK on success; Error code otherwise.
|
|
|
|
@Cautions Allowed only following FM_Init().
|
|
*//***************************************************************************/
|
|
#if defined(CONFIG_COMPAT)
|
|
#define FM_IOC_CTRL_MON_GET_COUNTERS_COMPAT _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(17), ioc_compat_fm_ctrl_mon_counters_params_t)
|
|
#endif
|
|
#define FM_IOC_CTRL_MON_GET_COUNTERS _IOW(FM_IOC_TYPE_BASE, FM_IOC_NUM(17), ioc_fm_ctrl_mon_counters_params_t)
|
|
|
|
/** @} */ /* end of lnx_ioctl_FM_runtime_control_grp group */
|
|
/** @} */ /* end of lnx_ioctl_FM_lib_grp group */
|
|
/** @} */ /* end of lnx_ioctl_FM_grp */
|
|
|
|
#define FMD_API_VERSION_MAJOR 21
|
|
#define FMD_API_VERSION_MINOR 1
|
|
#define FMD_API_VERSION_RESPIN 0
|
|
|
|
#endif /* __FM_IOCTLS_H */
|