diff options
author | Mandy Lavi <mandy.lavi@freescale.com> | 2013-10-31 16:51:23 (GMT) |
---|---|---|
committer | Madalin-Cristian Bucur <madalin.bucur@freescale.com> | 2014-01-06 15:03:57 (GMT) |
commit | 55cfaca07b53b48608ce29150e152eb4ef0b2703 (patch) | |
tree | 653a859959f2550acc46df7f812e7468cc838222 /drivers/net/ethernet/freescale/fman/inc/Peripherals | |
parent | 4ce33519e320bd72efaf3fab0acc4007af10a60e (diff) | |
download | linux-fsl-qoriq-55cfaca07b53b48608ce29150e152eb4ef0b2703.tar.xz |
fmd: fmd22 integration
- Fix for PCD: key mask not properly enabled in exact match table
- Fix for PFC mapping function
- Added counters for miss entry in match and hash tables
- Added counter for IPv4 options in IP fragmentation
Change-Id: I1626afc661d412c518172d405860a33d801cd005
Signed-off-by: Mandy Lavi <mandy.lavi@freescale.com>
Reviewed-on: http://git.am.freescale.net:8181/6251
Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com>
Reviewed-by: Marian-Cornel Chereji <marian.chereji@freescale.com>
Reviewed-by: Jose Rivera <German.Rivera@freescale.com>
Conflicts:
drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c
drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.h
Change-Id: If356927d0cd4e22e8949a0106c2a403fcf1343a2
Reviewed-on: http://git.am.freescale.net:8181/7665
Reviewed-by: Madalin-Cristian Bucur <madalin.bucur@freescale.com>
Tested-by: Madalin-Cristian Bucur <madalin.bucur@freescale.com>
Diffstat (limited to 'drivers/net/ethernet/freescale/fman/inc/Peripherals')
4 files changed, 58 insertions, 15 deletions
diff --git a/drivers/net/ethernet/freescale/fman/inc/Peripherals/dpaa_ext.h b/drivers/net/ethernet/freescale/fman/inc/Peripherals/dpaa_ext.h index c20a6eb..66fa760 100644 --- a/drivers/net/ethernet/freescale/fman/inc/Peripherals/dpaa_ext.h +++ b/drivers/net/ethernet/freescale/fman/inc/Peripherals/dpaa_ext.h @@ -199,6 +199,8 @@ do { \ #pragma pack(pop) #endif /* defined(__MWERKS__) && ... */ +#define DPAA_LIODN_DONT_OVERRIDE (-1) + /** @} */ /* end of DPAA_grp group */ diff --git a/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_mac_ext.h b/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_mac_ext.h index 94b305c..b7128b5 100644 --- a/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_mac_ext.h +++ b/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_mac_ext.h @@ -210,7 +210,11 @@ typedef struct t_FmMacStatistics { typedef struct t_FmMacParams { uintptr_t baseAddr; /**< Base of memory mapped FM MAC registers */ t_EnetAddr addr; /**< MAC address of device; First octet is sent first */ - uint8_t macId; /**< MAC ID <dTSEC 0-3> <10G-MAC 0> */ + uint8_t macId; /**< MAC ID; + numbering of dTSEC and 1G-mEMAC: + 0 - FM_MAX_NUM_OF_1G_MACS; + numbering of 10G-MAC (TGEC) and 10G-mEMAC: + 0 - FM_MAX_NUM_OF_10G_MACS */ e_EnetMode enetMode; /**< Ethernet operation mode (MAC-PHY interface and speed); Note that the speed should indicate the maximum rate that this MAC should support rather than the actual speed; diff --git a/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_pcd_ext.h b/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_pcd_ext.h index 00750ba..83cf237 100644 --- a/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_pcd_ext.h +++ b/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_pcd_ext.h @@ -47,7 +47,6 @@ /**************************************************************************//** - @Group FM_grp Frame Manager API @Description Frame Manager Application Programming Interface @@ -2538,6 +2537,7 @@ typedef struct t_FmPcdManipReassemParams { } u; } t_FmPcdManipReassemParams; + /**************************************************************************//** @Description Parameters for defining a manipulation node *//***************************************************************************/ @@ -2935,6 +2935,10 @@ t_Error FM_PCD_MatchTableDelete(t_Handle h_CcNode); @Cautions Allowed only following FM_PCD_MatchTableSet(); Not relevant in the case the node is of type 'INDEXED_LOOKUP'. + When configuring nextEngine = e_FM_PCD_CC, note that + p_FmPcdCcNextEngineParams->ccParams.h_CcNode must be different + from the currently changed table. + *//***************************************************************************/ t_Error FM_PCD_MatchTableModifyMissNextEngine(t_Handle h_CcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); @@ -2992,6 +2996,10 @@ t_Error FM_PCD_MatchTableAddKey(t_Handle h_CcNode, @Return E_OK on success; Error code otherwise. @Cautions Allowed only following FM_PCD_MatchTableSet(). + When configuring nextEngine = e_FM_PCD_CC, note that + p_FmPcdCcNextEngineParams->ccParams.h_CcNode must be different + from the currently changed table. + *//***************************************************************************/ t_Error FM_PCD_MatchTableModifyNextEngine(t_Handle h_CcNode, uint16_t keyIndex, @@ -3013,6 +3021,9 @@ t_Error FM_PCD_MatchTableModifyNextEngine(t_Handle h_CcNode, @Cautions Allowed only following FM_PCD_MatchTableSet() was called for this node and the nodes that lead to it. + When configuring nextEngine = e_FM_PCD_CC, note that + p_FmPcdCcNextEngineParams->ccParams.h_CcNode must be different + from the currently changed table. *//***************************************************************************/ t_Error FM_PCD_MatchTableModifyKeyAndNextEngine(t_Handle h_CcNode, uint16_t keyIndex, @@ -3082,6 +3093,9 @@ t_Error FM_PCD_MatchTableFindNRemoveKey(t_Handle h_CcNode, @Return E_OK on success; Error code otherwise. @Cautions Allowed only following FM_PCD_MatchTableSet(). + When configuring nextEngine = e_FM_PCD_CC, note that + p_FmPcdCcNextEngineParams->ccParams.h_CcNode must be different + from the currently changed table. *//***************************************************************************/ t_Error FM_PCD_MatchTableFindNModifyNextEngine(t_Handle h_CcNode, uint8_t keySize, @@ -3108,6 +3122,9 @@ t_Error FM_PCD_MatchTableFindNModifyNextEngine(t_Handle h_CcNod @Cautions Allowed only following FM_PCD_MatchTableSet() was called for this node and the nodes that lead to it. + When configuring nextEngine = e_FM_PCD_CC, note that + p_FmPcdCcNextEngineParams->ccParams.h_CcNode must be different + from the currently changed table. *//***************************************************************************/ t_Error FM_PCD_MatchTableFindNModifyKeyAndNextEngine(t_Handle h_CcNode, uint8_t keySize, @@ -3390,6 +3407,9 @@ t_Error FM_PCD_HashTableRemoveKey(t_Handle h_HashTbl, @Return E_OK on success; Error code otherwise. @Cautions Allowed only following FM_PCD_HashTableSet(). + When configuring nextEngine = e_FM_PCD_CC, note that + p_FmPcdCcNextEngineParams->ccParams.h_CcNode must be different + from the currently changed table. *//***************************************************************************/ t_Error FM_PCD_HashTableModifyNextEngine(t_Handle h_HashTbl, uint8_t keySize, @@ -3408,6 +3428,9 @@ t_Error FM_PCD_HashTableModifyNextEngine(t_Handle h_HashTbl, @Return E_OK on success; Error code otherwise. @Cautions Allowed only following FM_PCD_HashTableSet(). + When configuring nextEngine = e_FM_PCD_CC, note that + p_FmPcdCcNextEngineParams->ccParams.h_CcNode must be different + from the currently changed table. *//***************************************************************************/ t_Error FM_PCD_HashTableModifyMissNextEngine(t_Handle h_HashTbl, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams); diff --git a/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_port_ext.h b/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_port_ext.h index 89fabbc..6f344b8 100644 --- a/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_port_ext.h +++ b/drivers/net/ethernet/freescale/fman/inc/Peripherals/fm_port_ext.h @@ -136,7 +136,7 @@ typedef uint32_t fmPortFrameErrSelect_t; /**< typedef #define FM_PORT_FRM_ERR_IPRE (FM_FD_ERR_IPR & ~FM_FD_IPR) /**< IPR error */ #define FM_PORT_FRM_ERR_IPR_NCSP (FM_FD_ERR_IPR_NCSP & ~FM_FD_IPR) /**< IPR non-consistent-sp */ -#define FM_PORT_FRM_ERR_IPFE 0 /**< Obsolete; will be removed in the future */ +#define FM_PORT_FRM_ERR_IPFE 0 /**< Obsolete; will be removed in the future */ #ifdef FM_CAPWAP_SUPPORT #define FM_PORT_FRM_ERR_CRE FM_FD_ERR_CRE @@ -147,7 +147,7 @@ typedef uint32_t fmPortFrameErrSelect_t; /**< typedef error (SGMII and TBI modes), FIFO parity error. PHY Sequence error, PHY error control character detected. */ #define FM_PORT_FRM_ERR_SIZE FM_FD_ERR_SIZE /**< Frame too long OR Frame size exceeds max_length_frame */ -#define FM_PORT_FRM_ERR_CLS_DISCARD FM_FD_ERR_CLS_DISCARD /**< classification discard */ +#define FM_PORT_FRM_ERR_CLS_DISCARD FM_FD_ERR_CLS_DISCARD /**< indicates a classifier "drop" operation */ #define FM_PORT_FRM_ERR_EXTRACTION FM_FD_ERR_EXTRACTION /**< Extract Out of Frame */ #define FM_PORT_FRM_ERR_NO_SCHEME FM_FD_ERR_NO_SCHEME /**< No Scheme Selected */ #define FM_PORT_FRM_ERR_KEYSIZE_OVERFLOW FM_FD_ERR_KEYSIZE_OVERFLOW /**< Keysize Overflow */ @@ -159,7 +159,7 @@ typedef uint32_t fmPortFrameErrSelect_t; /**< typedef #define FM_PORT_FRM_ERR_PRS_ILL_INSTRUCT FM_FD_ERR_PRS_ILL_INSTRUCT /**< Invalid Soft Parser instruction */ #define FM_PORT_FRM_ERR_PRS_HDR_ERR FM_FD_ERR_PRS_HDR_ERR /**< Header error was identified during parsing */ #define FM_PORT_FRM_ERR_BLOCK_LIMIT_EXCEEDED FM_FD_ERR_BLOCK_LIMIT_EXCEEDED /**< Frame parsed beyind 256 first bytes */ -#define FM_PORT_FRM_ERR_PROCESS_TIMEOUT 0x00000001 /**< FPM Frame Processing Timeout Exceeded */ +#define FM_PORT_FRM_ERR_PROCESS_TIMEOUT 0x00000001 /**< FPM Frame Processing Timeout Exceeded */ /* @} */ @@ -1093,9 +1093,10 @@ t_Error FM_PORT_ConfigTxFifoMinFillLevel(t_Handle h_FmPort, uint32_t minFillLeve pipeline depth parameter in the internal driver data base from its default configuration: 1G ports: [DEFAULT_PORT_fifoDeqPipelineDepth_1G], - 10G port: [DEFAULT_PORT_fifoDeqPipelineDepth_10G] + 10G port: [DEFAULT_PORT_fifoDeqPipelineDepth_10G], + OP port: [DEFAULT_PORT_fifoDeqPipelineDepth_OH] - May be used for Tx ports only + May be used for Tx/OP ports only @Param[in] h_FmPort A handle to a FM Port module. @Param[in] deqPipelineDepth New value @@ -1907,13 +1908,7 @@ typedef struct t_FmPortPcdKgParams { @Description struct for defining policer parameters *//***************************************************************************/ typedef struct t_FmPortPcdPlcrParams { - t_Handle h_Profile; /**< Selected profile handle; Relevant for one of - following cases: - e_FM_PORT_PCD_SUPPORT_PLCR_ONLY or - e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR were selected, - or if any flow uses a KG scheme were policer - profile is not generated - (bypassPlcrProfileGeneration selected) */ + t_Handle h_Profile; /**< Selected profile handle */ } t_FmPortPcdPlcrParams; /**************************************************************************//** @@ -1926,7 +1921,13 @@ typedef struct t_FmPortPcdParams { t_FmPortPcdPrsParams *p_PrsParams; /**< Parser parameters for this port */ t_FmPortPcdCcParams *p_CcParams; /**< Coarse classification parameters for this port */ t_FmPortPcdKgParams *p_KgParams; /**< Keygen parameters for this port */ - t_FmPortPcdPlcrParams *p_PlcrParams; /**< Policer parameters for this port */ + t_FmPortPcdPlcrParams *p_PlcrParams; /**< Policer parameters for this port; Relevant for one of + following cases: + e_FM_PORT_PCD_SUPPORT_PLCR_ONLY or + e_FM_PORT_PCD_SUPPORT_PRS_AND_PLCR were selected, + or if any flow uses a KG scheme were policer + profile is not generated + ('bypassPlcrProfileGeneration selected'). */ t_Handle h_IpReassemblyManip;/**< IP Reassembly manipulation */ } t_FmPortPcdParams; @@ -2180,6 +2181,19 @@ t_Error FM_PORT_PcdKgUnbindSchemes (t_Handle h_FmPort, t_FmPcdPortSchemesParams *//***************************************************************************/ t_Error FM_PORT_PcdPrsModifyStartOffset (t_Handle h_FmPort, t_FmPcdPrsStart *p_FmPcdPrsStart); +/**************************************************************************//** + @Function FM_PORT_GetIPv4OptionsCount + + @Description TODO + + @Param[in] h_FmPort A handle to a FM Port module. + @Param[out] p_Ipv4OptionsCount will hold the counter value + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PORT_Init() +*//***************************************************************************/ +t_Error FM_PORT_GetIPv4OptionsCount(t_Handle h_FmPort, uint32_t *p_Ipv4OptionsCount); /** @} */ /* end of FM_PORT_pcd_runtime_control_grp group */ /** @} */ /* end of FM_PORT_runtime_control_grp group */ |