qed: Add support for QP verbs
[cascardo/linux.git] / drivers / net / ethernet / qlogic / qed / qed_cxt.h
index 234c0fa..2b8bdaa 100644 (file)
@@ -21,6 +21,14 @@ struct qed_cxt_info {
        enum protocol_type      type;
 };
 
+#define MAX_TID_BLOCKS                  512
+struct qed_tid_mem {
+       u32 tid_size;
+       u32 num_tids_per_block;
+       u32 waste;
+       u8 *blocks[MAX_TID_BLOCKS];     /* 4K */
+};
+
 /**
  * @brief qed_cxt_acquire - Acquire a new cid of a specific protocol type
  *
@@ -46,8 +54,22 @@ int qed_cxt_acquire_cid(struct qed_hwfn *p_hwfn,
 int qed_cxt_get_cid_info(struct qed_hwfn *p_hwfn,
                         struct qed_cxt_info *p_info);
 
+/**
+ * @brief qed_cxt_get_tid_mem_info
+ *
+ * @param p_hwfn
+ * @param p_info
+ *
+ * @return int
+ */
+int qed_cxt_get_tid_mem_info(struct qed_hwfn *p_hwfn,
+                            struct qed_tid_mem *p_info);
+
+#define QED_CXT_ISCSI_TID_SEG  PROTOCOLID_ISCSI
+#define QED_CXT_ROCE_TID_SEG   PROTOCOLID_ROCE
 enum qed_cxt_elem_type {
        QED_ELEM_CXT,
+       QED_ELEM_SRQ,
        QED_ELEM_TASK
 };
 
@@ -148,5 +170,14 @@ int qed_qm_reconf(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
  */
 void qed_cxt_release_cid(struct qed_hwfn *p_hwfn,
                         u32 cid);
-
+int qed_cxt_dynamic_ilt_alloc(struct qed_hwfn *p_hwfn,
+                             enum qed_cxt_elem_type elem_type, u32 iid);
+u32 qed_cxt_get_proto_tid_count(struct qed_hwfn *p_hwfn,
+                               enum protocol_type type);
+u32 qed_cxt_get_proto_cid_start(struct qed_hwfn *p_hwfn,
+                               enum protocol_type type);
+int qed_cxt_free_proto_ilt(struct qed_hwfn *p_hwfn, enum protocol_type proto);
+
+#define QED_CTX_WORKING_MEM 0
+#define QED_CTX_FL_MEM 1
 #endif