Lines Matching refs:egrbufs
395 rcd->egrbufs.count = round_down(rcvtids,
397 if (rcd->egrbufs.count > MAX_EAGER_ENTRIES) {
400 rcd->egrbufs.count = MAX_EAGER_ENTRIES;
404 rcd->ctxt, rcd->egrbufs.count);
414 rcd->egrbufs.buffers =
415 kcalloc_node(rcd->egrbufs.count,
416 sizeof(*rcd->egrbufs.buffers),
418 if (!rcd->egrbufs.buffers)
420 rcd->egrbufs.rcvtids =
421 kcalloc_node(rcd->egrbufs.count,
422 sizeof(*rcd->egrbufs.rcvtids),
424 if (!rcd->egrbufs.rcvtids)
426 rcd->egrbufs.size = eager_buffer_size;
432 if (rcd->egrbufs.size < hfi1_max_mtu) {
433 rcd->egrbufs.size = __roundup_pow_of_two(hfi1_max_mtu);
436 rcd->ctxt, rcd->egrbufs.size);
438 rcd->egrbufs.rcvtid_size = HFI1_MAX_EAGER_BUFFER_SIZE;
1106 kfree(rcd->egrbufs.rcvtids);
1107 rcd->egrbufs.rcvtids = NULL;
1109 for (e = 0; e < rcd->egrbufs.alloced; e++) {
1110 if (rcd->egrbufs.buffers[e].addr)
1112 rcd->egrbufs.buffers[e].len,
1113 rcd->egrbufs.buffers[e].addr,
1114 rcd->egrbufs.buffers[e].dma);
1116 kfree(rcd->egrbufs.buffers);
1117 rcd->egrbufs.alloced = 0;
1118 rcd->egrbufs.buffers = NULL;
1829 if (rcd->egrbufs.size < (round_mtu * dd->rcv_entries.group_size))
1830 rcd->egrbufs.size = round_mtu * dd->rcv_entries.group_size;
1836 rcd->egrbufs.rcvtid_size = round_mtu;
1842 if (rcd->egrbufs.size <= (1 << 20))
1843 rcd->egrbufs.rcvtid_size = max((unsigned long)round_mtu,
1844 rounddown_pow_of_two(rcd->egrbufs.size / 8));
1846 while (alloced_bytes < rcd->egrbufs.size &&
1847 rcd->egrbufs.alloced < rcd->egrbufs.count) {
1848 rcd->egrbufs.buffers[idx].addr =
1850 rcd->egrbufs.rcvtid_size,
1851 &rcd->egrbufs.buffers[idx].dma,
1853 if (rcd->egrbufs.buffers[idx].addr) {
1854 rcd->egrbufs.buffers[idx].len =
1855 rcd->egrbufs.rcvtid_size;
1856 rcd->egrbufs.rcvtids[rcd->egrbufs.alloced].addr =
1857 rcd->egrbufs.buffers[idx].addr;
1858 rcd->egrbufs.rcvtids[rcd->egrbufs.alloced].dma =
1859 rcd->egrbufs.buffers[idx].dma;
1860 rcd->egrbufs.alloced++;
1861 alloced_bytes += rcd->egrbufs.rcvtid_size;
1873 if (rcd->egrbufs.rcvtid_size == round_mtu ||
1881 new_size = rcd->egrbufs.rcvtid_size / 2;
1889 rcd->egrbufs.rcvtid_size = new_size;
1897 rcd->egrbufs.alloced = 0;
1899 if (i >= rcd->egrbufs.count)
1901 rcd->egrbufs.rcvtids[i].dma =
1902 rcd->egrbufs.buffers[j].dma + offset;
1903 rcd->egrbufs.rcvtids[i].addr =
1904 rcd->egrbufs.buffers[j].addr + offset;
1905 rcd->egrbufs.alloced++;
1906 if ((rcd->egrbufs.buffers[j].dma + offset +
1908 (rcd->egrbufs.buffers[j].dma +
1909 rcd->egrbufs.buffers[j].len)) {
1916 rcd->egrbufs.rcvtid_size = new_size;
1919 rcd->egrbufs.numbufs = idx;
1920 rcd->egrbufs.size = alloced_bytes;
1924 rcd->ctxt, rcd->egrbufs.alloced,
1925 rcd->egrbufs.rcvtid_size / 1024, rcd->egrbufs.size / 1024);
1932 rcd->egrbufs.threshold =
1933 rounddown_pow_of_two(rcd->egrbufs.alloced / 2);
1940 egrtop = roundup(rcd->egrbufs.alloced, dd->rcv_entries.group_size);
1947 rcd->ctxt, rcd->egrbufs.alloced, rcd->expected_count,
1950 if (!hfi1_rcvbuf_validate(rcd->egrbufs.rcvtid_size, PT_EAGER, &order)) {
1953 rcd->ctxt, rcd->egrbufs.rcvtid_size);
1958 for (idx = 0; idx < rcd->egrbufs.alloced; idx++) {
1960 rcd->egrbufs.rcvtids[idx].dma, order);
1967 for (idx = 0; idx < rcd->egrbufs.alloced &&
1968 rcd->egrbufs.buffers[idx].addr;
1971 rcd->egrbufs.buffers[idx].len,
1972 rcd->egrbufs.buffers[idx].addr,
1973 rcd->egrbufs.buffers[idx].dma);
1974 rcd->egrbufs.buffers[idx].addr = NULL;
1975 rcd->egrbufs.buffers[idx].dma = 0;
1976 rcd->egrbufs.buffers[idx].len = 0;