net/ice/base: add inner VLAN protocol type for QinQ filter
[dpdk.git] / drivers / net / bnxt / tf_core / tfp.c
index 69d1c9a..b88affc 100644 (file)
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  * see the individual elements.
- * Copyright(c) 2019-2020 Broadcom
+ * Copyright(c) 2019-2021 Broadcom
  * All rights reserved.
  */
 
@@ -161,3 +161,39 @@ tfp_spinlock_unlock(struct tfp_spinlock_parms *parms)
 {
        rte_spinlock_unlock(&parms->slock);
 }
+
+int
+tfp_get_fid(struct tf *tfp, uint16_t *fw_fid)
+{
+       struct bnxt *bp = NULL;
+
+       if (tfp == NULL || fw_fid == NULL)
+               return -EINVAL;
+
+       bp = container_of(tfp, struct bnxt, tfp);
+       if (bp == NULL)
+               return -EINVAL;
+
+       *fw_fid = bp->fw_fid;
+
+       return 0;
+}
+
+int
+tfp_get_pf(struct tf *tfp, uint16_t *pf)
+{
+       struct bnxt *bp = NULL;
+
+       if (tfp == NULL || pf == NULL)
+               return -EINVAL;
+
+       bp = container_of(tfp, struct bnxt, tfp);
+       if (BNXT_VF(bp) && bp->parent) {
+               *pf = bp->parent->fid - 1;
+               return 0;
+       } else if (BNXT_PF(bp)) {
+               *pf = bp->fw_fid - 1;
+               return 0;
+       }
+       return -EINVAL;
+}