]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
- Fix bug in resize CQ where UVP private buffer size was advertised as larger
authorftillier <ftillier@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Wed, 6 Jul 2005 19:06:21 +0000 (19:06 +0000)
committerftillier <ftillier@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Wed, 6 Jul 2005 19:06:21 +0000 (19:06 +0000)
than allocated, causing errors when buffering in the kernel proxy.
- Kill dead code.

git-svn-id: svn://openib.tc.cornell.edu/gen1@25 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

branches/fab_cm_branch/hw/mt23108/kernel/hca_data.c
branches/fab_cm_branch/hw/mt23108/kernel/hca_data.h
branches/fab_cm_branch/hw/mt23108/kernel/hca_direct.c
branches/fab_cm_branch/hw/mt23108/kernel/hca_verbs.c
branches/fab_cm_branch/hw/mt23108/user/mlnx_ual_cq.c
branches/fab_cm_branch/hw/mt23108/user/mlnx_ual_osbypass.c
branches/fab_cm_branch/hw/mt23108/vapi/Hca/hcahal/tavor/thhul_cqm/thhul_cqm.c
branches/fab_cm_branch/hw/mt23108/vapi/Hca/hcahal/tavor/thhul_cqm/thhul_cqm.h
branches/fab_cm_branch/hw/mt23108/vapi/Hca/hcahal/tavor/thhul_hob/thhul_hob.c

index 46cbfe5c771dcc1a1a77f46e668cff8b132ad325..f7228c92bfc0f12fed0be24a6cbd3ee7042dbe5c 100644 (file)
@@ -1428,73 +1428,6 @@ mlnx_map_vapi_rna_type(
        }\r
 }\r
 \r
-/////////////////////////////////////////////////////////\r
-// Convert a Mellanox CQE into IBAL format\r
-/////////////////////////////////////////////////////////\r
-void\r
-mlnx_conv_vapi_cqe(\r
-       IN                              VAPI_wc_desc_t                          *desc_p,\r
-               OUT                     ib_wc_t                                         *wc_p )\r
-{\r
-       wc_p->wr_id = desc_p->id;\r
-\r
-       wc_p->status = mlnx_map_vapi_cqe_status(desc_p->status);\r
-       wc_p->wc_type = mlnx_map_vapi_cqe_type(desc_p->opcode);\r
-\r
-       wc_p->length = (IB_COMP_SUCCESS == desc_p->status) ? desc_p->byte_len : 0;\r
-       wc_p->recv.conn.recv_opt = 0; // TBD: RC support, SE\r
-\r
-       CL_TRACE(MLNX_DBG_DIRECT, g_mlnx_dbg_lvl, ("cqe type %d length 0x%x\n", wc_p->wc_type, wc_p->length));\r
-\r
-       // Immediate data\r
-       if (desc_p->imm_data_valid)\r
-       {\r
-               wc_p->recv.conn.recv_opt |= IB_RECV_OPT_IMMEDIATE;              \r
-               wc_p->recv.conn.immediate_data = cl_ntoh32 (desc_p->imm_data);\r
-       }\r
-       // GRH\r
-       if (desc_p->grh_flag)\r
-       {\r
-               wc_p->recv.conn.recv_opt |= IB_RECV_OPT_GRH_VALID;\r
-       }\r
-\r
-       switch(desc_p->remote_node_addr.type)\r
-       {\r
-       case VAPI_RNA_RD:\r
-               // TBD: RD Support\r
-               CL_TRACE(MLNX_DBG_DIRECT, g_mlnx_dbg_lvl, ("Unsupported RD\n"));\r
-               break;\r
-\r
-       case VAPI_RNA_UD:\r
-               // CL_TRACE(MLNX_DBG_DIRECT, g_mlnx_dbg_lvl, ("Supported UD\n"));\r
-               wc_p->recv.ud.remote_qp  = cl_ntoh32(desc_p->remote_node_addr.qp_ety.qp);\r
-               wc_p->recv.ud.pkey_index = (uint16_t)desc_p->pkey_ix;\r
-               wc_p->recv.ud.remote_lid = cl_ntoh16(desc_p->remote_node_addr.slid);\r
-               wc_p->recv.ud.remote_sl  = desc_p->remote_node_addr.sl;\r
-               // wc_p->recv.ud.path_bits  = desc_p->remote_node_addr.ee_dlid.dst_path_bits; // PATH:\r
-               wc_p->recv.ud.path_bits  = 0;\r
-#if 0\r
-               printk ("********* MLNX *************\n"); \r
-               printk ("rem_qp = 0x%x pbits = 0x%x pkey_idx = 0x%x\n",\r
-                       wc_p->recv.ud.remote_qp, wc_p->recv.ud.path_bits,\r
-                       wc_p->recv.ud.pkey_index );\r
-               printk ("GOT PBITS 0x%x\n", desc_p->remote_node_addr.ee_dlid.dst_path_bits);\r
-               printk ("*****************\n");\r
-#endif\r
-\r
-               break;\r
-\r
-       case VAPI_RNA_RAW_ETY:\r
-               // TBD: RAW ETH\r
-               break;\r
-\r
-       case VAPI_RNA_RAW_IPV6:\r
-               // TBD: RAW IPV6\r
-       default:\r
-               break;\r
-       }\r
-}\r
-\r
 //////////////////////////////////////////////////////////////\r
 // Convert from VAPI memory-region attributes to IBAL \r
 //////////////////////////////////////////////////////////////\r
index 83cef33bd19fe93f012bfb317ecf530534f84e38..15193593c2c5dfb1812a6db3889db569a1223008 100644 (file)
@@ -494,11 +494,6 @@ int
 mlnx_map_vapi_rna_type(\r
        IN                              VAPI_remote_node_addr_type_t    rna);\r
 \r
-void\r
-mlnx_conv_vapi_cqe(\r
-       IN                              VAPI_wc_desc_t                          *desc_p,\r
-               OUT                     ib_wc_t                                         *wc_p );\r
-\r
 void\r
 mlnx_conv_vapi_mr_attr(\r
        IN                              ib_pd_handle_t                          pd_h,\r
index 7148c35a9557f4b90a7cbfea48a975a4d93fc36c..7bbdc3b2401731e92fe8833a9ae8ba53172c9f20 100644 (file)
@@ -392,42 +392,8 @@ mlnx_poll_cq (
 \r
        hhul_cq_hndl = hobul_p->cq_info_tbl[cq_idx].hhul_cq_hndl;\r
 \r
-#if MLNX_POLL_NATIVE\r
        return THHUL_cqm_poll4wc(hobul_p->hhul_hndl, hhul_cq_hndl,\r
                pp_free_wclist, pp_done_wclist );\r
-#else\r
-       for (wc_p = *pp_free_wclist; wc_p; wc_p = wc_p->p_next) {\r
-               // Terminate the completed list (MUST be here)\r
-               *pp_done_wclist = NULL;\r
-\r
-               ret = THHUL_cqm_poll4cqe(hobul_p->hhul_hndl, hhul_cq_hndl, &comp_desc);\r
-               // CQ_EMPTY is not an error\r
-               if (HH_CQ_EMPTY == ret) {\r
-                       status = IB_NOT_FOUND; // This is a successful completion (no entries)\r
-                       break;\r
-               }\r
-               // Handle real errors\r
-               if (HH_OK != ret) {\r
-                       status = IB_ERROR;\r
-                       goto cleanup;\r
-               }\r
-\r
-               status = IB_SUCCESS;\r
-\r
-               // Convert the CQE and add to list (no memset())\r
-               mlnx_conv_vapi_cqe( &comp_desc, wc_p );\r
-               *pp_done_wclist = wc_p;\r
-               pp_done_wclist = &wc_p->p_next;\r
-               CL_TRACE(MLNX_DBG_INFO, g_mlnx_dbg_lvl, ("status %d done_list 0x%p\n", comp_desc.status, *pp_done_wclist));\r
-       }\r
-\r
-        Update free list to point to the first unused qce\r
-       if (IB_NOT_FOUND == status && wc_p != *pp_free_wclist)\r
-               status = IB_SUCCESS;\r
-       *pp_free_wclist = wc_p;\r
-\r
-       return status;\r
-#endif\r
 \r
 cleanup:\r
        CL_TRACE(CL_DBG_ERROR, g_mlnx_dbg_lvl, ("completes with ERROR status %d\n", status));\r
index 4369a784acf3859a2c8f539e14ff94338e404dca..84ffb14afed23e6a632678287c8b7984e9394349 100644 (file)
@@ -2043,12 +2043,13 @@ mlnx_resize_cq (
        if( p_umv_buf && p_umv_buf->command )\r
        {\r
                // For user mode calls - obtain and verify the vendor information\r
-               if ((p_umv_buf->input_size - sizeof (u_int32_t))  != hobul_p->cq_ul_resources_sz ||\r
-                       NULL == p_umv_buf->p_inout_buf) {\r
-                               status = IB_INVALID_PARAMETER;\r
-                               goto cleanup_locked;\r
-                       }\r
-                       cq_ul_resources_p = (void *)p_umv_buf->p_inout_buf;\r
+               if( p_umv_buf->input_size != hobul_p->cq_ul_resources_sz ||\r
+                       NULL == p_umv_buf->p_inout_buf )\r
+               {\r
+                       status = IB_INVALID_PARAMETER;\r
+                       goto cleanup_locked;\r
+               }\r
+               cq_ul_resources_p = (void *)p_umv_buf->p_inout_buf;\r
 \r
        } else {\r
                // for kernel mode calls - obtain the saved app resources. Use prep->call->done sequence\r
@@ -2249,7 +2250,7 @@ setup_ci_interface(
        IN              const   ib_net64_t                                      ca_guid,\r
        IN      OUT                     ci_interface_t                          *p_interface )\r
 {\r
-       cl_memclr(p_interface, sizeof(p_interface));\r
+       cl_memclr(p_interface, sizeof(*p_interface));\r
 \r
        /* Guid of the CA. */\r
        p_interface->guid = ca_guid;\r
index 282529e06fdaf87acb23f30b98f78e76015688d2..32473df402aeefa3963208753aaa517d269190d2 100644 (file)
@@ -357,7 +357,7 @@ mlnx_pre_resize_cq (
                   ("After resize_cq_prep *p_size = %d\n", *p_size));\r
 \r
         p_umv_buf->p_inout_buf = p_cq_ul_resources;\r
-        p_umv_buf->input_size = (uint32_t)p_hobul->p_hca_ul_info->cq_ul_resources_sz + sizeof(uint32_t);\r
+        p_umv_buf->input_size = (uint32_t)p_hobul->p_hca_ul_info->cq_ul_resources_sz;\r
         p_umv_buf->output_size = p_umv_buf->input_size;\r
        p_umv_buf->command = TRUE;\r
 \r
@@ -404,7 +404,7 @@ mlnx_post_resize_cq (
                 break;\r
            }\r
             else if (p_umv_buf->output_size != \r
-                     (p_hobul->p_hca_ul_info->cq_ul_resources_sz + sizeof(uint32_t)) )\r
+                     (p_hobul->p_hca_ul_info->cq_ul_resources_sz) )\r
            {\r
                 CL_TRACE (MLNX_TRACE_LVL_1, mlnx_dbg_lvl,\r
                           ("Bad priv buf size %ld\n", p_umv_buf->output_size));\r
index c02ed4c98c2ddbfa1a0953d4272d81b42893eeb2..3637bd3c12879cd7d94fc4edafd92695a4d82d88 100644 (file)
@@ -265,68 +265,6 @@ map_mtoi_cqe_type (
 }\r
 \r
 \r
-void\r
-map_mtoi_wcqe (\r
-    IN         VAPI_wc_desc_t                          *p_m_cqe,\r
-    OUT                ib_wc_t                                         *p_i_cqe)\r
-{\r
-    p_i_cqe->wr_id   = p_m_cqe->id;\r
-    p_i_cqe->status  = map_mtoi_cqe_status (p_m_cqe->status);\r
-    p_i_cqe->wc_type = map_mtoi_cqe_type (p_m_cqe->opcode);\r
-    p_i_cqe->length  = (IB_COMP_SUCCESS == p_m_cqe->status) ? \r
-                       p_m_cqe->byte_len : 0;\r
-\r
-    CL_TRACE (MLNX_TRACE_LVL_8, mlnx_dbg_lvl,\r
-              ("cqe type %d length 0x%x status %d\n",\r
-              p_i_cqe->wc_type, p_i_cqe->length, p_i_cqe->status));\r
-\r
-    /*\r
-     * FIXME: RC case\r
-     */\r
-    p_i_cqe->recv.conn.recv_opt = 0;\r
-\r
-    if (p_m_cqe->imm_data_valid)\r
-    {\r
-        p_i_cqe->recv.conn.recv_opt |= IB_RECV_OPT_IMMEDIATE;\r
-        p_i_cqe->recv.conn.immediate_data = CL_NTOH32 (p_m_cqe->imm_data);\r
-    }\r
-\r
-    if (p_m_cqe->grh_flag)\r
-    {\r
-        p_i_cqe->recv.conn.recv_opt |= IB_RECV_OPT_GRH_VALID;\r
-    }\r
-\r
-    switch (p_m_cqe->remote_node_addr.type)\r
-    {\r
-        case VAPI_RNA_UD:\r
-            p_i_cqe->recv.ud.remote_qp = \r
-                CL_NTOH32 (p_m_cqe->remote_node_addr.qp_ety.qp);\r
-            p_i_cqe->recv.ud.pkey_index = (uint16_t)p_m_cqe->pkey_ix; \r
-            p_i_cqe->recv.ud.remote_lid = \r
-                CL_NTOH16 (p_m_cqe->remote_node_addr.slid);\r
-            p_i_cqe->recv.ud.remote_sl = p_m_cqe->remote_node_addr.sl;\r
-            p_i_cqe->recv.ud.path_bits = 0;\r
-            break;\r
-\r
-        case VAPI_RNA_RD:\r
-            CL_TRACE (MLNX_TRACE_LVL_8, mlnx_dbg_lvl, ("Unsupported RD\n"));\r
-            break;\r
-\r
-        case VAPI_RNA_RAW_ETY:\r
-            CL_TRACE (MLNX_TRACE_LVL_8, mlnx_dbg_lvl, ("Unsupported RAW_ETY\n"));\r
-            break;\r
-\r
-        case VAPI_RNA_RAW_IPV6:\r
-            CL_TRACE (MLNX_TRACE_LVL_8, mlnx_dbg_lvl, ("Unsupported RAW_IPV6\n"));\r
-            break;\r
-\r
-        default:\r
-            CL_TRACE (MLNX_TRACE_LVL_8, mlnx_dbg_lvl, ("Unknown type\n"));\r
-            break;\r
-    }\r
-}\r
-\r
-\r
 static VAPI_mrw_acl_t\r
 map_itom_access_ctrl (\r
     IN         ib_access_t             i_acl)\r
@@ -492,50 +430,10 @@ mlnx_poll_cq (
         status = IB_INVALID_PARAMETER;\r
         return status;\r
     }\r
-#if TRUE\r
-      status = THHUL_cqm_poll4wc(p_hobul->hhul_hca_hndl, p_cq_info->hhul_cq_hndl,\r
-               pp_free_wclist, pp_done_wclist );\r
-#else\r
-    for (p_i_cqe = *pp_free_wclist; p_i_cqe; p_i_cqe = p_i_cqe->p_next)\r
-    {\r
-        *pp_done_wclist = NULL;\r
-\r
-        hh_ret = THHUL_cqm_poll4cqe (p_hobul->hhul_hca_hndl,\r
-                                     p_cq_info->hhul_cq_hndl,\r
-                                     &m_cqe);\r
-        if (HH_CQ_EMPTY == hh_ret)\r
-        {\r
-            status = IB_NOT_FOUND;\r
-            break;\r
-        }\r
-\r
-        /*\r
-         * Errors cases\r
-         */\r
-        if (HH_OK != hh_ret)        \r
-        {\r
-            CL_TRACE (MLNX_TRACE_LVL_1, mlnx_dbg_lvl,\r
-                      ("poll4cqe get error status %d\n", hh_ret));\r
-            status = IB_ERROR;\r
-            return status;\r
-        }\r
 \r
-        map_mtoi_wcqe (&m_cqe, p_i_cqe);\r
-        *pp_done_wclist = p_i_cqe;\r
-        pp_done_wclist = (ib_wc_t **)&p_i_cqe->p_next;\r
-        status = IB_SUCCESS;\r
-    }\r
+       status = THHUL_cqm_poll4wc(p_hobul->hhul_hca_hndl, p_cq_info->hhul_cq_hndl,\r
+               pp_free_wclist, pp_done_wclist );\r
 \r
-    /*\r
-     * Update free list to point to the first unused cqe\r
-     */\r
-    if (IB_NOT_FOUND == status && p_i_cqe != *pp_free_wclist)\r
-    {\r
-        status = IB_SUCCESS;\r
-    }\r
-     \r
-    *pp_free_wclist = p_i_cqe;\r
-#endif\r
     FUNC_EXIT;\r
     return status;\r
 }\r
index 1663571621c01b8a0be4520eeac23aadfc7819f0..942ef9fdc503e82dda876a7521c8fadf3c0b8f4a 100644 (file)
@@ -1243,185 +1243,6 @@ static MT_bool cq_transition_to_resized_buf(
 #define CQE_OPCODE_BIT_MASK      MASK32(MT_BIT_SIZE(tavorprm_completion_queue_entry_st,opcode))\r
 #define CQE_OPCODE_DWORD_OFFSET  MT_BYTE_OFFSET(tavorprm_completion_queue_entry_st,opcode)>>2\r
 #define CQE_OPCODE_SHIFT         (MT_BIT_OFFSET(tavorprm_completion_queue_entry_st,opcode) & MASK32(5))\r
-HH_ret_t THHUL_cqm_poll4cqe( \r
-  /*IN*/ HHUL_hca_hndl_t hca_hndl, \r
-  /*IN*/ HHUL_cq_hndl_t cq, \r
-  /*OUT*/ VAPI_wc_desc_t *vapi_cqe_p \r
-) \r
-{ \r
-  THHUL_cq_t *thhul_cq_p= (THHUL_cq_t*)cq;\r
-  volatile u_int32_t *cur_cqe;\r
-  u_int32_t wqe_addr_32lsb,next_wqe_addr_32lsb;\r
-  IB_wqpn_t qpn;\r
-  u_int8_t opcode;\r
-  u_int8_t dbd_bit;\r
-  VAPI_special_qp_t qp_type;\r
-  VAPI_ts_type_t qp_ts_type;\r
-  u_int32_t i,dbd_cnt;\r
-  HH_ret_t rc;\r
-  u_int32_t cqe_cpy[CQE_SZ>>2]; /* CQE copy */\r
-  /* The CQE copy is required for 2 reasons:\r
-   * 1) Hold in CPU endianess. \r
-   * 2) Free real CQE as soon as possible in order to release CQ lock quickly.\r
-   */\r
-\r
-  if (MOSAL_EXPECT_FALSE(thhul_cq_p == NULL)) {\r
-    MTL_ERROR1("THHUL_cqm_poll4cqe: NULL CQ handle.\n");\r
-    return HH_EINVAL_CQ_HNDL;\r
-  }\r
-\r
-  MOSAL_spinlock_dpc_lock(&(thhul_cq_p->cq_lock));\r
-\r
-  /* Check if CQE at consumer index is valid */\r
-  cur_cqe= (volatile u_int32_t *)\r
-    (thhul_cq_p->cur_buf.cqe_buf_base + (thhul_cq_p->cur_buf.consumer_index << LOG2_CQE_SZ)); \r
-  if (is_cqe_hw_own(cur_cqe) &&                 /* CQE is still in HW ownership */\r
-      (!cq_transition_to_resized_buf(thhul_cq_p, &cur_cqe)) )  { \r
-\r
-    MOSAL_spinlock_unlock(&(thhul_cq_p->cq_lock));    \r
-#if 0\r
-    THHUL_cqm_dump_cq(cq);\r
-#endif\r
-    return HH_CQ_EMPTY;\r
-  }\r
-\r
-  /* Remove Copy of all cqe, copy as nedded only */ \r
-#if 0  /* original code */ \r
-  /* Make CQE copy in correct endianess */\r
-  for (i= 0; i < (CQE_SZ>>2); i++) {  \r
-    cqe_cpy[i]= MOSAL_be32_to_cpu(cur_cqe[i]);\r
-  }\r
-  /* Extract QP/WQE context fields from the CQE */\r
-  wqe_addr_32lsb= (cqe_cpy[MT_BYTE_OFFSET(tavorprm_completion_queue_entry_st,wqe_adr)>>2] & \r
-                   (~MASK32(CQE_WQE_ADR_BIT_SZ)) );\r
-  qpn= (cqe_cpy[MT_BYTE_OFFSET(tavorprm_completion_queue_entry_st,my_qpn)>>2] & MASK32(24) );\r
-  vapi_cqe_p->local_qp_num= qpn;\r
-  /* new CQE: completion status is taken from "opcode" field */\r
-  opcode= MT_EXTRACT_ARRAY32(cqe_cpy,\r
-       MT_BIT_OFFSET(tavorprm_completion_queue_entry_st,opcode), \r
-       MT_BIT_SIZE(tavorprm_completion_queue_entry_st,opcode));\r
-#endif\r
-  \r
-  /* Extract QP/WQE context fields from the CQE */\r
-  /* Byte 6 */  \r
-  wqe_addr_32lsb= MOSAL_be32_to_cpu(cur_cqe[CQE_WQE_ADDR_BYTE_OFFSET]) & \r
-                   CQE_WQE_ADDR_BIT_MASK;\r
-  \r
-  /* Byte 0*/\r
-  qpn= MOSAL_be32_to_cpu(cur_cqe[CQE_MY_QPN_BYTE_OFFSET]) & CQE_MY_QPN_BYTE_BIT_MASK;\r
-\r
-  /* Byte 1 */\r
-  cqe_cpy[CQE_MY_EE_DWORD_OFFSET] = MOSAL_be32_to_cpu(cur_cqe[CQE_MY_EE_DWORD_OFFSET]); \r
-  /* Byte 2 */\r
-  cqe_cpy[CQE_RQPN_DWORD_OFFSET]  = MOSAL_be32_to_cpu(cur_cqe[CQE_RQPN_DWORD_OFFSET]); \r
-  /* Byte 3 */\r
-  cqe_cpy[CQE_RLID_DWORD_OFFSET]  = MOSAL_be32_to_cpu(cur_cqe[CQE_RLID_DWORD_OFFSET]);\r
-  /* Byte 7 Convert S,Opcode,Owner fileld to Be */\r
-  cqe_cpy[CQE_S_DWORD_OFFSET] =     MOSAL_be32_to_cpu(cur_cqe[CQE_S_DWORD_OFFSET]); \r
-  \r
-  /* Byte 4 */\r
-  vapi_cqe_p->imm_data = MOSAL_be32_to_cpu(cur_cqe[CQE_IMMEDIATE_DWORD_OFFSET]);\r
-  /* Byte 5 */\r
-  vapi_cqe_p->byte_len= MOSAL_be32_to_cpu(cur_cqe[CQE_BYTE_CNT_DWORD_OFFSET]);\r
-\r
-       /* new CQE: completion status is taken from "opcode" field */\r
-\r
-  opcode=(cqe_cpy[CQE_OPCODE_DWORD_OFFSET]>>CQE_OPCODE_SHIFT) & CQE_OPCODE_BIT_MASK;\r
\r
-\r
-  if (MOSAL_EXPECT_TRUE((opcode & CQE_ERROR_STATUS_MASK) != CQE_ERROR_STATUS_MASK)) {  /* Completed OK */      \r
-    MTPERF_TIME_START(free_cqe);\r
-    free_cqe(thhul_cq_p,cur_cqe); /* Free original CQE and update consumer index */\r
-    MTPERF_TIME_END(free_cqe);\r
-\r
-  /* DEBUG: Sanity check that the same WQE is not used twice simultaneosly */\r
-#ifdef THHUL_CQM_DEBUG_WQE_REUSE\r
-    /* Get next CQE and check if valid and NDA equals freed CQE's */\r
-  cur_cqe= (volatile u_int32_t *)\r
-    (thhul_cq_p->cur_buf.cqe_buf_base + (thhul_cq_p->cur_buf.consumer_index << LOG2_CQE_SZ)); \r
-  if ((!is_cqe_hw_own(cur_cqe)) &&\r
-      ( (MOSAL_be32_to_cpu(\r
-             cur_cqe[MT_BYTE_OFFSET(tavorprm_completion_queue_entry_st,wqe_adr)>>2]) & \r
-           (~MASK32(CQE_WQE_ADR_BIT_SZ)) ) == wqe_addr_32lsb) ){ \r
-    MTL_ERROR1(MT_FLFMT("%s: Duplicate NDA on next CQE (NDA=0x%X , consumer index=%u,%u)"),\r
-           __func__, wqe_addr_32lsb, \r
-           thhul_cq_p->cur_buf.consumer_index-1, thhul_cq_p->cur_buf.consumer_index);\r
-    THHUL_cqm_dump_cq(cq);\r
-  }\r
-#endif \r
-\r
-#ifndef IVAPI_THH\r
-    rc= THHUL_qpm_comp_ok(thhul_cq_p->qpm, qpn, wqe_addr_32lsb,\r
-      &qp_type,&qp_ts_type,&(vapi_cqe_p->id),&(vapi_cqe_p->free_res_count));\r
-#else\r
-    rc= THHUL_qpm_comp_ok(thhul_cq_p->qpm, qpn, wqe_addr_32lsb,\r
-      &qp_type,&qp_ts_type,&(vapi_cqe_p->id),&(vapi_cqe_p->free_res_count),NULL);\r
-#endif    \r
-    \r
-    MOSAL_spinlock_unlock(&(thhul_cq_p->cq_lock));    \r
-    \r
-    if (MOSAL_EXPECT_FALSE(rc != HH_OK)) {\r
-      MTL_ERROR1("THHUL_cqm_poll4cqe: Failed updating associated QP.\n");\r
-      for (i= 0; i < (CQE_SZ>>2); i++) {  \r
-        MTL_ERROR1(MT_FLFMT("CQ[0x%X][%u][%u]=0x%X"),thhul_cq_p->cq_num,\r
-                   (thhul_cq_p->cur_buf.consumer_index - 1) & MASK32(thhul_cq_p->cur_buf.log2_num_o_cqes),\r
-                   i, cqe_cpy[i]);\r
-      }\r
-      return HH_EFATAL; /* unexpected error */\r
-    }\r
-    /* Extract the rest of the CQE fields into vapi_cqe_p*/\r
-    rc= extract_cqe_new(cqe_cpy,vapi_cqe_p,qp_type,qp_ts_type,opcode);     \r
-    vapi_cqe_p->status= VAPI_SUCCESS;\r
-  \r
-  } else {  /* Completion with error  */\r
-       \r
-    /* Make CQE copy in correct endianess */\r
-    for (i= 0; i < (CQE_SZ>>2); i++) {  \r
-               cqe_cpy[i]= MOSAL_be32_to_cpu(cur_cqe[i]);\r
-    }\r
-         \r
-    MTL_DEBUG4("THHUL_cqm_poll4cqe: completion with error: cq=%d consumer_index=%d\n",\r
-      thhul_cq_p->cq_num,thhul_cq_p->cur_buf.consumer_index);\r
-    DUMP_CQE(thhul_cq_p->cq_num,thhul_cq_p->cur_buf.consumer_index,cur_cqe);\r
-    rc= THHUL_qpm_comp_err(thhul_cq_p->qpm, qpn, wqe_addr_32lsb,\r
-      &(vapi_cqe_p->id),&(vapi_cqe_p->free_res_count),&next_wqe_addr_32lsb,&dbd_bit);\r
-    if (rc != HH_OK) {\r
-      MTL_ERROR1("THHUL_cqm_poll4cqe: Failed updating associated QP (QPn=0x%X , CQn=0x%X).\n",\r
-                 qpn, thhul_cq_p->cq_num);\r
-      MOSAL_spinlock_unlock(&(thhul_cq_p->cq_lock));    \r
-      return HH_EFATAL; /* unexpected error */\r
-    }\r
-    vapi_cqe_p->status= decode_error_syndrome((tavor_if_comp_status_t)MT_EXTRACT_ARRAY32(cqe_cpy,\r
-      CQE_ERROR_SYNDROM_BIT_OFFSET, CQE_ERROR_SYNDROM_BIT_SIZE) );\r
-    vapi_cqe_p->vendor_err_syndrome= MT_EXTRACT_ARRAY32(cqe_cpy,\r
-      CQE_ERROR_VENDOR_SYNDROM_BIT_OFFSET, CQE_ERROR_VENDOR_SYNDROM_BIT_SIZE);\r
-    dbd_cnt= MT_EXTRACT_ARRAY32(cqe_cpy,CQE_ERROR_DBDCNT_BIT_OFFSET, CQE_ERROR_DBDCNT_BIT_SIZE);\r
-    if ((next_wqe_addr_32lsb == THHUL_QPM_END_OF_WQE_CHAIN) ||    /* End of WQE chain */\r
-        ((dbd_cnt + 1 - dbd_bit) == 0) )                       {  /* or dbd counter reached 0 */\r
-      if ((next_wqe_addr_32lsb == THHUL_QPM_END_OF_WQE_CHAIN) && (dbd_cnt > 0)) {\r
-      MTL_ERROR1(MT_FLFMT("%s: CQ[0x%X]:CQE[0x%X]: Reached end of chain while dbd_cnt==%u"),\r
-        __func__, thhul_cq_p->cq_num, thhul_cq_p->cur_buf.consumer_index, dbd_cnt);\r
-      }\r
-      MTPERF_TIME_START(free_cqe);\r
-      free_cqe(thhul_cq_p,cur_cqe); /* Free original CQE and update consumer index */\r
-      MTPERF_TIME_END(free_cqe);\r
-    } else {\r
-        recycle_cqe(cur_cqe, next_wqe_addr_32lsb, dbd_cnt - dbd_bit);\r
-    } \r
-    MOSAL_spinlock_unlock(&(thhul_cq_p->cq_lock)); \r
-    /* Only WQE-ID, free_res_count and status are required for completion with error. \r
-     * No other CQE fields are extracted (see IB-spec. 11.4.2.1).                   \r
-     * Even though, for the sake of some legacy code:\r
-     * ...putting an opcode to distinguish completion of SQ from RQ*/\r
-    if (opcode == CQE_ERROR_ON_SQ) { \r
-      vapi_cqe_p->opcode= VAPI_CQE_SQ_SEND_DATA; \r
-    } else { /* receive queue completion */\r
-      vapi_cqe_p->opcode= VAPI_CQE_RQ_SEND_DATA; \r
-    }\r
-  }\r
-\r
-  return rc;   \r
-}\r
 \r
 #ifdef WIN32\r
 /* Successful completion */\r
@@ -1822,185 +1643,6 @@ static void  rearm_cq(THHUL_cq_t *cq_p, MT_bool solicitedNotification) {
 \r
 }\r
 \r
-/* This code is mainly from poll4cqe with rearm_cqe if next_cqe available\r
- */\r
-HH_ret_t THHUL_cqm_poll_and_rearm_cq( \r
-  /*IN*/ HHUL_hca_hndl_t hca_hndl, \r
-  /*IN*/ HHUL_cq_hndl_t cq, \r
-  /*IN*/ int solicitedNotification,\r
-  /*OUT*/ VAPI_wc_desc_t *vapi_cqe_p \r
-) \r
-{ \r
-\r
-  THHUL_cq_t *thhul_cq_p= (THHUL_cq_t*)cq;\r
-  volatile u_int32_t *cur_cqe;\r
-  u_int32_t wqe_addr_32lsb,next_wqe_addr_32lsb;\r
-  IB_wqpn_t qpn;\r
-  u_int8_t opcode;\r
-  u_int8_t dbd_bit;\r
-  VAPI_special_qp_t qp_type;\r
-  VAPI_ts_type_t qp_ts_type;\r
-  u_int32_t i,dbd_cnt;\r
-  HH_ret_t rc;\r
-  u_int32_t cqe_cpy[CQE_SZ>>2]; /* CQE copy */\r
-  /* The CQE copy is required for 2 reasons:\r
-   * 1) Hold in CPU endianess. \r
-   * 2) Free real CQE as soon as possible in order to release CQ lock quickly.\r
-   */\r
-\r
-  if (MOSAL_EXPECT_FALSE(thhul_cq_p == NULL)) {\r
-    MTL_ERROR1("THHUL_cqm_poll4cqe: NULL CQ handle.\n");\r
-    return HH_EINVAL_CQ_HNDL;\r
-  }\r
-\r
-  MOSAL_spinlock_dpc_lock(&(thhul_cq_p->cq_lock));\r
-\r
-  /* Check if CQE at consumer index is valid */\r
-  cur_cqe= (volatile u_int32_t *)\r
-    (thhul_cq_p->cur_buf.cqe_buf_base + (thhul_cq_p->cur_buf.consumer_index << LOG2_CQE_SZ)); \r
-  if (is_cqe_hw_own(cur_cqe))  { /* CQE is still in HW ownership */\r
-\r
-    rearm_cq(thhul_cq_p, (MT_bool)solicitedNotification);\r
-               /* Tavor actually solves the race condition where the s/w may have missed the\r
-                  next valid entry being written, just prior to rearming the CQ. So we really\r
-                  don't need to repoll the cq entry, since Tavor guarantees that we will see\r
-                  an interrupt if it happened to go valid before or after rearming the CQ\r
-               */\r
-         \r
-    MOSAL_spinlock_unlock(&(thhul_cq_p->cq_lock));    \r
-#if 0\r
-    THHUL_cqm_dump_cq(cq);\r
-#endif\r
-    return HH_CQ_EMPTY;\r
-  }\r
-\r
-\r
-  /* Remove Copy of all cqe, copy as nedded only */ \r
-#if 0  \r
-  /* Make CQE copy in correct endianess */\r
-  for (i= 0; i < (CQE_SZ>>2); i++) {  \r
-    cqe_cpy[i]= MOSAL_be32_to_cpu(cur_cqe[i]);\r
-  }\r
-#endif\r
-    \r
-  /* Extract QP/WQE context fields from the CQE */\r
-    \r
-  wqe_addr_32lsb= MOSAL_be32_to_cpu(cur_cqe[CQE_WQE_ADDR_BYTE_OFFSET]) & \r
-                   CQE_WQE_ADDR_BIT_MASK;\r
-  \r
-  qpn= MOSAL_be32_to_cpu(cur_cqe[CQE_MY_QPN_BYTE_OFFSET]) & CQE_MY_QPN_BYTE_BIT_MASK;\r
-\r
-  cqe_cpy[CQE_MY_EE_DWORD_OFFSET] = MOSAL_be32_to_cpu(cur_cqe[CQE_MY_EE_DWORD_OFFSET]); \r
-  cqe_cpy[CQE_RQPN_DWORD_OFFSET]  = MOSAL_be32_to_cpu(cur_cqe[CQE_RQPN_DWORD_OFFSET]); \r
-  cqe_cpy[CQE_RLID_DWORD_OFFSET]  = MOSAL_be32_to_cpu(cur_cqe[CQE_RLID_DWORD_OFFSET]);   \r
-  cqe_cpy[CQE_S_DWORD_OFFSET] =     MOSAL_be32_to_cpu(cur_cqe[CQE_S_DWORD_OFFSET]); \r
-  \r
-  vapi_cqe_p->imm_data = MOSAL_be32_to_cpu(cur_cqe[CQE_IMMEDIATE_DWORD_OFFSET]);\r
-  vapi_cqe_p->byte_len= MOSAL_be32_to_cpu(cur_cqe[CQE_BYTE_CNT_DWORD_OFFSET]);\r
-\r
-       /* new CQE: completion status is taken from "opcode" field */\r
-\r
-  opcode=(cqe_cpy[CQE_OPCODE_DWORD_OFFSET]>>CQE_OPCODE_SHIFT) & CQE_OPCODE_BIT_MASK;\r
\r
-\r
-   if (MOSAL_EXPECT_TRUE((opcode & CQE_ERROR_STATUS_MASK) != CQE_ERROR_STATUS_MASK)) {  /* Completed OK */     \r
-    HH_ret_t rc_rearm;  \r
-    volatile u_int32_t *next_cqe;\r
-\r
-    MTPERF_TIME_START(free_cqe);\r
-    free_cqe(thhul_cq_p,cur_cqe); /* Free original CQE and update consumer index */\r
-    MTPERF_TIME_END(free_cqe);\r
-\r
-    // form pointer to next cqe that would be serviced next    \r
-    next_cqe= (volatile u_int32_t *)\r
-               (thhul_cq_p->cur_buf.cqe_buf_base + (thhul_cq_p->cur_buf.consumer_index << LOG2_CQE_SZ)); \r
-    \r
-  \r
-    if (is_cqe_hw_own(next_cqe))  { /* CQE is still in HW ownership */\r
-       rearm_cq(thhul_cq_p, (MT_bool)solicitedNotification);\r
-               // check again\r
-       next_cqe= (volatile u_int32_t *)\r
-                       (thhul_cq_p->cur_buf.cqe_buf_base + (thhul_cq_p->cur_buf.consumer_index << LOG2_CQE_SZ)); \r
-       if (is_cqe_hw_own(next_cqe))  { /* CQE is still in HW ownership */\r
-               rc_rearm = HH_COMPLETED;        \r
-               } else {\r
-               rc_rearm = HH_POLL_NEEDED;      \r
-               }\r
-    }\r
-    else\r
-    {\r
-       rc_rearm = HH_OK;\r
-    }    \r
-    \r
-\r
-    MOSAL_spinlock_unlock(&(thhul_cq_p->cq_lock));    \r
-#ifndef IVAPI_THH\r
-    rc= THHUL_qpm_comp_ok(thhul_cq_p->qpm, qpn, wqe_addr_32lsb,\r
-      &qp_type,&qp_ts_type,&(vapi_cqe_p->id),&(vapi_cqe_p->free_res_count));\r
-#else\r
-    rc= THHUL_qpm_comp_ok(thhul_cq_p->qpm, qpn, wqe_addr_32lsb,\r
-      &qp_type,&qp_ts_type,&(vapi_cqe_p->id),&(vapi_cqe_p->free_res_count),NULL);\r
-#endif    \r
-    \r
-    if (MOSAL_EXPECT_FALSE(rc != HH_OK)) {\r
-      MTL_ERROR1("THHUL_cqm_poll4cqe: Failed updating associated QP.\n");\r
-      DUMP_CQE(thhul_cq_p->cq_num,thhul_cq_p->cur_buf.consumer_index,cur_cqe);\r
-      return rc;\r
-    }\r
-    /* Extract the rest of the CQE fields into vapi_cqe_p*/\r
\r
-    rc= extract_cqe_new(cqe_cpy,vapi_cqe_p,qp_type,qp_ts_type,opcode);     \r
-    vapi_cqe_p->status= VAPI_SUCCESS;\r
-    if(MOSAL_EXPECT_FALSE(rc != HH_OK)) {\r
-           return rc;\r
-    }\r
-    else\r
-           return rc_rearm;\r
-   \r
-         \r
-  } else {  /* Completion with error  */\r
-    /* Make CQE copy in correct endianess */\r
-    for (i= 0; i < (CQE_SZ>>2); i++) {  \r
-               cqe_cpy[i]= MOSAL_be32_to_cpu(cur_cqe[i]);\r
-    }    \r
-    MTL_DEBUG4("THHUL_cqm_poll4cqe: completion with error: cq=%d consumer_index=%d\n",\r
-      thhul_cq_p->cq_num,thhul_cq_p->cur_buf.consumer_index);\r
-    DUMP_CQE(thhul_cq_p->cq_num,thhul_cq_p->cur_buf.consumer_index,cur_cqe);\r
-    rc= THHUL_qpm_comp_err(thhul_cq_p->qpm, qpn, wqe_addr_32lsb,\r
-      &(vapi_cqe_p->id),&(vapi_cqe_p->free_res_count),&next_wqe_addr_32lsb,&dbd_bit);\r
-    if (rc != HH_OK) {\r
-      MTL_ERROR1("THHUL_cqm_poll4cqe: Failed updating associated QP.\n");\r
-      return rc;\r
-    }\r
-    vapi_cqe_p->status= decode_error_syndrome(MT_EXTRACT_ARRAY32(cqe_cpy,\r
-      CQE_ERROR_SYNDROM_BIT_OFFSET, CQE_ERROR_SYNDROM_BIT_SIZE) );\r
-    vapi_cqe_p->vendor_err_syndrome= MT_EXTRACT_ARRAY32(cqe_cpy,\r
-      CQE_ERROR_VENDOR_SYNDROM_BIT_OFFSET, CQE_ERROR_VENDOR_SYNDROM_BIT_SIZE);\r
-    dbd_cnt= MT_EXTRACT_ARRAY32(cqe_cpy,CQE_ERROR_DBDCNT_BIT_OFFSET, CQE_ERROR_DBDCNT_BIT_SIZE);\r
-    if ((next_wqe_addr_32lsb == THHUL_QPM_END_OF_WQE_CHAIN) ||    /* End of WQE chain */\r
-        ((dbd_cnt + 1 - dbd_bit) == 0) )                       {  /* or dbd counter reached 0 */\r
-      MTPERF_TIME_START(free_cqe);\r
-      free_cqe(thhul_cq_p,cur_cqe); /* Free original CQE and update consumer index */\r
-      MTPERF_TIME_END(free_cqe);\r
-    } else {\r
-        recycle_cqe(cur_cqe, next_wqe_addr_32lsb, dbd_cnt - dbd_bit);\r
-    } \r
-    MOSAL_spinlock_unlock(&(thhul_cq_p->cq_lock)); \r
-    /* Only WQE-ID, free_res_count and status are required for completion with error. \r
-     * No other CQE fields are extracted (see IB-spec. 11.4.2.1).                   \r
-     * Even though, for the sake of some legacy code:\r
-     * ...putting an opcode to distinguish completion of SQ from RQ*/\r
-    if (opcode == CQE_ERROR_ON_SQ) { \r
-      vapi_cqe_p->opcode= VAPI_CQE_SQ_SEND_DATA; \r
-    } else { /* receive queue completion */\r
-      vapi_cqe_p->opcode= VAPI_CQE_RQ_SEND_DATA; \r
-    }\r
-  }\r
-\r
-  return rc;   \r
-       \r
-}\r
-\r
 \r
 HH_ret_t THHUL_cqm_req_comp_notif( \r
   /*IN*/ HHUL_hca_hndl_t hca_hndl, \r
index 5b05e3e12896c51a1207a569417705dc8c5a3d88..f027168931b2b4fbb11f8d9db1d40e3a635f052f 100644 (file)
@@ -94,13 +94,6 @@ DLL_API HH_ret_t THHUL_cqm_cq_cleanup(
   /*IN*/ HHUL_srq_hndl_t srq\r
 );\r
 \r
-\r
-DLL_API HH_ret_t THHUL_cqm_poll4cqe( \r
-  /*IN*/ HHUL_hca_hndl_t hca_hndl, \r
-  /*IN*/ HHUL_cq_hndl_t cq, \r
-  /*OUT*/ VAPI_wc_desc_t *vapi_cqe_p \r
-);\r
-\r
 #ifdef WIN32\r
 #include <iba/ib_types.h>\r
 DLL_API ib_api_status_t\r
@@ -117,13 +110,6 @@ THHUL_cqm_count_cqe(
                OUT                     uint32_t* const                         p_n_cqes );\r
 #endif\r
 \r
-DLL_API HH_ret_t THHUL_cqm_poll_and_rearm_cq(\r
-  /*IN*/ HHUL_hca_hndl_t hca_hndl,\r
-  /*IN*/ HHUL_cq_hndl_t cq,\r
-  /*IN*/ int solicitedNotification,\r
-  /*OUT*/ VAPI_wc_desc_t *vapi_cqe_p\r
-);\r
-\r
 DLL_API HH_ret_t THHUL_cqm_peek_cq( \r
   /*IN*/ HHUL_hca_hndl_t hca_hndl, \r
   /*IN*/ HHUL_cq_hndl_t cq, \r
index f232464096c49033d17fe2aea7d4cf5680a4db19..f49bf701c5e1e393c766d51ce0a4cf644c33b437 100644 (file)
@@ -83,8 +83,8 @@ static HHUL_if_ops_t thhul_ops=
   THHUL_cqm_create_cq_done  /* HHULIF_create_cq_done    */,\r
   THHUL_cqm_resize_cq_prep  /* HHULIF_resize_cq_prep    */,\r
   THHUL_cqm_resize_cq_done  /* HHULIF_resize_cq_done    */,\r
-  THHUL_cqm_poll4cqe        /* HHULIF_poll4cqe          */,\r
-  THHUL_cqm_poll_and_rearm_cq /* HHULIF_poll_and_rearm_cq */,  \r
+  NULL        /* HHULIF_poll4cqe          */,\r
+  NULL /* HHULIF_poll_and_rearm_cq */,  \r
   THHUL_cqm_peek_cq         /* HHULIF_peek_cq           */,\r
   THHUL_cqm_req_comp_notif  /* HHULIF_req_comp_notif    */,\r
   THHUL_cqm_req_ncomp_notif /* HHULIF_req_ncomp_notif   */,\r