Merge branches 'ipoib', 'mlx4' and 'nes' into for-linus

+18 -13
+6
drivers/infiniband/hw/mlx4/qp.c
··· 1342 static void set_fmr_seg(struct mlx4_wqe_fmr_seg *fseg, struct ib_send_wr *wr) 1343 { 1344 struct mlx4_ib_fast_reg_page_list *mfrpl = to_mfrpl(wr->wr.fast_reg.page_list); 1345 1346 fseg->flags = convert_access(wr->wr.fast_reg.access_flags); 1347 fseg->mem_key = cpu_to_be32(wr->wr.fast_reg.rkey);
··· 1342 static void set_fmr_seg(struct mlx4_wqe_fmr_seg *fseg, struct ib_send_wr *wr) 1343 { 1344 struct mlx4_ib_fast_reg_page_list *mfrpl = to_mfrpl(wr->wr.fast_reg.page_list); 1345 + int i; 1346 + 1347 + for (i = 0; i < wr->wr.fast_reg.page_list_len; ++i) 1348 + wr->wr.fast_reg.page_list->page_list[i] = 1349 + cpu_to_be64(wr->wr.fast_reg.page_list->page_list[i] | 1350 + MLX4_MTT_FLAG_PRESENT); 1351 1352 fseg->flags = convert_access(wr->wr.fast_reg.access_flags); 1353 fseg->mem_key = cpu_to_be32(wr->wr.fast_reg.rkey);
+2 -9
drivers/infiniband/hw/nes/nes_cm.c
··· 1956 return ret; 1957 cleanup_retrans_entry(cm_node); 1958 cm_node->state = NES_CM_STATE_CLOSED; 1959 - ret = send_fin(cm_node, NULL); 1960 - 1961 - if (cm_node->accept_pend) { 1962 - BUG_ON(!cm_node->listener); 1963 - atomic_dec(&cm_node->listener->pend_accepts_cnt); 1964 - BUG_ON(atomic_read(&cm_node->listener->pend_accepts_cnt) < 0); 1965 - } 1966 1967 ret = send_reset(cm_node, NULL); 1968 return ret; ··· 2376 atomic_inc(&cm_disconnects); 2377 cm_event.event = IW_CM_EVENT_DISCONNECT; 2378 if (last_ae == NES_AEQE_AEID_LLP_CONNECTION_RESET) { 2379 cm_event.status = IW_CM_EVENT_STATUS_RESET; 2380 nes_debug(NES_DBG_CM, "Generating a CM " 2381 "Disconnect Event (status reset) for " ··· 2502 nes_debug(NES_DBG_CM, "Call close API\n"); 2503 2504 g_cm_core->api->close(g_cm_core, nesqp->cm_node); 2505 - nesqp->cm_node = NULL; 2506 } 2507 2508 return ret; ··· 2830 cm_node->apbvt_set = 1; 2831 nesqp->cm_node = cm_node; 2832 cm_node->nesqp = nesqp; 2833 2834 return 0; 2835 } ··· 3161 if (ret) 3162 printk(KERN_ERR "%s[%u] OFA CM event_handler returned, " 3163 "ret=%d\n", __func__, __LINE__, ret); 3164 - nes_rem_ref(&nesqp->ibqp); 3165 cm_id->rem_ref(cm_id); 3166 3167 rem_ref_cm_node(event->cm_node->cm_core, event->cm_node);
··· 1956 return ret; 1957 cleanup_retrans_entry(cm_node); 1958 cm_node->state = NES_CM_STATE_CLOSED; 1959 1960 ret = send_reset(cm_node, NULL); 1961 return ret; ··· 2383 atomic_inc(&cm_disconnects); 2384 cm_event.event = IW_CM_EVENT_DISCONNECT; 2385 if (last_ae == NES_AEQE_AEID_LLP_CONNECTION_RESET) { 2386 + issued_disconnect_reset = 1; 2387 cm_event.status = IW_CM_EVENT_STATUS_RESET; 2388 nes_debug(NES_DBG_CM, "Generating a CM " 2389 "Disconnect Event (status reset) for " ··· 2508 nes_debug(NES_DBG_CM, "Call close API\n"); 2509 2510 g_cm_core->api->close(g_cm_core, nesqp->cm_node); 2511 } 2512 2513 return ret; ··· 2837 cm_node->apbvt_set = 1; 2838 nesqp->cm_node = cm_node; 2839 cm_node->nesqp = nesqp; 2840 + nes_add_ref(&nesqp->ibqp); 2841 2842 return 0; 2843 } ··· 3167 if (ret) 3168 printk(KERN_ERR "%s[%u] OFA CM event_handler returned, " 3169 "ret=%d\n", __func__, __LINE__, ret); 3170 cm_id->rem_ref(cm_id); 3171 3172 rem_ref_cm_node(event->cm_node->cm_core, event->cm_node);
+6 -4
drivers/net/mlx4/mr.c
··· 67 #define MLX4_MPT_FLAG_PHYSICAL (1 << 9) 68 #define MLX4_MPT_FLAG_REGION (1 << 8) 69 70 - #define MLX4_MPT_PD_FLAG_FAST_REG (1 << 26) 71 #define MLX4_MPT_PD_FLAG_EN_INV (3 << 24) 72 - 73 - #define MLX4_MTT_FLAG_PRESENT 1 74 75 #define MLX4_MPT_STATUS_SW 0xF0 76 #define MLX4_MPT_STATUS_HW 0x00 ··· 347 if (mr->mtt.order >= 0 && mr->mtt.page_shift == 0) { 348 /* fast register MR in free state */ 349 mpt_entry->flags |= cpu_to_be32(MLX4_MPT_FLAG_FREE); 350 - mpt_entry->pd_flags |= cpu_to_be32(MLX4_MPT_PD_FLAG_FAST_REG); 351 } else { 352 mpt_entry->flags |= cpu_to_be32(MLX4_MPT_FLAG_SW_OWNS); 353 }
··· 67 #define MLX4_MPT_FLAG_PHYSICAL (1 << 9) 68 #define MLX4_MPT_FLAG_REGION (1 << 8) 69 70 + #define MLX4_MPT_PD_FLAG_FAST_REG (1 << 27) 71 + #define MLX4_MPT_PD_FLAG_RAE (1 << 28) 72 #define MLX4_MPT_PD_FLAG_EN_INV (3 << 24) 73 74 #define MLX4_MPT_STATUS_SW 0xF0 75 #define MLX4_MPT_STATUS_HW 0x00 ··· 348 if (mr->mtt.order >= 0 && mr->mtt.page_shift == 0) { 349 /* fast register MR in free state */ 350 mpt_entry->flags |= cpu_to_be32(MLX4_MPT_FLAG_FREE); 351 + mpt_entry->pd_flags |= cpu_to_be32(MLX4_MPT_PD_FLAG_FAST_REG | 352 + MLX4_MPT_PD_FLAG_RAE); 353 + mpt_entry->mtt_sz = cpu_to_be32((1 << mr->mtt.order) * 354 + MLX4_MTT_ENTRY_PER_SEG); 355 } else { 356 mpt_entry->flags |= cpu_to_be32(MLX4_MPT_FLAG_SW_OWNS); 357 }
+4
include/linux/mlx4/device.h
··· 141 MLX4_STAT_RATE_OFFSET = 5 142 }; 143 144 static inline u64 mlx4_fw_ver(u64 major, u64 minor, u64 subminor) 145 { 146 return (major << 32) | (minor << 16) | subminor;
··· 141 MLX4_STAT_RATE_OFFSET = 5 142 }; 143 144 + enum { 145 + MLX4_MTT_FLAG_PRESENT = 1 146 + }; 147 + 148 static inline u64 mlx4_fw_ver(u64 major, u64 minor, u64 subminor) 149 { 150 return (major << 32) | (minor << 16) | subminor;