provider.c (302408) | provider.c (318798) |
---|---|
1/* 2 * Copyright (c) 2009-2013, 2016 Chelsio, Inc. All rights reserved. 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: --- 16 unchanged lines hidden (view full) --- 25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30 * SOFTWARE. 31 */ 32#include <sys/cdefs.h> | 1/* 2 * Copyright (c) 2009-2013, 2016 Chelsio, Inc. All rights reserved. 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: --- 16 unchanged lines hidden (view full) --- 25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30 * SOFTWARE. 31 */ 32#include <sys/cdefs.h> |
33__FBSDID("$FreeBSD: stable/11/sys/dev/cxgbe/iw_cxgbe/provider.c 300676 2016-05-25 12:03:21Z hselasky $"); | 33__FBSDID("$FreeBSD: stable/11/sys/dev/cxgbe/iw_cxgbe/provider.c 318798 2017-05-24 18:14:57Z np $"); |
34 35#define LINUXKPI_PARAM_PREFIX iw_cxgbe_ 36 37#include "opt_inet.h" 38 39#ifdef TCP_OFFLOAD 40#include <asm/pgtable.h> 41#include <linux/page.h> --- 143 unchanged lines hidden (view full) --- 185 /* 186 * Map user DB or OCQP memory... 187 */ 188 paddr = vtophys(addr); 189 CTR4(KTR_IW_CXGBE, 190 "%s:6 USER DB-GTS addr %p region %p, reglen %u", 191 __func__, addr, va_udbs_res, len_udbs_res); 192#ifdef DOT5 | 34 35#define LINUXKPI_PARAM_PREFIX iw_cxgbe_ 36 37#include "opt_inet.h" 38 39#ifdef TCP_OFFLOAD 40#include <asm/pgtable.h> 41#include <linux/page.h> --- 143 unchanged lines hidden (view full) --- 185 /* 186 * Map user DB or OCQP memory... 187 */ 188 paddr = vtophys(addr); 189 CTR4(KTR_IW_CXGBE, 190 "%s:6 USER DB-GTS addr %p region %p, reglen %u", 191 __func__, addr, va_udbs_res, len_udbs_res); 192#ifdef DOT5 |
193 if (is_t5(rdev->lldi.adapter_type) && map_udb_as_wc) | 193 if (!is_t4(rdev->lldi.adapter_type) && map_udb_as_wc) |
194 vma->vm_page_prot = t4_pgprot_wc(vma->vm_page_prot); 195 else 196#endif 197 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); 198 ret = io_remap_pfn_range(vma, vma->vm_start, 199 paddr >> PAGE_SHIFT, 200 len, vma->vm_page_prot); 201 } else { --- 100 unchanged lines hidden (view full) --- 302 return (0); 303} 304 305static int 306c4iw_query_device(struct ib_device *ibdev, struct ib_device_attr *props) 307{ 308 struct c4iw_dev *dev = to_c4iw_dev(ibdev); 309 struct adapter *sc = dev->rdev.adap; | 194 vma->vm_page_prot = t4_pgprot_wc(vma->vm_page_prot); 195 else 196#endif 197 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); 198 ret = io_remap_pfn_range(vma, vma->vm_start, 199 paddr >> PAGE_SHIFT, 200 len, vma->vm_page_prot); 201 } else { --- 100 unchanged lines hidden (view full) --- 302 return (0); 303} 304 305static int 306c4iw_query_device(struct ib_device *ibdev, struct ib_device_attr *props) 307{ 308 struct c4iw_dev *dev = to_c4iw_dev(ibdev); 309 struct adapter *sc = dev->rdev.adap; |
310 const int spg_ndesc = sc->params.sge.spg_len / EQ_ESIZE; |
|
310 311 CTR3(KTR_IW_CXGBE, "%s ibdev %p, props %p", __func__, ibdev, props); 312 313 memset(props, 0, sizeof *props); 314 memcpy(&props->sys_image_guid, sc->port[0]->vi[0].hw_addr, 315 ETHER_ADDR_LEN); 316 props->hw_ver = sc->params.chipid; 317 props->fw_ver = sc->params.fw_vers; 318 props->device_cap_flags = dev->device_cap_flags; 319 props->page_size_cap = T4_PAGESIZE_MASK; 320 props->vendor_id = pci_get_vendor(sc->dev); 321 props->vendor_part_id = pci_get_device(sc->dev); 322 props->max_mr_size = T4_MAX_MR_SIZE; | 311 312 CTR3(KTR_IW_CXGBE, "%s ibdev %p, props %p", __func__, ibdev, props); 313 314 memset(props, 0, sizeof *props); 315 memcpy(&props->sys_image_guid, sc->port[0]->vi[0].hw_addr, 316 ETHER_ADDR_LEN); 317 props->hw_ver = sc->params.chipid; 318 props->fw_ver = sc->params.fw_vers; 319 props->device_cap_flags = dev->device_cap_flags; 320 props->page_size_cap = T4_PAGESIZE_MASK; 321 props->vendor_id = pci_get_vendor(sc->dev); 322 props->vendor_part_id = pci_get_device(sc->dev); 323 props->max_mr_size = T4_MAX_MR_SIZE; |
323 props->max_qp = T4_MAX_NUM_QP; 324 props->max_qp_wr = T4_MAX_QP_DEPTH; | 324 props->max_qp = sc->vres.qp.size / 2; 325 props->max_qp_wr = T4_MAX_QP_DEPTH(spg_ndesc); |
325 props->max_sge = T4_MAX_RECV_SGE; 326 props->max_sge_rd = 1; | 326 props->max_sge = T4_MAX_RECV_SGE; 327 props->max_sge_rd = 1; |
327 props->max_qp_rd_atom = c4iw_max_read_depth; 328 props->max_qp_init_rd_atom = c4iw_max_read_depth; 329 props->max_cq = T4_MAX_NUM_CQ; | 328 props->max_res_rd_atom = sc->params.max_ird_adapter; 329 props->max_qp_rd_atom = min(sc->params.max_ordird_qp, 330 c4iw_max_read_depth); 331 props->max_qp_init_rd_atom = props->max_qp_rd_atom; 332 props->max_cq = sc->vres.qp.size; |
330 props->max_cqe = T4_MAX_CQ_DEPTH; 331 props->max_mr = c4iw_num_stags(&dev->rdev); 332 props->max_pd = T4_MAX_NUM_PD; 333 props->local_ca_ack_delay = 0; 334 props->max_fast_reg_page_list_len = T4_MAX_FR_DEPTH; 335 336 return (0); 337} --- 86 unchanged lines hidden (view full) --- 424 (1ull << IB_USER_VERBS_CMD_POLL_CQ) | 425 (1ull << IB_USER_VERBS_CMD_DESTROY_QP) | 426 (1ull << IB_USER_VERBS_CMD_POST_SEND) | 427 (1ull << IB_USER_VERBS_CMD_POST_RECV); 428 ibdev->node_type = RDMA_NODE_RNIC; 429 strlcpy(ibdev->node_desc, C4IW_NODE_DESC, sizeof(ibdev->node_desc)); 430 ibdev->phys_port_cnt = sc->params.nports; 431 ibdev->num_comp_vectors = 1; | 333 props->max_cqe = T4_MAX_CQ_DEPTH; 334 props->max_mr = c4iw_num_stags(&dev->rdev); 335 props->max_pd = T4_MAX_NUM_PD; 336 props->local_ca_ack_delay = 0; 337 props->max_fast_reg_page_list_len = T4_MAX_FR_DEPTH; 338 339 return (0); 340} --- 86 unchanged lines hidden (view full) --- 427 (1ull << IB_USER_VERBS_CMD_POLL_CQ) | 428 (1ull << IB_USER_VERBS_CMD_DESTROY_QP) | 429 (1ull << IB_USER_VERBS_CMD_POST_SEND) | 430 (1ull << IB_USER_VERBS_CMD_POST_RECV); 431 ibdev->node_type = RDMA_NODE_RNIC; 432 strlcpy(ibdev->node_desc, C4IW_NODE_DESC, sizeof(ibdev->node_desc)); 433 ibdev->phys_port_cnt = sc->params.nports; 434 ibdev->num_comp_vectors = 1; |
432 ibdev->dma_device = sc->dev; | 435 ibdev->dma_device = NULL; |
433 ibdev->query_device = c4iw_query_device; 434 ibdev->query_port = c4iw_query_port; 435 ibdev->modify_port = c4iw_modify_port; 436 ibdev->query_pkey = c4iw_query_pkey; 437 ibdev->query_gid = c4iw_query_gid; 438 ibdev->alloc_ucontext = c4iw_alloc_ucontext; 439 ibdev->dealloc_ucontext = c4iw_dealloc_ucontext; 440 ibdev->mmap = c4iw_mmap; --- 64 unchanged lines hidden --- | 436 ibdev->query_device = c4iw_query_device; 437 ibdev->query_port = c4iw_query_port; 438 ibdev->modify_port = c4iw_modify_port; 439 ibdev->query_pkey = c4iw_query_pkey; 440 ibdev->query_gid = c4iw_query_gid; 441 ibdev->alloc_ucontext = c4iw_alloc_ucontext; 442 ibdev->dealloc_ucontext = c4iw_dealloc_ucontext; 443 ibdev->mmap = c4iw_mmap; --- 64 unchanged lines hidden --- |