Lines Matching refs:rcd
134 dd->rcd = kcalloc(dd->ctxtcnt, sizeof(*dd->rcd), GFP_KERNEL); in qib_create_ctxts()
135 if (!dd->rcd) { in qib_create_ctxts()
144 struct qib_ctxtdata *rcd; in qib_create_ctxts() local
151 rcd = qib_create_ctxtdata(ppd, i, dd->assigned_node_id); in qib_create_ctxts()
152 if (!rcd) { in qib_create_ctxts()
155 kfree(dd->rcd); in qib_create_ctxts()
156 dd->rcd = NULL; in qib_create_ctxts()
159 rcd->pkeys[0] = QIB_DEFAULT_P_KEY; in qib_create_ctxts()
160 rcd->seq_cnt = 1; in qib_create_ctxts()
172 struct qib_ctxtdata *rcd; in qib_create_ctxtdata() local
174 rcd = kzalloc_node(sizeof(*rcd), GFP_KERNEL, node_id); in qib_create_ctxtdata()
175 if (rcd) { in qib_create_ctxtdata()
176 INIT_LIST_HEAD(&rcd->qp_wait_list); in qib_create_ctxtdata()
177 rcd->node_id = node_id; in qib_create_ctxtdata()
178 rcd->ppd = ppd; in qib_create_ctxtdata()
179 rcd->dd = dd; in qib_create_ctxtdata()
180 rcd->cnt = 1; in qib_create_ctxtdata()
181 rcd->ctxt = ctxt; in qib_create_ctxtdata()
182 dd->rcd[ctxt] = rcd; in qib_create_ctxtdata()
185 rcd->opstats = kzalloc_node(sizeof(*rcd->opstats), in qib_create_ctxtdata()
187 if (!rcd->opstats) { in qib_create_ctxtdata()
188 kfree(rcd); in qib_create_ctxtdata()
195 dd->f_init_ctxt(rcd); in qib_create_ctxtdata()
208 rcd->rcvegrbuf_size = 0x8000; in qib_create_ctxtdata()
209 rcd->rcvegrbufs_perchunk = in qib_create_ctxtdata()
210 rcd->rcvegrbuf_size / dd->rcvegrbufsize; in qib_create_ctxtdata()
211 rcd->rcvegrbuf_chunks = (rcd->rcvegrcnt + in qib_create_ctxtdata()
212 rcd->rcvegrbufs_perchunk - 1) / in qib_create_ctxtdata()
213 rcd->rcvegrbufs_perchunk; in qib_create_ctxtdata()
214 BUG_ON(!is_power_of_2(rcd->rcvegrbufs_perchunk)); in qib_create_ctxtdata()
215 rcd->rcvegrbufs_perchunk_shift = in qib_create_ctxtdata()
216 ilog2(rcd->rcvegrbufs_perchunk); in qib_create_ctxtdata()
218 return rcd; in qib_create_ctxtdata()
509 for (i = 0; dd->rcd && i < dd->first_user_ctxt; ++i) { in enable_chip()
510 struct qib_ctxtdata *rcd = dd->rcd[i]; in enable_chip() local
512 if (rcd) in enable_chip()
513 dd->f_rcvctrl(rcd->ppd, rcvmask, i); in enable_chip()
657 struct qib_ctxtdata *rcd; in qib_init() local
687 for (i = 0; dd->rcd && i < dd->first_user_ctxt; ++i) { in qib_init()
694 rcd = dd->rcd[i]; in qib_init()
695 if (!rcd) in qib_init()
698 lastfail = qib_create_rcvhdrq(dd, rcd); in qib_init()
700 lastfail = qib_setup_eagerbufs(rcd); in qib_init()
941 void qib_free_ctxtdata(struct qib_devdata *dd, struct qib_ctxtdata *rcd) in qib_free_ctxtdata() argument
943 if (!rcd) in qib_free_ctxtdata()
946 if (rcd->rcvhdrq) { in qib_free_ctxtdata()
947 dma_free_coherent(&dd->pcidev->dev, rcd->rcvhdrq_size, in qib_free_ctxtdata()
948 rcd->rcvhdrq, rcd->rcvhdrq_phys); in qib_free_ctxtdata()
949 rcd->rcvhdrq = NULL; in qib_free_ctxtdata()
950 if (rcd->rcvhdrtail_kvaddr) { in qib_free_ctxtdata()
952 rcd->rcvhdrtail_kvaddr, in qib_free_ctxtdata()
953 rcd->rcvhdrqtailaddr_phys); in qib_free_ctxtdata()
954 rcd->rcvhdrtail_kvaddr = NULL; in qib_free_ctxtdata()
957 if (rcd->rcvegrbuf) { in qib_free_ctxtdata()
960 for (e = 0; e < rcd->rcvegrbuf_chunks; e++) { in qib_free_ctxtdata()
961 void *base = rcd->rcvegrbuf[e]; in qib_free_ctxtdata()
962 size_t size = rcd->rcvegrbuf_size; in qib_free_ctxtdata()
965 base, rcd->rcvegrbuf_phys[e]); in qib_free_ctxtdata()
967 kfree(rcd->rcvegrbuf); in qib_free_ctxtdata()
968 rcd->rcvegrbuf = NULL; in qib_free_ctxtdata()
969 kfree(rcd->rcvegrbuf_phys); in qib_free_ctxtdata()
970 rcd->rcvegrbuf_phys = NULL; in qib_free_ctxtdata()
971 rcd->rcvegrbuf_chunks = 0; in qib_free_ctxtdata()
974 kfree(rcd->tid_pg_list); in qib_free_ctxtdata()
975 vfree(rcd->user_event_mask); in qib_free_ctxtdata()
976 vfree(rcd->subctxt_uregbase); in qib_free_ctxtdata()
977 vfree(rcd->subctxt_rcvegrbuf); in qib_free_ctxtdata()
978 vfree(rcd->subctxt_rcvhdr_base); in qib_free_ctxtdata()
980 kfree(rcd->opstats); in qib_free_ctxtdata()
981 rcd->opstats = NULL; in qib_free_ctxtdata()
983 kfree(rcd); in qib_free_ctxtdata()
1413 tmp = dd->rcd; in cleanup_device_data()
1414 dd->rcd = NULL; in cleanup_device_data()
1417 struct qib_ctxtdata *rcd = tmp[ctxt]; in cleanup_device_data() local
1420 qib_free_ctxtdata(dd, rcd); in cleanup_device_data()
1592 int qib_create_rcvhdrq(struct qib_devdata *dd, struct qib_ctxtdata *rcd) in qib_create_rcvhdrq() argument
1597 if (!rcd->rcvhdrq) { in qib_create_rcvhdrq()
1603 gfp_flags = (rcd->ctxt >= dd->first_user_ctxt) ? in qib_create_rcvhdrq()
1607 set_dev_node(&dd->pcidev->dev, rcd->node_id); in qib_create_rcvhdrq()
1608 rcd->rcvhdrq = dma_alloc_coherent( in qib_create_rcvhdrq()
1609 &dd->pcidev->dev, amt, &rcd->rcvhdrq_phys, in qib_create_rcvhdrq()
1613 if (!rcd->rcvhdrq) { in qib_create_rcvhdrq()
1616 amt, rcd->ctxt); in qib_create_rcvhdrq()
1620 if (rcd->ctxt >= dd->first_user_ctxt) { in qib_create_rcvhdrq()
1621 rcd->user_event_mask = vmalloc_user(PAGE_SIZE); in qib_create_rcvhdrq()
1622 if (!rcd->user_event_mask) in qib_create_rcvhdrq()
1627 set_dev_node(&dd->pcidev->dev, rcd->node_id); in qib_create_rcvhdrq()
1628 rcd->rcvhdrtail_kvaddr = dma_alloc_coherent( in qib_create_rcvhdrq()
1632 if (!rcd->rcvhdrtail_kvaddr) in qib_create_rcvhdrq()
1634 rcd->rcvhdrqtailaddr_phys = phys_hdrqtail; in qib_create_rcvhdrq()
1637 rcd->rcvhdrq_size = amt; in qib_create_rcvhdrq()
1641 memset(rcd->rcvhdrq, 0, rcd->rcvhdrq_size); in qib_create_rcvhdrq()
1642 if (rcd->rcvhdrtail_kvaddr) in qib_create_rcvhdrq()
1643 memset(rcd->rcvhdrtail_kvaddr, 0, PAGE_SIZE); in qib_create_rcvhdrq()
1649 rcd->ctxt); in qib_create_rcvhdrq()
1650 vfree(rcd->user_event_mask); in qib_create_rcvhdrq()
1651 rcd->user_event_mask = NULL; in qib_create_rcvhdrq()
1653 dma_free_coherent(&dd->pcidev->dev, amt, rcd->rcvhdrq, in qib_create_rcvhdrq()
1654 rcd->rcvhdrq_phys); in qib_create_rcvhdrq()
1655 rcd->rcvhdrq = NULL; in qib_create_rcvhdrq()
1669 int qib_setup_eagerbufs(struct qib_ctxtdata *rcd) in qib_setup_eagerbufs() argument
1671 struct qib_devdata *dd = rcd->dd; in qib_setup_eagerbufs()
1685 egrcnt = rcd->rcvegrcnt; in qib_setup_eagerbufs()
1686 egroff = rcd->rcvegr_tid_base; in qib_setup_eagerbufs()
1689 chunk = rcd->rcvegrbuf_chunks; in qib_setup_eagerbufs()
1690 egrperchunk = rcd->rcvegrbufs_perchunk; in qib_setup_eagerbufs()
1691 size = rcd->rcvegrbuf_size; in qib_setup_eagerbufs()
1692 if (!rcd->rcvegrbuf) { in qib_setup_eagerbufs()
1693 rcd->rcvegrbuf = in qib_setup_eagerbufs()
1694 kzalloc_node(chunk * sizeof(rcd->rcvegrbuf[0]), in qib_setup_eagerbufs()
1695 GFP_KERNEL, rcd->node_id); in qib_setup_eagerbufs()
1696 if (!rcd->rcvegrbuf) in qib_setup_eagerbufs()
1699 if (!rcd->rcvegrbuf_phys) { in qib_setup_eagerbufs()
1700 rcd->rcvegrbuf_phys = in qib_setup_eagerbufs()
1701 kmalloc_node(chunk * sizeof(rcd->rcvegrbuf_phys[0]), in qib_setup_eagerbufs()
1702 GFP_KERNEL, rcd->node_id); in qib_setup_eagerbufs()
1703 if (!rcd->rcvegrbuf_phys) in qib_setup_eagerbufs()
1706 for (e = 0; e < rcd->rcvegrbuf_chunks; e++) { in qib_setup_eagerbufs()
1707 if (rcd->rcvegrbuf[e]) in qib_setup_eagerbufs()
1711 set_dev_node(&dd->pcidev->dev, rcd->node_id); in qib_setup_eagerbufs()
1712 rcd->rcvegrbuf[e] = in qib_setup_eagerbufs()
1714 &rcd->rcvegrbuf_phys[e], in qib_setup_eagerbufs()
1717 if (!rcd->rcvegrbuf[e]) in qib_setup_eagerbufs()
1721 rcd->rcvegr_phys = rcd->rcvegrbuf_phys[0]; in qib_setup_eagerbufs()
1723 for (e = chunk = 0; chunk < rcd->rcvegrbuf_chunks; chunk++) { in qib_setup_eagerbufs()
1724 dma_addr_t pa = rcd->rcvegrbuf_phys[chunk]; in qib_setup_eagerbufs()
1728 memset(rcd->rcvegrbuf[chunk], 0, size); in qib_setup_eagerbufs()
1745 for (e = 0; e < rcd->rcvegrbuf_chunks && rcd->rcvegrbuf[e]; e++) in qib_setup_eagerbufs()
1747 rcd->rcvegrbuf[e], rcd->rcvegrbuf_phys[e]); in qib_setup_eagerbufs()
1748 kfree(rcd->rcvegrbuf_phys); in qib_setup_eagerbufs()
1749 rcd->rcvegrbuf_phys = NULL; in qib_setup_eagerbufs()
1751 kfree(rcd->rcvegrbuf); in qib_setup_eagerbufs()
1752 rcd->rcvegrbuf = NULL; in qib_setup_eagerbufs()