main.c (ca4beeee9895f14df22940d804aab4534c23f03f) | main.c (b6db3f71c976ea92361dbc7ebfb65db666ac9f02) |
---|---|
1/* QLogic qedr NIC Driver 2 * Copyright (c) 2015-2016 QLogic Corporation 3 * 4 * This software is available to you under a choice of one of two 5 * licenses. You may choose to be licensed under the terms of the GNU 6 * General Public License (GPL) Version 2, available from the file 7 * COPYING in the main directory of this source tree, or the 8 * OpenIB.org BSD license below: --- 96 unchanged lines hidden (view full) --- 105{ 106 struct ib_port_attr attr; 107 int err; 108 109 err = qedr_query_port(ibdev, port_num, &attr); 110 if (err) 111 return err; 112 | 1/* QLogic qedr NIC Driver 2 * Copyright (c) 2015-2016 QLogic Corporation 3 * 4 * This software is available to you under a choice of one of two 5 * licenses. You may choose to be licensed under the terms of the GNU 6 * General Public License (GPL) Version 2, available from the file 7 * COPYING in the main directory of this source tree, or the 8 * OpenIB.org BSD license below: --- 96 unchanged lines hidden (view full) --- 105{ 106 struct ib_port_attr attr; 107 int err; 108 109 err = qedr_query_port(ibdev, port_num, &attr); 110 if (err) 111 return err; 112 |
113 immutable->pkey_tbl_len = 1; |
|
113 immutable->gid_tbl_len = 1; 114 immutable->core_cap_flags = RDMA_CORE_PORT_IWARP; 115 immutable->max_mad_size = 0; 116 117 return 0; 118} 119 120/* QEDR sysfs interface */ --- 52 unchanged lines hidden (view full) --- 173 memcpy(dev->ibdev.iw_ifname, 174 dev->ndev->name, sizeof(dev->ibdev.iw_ifname)); 175 176 return 0; 177} 178 179static const struct ib_device_ops qedr_roce_dev_ops = { 180 .get_port_immutable = qedr_roce_port_immutable, | 114 immutable->gid_tbl_len = 1; 115 immutable->core_cap_flags = RDMA_CORE_PORT_IWARP; 116 immutable->max_mad_size = 0; 117 118 return 0; 119} 120 121/* QEDR sysfs interface */ --- 52 unchanged lines hidden (view full) --- 174 memcpy(dev->ibdev.iw_ifname, 175 dev->ndev->name, sizeof(dev->ibdev.iw_ifname)); 176 177 return 0; 178} 179 180static const struct ib_device_ops qedr_roce_dev_ops = { 181 .get_port_immutable = qedr_roce_port_immutable, |
181 .query_pkey = qedr_query_pkey, | |
182}; 183 184static void qedr_roce_register_device(struct qedr_dev *dev) 185{ 186 dev->ibdev.node_type = RDMA_NODE_IB_CA; 187 188 ib_set_device_ops(&dev->ibdev, &qedr_roce_dev_ops); 189} --- 26 unchanged lines hidden (view full) --- 216 .modify_qp = qedr_modify_qp, 217 .modify_srq = qedr_modify_srq, 218 .poll_cq = qedr_poll_cq, 219 .post_recv = qedr_post_recv, 220 .post_send = qedr_post_send, 221 .post_srq_recv = qedr_post_srq_recv, 222 .process_mad = qedr_process_mad, 223 .query_device = qedr_query_device, | 182}; 183 184static void qedr_roce_register_device(struct qedr_dev *dev) 185{ 186 dev->ibdev.node_type = RDMA_NODE_IB_CA; 187 188 ib_set_device_ops(&dev->ibdev, &qedr_roce_dev_ops); 189} --- 26 unchanged lines hidden (view full) --- 216 .modify_qp = qedr_modify_qp, 217 .modify_srq = qedr_modify_srq, 218 .poll_cq = qedr_poll_cq, 219 .post_recv = qedr_post_recv, 220 .post_send = qedr_post_send, 221 .post_srq_recv = qedr_post_srq_recv, 222 .process_mad = qedr_process_mad, 223 .query_device = qedr_query_device, |
224 .query_pkey = qedr_query_pkey, |
|
224 .query_port = qedr_query_port, 225 .query_qp = qedr_query_qp, 226 .query_srq = qedr_query_srq, 227 .reg_user_mr = qedr_reg_user_mr, 228 .req_notify_cq = qedr_arm_cq, 229 .resize_cq = qedr_resize_cq, 230 231 INIT_RDMA_OBJ_SIZE(ib_ah, qedr_ah, ibah), --- 108 unchanged lines hidden (view full) --- 340 341 kfree(dev->cnq_array); 342 kfree(dev->sb_array); 343 kfree(dev->sgid_tbl); 344} 345 346static int qedr_alloc_resources(struct qedr_dev *dev) 347{ | 225 .query_port = qedr_query_port, 226 .query_qp = qedr_query_qp, 227 .query_srq = qedr_query_srq, 228 .reg_user_mr = qedr_reg_user_mr, 229 .req_notify_cq = qedr_arm_cq, 230 .resize_cq = qedr_resize_cq, 231 232 INIT_RDMA_OBJ_SIZE(ib_ah, qedr_ah, ibah), --- 108 unchanged lines hidden (view full) --- 341 342 kfree(dev->cnq_array); 343 kfree(dev->sb_array); 344 kfree(dev->sgid_tbl); 345} 346 347static int qedr_alloc_resources(struct qedr_dev *dev) 348{ |
349 struct qed_chain_init_params params = { 350 .mode = QED_CHAIN_MODE_PBL, 351 .intended_use = QED_CHAIN_USE_TO_CONSUME, 352 .cnt_type = QED_CHAIN_CNT_TYPE_U16, 353 .elem_size = sizeof(struct regpair *), 354 }; |
|
348 struct qedr_cnq *cnq; 349 __le16 *cons_pi; | 355 struct qedr_cnq *cnq; 356 __le16 *cons_pi; |
350 u16 n_entries; | |
351 int i, rc; 352 353 dev->sgid_tbl = kcalloc(QEDR_MAX_SGID, sizeof(union ib_gid), 354 GFP_KERNEL); 355 if (!dev->sgid_tbl) 356 return -ENOMEM; 357 358 spin_lock_init(&dev->sgid_lock); --- 17 unchanged lines hidden (view full) --- 376 if (!dev->cnq_array) { 377 rc = -ENOMEM; 378 goto err2; 379 } 380 381 dev->sb_start = dev->ops->rdma_get_start_sb(dev->cdev); 382 383 /* Allocate CNQ PBLs */ | 357 int i, rc; 358 359 dev->sgid_tbl = kcalloc(QEDR_MAX_SGID, sizeof(union ib_gid), 360 GFP_KERNEL); 361 if (!dev->sgid_tbl) 362 return -ENOMEM; 363 364 spin_lock_init(&dev->sgid_lock); --- 17 unchanged lines hidden (view full) --- 382 if (!dev->cnq_array) { 383 rc = -ENOMEM; 384 goto err2; 385 } 386 387 dev->sb_start = dev->ops->rdma_get_start_sb(dev->cdev); 388 389 /* Allocate CNQ PBLs */ |
384 n_entries = min_t(u32, QED_RDMA_MAX_CNQ_SIZE, QEDR_ROCE_MAX_CNQ_SIZE); | 390 params.num_elems = min_t(u32, QED_RDMA_MAX_CNQ_SIZE, 391 QEDR_ROCE_MAX_CNQ_SIZE); 392 |
385 for (i = 0; i < dev->num_cnq; i++) { 386 cnq = &dev->cnq_array[i]; 387 388 rc = qedr_alloc_mem_sb(dev, &dev->sb_array[i], 389 dev->sb_start + i); 390 if (rc) 391 goto err3; 392 | 393 for (i = 0; i < dev->num_cnq; i++) { 394 cnq = &dev->cnq_array[i]; 395 396 rc = qedr_alloc_mem_sb(dev, &dev->sb_array[i], 397 dev->sb_start + i); 398 if (rc) 399 goto err3; 400 |
393 rc = dev->ops->common->chain_alloc(dev->cdev, 394 QED_CHAIN_USE_TO_CONSUME, 395 QED_CHAIN_MODE_PBL, 396 QED_CHAIN_CNT_TYPE_U16, 397 n_entries, 398 sizeof(struct regpair *), 399 &cnq->pbl, NULL); | 401 rc = dev->ops->common->chain_alloc(dev->cdev, &cnq->pbl, 402 ¶ms); |
400 if (rc) 401 goto err4; 402 403 cnq->dev = dev; 404 cnq->sb = &dev->sb_array[i]; 405 cons_pi = dev->sb_array[i].sb_virt->pi_array; 406 cnq->hw_cons_ptr = &cons_pi[QED_ROCE_PROTOCOL_INDEX]; 407 cnq->index = i; --- 643 unchanged lines hidden --- | 403 if (rc) 404 goto err4; 405 406 cnq->dev = dev; 407 cnq->sb = &dev->sb_array[i]; 408 cons_pi = dev->sb_array[i].sb_virt->pi_array; 409 cnq->hw_cons_ptr = &cons_pi[QED_ROCE_PROTOCOL_INDEX]; 410 cnq->index = i; --- 643 unchanged lines hidden --- |