diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/fsl_dpa_classifier.h | 17 | ||||
-rw-r--r-- | include/linux/fsl_dpa_stats.h | 67 | ||||
-rw-r--r-- | include/linux/fsl_usdpaa.h | 12 | ||||
-rw-r--r-- | include/uapi/linux/fmd/Peripherals/fm_pcd_ioctls.h | 86 |
4 files changed, 143 insertions, 39 deletions
diff --git a/include/linux/fsl_dpa_classifier.h b/include/linux/fsl_dpa_classifier.h index f81ea90..6199aa0 100644 --- a/include/linux/fsl_dpa_classifier.h +++ b/include/linux/fsl_dpa_classifier.h @@ -1505,12 +1505,6 @@ struct dpa_cls_mcast_group_params { unsigned int prefilled_members; /* - * External group handle given as input parameter for an import - * operation - */ - void *group; - - /* * External distribution handle. When provided, replicated frames * are not enqueued to members' frame queues. They are sent to this * distribution. @@ -1523,12 +1517,21 @@ struct dpa_cls_mcast_group_params { void *classification; }; +/* Multicast group external resource */ +struct dpa_cls_mcast_group_resources { + /* + * Multicast group handle used when importing an external group node + */ + void *group_node; +}; + /* * Creates a multicast group with one member */ int dpa_classif_mcast_create_group( const struct dpa_cls_mcast_group_params *group_params, - int *grpd); + int *grpd, + const struct dpa_cls_mcast_group_resources *res); /* * Adds a new member to a multicast group diff --git a/include/linux/fsl_dpa_stats.h b/include/linux/fsl_dpa_stats.h index ba11791..b8fe850 100644 --- a/include/linux/fsl_dpa_stats.h +++ b/include/linux/fsl_dpa_stats.h @@ -396,8 +396,11 @@ struct dpa_stats_cnt_classif_tbl { /* Table descriptor */ int td; - /* Key to identify a specific entry */ - struct dpa_offload_lookup_key key; + /* + * Pointer to a key that identifies a specific entry or NULL in order + * to obtain statistics for miss entry + */ + struct dpa_offload_lookup_key *key; /* * Single or multiple selection of Classifier Table counters @@ -429,8 +432,11 @@ struct dpa_stats_cnt_classif_node { /* The type of FMAN Classification Node */ enum dpa_stats_classif_node_type ccnode_type; - /* Key to identify a specific entry */ - struct dpa_offload_lookup_key key; + /* + * Pointer to a key that identifies a specific entry or NULL in order + * to obtain statistics for miss entry + */ + struct dpa_offload_lookup_key *key; /* * Single or multiple selection of Classifier @@ -576,11 +582,17 @@ enum dpa_stats_classif_key_type { /* DPA Stats Classification counter - pair of keys */ struct dpa_offload_lookup_key_pair { - /* Key to identify the first entry */ - struct dpa_offload_lookup_key first_key; + /* + * Pointer to a key that identifies the first entry or NULL in order + * to identify the miss entry of the first table + */ + struct dpa_offload_lookup_key *first_key; - /* Key to identify the entry connected to the first entry */ - struct dpa_offload_lookup_key second_key; + /* + * Pointer to a key that identifies the entry connected to the first + * entry first entry or NULL in order to identify the miss entry + */ + struct dpa_offload_lookup_key *second_key; }; /* DPA Stats Classifier Table class counter parameters */ @@ -601,18 +613,28 @@ struct dpa_stats_cls_cnt_classif_tbl { */ /* - * Array of keys to identify specific entries. A key can be - * 'invalidated' by providing the 'byte' and 'mask' pointers - * set to NULL. + * Pointer to an array of keys, where each element of the array + * can either be a key that identifies a specific entry or NULL + * in order to obtain the statistics for the miss entry. A key + * can be'invalidated' by providing the 'byte' pointer set + * to NULL. */ - struct dpa_offload_lookup_key *keys; + struct dpa_offload_lookup_key **keys; /* * Array of 'pair-keys' to identify specific entries. A key pair * can be 'invalidated' by providing the 'byte' and 'mask' * pointers of the first key set to NULL */ - struct dpa_offload_lookup_key_pair *pairs; + + /* + * Pointer to an array of ‘pair-keys’, where each element of the + * array can either be a ‘pair-key’ that identifies a specific + * entry or NULL in in order to obtain the statistics for the + * miss entry. A key pair can be 'invalidated' by providing the + * 'byte' pointer of the first key set to NULL. + */ + struct dpa_offload_lookup_key_pair **pairs; }; /* @@ -636,7 +658,7 @@ struct dpa_stats_cls_cnt_classif_node { enum dpa_stats_classif_node_type ccnode_type; /* Array of keys to identify specific entries */ - struct dpa_offload_lookup_key *keys; + struct dpa_offload_lookup_key **keys; /* * Single or multiple selection of Classifier counters @@ -739,17 +761,20 @@ struct dpa_stats_cls_member_params { union { /* - * Key to set or update in case the byte and mask pointers are - * not NULL, or class member to invalidate otherwise + * Pointer to a key to set or update in case the byte pointer is + * not NULL, or class member to invalidate otherwise. The + * pointer can be NULL, in which case it represents the miss + * entry. */ - struct dpa_offload_lookup_key key; + struct dpa_offload_lookup_key *key; /* - * Key to set or update in case the byte and mask pointers of - * the first key are not NULL, or class member to invalidate - * otherwise + * Pointer to a 'pair-key' to set or update in case the byte + * pointer of the first key is not NULL, or class member to + * invalidate otherwise. The pointer can be NULL, in which case + * it represents the miss entry. */ - struct dpa_offload_lookup_key_pair pair; + struct dpa_offload_lookup_key_pair *pair; /* * Security association identifier to set or update or class diff --git a/include/linux/fsl_usdpaa.h b/include/linux/fsl_usdpaa.h index de017a6..fbf9480 100644 --- a/include/linux/fsl_usdpaa.h +++ b/include/linux/fsl_usdpaa.h @@ -165,9 +165,17 @@ enum usdpaa_portal_type { usdpaa_portal_bman, }; +#define QBMAN_ANY_PORTAL_IDX 0xffffffff + struct usdpaa_ioctl_portal_map { /* Input parameter, is a qman or bman portal required. */ + enum usdpaa_portal_type type; + /* Specifes a specific portal index to map or QBMAN_ANY_PORTAL_IDX + for don't care. The portal index will be populated by the + driver when the ioctl() successfully completes */ + uint32_t index; + /* Return value if the map succeeds, this gives the mapped * cache-inhibited (cinh) and cache-enabled (cena) addresses. */ struct usdpaa_portal_map { @@ -183,6 +191,10 @@ struct usdpaa_ioctl_portal_map { struct compat_usdpaa_ioctl_portal_map { /* Input parameter, is a qman or bman portal required. */ enum usdpaa_portal_type type; + /* Specifes a specific portal index to map or QBMAN_ANY_PORTAL_IDX + for don't care. The portal index will be populated by the + driver when the ioctl() successfully completes */ + uint32_t index; /* Return value if the map succeeds, this gives the mapped * cache-inhibited (cinh) and cache-enabled (cena) addresses. */ struct usdpaa_portal_map_compat { diff --git a/include/uapi/linux/fmd/Peripherals/fm_pcd_ioctls.h b/include/uapi/linux/fmd/Peripherals/fm_pcd_ioctls.h index 93bbebb..542f935 100644 --- a/include/uapi/linux/fmd/Peripherals/fm_pcd_ioctls.h +++ b/include/uapi/linux/fmd/Peripherals/fm_pcd_ioctls.h @@ -78,7 +78,7 @@ #define IOC_FM_PCD_PRS_NUM_OF_HDRS 16 /**< Number of headers supported by HW parser */ #define IOC_FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS (32 - IOC_FM_PCD_MAX_NUM_OF_PRIVATE_HDRS) - /**< Number of distinction units is limited by + /**< Number of distinction units is limited by register size (32 bits) minus reserved bits for private headers. */ #define IOC_FM_PCD_MAX_NUM_OF_INTERCHANGEABLE_HDRS 4 /**< Maximum number of interchangeable headers @@ -96,16 +96,6 @@ #define IOC_FM_PCD_SW_PRS_SIZE 0x00000800 /**< Total size of SW parser area */ #define IOC_FM_PCD_PRS_SW_OFFSET 0x00000040 /**< Size of illegal addresses at the beginning of the SW parser area */ -#if DPAA_VERSION >= 11 -#define IOC_FM_PCD_PRS_SW_PATCHES_SIZE 0x00000240 /**< Number of bytes saved for patches */ -#else -#define IOC_FM_PCD_PRS_SW_PATCHES_SIZE 0x00000200 /**< Number of bytes saved for patches */ -#endif - -#define IOC_FM_PCD_PRS_SW_TAIL_SIZE 4 /**< Number of bytes that must be cleared at - the end of the SW parser area */ -#define IOC_FM_SW_PRS_MAX_IMAGE_SIZE (IOC_FM_PCD_SW_PRS_SIZE-IOC_FM_PCD_PRS_SW_OFFSET-IOC_FM_PCD_PRS_SW_TAIL_SIZE-IOC_FM_PCD_PRS_SW_PATCHES_SIZE) - /**< Maximum size of SW parser code */ #define IOC_FM_PCD_MAX_MANIP_INSRT_TEMPLATE_SIZE 128 /**< Maximum size of insertion template for insert manipulation */ @@ -2117,6 +2107,80 @@ typedef struct ioc_fm_pcd_frm_replic_member_params_t { } ioc_fm_pcd_frm_replic_member_params_t; #endif /* DPAA_VERSION >= 11 */ + +typedef struct ioc_fm_pcd_cc_key_statistics_t { + uint32_t byte_count; /**< This counter reflects byte count of frames that + were matched by this key. */ + uint32_t frame_count; /**< This counter reflects count of frames that + were matched by this key. */ +#if (DPAA_VERSION >= 11) + uint32_t frame_length_range_count[IOC_FM_PCD_CC_STATS_MAX_NUM_OF_FLR]; + /**< These counters reflect how many frames matched + this key in 'RMON' statistics mode: + Each counter holds the number of frames of a + specific frames length range, according to the + ranges provided at initialization. */ +#endif /* (DPAA_VERSION >= 11) */ +} ioc_fm_pcd_cc_key_statistics_t; + + +typedef struct ioc_fm_pcd_cc_tbl_get_miss_params_t { + void *id; + ioc_fm_pcd_cc_key_statistics_t miss_statistics; +} ioc_fm_pcd_cc_tbl_get_miss_params_t; + + +/**************************************************************************//** + @Function FM_PCD_MatchTableGetMissStatistics + + @Description This routine may be used to get statistics counters of miss entry + in a CC Node. + + If 'e_FM_PCD_CC_STATS_MODE_FRAME' and + 'e_FM_PCD_CC_STATS_MODE_BYTE_AND_FRAME' were set for this node, + these counters reflect how many frames were not matched to any + existing key and therefore passed through the miss entry; The + total frames count will be returned in the counter of the + first range (as only one frame length range was defined). + + @Param[in] h_CcNode A handle to the node + @Param[out] p_MissStatistics Statistics counters for 'miss' + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_MatchTableSet(). +*//***************************************************************************/ + +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_MATCH_TABLE_GET_MISS_STAT_COMPAT _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(12), ioc_compat_fm_pcd_cc_tbl_get_miss_params_t) +#endif +#define FM_PCD_IOC_MATCH_TABLE_GET_MISS_STAT _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(12), ioc_fm_pcd_cc_tbl_get_miss_params_t) + +/**************************************************************************//** + @Function FM_PCD_HashTableGetMissStatistics + + @Description This routine may be used to get statistics counters of 'miss' + entry of the a hash table. + + If 'e_FM_PCD_CC_STATS_MODE_FRAME' and + 'e_FM_PCD_CC_STATS_MODE_BYTE_AND_FRAME' were set for this node, + these counters reflect how many frames were not matched to any + existing key and therefore passed through the miss entry; + + @Param[in] h_HashTbl A handle to a hash table + @Param[out] p_MissStatistics Statistics counters for 'miss' + + @Return E_OK on success; Error code otherwise. + + @Cautions Allowed only following FM_PCD_HashTableSet(). +*//***************************************************************************/ + +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_HASH_TABLE_GET_MISS_STAT_COMPAT _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(13), ioc_compat_fm_pcd_cc_tbl_get_miss_params_t) +#endif +#define FM_PCD_IOC_HASH_TABLE_GET_MISS_STAT _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(13), ioc_fm_pcd_cc_tbl_get_miss_params_t) + + /**************************************************************************//** @Function FM_PCD_NetEnvCharacteristicsSet |