net/bnxt: fix build
[dpdk.git] / drivers / net / bnxt / tf_core / tf_device.h
index cbacc09..da3f541 100644 (file)
 #include "tf_identifier.h"
 #include "tf_tbl.h"
 #include "tf_tcam.h"
+#ifdef TF_TCAM_SHARED
+#include "tf_tcam_shared.h"
+#endif
 #include "tf_if_tbl.h"
 #include "tf_global_cfg.h"
 
 struct tf;
 struct tf_session;
 
-/**
- * Device module types
- */
-enum tf_device_module_type {
-       /**
-        * Identifier module
-        */
-       TF_DEVICE_MODULE_TYPE_IDENTIFIER,
-       /**
-        * Table type module
-        */
-       TF_DEVICE_MODULE_TYPE_TABLE,
-       /**
-        * TCAM module
-        */
-       TF_DEVICE_MODULE_TYPE_TCAM,
-       /**
-        * EM module
-        */
-       TF_DEVICE_MODULE_TYPE_EM,
-       TF_DEVICE_MODULE_TYPE_MAX
-};
-
 /**
  * The Device module provides a general device template. A supported
  * device type should implement one or more of the listed function
@@ -159,7 +139,6 @@ struct tf_dev_ops {
                                       uint16_t resource_id,
                                       const char **resource_str);
 
-
        /**
         * Retrieves the WC TCAM slice information that the device
         * supports.
@@ -245,7 +224,53 @@ struct tf_dev_ops {
                                   struct tf_ident_search_parms *parms);
 
        /**
-        * Allocation of a table type element.
+        * Retrieves the identifier resource info.
+        *
+        * This API retrieves the identifier resource info from the rm db.
+        *
+        * [in] tfp
+        *   Pointer to TF handle
+        *
+        * [in] parms
+        *   Pointer to identifier info
+        *
+        * Returns
+        *   - (0) if successful.
+        *   - (-EINVAL) on failure.
+        */
+       int (*tf_dev_get_ident_resc_info)(struct tf *tfp,
+                                         struct tf_identifier_resource_info *parms);
+
+       /**
+        * Get SRAM table information.
+        *
+        * Converts an internal RM allocated element offset to
+        * a user address and vice versa.
+        *
+        * [in] tfp
+        *   Pointer to TF handle
+        *
+        * [in] type
+        *   Truflow index table type, e.g. TF_TYPE_FULL_ACT_RECORD
+        *
+        * [in/out] base
+        *   Pointer to the base address of the associated table type.
+        *
+        * [in/out] shift
+        *   Pointer to any shift required for the associated table type.
+        *
+        * Returns
+        *   - (0) if successful.
+        *   - (-EINVAL) on failure.
+        */
+       int (*tf_dev_get_tbl_info)(struct tf *tfp,
+                                  void *tbl_db,
+                                  enum tf_tbl_type type,
+                                  uint16_t *base,
+                                  uint16_t *shift);
+
+       /**
+        * Allocation of an index table type element.
         *
         * This API allocates the specified table type element from a
         * device specific table type DB. The allocated element is
@@ -421,6 +446,41 @@ struct tf_dev_ops {
        int (*tf_dev_get_bulk_tbl)(struct tf *tfp,
                                   struct tf_tbl_get_bulk_parms *parms);
 
+       /**
+        * Gets the increment value to add to the shared session resource
+        * start offset by for each count in the "stride"
+        *
+        * [in] tfp
+        *   Pointer to TF handle
+        *
+        * [in] parms
+        *   Pointer to get shared tbl increment parameters
+        *
+        * Returns
+        *   - (0) if successful.
+        *   - (-EINVAL) on failure.
+        */
+       int (*tf_dev_get_shared_tbl_increment)(struct tf *tfp,
+                               struct tf_get_shared_tbl_increment_parms *parms);
+
+       /**
+        * Retrieves the table resource info.
+        *
+        * This API retrieves the table resource info from the rm db.
+        *
+        * [in] tfp
+        *   Pointer to TF handle
+        *
+        * [in] parms
+        *   Pointer to tbl info
+        *
+        * Returns
+        *   - (0) if successful.
+        *   - (-EINVAL) on failure.
+        */
+       int (*tf_dev_get_tbl_resc_info)(struct tf *tfp,
+                                        struct tf_tbl_resource_info *parms);
+
        /**
         * Allocation of a tcam element.
         *
@@ -520,6 +580,59 @@ struct tf_dev_ops {
        int (*tf_dev_get_tcam)(struct tf *tfp,
                               struct tf_tcam_get_parms *parms);
 
+#ifdef TF_TCAM_SHARED
+       /**
+        * Move TCAM shared entries
+        *
+        * [in] tfp
+        *   Pointer to TF handle
+        *
+        * [in] parms
+        *   Pointer to parameters
+        *
+        *    returns:
+        *    0       - Success
+        *    -EINVAL - Error
+        */
+       int (*tf_dev_move_tcam)(struct tf *tfp,
+                              struct tf_move_tcam_shared_entries_parms *parms);
+
+       /**
+        * Move TCAM shared entries
+        *
+        * [in] tfp
+        *   Pointer to TF handle
+        *
+        * [in] parms
+        *   Pointer to parameters
+        *
+        *    returns:
+        *    0       - Success
+        *    -EINVAL - Error
+        */
+       int (*tf_dev_clear_tcam)(struct tf *tfp,
+                             struct tf_clear_tcam_shared_entries_parms *parms);
+
+#endif /* TF_TCAM_SHARED */
+
+       /**
+        * Retrieves the tcam resource info.
+        *
+        * This API retrieves the tcam resource info from the rm db.
+        *
+        * [in] tfp
+        *   Pointer to TF handle
+        *
+        * [in] parms
+        *   Pointer to tcam info
+        *
+        * Returns
+        *   - (0) if successful.
+        *   - (-EINVAL) on failure.
+        */
+       int (*tf_dev_get_tcam_resc_info)(struct tf *tfp,
+                                        struct tf_tcam_resource_info *parms);
+
        /**
         * Insert EM hash entry API
         *
@@ -552,6 +665,22 @@ struct tf_dev_ops {
        int (*tf_dev_delete_int_em_entry)(struct tf *tfp,
                                          struct tf_delete_em_entry_parms *parms);
 
+       /**
+        * Move EM hash entry API
+        *
+        * [in] tfp
+        *   Pointer to TF handle
+        *
+        * [in] parms
+        *   Pointer to E/EM move parameters
+        *
+        *    returns:
+        *    0       - Success
+        *    -EINVAL - Error
+        */
+       int (*tf_dev_move_int_em_entry)(struct tf *tfp,
+                                       struct tf_move_em_entry_parms *parms);
+
        /**
         * Insert EEM hash entry API
         *
@@ -584,6 +713,42 @@ struct tf_dev_ops {
        int (*tf_dev_delete_ext_em_entry)(struct tf *tfp,
                                          struct tf_delete_em_entry_parms *parms);
 
+       /**
+        * Retrieves the em resource info.
+        *
+        * This API retrieves the em resource info from the rm db.
+        *
+        * [in] tfp
+        *   Pointer to TF handle
+        *
+        * [in] parms
+        *   Pointer to em info
+        *
+        * Returns
+        *   - (0) if successful.
+        *   - (-EINVAL) on failure.
+        */
+       int (*tf_dev_get_em_resc_info)(struct tf *tfp,
+                                      struct tf_em_resource_info *parms);
+
+       /**
+        * Move EEM hash entry API
+        *
+        *   Pointer to E/EM move parameters
+        *
+        * [in] tfp
+        *   Pointer to TF handle
+        *
+        * [in] parms
+        *   Pointer to em info
+        *
+        *    returns:
+        *    0       - Success
+        *    -EINVAL - Error
+        */
+       int (*tf_dev_move_ext_em_entry)(struct tf *tfp,
+                                       struct tf_move_em_entry_parms *parms);
+
        /**
         * Allocate EEM table scope
         *
@@ -736,6 +901,33 @@ struct tf_dev_ops {
         *      mailbox
         */
        int (*tf_dev_get_mailbox)(void);
+
+       /**
+        * Convert length in bit to length in byte and align to word.
+        * The word length depends on device type.
+        *
+        * [in] size
+        *   Size in bit
+        *
+        * Returns
+        *   Size in byte
+        */
+       int (*tf_dev_word_align)(uint16_t size);
+
+       /**
+        * Hash key using crc32 and lookup3
+        *
+        * [in] key_data
+        *   Pointer to key
+        *
+        * [in] bitlen
+        *   Number of key bits
+        *
+        * Returns
+        *   Hashes
+        */
+       uint64_t (*tf_dev_cfa_key_hash)(uint64_t *key_data,
+                                         uint16_t bitlen);
 };
 
 /**