Lines Matching refs:pd
97 struct ipath_portdata *pd = port_fp(fp); in ipath_get_base_info() local
100 struct ipath_devdata *dd = pd->port_dd; in ipath_get_base_info()
105 subport_cnt = pd->port_subport_cnt; in ipath_get_base_info()
133 ret = dd->ipath_f_get_base_info(pd, kinfo); in ipath_get_base_info()
145 pd->port_rcvegrbuf_chunks * pd->port_rcvegrbuf_size; in ipath_get_base_info()
146 kinfo->spi_rcv_egrperchunk = pd->port_rcvegrbufs_perchunk; in ipath_get_base_info()
148 pd->port_rcvegrbuf_chunks; in ipath_get_base_info()
177 kinfo->spi_rcvhdr_base = (u64) pd->port_rcvhdrq_phys; in ipath_get_base_info()
178 kinfo->spi_rcvhdr_tailaddr = (u64) pd->port_rcvhdrqtailaddr_phys; in ipath_get_base_info()
179 kinfo->spi_rcv_egrbufs = (u64) pd->port_rcvegr_phys; in ipath_get_base_info()
185 kinfo->spi_piocnt = pd->port_piocnt; in ipath_get_base_info()
186 kinfo->spi_piobufbase = (u64) pd->port_piobufs; in ipath_get_base_info()
188 dd->ipath_ureg_align * pd->port_port; in ipath_get_base_info()
190 kinfo->spi_piocnt = (pd->port_piocnt / subport_cnt) + in ipath_get_base_info()
191 (pd->port_piocnt % subport_cnt); in ipath_get_base_info()
193 kinfo->spi_piobufbase = (u64) pd->port_piobufs + in ipath_get_base_info()
195 (pd->port_piocnt - kinfo->spi_piocnt); in ipath_get_base_info()
199 kinfo->spi_piocnt = pd->port_piocnt / subport_cnt; in ipath_get_base_info()
200 kinfo->spi_piobufbase = (u64) pd->port_piobufs + in ipath_get_base_info()
206 dd->ipath_ureg_align * pd->port_port; in ipath_get_base_info()
211 kinfo->__spi_uregbase = cvt_kvaddr(pd->subport_uregbase + in ipath_get_base_info()
214 kinfo->spi_rcvhdr_base = cvt_kvaddr(pd->subport_rcvhdr_base + in ipath_get_base_info()
215 pd->port_rcvhdrq_size * subport_fp(fp)); in ipath_get_base_info()
217 kinfo->spi_rcv_egrbufs = cvt_kvaddr(pd->subport_rcvegrbuf + in ipath_get_base_info()
218 pd->port_rcvegrbuf_chunks * pd->port_rcvegrbuf_size * in ipath_get_base_info()
222 cvt_kvaddr(pd->subport_uregbase); in ipath_get_base_info()
224 cvt_kvaddr(pd->subport_rcvegrbuf); in ipath_get_base_info()
226 cvt_kvaddr(pd->subport_rcvhdr_base); in ipath_get_base_info()
251 kinfo->spi_port = pd->port_port; in ipath_get_base_info()
295 static int ipath_tid_update(struct ipath_portdata *pd, struct file *fp, in ipath_tid_update() argument
301 struct ipath_devdata *dd = pd->port_dd; in ipath_tid_update()
324 porttid = pd->port_port * dd->ipath_rcvtidcnt; in ipath_tid_update()
325 if (!pd->port_subport_cnt) { in ipath_tid_update()
327 tid = pd->port_tidcursor; in ipath_tid_update()
330 tidcnt = (dd->ipath_rcvtidcnt / pd->port_subport_cnt) + in ipath_tid_update()
331 (dd->ipath_rcvtidcnt % pd->port_subport_cnt); in ipath_tid_update()
336 tidcnt = dd->ipath_rcvtidcnt / pd->port_subport_cnt; in ipath_tid_update()
347 pagep = &((struct page **) pd->port_tid_pg_list)[tidoff]; in ipath_tid_update()
358 pd->port_port, cnt, tid, tidbase); in ipath_tid_update()
483 if (!pd->port_subport_cnt) in ipath_tid_update()
484 pd->port_tidcursor = tid; in ipath_tid_update()
513 static int ipath_tid_free(struct ipath_portdata *pd, unsigned subport, in ipath_tid_free() argument
518 struct ipath_devdata *dd = pd->port_dd; in ipath_tid_free()
533 porttid = pd->port_port * dd->ipath_rcvtidcnt; in ipath_tid_free()
534 if (!pd->port_subport_cnt) in ipath_tid_free()
537 tidcnt = (dd->ipath_rcvtidcnt / pd->port_subport_cnt) + in ipath_tid_free()
538 (dd->ipath_rcvtidcnt % pd->port_subport_cnt); in ipath_tid_free()
541 tidcnt = dd->ipath_rcvtidcnt / pd->port_subport_cnt; in ipath_tid_free()
554 "set is %d, porttid %u\n", pd->port_port, ti->tidcnt, in ipath_tid_free()
572 pid_nr(pd->port_pid), tid); in ipath_tid_free()
610 static int ipath_set_part_key(struct ipath_portdata *pd, u16 key) in ipath_set_part_key() argument
612 struct ipath_devdata *dd = pd->port_dd; in ipath_set_part_key()
625 pd->port_port, key, dd->ipath_pkeys[0], in ipath_set_part_key()
633 pd->port_port); in ipath_set_part_key()
646 for (i = 0; i < ARRAY_SIZE(pd->port_pkeys); i++) { in ipath_set_part_key()
647 if (!pd->port_pkeys[i] && pidx == -1) in ipath_set_part_key()
649 if (pd->port_pkeys[i] == key) { in ipath_set_part_key()
652 pd->port_port, key); in ipath_set_part_key()
659 "can't set %x\n", pd->port_port, key); in ipath_set_part_key()
672 pd->port_pkeys[pidx] = key; in ipath_set_part_key()
675 pd->port_port, key, i, in ipath_set_part_key()
702 "can't set %x\n", pd->port_port, key); in ipath_set_part_key()
713 pd->port_pkeys[pidx] = dd->ipath_pkeys[i] = key; in ipath_set_part_key()
721 pd->port_port, key, i, pidx, in ipath_set_part_key()
731 "can't set %x\n", pd->port_port, key); in ipath_set_part_key()
748 static int ipath_manage_rcvq(struct ipath_portdata *pd, unsigned subport, in ipath_manage_rcvq() argument
751 struct ipath_devdata *dd = pd->port_dd; in ipath_manage_rcvq()
755 pd->port_port, subport); in ipath_manage_rcvq()
772 if (pd->port_rcvhdrtail_kvaddr) in ipath_manage_rcvq()
773 ipath_clear_rcvhdrtail(pd); in ipath_manage_rcvq()
774 set_bit(dd->ipath_r_portenable_shift + pd->port_port, in ipath_manage_rcvq()
777 clear_bit(dd->ipath_r_portenable_shift + pd->port_port, in ipath_manage_rcvq()
791 ipath_read_ureg32(dd, ur_rcvhdrtail, pd->port_port); in ipath_manage_rcvq()
798 static void ipath_clean_part_key(struct ipath_portdata *pd, in ipath_clean_part_key() argument
810 for (i = 0; i < ARRAY_SIZE(pd->port_pkeys); i++) { in ipath_clean_part_key()
811 if (!pd->port_pkeys[i]) in ipath_clean_part_key()
814 pd->port_pkeys[i]); in ipath_clean_part_key()
818 (pd->port_pkeys[i] & 0x7fff)) in ipath_clean_part_key()
823 pd->port_port, in ipath_clean_part_key()
824 pd->port_pkeys[i], j); in ipath_clean_part_key()
831 "but ref still %d\n", pd->port_port, in ipath_clean_part_key()
832 pd->port_pkeys[i], j, in ipath_clean_part_key()
836 pd->port_pkeys[i] = 0; in ipath_clean_part_key()
844 "new pkey reg %llx\n", pd->port_port, in ipath_clean_part_key()
858 static void init_user_egr_sizes(struct ipath_portdata *pd) in init_user_egr_sizes() argument
860 struct ipath_devdata *dd = pd->port_dd; in init_user_egr_sizes()
877 pd->port_rcvegrbuf_chunks = (egrcnt + egrperchunk - 1) / egrperchunk; in init_user_egr_sizes()
878 pd->port_rcvegrbufs_perchunk = egrperchunk; in init_user_egr_sizes()
879 pd->port_rcvegrbuf_size = size; in init_user_egr_sizes()
894 static int ipath_create_user_egr(struct ipath_portdata *pd) in ipath_create_user_egr() argument
896 struct ipath_devdata *dd = pd->port_dd; in ipath_create_user_egr()
912 egroff = (pd->port_port - 1) * egrcnt + dd->ipath_p0_rcvegrcnt; in ipath_create_user_egr()
917 chunk = pd->port_rcvegrbuf_chunks; in ipath_create_user_egr()
918 egrperchunk = pd->port_rcvegrbufs_perchunk; in ipath_create_user_egr()
919 size = pd->port_rcvegrbuf_size; in ipath_create_user_egr()
920 pd->port_rcvegrbuf = kmalloc(chunk * sizeof(pd->port_rcvegrbuf[0]), in ipath_create_user_egr()
922 if (!pd->port_rcvegrbuf) { in ipath_create_user_egr()
926 pd->port_rcvegrbuf_phys = in ipath_create_user_egr()
927 kmalloc(chunk * sizeof(pd->port_rcvegrbuf_phys[0]), in ipath_create_user_egr()
929 if (!pd->port_rcvegrbuf_phys) { in ipath_create_user_egr()
933 for (e = 0; e < pd->port_rcvegrbuf_chunks; e++) { in ipath_create_user_egr()
935 pd->port_rcvegrbuf[e] = dma_alloc_coherent( in ipath_create_user_egr()
936 &dd->pcidev->dev, size, &pd->port_rcvegrbuf_phys[e], in ipath_create_user_egr()
939 if (!pd->port_rcvegrbuf[e]) { in ipath_create_user_egr()
945 pd->port_rcvegr_phys = pd->port_rcvegrbuf_phys[0]; in ipath_create_user_egr()
947 for (e = chunk = 0; chunk < pd->port_rcvegrbuf_chunks; chunk++) { in ipath_create_user_egr()
948 dma_addr_t pa = pd->port_rcvegrbuf_phys[chunk]; in ipath_create_user_egr()
967 for (e = 0; e < pd->port_rcvegrbuf_chunks && in ipath_create_user_egr()
968 pd->port_rcvegrbuf[e]; e++) { in ipath_create_user_egr()
970 pd->port_rcvegrbuf[e], in ipath_create_user_egr()
971 pd->port_rcvegrbuf_phys[e]); in ipath_create_user_egr()
974 kfree(pd->port_rcvegrbuf_phys); in ipath_create_user_egr()
975 pd->port_rcvegrbuf_phys = NULL; in ipath_create_user_egr()
977 kfree(pd->port_rcvegrbuf); in ipath_create_user_egr()
978 pd->port_rcvegrbuf = NULL; in ipath_create_user_egr()
986 struct ipath_portdata *pd, unsigned len, int write_ok, in ipath_mmap_mem() argument
989 struct ipath_devdata *dd = pd->port_dd; in ipath_mmap_mem()
1018 "bytes r%c failed: %d\n", what, pd->port_port, in ipath_mmap_mem()
1022 "r%c\n", what, pd->port_port, pfn, len, in ipath_mmap_mem()
1058 struct ipath_portdata *pd, in mmap_piobufs() argument
1102 struct ipath_portdata *pd) in mmap_rcvegrbufs() argument
1104 struct ipath_devdata *dd = pd->port_dd; in mmap_rcvegrbufs()
1110 size = pd->port_rcvegrbuf_size; in mmap_rcvegrbufs()
1111 total_size = pd->port_rcvegrbuf_chunks * size; in mmap_rcvegrbufs()
1132 for (i = 0; i < pd->port_rcvegrbuf_chunks; i++, start += size) { in mmap_rcvegrbufs()
1133 pfn = virt_to_phys(pd->port_rcvegrbuf[i]) >> PAGE_SHIFT; in mmap_rcvegrbufs()
1167 struct ipath_portdata *pd, unsigned subport) in mmap_kvaddr() argument
1176 if (!pd->port_subport_cnt) in mmap_kvaddr()
1179 dd = pd->port_dd; in mmap_kvaddr()
1180 size = pd->port_rcvegrbuf_chunks * pd->port_rcvegrbuf_size; in mmap_kvaddr()
1187 if (pgaddr == cvt_kvaddr(pd->subport_uregbase)) { in mmap_kvaddr()
1188 addr = pd->subport_uregbase; in mmap_kvaddr()
1189 size = PAGE_SIZE * pd->port_subport_cnt; in mmap_kvaddr()
1190 } else if (pgaddr == cvt_kvaddr(pd->subport_rcvhdr_base)) { in mmap_kvaddr()
1191 addr = pd->subport_rcvhdr_base; in mmap_kvaddr()
1192 size = pd->port_rcvhdrq_size * pd->port_subport_cnt; in mmap_kvaddr()
1193 } else if (pgaddr == cvt_kvaddr(pd->subport_rcvegrbuf)) { in mmap_kvaddr()
1194 addr = pd->subport_rcvegrbuf; in mmap_kvaddr()
1195 size *= pd->port_subport_cnt; in mmap_kvaddr()
1196 } else if (pgaddr == cvt_kvaddr(pd->subport_uregbase + in mmap_kvaddr()
1198 addr = pd->subport_uregbase + PAGE_SIZE * subport; in mmap_kvaddr()
1200 } else if (pgaddr == cvt_kvaddr(pd->subport_rcvhdr_base + in mmap_kvaddr()
1201 pd->port_rcvhdrq_size * subport)) { in mmap_kvaddr()
1202 addr = pd->subport_rcvhdr_base + in mmap_kvaddr()
1203 pd->port_rcvhdrq_size * subport; in mmap_kvaddr()
1204 size = pd->port_rcvhdrq_size; in mmap_kvaddr()
1205 } else if (pgaddr == cvt_kvaddr(pd->subport_rcvegrbuf + in mmap_kvaddr()
1207 addr = pd->subport_rcvegrbuf + size * subport; in mmap_kvaddr()
1252 struct ipath_portdata *pd; in ipath_mmap() local
1258 pd = port_fp(fp); in ipath_mmap()
1259 if (!pd) { in ipath_mmap()
1263 dd = pd->port_dd; in ipath_mmap()
1287 pd->port_port, subport_fp(fp)); in ipath_mmap()
1294 ret = mmap_kvaddr(vma, pgaddr, pd, subport_fp(fp)); in ipath_mmap()
1301 ureg = dd->ipath_uregbase + dd->ipath_ureg_align * pd->port_port; in ipath_mmap()
1302 if (!pd->port_subport_cnt) { in ipath_mmap()
1304 piocnt = pd->port_piocnt; in ipath_mmap()
1305 piobufs = pd->port_piobufs; in ipath_mmap()
1308 piocnt = (pd->port_piocnt / pd->port_subport_cnt) + in ipath_mmap()
1309 (pd->port_piocnt % pd->port_subport_cnt); in ipath_mmap()
1310 piobufs = pd->port_piobufs + in ipath_mmap()
1311 dd->ipath_palign * (pd->port_piocnt - piocnt); in ipath_mmap()
1316 piocnt = pd->port_piocnt / pd->port_subport_cnt; in ipath_mmap()
1317 piobufs = pd->port_piobufs + dd->ipath_palign * piocnt * slave; in ipath_mmap()
1323 ret = mmap_piobufs(vma, dd, pd, piobufs, piocnt); in ipath_mmap()
1326 ret = ipath_mmap_mem(vma, pd, PAGE_SIZE, 0, in ipath_mmap()
1329 else if (pgaddr == pd->port_rcvegr_phys) in ipath_mmap()
1330 ret = mmap_rcvegrbufs(vma, pd); in ipath_mmap()
1331 else if (pgaddr == (u64) pd->port_rcvhdrq_phys) in ipath_mmap()
1337 ret = ipath_mmap_mem(vma, pd, pd->port_rcvhdrq_size, 1, in ipath_mmap()
1338 pd->port_rcvhdrq, in ipath_mmap()
1340 else if (pgaddr == (u64) pd->port_rcvhdrqtailaddr_phys) in ipath_mmap()
1342 ret = ipath_mmap_mem(vma, pd, PAGE_SIZE, 0, in ipath_mmap()
1343 pd->port_rcvhdrtail_kvaddr, in ipath_mmap()
1359 static unsigned ipath_poll_hdrqfull(struct ipath_portdata *pd) in ipath_poll_hdrqfull() argument
1363 if ((pd->poll_type & IPATH_POLL_TYPE_OVERFLOW) && in ipath_poll_hdrqfull()
1364 pd->port_hdrqfull != pd->port_hdrqfull_poll) { in ipath_poll_hdrqfull()
1366 pd->port_hdrqfull_poll = pd->port_hdrqfull; in ipath_poll_hdrqfull()
1372 static unsigned int ipath_poll_urgent(struct ipath_portdata *pd, in ipath_poll_urgent() argument
1379 dd = pd->port_dd; in ipath_poll_urgent()
1383 pollflag = ipath_poll_hdrqfull(pd); in ipath_poll_urgent()
1385 if (pd->port_urgent != pd->port_urgent_poll) { in ipath_poll_urgent()
1387 pd->port_urgent_poll = pd->port_urgent; in ipath_poll_urgent()
1392 set_bit(IPATH_PORT_WAITING_URG, &pd->port_flag); in ipath_poll_urgent()
1395 poll_wait(fp, &pd->port_wait, pt); in ipath_poll_urgent()
1401 static unsigned int ipath_poll_next(struct ipath_portdata *pd, in ipath_poll_next() argument
1410 dd = pd->port_dd; in ipath_poll_next()
1414 pollflag = ipath_poll_hdrqfull(pd); in ipath_poll_next()
1416 head = ipath_read_ureg32(dd, ur_rcvhdrhead, pd->port_port); in ipath_poll_next()
1417 if (pd->port_rcvhdrtail_kvaddr) in ipath_poll_next()
1418 tail = ipath_get_rcvhdrtail(pd); in ipath_poll_next()
1420 tail = ipath_read_ureg32(dd, ur_rcvhdrtail, pd->port_port); in ipath_poll_next()
1426 set_bit(IPATH_PORT_WAITING_RCV, &pd->port_flag); in ipath_poll_next()
1430 set_bit(pd->port_port + dd->ipath_r_intravail_shift, in ipath_poll_next()
1439 pd->port_port); in ipath_poll_next()
1441 poll_wait(fp, &pd->port_wait, pt); in ipath_poll_next()
1450 struct ipath_portdata *pd; in ipath_poll() local
1453 pd = port_fp(fp); in ipath_poll()
1454 if (!pd) in ipath_poll()
1456 else if (pd->poll_type & IPATH_POLL_TYPE_URGENT) in ipath_poll()
1457 pollflag = ipath_poll_urgent(pd, fp, pt); in ipath_poll()
1459 pollflag = ipath_poll_next(pd, fp, pt); in ipath_poll()
1497 struct ipath_portdata *pd, in init_subports() argument
1540 pd->subport_uregbase = vzalloc(PAGE_SIZE * num_subports); in init_subports()
1541 if (!pd->subport_uregbase) { in init_subports()
1548 pd->subport_rcvhdr_base = vzalloc(size); in init_subports()
1549 if (!pd->subport_rcvhdr_base) { in init_subports()
1554 pd->subport_rcvegrbuf = vzalloc(pd->port_rcvegrbuf_chunks * in init_subports()
1555 pd->port_rcvegrbuf_size * in init_subports()
1557 if (!pd->subport_rcvegrbuf) { in init_subports()
1562 pd->port_subport_cnt = uinfo->spu_subport_cnt; in init_subports()
1563 pd->port_subport_id = uinfo->spu_subport_id; in init_subports()
1564 pd->active_slaves = 1; in init_subports()
1565 set_bit(IPATH_PORT_MASTER_UNINIT, &pd->port_flag); in init_subports()
1569 vfree(pd->subport_rcvhdr_base); in init_subports()
1571 vfree(pd->subport_uregbase); in init_subports()
1572 pd->subport_uregbase = NULL; in init_subports()
1581 struct ipath_portdata *pd; in try_alloc_port() local
1584 if (!(pd = dd->ipath_pd[port])) { in try_alloc_port()
1587 pd = kzalloc(sizeof(struct ipath_portdata), GFP_KERNEL); in try_alloc_port()
1597 if (!pd || !ptmp) { in try_alloc_port()
1601 kfree(pd); in try_alloc_port()
1605 dd->ipath_pd[port] = pd; in try_alloc_port()
1611 if (!pd->port_cnt) { in try_alloc_port()
1612 pd->userversion = uinfo->spu_userversion; in try_alloc_port()
1613 init_user_egr_sizes(pd); in try_alloc_port()
1614 if ((ret = init_subports(dd, pd, uinfo)) != 0) in try_alloc_port()
1619 pd->port_cnt = 1; in try_alloc_port()
1620 port_fp(fp) = pd; in try_alloc_port()
1621 pd->port_pid = get_pid(task_pid(current)); in try_alloc_port()
1622 strlcpy(pd->port_comm, current->comm, sizeof(pd->port_comm)); in try_alloc_port()
1790 struct ipath_portdata *pd = dd->ipath_pd[i]; in find_shared_port() local
1793 if (!pd || !pd->port_cnt) in find_shared_port()
1796 if (pd->port_subport_id != uinfo->spu_subport_id) in find_shared_port()
1799 if (pd->port_subport_cnt != uinfo->spu_subport_cnt || in find_shared_port()
1800 pd->userversion != uinfo->spu_userversion || in find_shared_port()
1801 pd->port_cnt >= pd->port_subport_cnt) { in find_shared_port()
1805 port_fp(fp) = pd; in find_shared_port()
1806 subport_fp(fp) = pd->port_cnt++; in find_shared_port()
1807 pd->port_subpid[subport_fp(fp)] = in find_shared_port()
1810 pd->active_slaves |= 1 << subport_fp(fp); in find_shared_port()
1815 pd->port_comm, pid_nr(pd->port_pid), in find_shared_port()
1816 dd->ipath_unit, pd->port_port); in find_shared_port()
1884 const struct ipath_portdata *pd = fd->pd; in ipath_assign_port() local
1885 const struct ipath_devdata *dd = pd->port_dd; in ipath_assign_port()
1889 pd->port_port, in ipath_assign_port()
1907 struct ipath_portdata *pd = port_fp(fp); in ipath_do_user_init() local
1913 ret = wait_event_interruptible(pd->port_wait, in ipath_do_user_init()
1914 !test_bit(IPATH_PORT_MASTER_UNINIT, &pd->port_flag)); in ipath_do_user_init()
1918 dd = pd->port_dd; in ipath_do_user_init()
1929 if (pd->port_port <= dd->ipath_ports_extrabuf) in ipath_do_user_init()
1930 pd->port_piocnt = dd->ipath_pbufsport + 1; in ipath_do_user_init()
1932 pd->port_piocnt = dd->ipath_pbufsport; in ipath_do_user_init()
1935 if (pd->port_port <= dd->ipath_ports_extrabuf) in ipath_do_user_init()
1936 pd->port_pio_base = (dd->ipath_pbufsport + 1) in ipath_do_user_init()
1937 * (pd->port_port - 1); in ipath_do_user_init()
1939 pd->port_pio_base = dd->ipath_ports_extrabuf + in ipath_do_user_init()
1940 dd->ipath_pbufsport * (pd->port_port - 1); in ipath_do_user_init()
1941 pd->port_piobufs = dd->ipath_piobufbase + in ipath_do_user_init()
1942 pd->port_pio_base * dd->ipath_palign; in ipath_do_user_init()
1944 " first pio %u\n", pd->port_port, pd->port_piobufs, in ipath_do_user_init()
1945 pd->port_piocnt, pd->port_pio_base); in ipath_do_user_init()
1946 ipath_chg_pioavailkernel(dd, pd->port_pio_base, pd->port_piocnt, 0); in ipath_do_user_init()
1954 ret = ipath_create_rcvhdrq(dd, pd); in ipath_do_user_init()
1956 ret = ipath_create_user_egr(pd); in ipath_do_user_init()
1965 head32 = ipath_read_ureg32(dd, ur_rcvegrindextail, pd->port_port); in ipath_do_user_init()
1966 ipath_write_ureg(dd, ur_rcvegrindexhead, head32, pd->port_port); in ipath_do_user_init()
1967 pd->port_lastrcvhdrqtail = -1; in ipath_do_user_init()
1969 pd->port_port, head32); in ipath_do_user_init()
1970 pd->port_tidcursor = 0; /* start at beginning after open */ in ipath_do_user_init()
1973 pd->port_urgent = 0; in ipath_do_user_init()
1974 pd->port_urgent_poll = 0; in ipath_do_user_init()
1975 pd->port_hdrqfull_poll = pd->port_hdrqfull; in ipath_do_user_init()
1988 set_bit(dd->ipath_r_portenable_shift + pd->port_port, in ipath_do_user_init()
1991 if (pd->port_rcvhdrtail_kvaddr) in ipath_do_user_init()
1992 ipath_clear_rcvhdrtail(pd); in ipath_do_user_init()
2000 if (pd->port_subport_cnt) { in ipath_do_user_init()
2001 clear_bit(IPATH_PORT_MASTER_UNINIT, &pd->port_flag); in ipath_do_user_init()
2002 wake_up(&pd->port_wait); in ipath_do_user_init()
2015 static void unlock_expected_tids(struct ipath_portdata *pd) in unlock_expected_tids() argument
2017 struct ipath_devdata *dd = pd->port_dd; in unlock_expected_tids()
2018 int port_tidbase = pd->port_port * dd->ipath_rcvtidcnt; in unlock_expected_tids()
2022 pd->port_port); in unlock_expected_tids()
2038 pd->port_port, cnt); in unlock_expected_tids()
2051 struct ipath_portdata *pd; in ipath_close() local
2064 pd = fd->pd; in ipath_close()
2065 if (!pd) { in ipath_close()
2070 dd = pd->port_dd; in ipath_close()
2076 if (--pd->port_cnt) { in ipath_close()
2082 pd->active_slaves &= ~(1 << fd->subport); in ipath_close()
2083 put_pid(pd->port_subpid[fd->subport]); in ipath_close()
2084 pd->port_subpid[fd->subport] = NULL; in ipath_close()
2090 port = pd->port_port; in ipath_close()
2092 pid = pd->port_pid; in ipath_close()
2093 pd->port_pid = NULL; in ipath_close()
2096 if (pd->port_rcvwait_to || pd->port_piowait_to in ipath_close()
2097 || pd->port_rcvnowait || pd->port_pionowait) { in ipath_close()
2100 pd->port_port, pd->port_rcvwait_to, in ipath_close()
2101 pd->port_piowait_to, pd->port_rcvnowait, in ipath_close()
2102 pd->port_pionowait); in ipath_close()
2103 pd->port_rcvwait_to = pd->port_piowait_to = in ipath_close()
2104 pd->port_rcvnowait = pd->port_pionowait = 0; in ipath_close()
2106 if (pd->port_flag) { in ipath_close()
2108 pd->port_port, pd->port_flag); in ipath_close()
2109 pd->port_flag = 0; in ipath_close()
2116 clear_bit(pd->port_port + dd->ipath_r_intravail_shift, in ipath_close()
2125 ipath_clean_part_key(pd, dd); in ipath_close()
2139 pd->port_port, dd->ipath_dummy_hdrq_phys); in ipath_close()
2141 ipath_disarm_piobufs(dd, pd->port_pio_base, pd->port_piocnt); in ipath_close()
2142 ipath_chg_pioavailkernel(dd, pd->port_pio_base, in ipath_close()
2143 pd->port_piocnt, 1); in ipath_close()
2145 dd->ipath_f_clear_tids(dd, pd->port_port); in ipath_close()
2148 unlock_expected_tids(pd); in ipath_close()
2151 pd->port_comm, pid_nr(pid), in ipath_close()
2157 ipath_free_pddata(dd, pd); /* after releasing the mutex */ in ipath_close()
2164 static int ipath_port_info(struct ipath_portdata *pd, u16 subport, in ipath_port_info() argument
2174 info.unit = pd->port_dd->ipath_unit; in ipath_port_info()
2175 info.port = pd->port_port; in ipath_port_info()
2178 if (ipath_supports_subports(pd->userversion >> 16, in ipath_port_info()
2179 pd->userversion & 0xffff)) { in ipath_port_info()
2181 info.num_ports = pd->port_dd->ipath_cfgports - 1; in ipath_port_info()
2182 info.num_subports = pd->port_subport_cnt; in ipath_port_info()
2197 static int ipath_get_slave_info(struct ipath_portdata *pd, in ipath_get_slave_info() argument
2202 if (copy_to_user(slave_mask_addr, &pd->active_slaves, sizeof(u32))) in ipath_get_slave_info()
2240 struct ipath_portdata *pd; in ipath_write() local
2339 pd = port_fp(fp); in ipath_write()
2340 if (!pd && cmd.type != __IPATH_CMD_USER_INIT && in ipath_write()
2368 ret = ipath_manage_rcvq(pd, subport_fp(fp), cmd.cmd.recv_ctrl); in ipath_write()
2371 ret = ipath_port_info(pd, subport_fp(fp), in ipath_write()
2376 ret = ipath_tid_update(pd, fp, &cmd.cmd.tid_info); in ipath_write()
2379 ret = ipath_tid_free(pd, subport_fp(fp), &cmd.cmd.tid_info); in ipath_write()
2382 ret = ipath_set_part_key(pd, cmd.cmd.part_key); in ipath_write()
2385 ret = ipath_get_slave_info(pd, in ipath_write()
2390 ipath_force_pio_avail_update(pd->port_dd); in ipath_write()
2393 pd->poll_type = cmd.cmd.poll_type; in ipath_write()
2397 ipath_enable_armlaunch(pd->port_dd); in ipath_write()
2399 ipath_disable_armlaunch(pd->port_dd); in ipath_write()
2407 ret = ipath_sdma_get_complete(pd->port_dd, in ipath_write()
2425 struct ipath_portdata *pd = port_fp(filp); in ipath_write_iter() local
2431 return ipath_user_sdma_writev(pd->port_dd, pq, from->iov, from->nr_segs); in ipath_write_iter()