net/bnxt: update TruFlow core index table
[dpdk.git] / drivers / net / bnxt / tf_core / tf_core.c
index 73dbee2..5458f76 100644 (file)
@@ -968,6 +968,57 @@ tf_move_tcam_shared_entries(struct tf *tfp,
 
        return 0;
 }
+
+int
+tf_clear_tcam_shared_entries(struct tf *tfp,
+                            struct tf_clear_tcam_shared_entries_parms *parms)
+{
+       int rc;
+       struct tf_session *tfs;
+       struct tf_dev_info *dev;
+
+       TF_CHECK_PARMS2(tfp, parms);
+
+       /* Retrieve the session information */
+       rc = tf_session_get_session(tfp, &tfs);
+       if (rc) {
+               TFP_DRV_LOG(ERR,
+                           "%s: Failed to lookup session, rc:%s\n",
+                           tf_dir_2_str(parms->dir),
+                           strerror(-rc));
+               return rc;
+       }
+
+       /* Retrieve the device information */
+       rc = tf_session_get_device(tfs, &dev);
+       if (rc) {
+               TFP_DRV_LOG(ERR,
+                           "%s: Failed to lookup device, rc:%s\n",
+                           tf_dir_2_str(parms->dir),
+                           strerror(-rc));
+               return rc;
+       }
+
+       if (dev->ops->tf_dev_clear_tcam == NULL) {
+               rc = -EOPNOTSUPP;
+               TFP_DRV_LOG(ERR,
+                           "%s: Operation not supported, rc:%s\n",
+                           tf_dir_2_str(parms->dir),
+                           strerror(-rc));
+               return rc;
+       }
+
+       rc = dev->ops->tf_dev_clear_tcam(tfp, parms);
+       if (rc) {
+               TFP_DRV_LOG(ERR,
+                           "%s: TCAM shared entries clear failed, rc:%s\n",
+                           tf_dir_2_str(parms->dir),
+                           strerror(-rc));
+               return rc;
+       }
+
+       return 0;
+}
 #endif /* TF_TCAM_SHARED */
 
 int
@@ -1054,71 +1105,6 @@ tf_alloc_tbl_entry(struct tf *tfp,
        return 0;
 }
 
-int
-tf_search_tbl_entry(struct tf *tfp,
-                   struct tf_search_tbl_entry_parms *parms)
-{
-       int rc;
-       struct tf_session *tfs;
-       struct tf_dev_info *dev;
-       struct tf_tbl_alloc_search_parms sparms;
-
-       TF_CHECK_PARMS2(tfp, parms);
-
-       /* Retrieve the session information */
-       rc = tf_session_get_session(tfp, &tfs);
-       if (rc) {
-               TFP_DRV_LOG(ERR,
-                           "%s: Failed to lookup session, rc:%s\n",
-                           tf_dir_2_str(parms->dir),
-                           strerror(-rc));
-               return rc;
-       }
-
-       /* Retrieve the device information */
-       rc = tf_session_get_device(tfs, &dev);
-       if (rc) {
-               TFP_DRV_LOG(ERR,
-                           "%s: Failed to lookup device, rc:%s\n",
-                           tf_dir_2_str(parms->dir),
-                           strerror(-rc));
-               return rc;
-       }
-
-       if (dev->ops->tf_dev_alloc_search_tbl == NULL) {
-               rc = -EOPNOTSUPP;
-               TFP_DRV_LOG(ERR,
-                           "%s: Operation not supported, rc:%s\n",
-                           tf_dir_2_str(parms->dir),
-                           strerror(-rc));
-               return rc;
-       }
-
-       memset(&sparms, 0, sizeof(struct tf_tbl_alloc_search_parms));
-       sparms.dir = parms->dir;
-       sparms.type = parms->type;
-       sparms.result = parms->result;
-       sparms.result_sz_in_bytes = parms->result_sz_in_bytes;
-       sparms.alloc = parms->alloc;
-       sparms.tbl_scope_id = parms->tbl_scope_id;
-       rc = dev->ops->tf_dev_alloc_search_tbl(tfp, &sparms);
-       if (rc) {
-               TFP_DRV_LOG(ERR,
-                           "%s: TBL allocation failed, rc:%s\n",
-                           tf_dir_2_str(parms->dir),
-                           strerror(-rc));
-               return rc;
-       }
-
-       /* Return the outputs from the search */
-       parms->hit = sparms.hit;
-       parms->search_status = sparms.search_status;
-       parms->ref_cnt = sparms.ref_cnt;
-       parms->idx = sparms.idx;
-
-       return 0;
-}
-
 int
 tf_free_tbl_entry(struct tf *tfp,
                  struct tf_free_tbl_entry_parms *parms)
@@ -1415,6 +1401,58 @@ tf_bulk_get_tbl_entry(struct tf *tfp,
        return rc;
 }
 
+int tf_get_shared_tbl_increment(struct tf *tfp,
+                               struct tf_get_shared_tbl_increment_parms *parms)
+{
+       int rc = 0;
+       struct tf_session *tfs;
+       struct tf_dev_info *dev;
+
+       TF_CHECK_PARMS2(tfp, parms);
+
+       /* Retrieve the session information */
+       rc = tf_session_get_session(tfp, &tfs);
+       if (rc) {
+               TFP_DRV_LOG(ERR,
+                           "%s: Failed to lookup session, rc:%s\n",
+                           tf_dir_2_str(parms->dir),
+                           strerror(-rc));
+               return rc;
+       }
+
+       /* Retrieve the device information */
+       rc = tf_session_get_device(tfs, &dev);
+       if (rc) {
+               TFP_DRV_LOG(ERR,
+                           "%s: Failed to lookup device, rc:%s\n",
+                           tf_dir_2_str(parms->dir),
+                           strerror(-rc));
+               return rc;
+       }
+
+       /* Internal table type processing */
+
+       if (dev->ops->tf_dev_get_shared_tbl_increment == NULL) {
+               rc = -EOPNOTSUPP;
+               TFP_DRV_LOG(ERR,
+                           "%s: Operation not supported, rc:%s\n",
+                           tf_dir_2_str(parms->dir),
+                           strerror(-rc));
+               return -EOPNOTSUPP;
+       }
+
+       rc = dev->ops->tf_dev_get_shared_tbl_increment(tfp, parms);
+       if (rc) {
+               TFP_DRV_LOG(ERR,
+                           "%s: Get table increment not supported, rc:%s\n",
+                           tf_dir_2_str(parms->dir),
+                           strerror(-rc));
+               return rc;
+       }
+
+       return rc;
+}
+
 int
 tf_alloc_tbl_scope(struct tf *tfp,
                   struct tf_alloc_tbl_scope_parms *parms)