net/bnxt: configure PARIF for offload miss rules
[dpdk.git] / drivers / net / bnxt / tf_ulp / ulp_port_db.h
index 87de3bc..2b323d1 100644 (file)
@@ -9,19 +9,56 @@
 #include "bnxt_ulp.h"
 
 #define BNXT_PORT_DB_MAX_INTF_LIST             256
+#define BNXT_PORT_DB_MAX_FUNC                  2048
+#define BNXT_ULP_FREE_PARIF_BASE               11
 
-/* Structure for the Port database resource information. */
-struct ulp_interface_info {
-       enum bnxt_ulp_intf_type type;
-       uint16_t                func_id;
+enum bnxt_ulp_svif_type {
+       BNXT_ULP_DRV_FUNC_SVIF = 0,
+       BNXT_ULP_VF_FUNC_SVIF,
+       BNXT_ULP_PHY_PORT_SVIF
+};
+
+enum bnxt_ulp_spif_type {
+       BNXT_ULP_DRV_FUNC_SPIF = 0,
+       BNXT_ULP_VF_FUNC_SPIF,
+       BNXT_ULP_PHY_PORT_SPIF
+};
+
+enum bnxt_ulp_parif_type {
+       BNXT_ULP_DRV_FUNC_PARIF = 0,
+       BNXT_ULP_VF_FUNC_PARIF,
+       BNXT_ULP_PHY_PORT_PARIF
+};
+
+enum bnxt_ulp_vnic_type {
+       BNXT_ULP_DRV_FUNC_VNIC = 0,
+       BNXT_ULP_VF_FUNC_VNIC
+};
+
+enum bnxt_ulp_fid_type {
+       BNXT_ULP_DRV_FUNC_FID,
+       BNXT_ULP_VF_FUNC_FID
+};
+
+struct ulp_func_if_info {
+       uint16_t                func_valid;
        uint16_t                func_svif;
        uint16_t                func_spif;
        uint16_t                func_parif;
-       uint16_t                default_vnic;
+       uint16_t                func_vnic;
        uint16_t                phy_port_id;
+       uint16_t                ifindex;
+};
+
+/* Structure for the Port database resource information. */
+struct ulp_interface_info {
+       enum bnxt_ulp_intf_type type;
+       uint16_t                drv_func_id;
+       uint16_t                vf_func_id;
 };
 
 struct ulp_phy_port_info {
+       uint16_t        port_valid;
        uint16_t        port_svif;
        uint16_t        port_spif;
        uint16_t        port_parif;
@@ -35,7 +72,9 @@ struct bnxt_ulp_port_db {
 
        /* dpdk device external port list */
        uint16_t                        dev_port_list[RTE_MAX_ETHPORTS];
-       struct ulp_phy_port_info        phy_port_list[RTE_MAX_ETHPORTS];
+       struct ulp_phy_port_info        *phy_port_list;
+       uint16_t                        phy_port_cnt;
+       struct ulp_func_if_info         ulp_func_id_tbl[BNXT_PORT_DB_MAX_FUNC];
 };
 
 /*
@@ -46,7 +85,7 @@ struct bnxt_ulp_port_db {
  *
  * Returns 0 on success or negative number on failure.
  */
-int32_t        ulp_port_db_init(struct bnxt_ulp_context *ulp_ctxt);
+int32_t        ulp_port_db_init(struct bnxt_ulp_context *ulp_ctxt, uint8_t port_cnt);
 
 /*
  * Deinitialize the port database. Memory is deallocated in
@@ -94,7 +133,8 @@ ulp_port_db_dev_port_to_ulp_index(struct bnxt_ulp_context *ulp_ctxt,
  */
 int32_t
 ulp_port_db_function_id_get(struct bnxt_ulp_context *ulp_ctxt,
-                           uint32_t ifindex, uint16_t *func_id);
+                           uint32_t ifindex, uint32_t fid_type,
+                           uint16_t *func_id);
 
 /*
  * Api to get the svif for a given ulp ifindex.
@@ -150,7 +190,8 @@ ulp_port_db_parif_get(struct bnxt_ulp_context *ulp_ctxt,
  */
 int32_t
 ulp_port_db_default_vnic_get(struct bnxt_ulp_context *ulp_ctxt,
-                            uint32_t ifindex, uint16_t *vnic);
+                            uint32_t ifindex, uint32_t vnic_type,
+                            uint16_t *vnic);
 
 /*
  * Api to get the vport id for a given ulp ifindex.
@@ -165,4 +206,57 @@ int32_t
 ulp_port_db_vport_get(struct bnxt_ulp_context *ulp_ctxt,
                      uint32_t ifindex, uint16_t *vport);
 
+/*
+ * Api to get the vport for a given physical port.
+ *
+ * ulp_ctxt [in] Ptr to ulp context
+ * phy_port [in] physical port index
+ * out_port [out] the port of the given physical index
+ *
+ * Returns 0 on success or negative number on failure.
+ */
+int32_t
+ulp_port_db_phy_port_vport_get(struct bnxt_ulp_context *ulp_ctxt,
+                              uint32_t phy_port,
+                              uint16_t *out_port);
+
+/*
+ * Api to get the svif for a given physical port.
+ *
+ * ulp_ctxt [in] Ptr to ulp context
+ * phy_port [in] physical port index
+ * svif [out] the svif of the given physical index
+ *
+ * Returns 0 on success or negative number on failure.
+ */
+int32_t
+ulp_port_db_phy_port_svif_get(struct bnxt_ulp_context *ulp_ctxt,
+                             uint32_t phy_port,
+                             uint16_t *svif);
+
+/*
+ * Api to get the port type for a given ulp ifindex.
+ *
+ * ulp_ctxt [in] Ptr to ulp context
+ * ifindex [in] ulp ifindex
+ *
+ * Returns port type.
+ */
+enum bnxt_ulp_intf_type
+ulp_port_db_port_type_get(struct bnxt_ulp_context *ulp_ctxt,
+                         uint32_t ifindex);
+
+/*
+ * Api to get the ulp ifindex for a given function id.
+ *
+ * ulp_ctxt [in] Ptr to ulp context
+ * func_id [in].device func id
+ * ifindex [out] ulp ifindex
+ *
+ * Returns 0 on success or negative number on failure.
+ */
+int32_t
+ulp_port_db_dev_func_id_to_ulp_index(struct bnxt_ulp_context *ulp_ctxt,
+                                    uint32_t func_id, uint32_t *ifindex);
+
 #endif /* _ULP_PORT_DB_H_ */