net/bnxt: add core changes for EM and EEM lookups
[dpdk.git] / drivers / net / bnxt / tf_core / tf_rm.c
index a5e96f2..b6fe2f1 100644 (file)
@@ -9,10 +9,12 @@
 
 #include "tf_rm.h"
 #include "tf_core.h"
+#include "tf_util.h"
 #include "tf_session.h"
 #include "tf_resources.h"
 #include "tf_msg.h"
 #include "bnxt.h"
+#include "tfp.h"
 
 /**
  * Internal macro to perform HW resource allocation check between what
                        (dtype) = type ## _TX;  \
        } while (0)
 
-const char
-*tf_dir_2_str(enum tf_dir dir)
-{
-       switch (dir) {
-       case TF_DIR_RX:
-               return "RX";
-       case TF_DIR_TX:
-               return "TX";
-       default:
-               return "Invalid direction";
-       }
-}
-
-const char
-*tf_ident_2_str(enum tf_identifier_type id_type)
-{
-       switch (id_type) {
-       case TF_IDENT_TYPE_L2_CTXT:
-               return "l2_ctxt_remap";
-       case TF_IDENT_TYPE_PROF_FUNC:
-               return "prof_func";
-       case TF_IDENT_TYPE_WC_PROF:
-               return "wc_prof";
-       case TF_IDENT_TYPE_EM_PROF:
-               return "em_prof";
-       case TF_IDENT_TYPE_L2_FUNC:
-               return "l2_func";
-       default:
-               return "Invalid identifier";
-       }
-}
-
-const char
-*tf_tcam_tbl_2_str(enum tf_tcam_tbl_type tcam_type)
-{
-       switch (tcam_type) {
-       case TF_TCAM_TBL_TYPE_L2_CTXT_TCAM:
-               return "l2_ctxt_tcam";
-       case TF_TCAM_TBL_TYPE_PROF_TCAM:
-               return "prof_tcam";
-       case TF_TCAM_TBL_TYPE_WC_TCAM:
-               return "wc_tcam";
-       case TF_TCAM_TBL_TYPE_VEB_TCAM:
-               return "veb_tcam";
-       case TF_TCAM_TBL_TYPE_SP_TCAM:
-               return "sp_tcam";
-       case TF_TCAM_TBL_TYPE_CT_RULE_TCAM:
-               return "ct_rule_tcam";
-       default:
-               return "Invalid tcam table type";
-       }
-}
-
 const char
 *tf_hcapi_hw_2_str(enum tf_resource_type_hw hw_type)
 {
@@ -381,13 +330,13 @@ tf_rm_print_hw_qcaps_error(enum tf_dir dir,
 {
        int i;
 
-       PMD_DRV_LOG(ERR, "QCAPS errors HW\n");
-       PMD_DRV_LOG(ERR, "  Direction: %s\n", tf_dir_2_str(dir));
-       PMD_DRV_LOG(ERR, "  Elements:\n");
+       TFP_DRV_LOG(ERR, "QCAPS errors HW\n");
+       TFP_DRV_LOG(ERR, "  Direction: %s\n", tf_dir_2_str(dir));
+       TFP_DRV_LOG(ERR, "  Elements:\n");
 
        for (i = 0; i < TF_RESC_TYPE_HW_MAX; i++) {
                if (*error_flag & 1 << i)
-                       PMD_DRV_LOG(ERR, "    %s, %d elem available, req:%d\n",
+                       TFP_DRV_LOG(ERR, "    %s, %d elem available, req:%d\n",
                                    tf_hcapi_hw_2_str(i),
                                    hw_query->hw_query[i].max,
                                    tf_rm_rsvd_hw_value(dir, i));
@@ -411,13 +360,13 @@ tf_rm_print_sram_qcaps_error(enum tf_dir dir,
 {
        int i;
 
-       PMD_DRV_LOG(ERR, "QCAPS errors SRAM\n");
-       PMD_DRV_LOG(ERR, "  Direction: %s\n", tf_dir_2_str(dir));
-       PMD_DRV_LOG(ERR, "  Elements:\n");
+       TFP_DRV_LOG(ERR, "QCAPS errors SRAM\n");
+       TFP_DRV_LOG(ERR, "  Direction: %s\n", tf_dir_2_str(dir));
+       TFP_DRV_LOG(ERR, "  Elements:\n");
 
        for (i = 0; i < TF_RESC_TYPE_SRAM_MAX; i++) {
                if (*error_flag & 1 << i)
-                       PMD_DRV_LOG(ERR, "    %s, %d elem available, req:%d\n",
+                       TFP_DRV_LOG(ERR, "    %s, %d elem available, req:%d\n",
                                    tf_hcapi_sram_2_str(i),
                                    sram_query->sram_query[i].max,
                                    tf_rm_rsvd_sram_value(dir, i));
@@ -1752,7 +1701,7 @@ tf_rm_hw_alloc_validate(enum tf_dir dir,
 
        for (i = 0; i < TF_RESC_TYPE_HW_MAX; i++) {
                if (hw_entry[i].stride != hw_alloc->hw_num[i]) {
-                       PMD_DRV_LOG(ERR,
+                       TFP_DRV_LOG(ERR,
                                "%s, Alloc failed id:%d expect:%d got:%d\n",
                                tf_dir_2_str(dir),
                                i,
@@ -1779,7 +1728,7 @@ tf_rm_sram_alloc_validate(enum tf_dir dir __rte_unused,
 
        for (i = 0; i < TF_RESC_TYPE_SRAM_MAX; i++) {
                if (sram_entry[i].stride != sram_alloc->sram_num[i]) {
-                       PMD_DRV_LOG(ERR,
+                       TFP_DRV_LOG(ERR,
                                "%s, Alloc failed idx:%d expect:%d got:%d\n",
                                tf_dir_2_str(dir),
                                i,
@@ -1872,19 +1821,22 @@ tf_rm_allocate_validate_hw(struct tf *tfp,
        rc = tf_msg_session_hw_resc_qcaps(tfp, dir, &hw_query);
        if (rc) {
                /* Log error */
-               PMD_DRV_LOG(ERR,
-                           "%s, HW qcaps message send failed\n",
-                           tf_dir_2_str(dir));
+               TFP_DRV_LOG(ERR,
+                           "%s, HW qcaps message send failed, rc:%s\n",
+                           tf_dir_2_str(dir),
+                           strerror(-rc));
                goto cleanup;
        }
 
        rc = tf_rm_check_hw_qcaps_static(&hw_query, dir, &error_flag);
        if (rc) {
                /* Log error */
-               PMD_DRV_LOG(ERR,
-                       "%s, HW QCAPS validation failed, error_flag:0x%x\n",
+               TFP_DRV_LOG(ERR,
+                       "%s, HW QCAPS validation failed,"
+                       "error_flag:0x%x, rc:%s\n",
                        tf_dir_2_str(dir),
-                       error_flag);
+                       error_flag,
+                       strerror(-rc));
                tf_rm_print_hw_qcaps_error(dir, &hw_query, &error_flag);
                goto cleanup;
        }
@@ -1897,9 +1849,10 @@ tf_rm_allocate_validate_hw(struct tf *tfp,
        rc = tf_msg_session_hw_resc_alloc(tfp, dir, &hw_alloc, hw_entries);
        if (rc) {
                /* Log error */
-               PMD_DRV_LOG(ERR,
-                           "%s, HW alloc message send failed\n",
-                           tf_dir_2_str(dir));
+               TFP_DRV_LOG(ERR,
+                           "%s, HW alloc message send failed, rc:%s\n",
+                           tf_dir_2_str(dir),
+                           strerror(-rc));
                goto cleanup;
        }
 
@@ -1909,15 +1862,17 @@ tf_rm_allocate_validate_hw(struct tf *tfp,
        rc = tf_rm_hw_alloc_validate(dir, &hw_alloc, hw_entries);
        if (rc) {
                /* Log error */
-               PMD_DRV_LOG(ERR,
-                           "%s, HW Resource validation failed\n",
-                           tf_dir_2_str(dir));
+               TFP_DRV_LOG(ERR,
+                           "%s, HW Resource validation failed, rc:%s\n",
+                           tf_dir_2_str(dir),
+                           strerror(-rc));
                goto cleanup;
        }
 
        return 0;
 
  cleanup:
+
        return -1;
 }
 
@@ -1955,19 +1910,22 @@ tf_rm_allocate_validate_sram(struct tf *tfp,
        rc = tf_msg_session_sram_resc_qcaps(tfp, dir, &sram_query);
        if (rc) {
                /* Log error */
-               PMD_DRV_LOG(ERR,
-                           "%s, SRAM qcaps message send failed\n",
-                           tf_dir_2_str(dir));
+               TFP_DRV_LOG(ERR,
+                           "%s, SRAM qcaps message send failed, rc:%s\n",
+                           tf_dir_2_str(dir),
+                           strerror(-rc));
                goto cleanup;
        }
 
        rc = tf_rm_check_sram_qcaps_static(&sram_query, dir, &error_flag);
        if (rc) {
                /* Log error */
-               PMD_DRV_LOG(ERR,
-                       "%s, SRAM QCAPS validation failed, error_flag:%x\n",
+               TFP_DRV_LOG(ERR,
+                       "%s, SRAM QCAPS validation failed,"
+                       "error_flag:%x, rc:%s\n",
                        tf_dir_2_str(dir),
-                       error_flag);
+                       error_flag,
+                       strerror(-rc));
                tf_rm_print_sram_qcaps_error(dir, &sram_query, &error_flag);
                goto cleanup;
        }
@@ -1983,9 +1941,10 @@ tf_rm_allocate_validate_sram(struct tf *tfp,
                                            sram_entries);
        if (rc) {
                /* Log error */
-               PMD_DRV_LOG(ERR,
-                           "%s, SRAM alloc message send failed\n",
-                           tf_dir_2_str(dir));
+               TFP_DRV_LOG(ERR,
+                           "%s, SRAM alloc message send failed, rc:%s\n",
+                           tf_dir_2_str(dir),
+                           strerror(-rc));
                goto cleanup;
        }
 
@@ -1995,15 +1954,18 @@ tf_rm_allocate_validate_sram(struct tf *tfp,
        rc = tf_rm_sram_alloc_validate(dir, &sram_alloc, sram_entries);
        if (rc) {
                /* Log error */
-               PMD_DRV_LOG(ERR,
-                           "%s, SRAM Resource allocation validation failed\n",
-                           tf_dir_2_str(dir));
+               TFP_DRV_LOG(ERR,
+                           "%s, SRAM Resource allocation validation failed,"
+                           " rc:%s\n",
+                           tf_dir_2_str(dir),
+                           strerror(-rc));
                goto cleanup;
        }
 
        return 0;
 
  cleanup:
+
        return -1;
 }
 
@@ -2229,7 +2191,7 @@ tf_rm_hw_to_flush(struct tf_session *tfs,
                flush_entries[TF_RESC_TYPE_HW_TBL_SCOPE].start = 0;
                flush_entries[TF_RESC_TYPE_HW_TBL_SCOPE].stride = 0;
        } else {
-               PMD_DRV_LOG(ERR, "%s: TBL_SCOPE free_cnt:%d, entries:%d\n",
+               TFP_DRV_LOG(ERR, "%s, TBL_SCOPE free_cnt:%d, entries:%d\n",
                            tf_dir_2_str(dir),
                            free_cnt,
                            hw_entries[TF_RESC_TYPE_HW_TBL_SCOPE].stride);
@@ -2590,8 +2552,8 @@ tf_rm_log_hw_flush(enum tf_dir dir,
         */
        for (i = 0; i < TF_RESC_TYPE_HW_MAX; i++) {
                if (hw_entries[i].stride != 0)
-                       PMD_DRV_LOG(ERR,
-                                   "%s: %s was not cleaned up\n",
+                       TFP_DRV_LOG(ERR,
+                                   "%s, %s was not cleaned up\n",
                                    tf_dir_2_str(dir),
                                    tf_hcapi_hw_2_str(i));
        }
@@ -2616,8 +2578,8 @@ tf_rm_log_sram_flush(enum tf_dir dir,
         */
        for (i = 0; i < TF_RESC_TYPE_SRAM_MAX; i++) {
                if (sram_entries[i].stride != 0)
-                       PMD_DRV_LOG(ERR,
-                                   "%s: %s was not cleaned up\n",
+                       TFP_DRV_LOG(ERR,
+                                   "%s, %s was not cleaned up\n",
                                    tf_dir_2_str(dir),
                                    tf_hcapi_sram_2_str(i));
        }
@@ -2829,9 +2791,10 @@ tf_rm_close(struct tf *tfp)
                if (rc) {
                        rc_close = -ENOTEMPTY;
                        /* Log error */
-                       PMD_DRV_LOG(ERR,
-                                   "%s, lingering HW resources\n",
-                                   tf_dir_2_str(i));
+                       TFP_DRV_LOG(ERR,
+                                   "%s, lingering HW resources, rc:%s\n",
+                                   tf_dir_2_str(i),
+                                   strerror(-rc));
 
                        /* Log the entries to be flushed */
                        tf_rm_log_hw_flush(i, hw_flush_entries);
@@ -2841,9 +2804,10 @@ tf_rm_close(struct tf *tfp)
                        if (rc) {
                                rc_close = rc;
                                /* Log error */
-                               PMD_DRV_LOG(ERR,
-                                           "%s, HW flush failed\n",
-                                           tf_dir_2_str(i));
+                               TFP_DRV_LOG(ERR,
+                                           "%s, HW flush failed, rc:%s\n",
+                                           tf_dir_2_str(i),
+                                           strerror(-rc));
                        }
                }
 
@@ -2857,9 +2821,10 @@ tf_rm_close(struct tf *tfp)
                if (rc) {
                        rc_close = -ENOTEMPTY;
                        /* Log error */
-                       PMD_DRV_LOG(ERR,
-                                   "%s, lingering SRAM resources\n",
-                                   tf_dir_2_str(i));
+                       TFP_DRV_LOG(ERR,
+                                   "%s, lingering SRAM resources, rc:%s\n",
+                                   tf_dir_2_str(i),
+                                   strerror(-rc));
 
                        /* Log the entries to be flushed */
                        tf_rm_log_sram_flush(i, sram_flush_entries);
@@ -2870,9 +2835,10 @@ tf_rm_close(struct tf *tfp)
                        if (rc) {
                                rc_close = rc;
                                /* Log error */
-                               PMD_DRV_LOG(ERR,
-                                           "%s, HW flush failed\n",
-                                           tf_dir_2_str(i));
+                               TFP_DRV_LOG(ERR,
+                                           "%s, HW flush failed, rc:%s\n",
+                                           tf_dir_2_str(i),
+                                           strerror(-rc));
                        }
                }
 
@@ -2880,18 +2846,20 @@ tf_rm_close(struct tf *tfp)
                if (rc) {
                        rc_close = rc;
                        /* Log error */
-                       PMD_DRV_LOG(ERR,
-                                   "%s, HW free failed\n",
-                                   tf_dir_2_str(i));
+                       TFP_DRV_LOG(ERR,
+                                   "%s, HW free failed, rc:%s\n",
+                                   tf_dir_2_str(i),
+                                   strerror(-rc));
                }
 
                rc = tf_msg_session_sram_resc_free(tfp, i, sram_entries);
                if (rc) {
                        rc_close = rc;
                        /* Log error */
-                       PMD_DRV_LOG(ERR,
-                                   "%s, SRAM free failed\n",
-                                   tf_dir_2_str(i));
+                       TFP_DRV_LOG(ERR,
+                                   "%s, SRAM free failed, rc:%s\n",
+                                   tf_dir_2_str(i),
+                                   strerror(-rc));
                }
        }
 
@@ -2942,14 +2910,14 @@ tf_rm_lookup_tcam_type_pool(struct tf_session *tfs,
        }
 
        if (rc == -EOPNOTSUPP) {
-               PMD_DRV_LOG(ERR,
-                           "dir:%d, Tcam type not supported, type:%d\n",
-                           dir,
+               TFP_DRV_LOG(ERR,
+                           "%s, Tcam type not supported, type:%d\n",
+                           tf_dir_2_str(dir),
                            type);
                return rc;
        } else if (rc == -1) {
-               PMD_DRV_LOG(ERR,
-                           "%s:, Tcam type lookup failed, type:%d\n",
+               TFP_DRV_LOG(ERR,
+                           "%s, Tcam type lookup failed, type:%d\n",
                            tf_dir_2_str(dir),
                            type);
                return rc;
@@ -3104,21 +3072,20 @@ tf_rm_lookup_tbl_type_pool(struct tf_session *tfs,
                break;
        /* No bitalloc pools for these types */
        case TF_TBL_TYPE_EXT:
-       case TF_TBL_TYPE_EXT_0:
        default:
                break;
        }
 
        if (rc == -EOPNOTSUPP) {
-               PMD_DRV_LOG(ERR,
-                           "dir:%d, Table type not supported, type:%d\n",
-                           dir,
+               TFP_DRV_LOG(ERR,
+                           "%s, Table type not supported, type:%d\n",
+                           tf_dir_2_str(dir),
                            type);
                return rc;
        } else if (rc == -1) {
-               PMD_DRV_LOG(ERR,
-                           "dir:%d, Table type lookup failed, type:%d\n",
-                           dir,
+               TFP_DRV_LOG(ERR,
+                           "%s, Table type lookup failed, type:%d\n",
+                           tf_dir_2_str(dir),
                            type);
                return rc;
        }
@@ -3211,7 +3178,6 @@ tf_rm_convert_tbl_type(enum tf_tbl_type type,
        case TF_TBL_TYPE_ACT_MODIFY_IPV6_SRC:
        case TF_TBL_TYPE_VNIC_SVIF:
        case TF_TBL_TYPE_EXT:   /* No pools for this type */
-       case TF_TBL_TYPE_EXT_0: /* No pools for this type */
        default:
                *hcapi_type = -1;
                rc = -EOPNOTSUPP;
@@ -3277,7 +3243,6 @@ tf_rm_convert_index(struct tf_session *tfs,
        /* Not yet supported */
        case TF_TBL_TYPE_VNIC_SVIF:
        case TF_TBL_TYPE_EXT:   /* No pools for this type */
-       case TF_TBL_TYPE_EXT_0: /* No pools for this type */
        default:
                return -EOPNOTSUPP;
        }