scat
tmp = scat(myself, T, sdup(myself, T, "("),
scat(myself, F, &str[s], ")"));
filter = scat(myself, T, filter, tmp);
filter = scat(myself, F, tmp, ")");
full = scat(myself, T, scat(myself, F, name, "."),
base = scat(myself, T, base,
scat(myself, F, ",dc=", &domain[l]));
base = scat(myself, T, base,
scat(myself, F, "dc=", &domain[l]));
*buf = scat(msg, T, *buf, newbuf);
char *scat(const char *msg, int deallocate, char *s1, char *s2);
attrs = scat(myself, F, "objectclass=nisdomainobject,",
tempstr = scat(myself,
tempstr = scat(myself, 0, str,
objPath = scat(myself, T, scat(myself, F, map, ","),
scat(myself, F, domain, "."));
cstr = scat(myself, F, commentSep, str);
value->dptr = scat(myself, F,
scat = &op->r_rdma_sg[0];
left = scat[i].swr.wr_nds;
*sge = scat[i].swr.wr_sgl[idx];
remote_addr += scat[i].swr.wr_sgl[idx].ds_len;
sent += scat[i].swr.wr_sgl[idx].ds_len;
struct rdsv3_scatterlist *scat, unsigned int off, unsigned int length,
ic, wr, scat, pos, off, length, send_flags);
ASSERT(length <= scat->length - off);
sgl = scat->sgl;
"Return: ic: %p, wr: %p scat: %p", ic, wr, scat);
struct rdsv3_scatterlist *scat;
scat = &rm->m_sg[sg];
for (; i < work_alloc && scat != &rm->m_sg[rm->m_count]; i++) {
rdsv3_ib_sg_dma_len(dev, scat) - off);
rdsv3_ib_xmit_populate_wr(ic, wr, pos, scat, off, len,
if (off == rdsv3_ib_sg_dma_len(dev, scat)) {
scat++;
uint_t num, struct rdsv3_rdma_sg scat[]);
if (scat == &rm->m_sg[rm->m_count]) {
struct rdsv3_rdma_sg scat[])
RDSV3_DPRINTF4("rdsv3_ib_dma_unmap_sg", "rdma_sg: %p", scat);
hca_hdl = scat[0].hca_hdl;
scat[0].hca_hdl = NULL;
if (scat[i].mihdl != NULL) {
num_sgl = (scat[i].iovec.bytes / PAGESIZE) + 2;
kmem_free(scat[i].swr.wr_sgl,
scat[i].swr.wr_sgl = NULL;
(void) ibt_unmap_mem_iov(hca_hdl, scat[i].mihdl);
scat[i].mihdl = NULL;
rdsv3_ib_dma_map_sg_rdma(struct ib_device *dev, struct rdsv3_rdma_sg scat[],
scat, num);
scat[0].hca_hdl = hca_hdl;
bp = ddi_umem_iosetup(scat[i].umem_cookie,
scat[i].iovec.addr & PAGEOFFSET, scat[i].iovec.bytes,
iov_attr.iov_wr_nds = (scat[i].iovec.bytes / PAGESIZE) + 2;
scat[i].swr.wr_sgl =
(ibt_all_wr_t *)&scat[i].swr, &scat[i].mihdl);
kmem_free(scat[i].swr.wr_sgl,
count += scat[i].swr.wr_nds;
for (j = 0; j < scat[i].swr.wr_nds; j++) {
scat[i].swr.wr_sgl[j].ds_va,
scat[i].swr.wr_sgl[j].ds_len);
scat[i].iovec.bytes, i, scat[i].swr.wr_nds);
rdsv3_ib_dma_unmap_sg_rdma(dev, num, scat);
struct rdsv3_rdma_sg *scat;
rdsv3_page_remainder_alloc(struct rdsv3_scatterlist *scat, unsigned long bytes,
ASSERT(rdsv3_sg_page(scat) == NULL);
rdsv3_sg_set_page(scat, page, PAGE_SIZE, 0);
rdsv3_sg_set_page(scat, page, bytes, 0);
bytes, rdsv3_sg_page(scat), scat->length);
rdsv3_ib_sg_dma_address(ib_device_t *dev, struct rdsv3_scatterlist *scat,
rdsv3_ib_dma_map_sg(struct ib_device *dev, struct rdsv3_scatterlist *scat,
RDSV3_DPRINTF4("rdsv3_ib_dma_map_sg", "scat %p, num: %d", scat, num);
s = first = &scat[0];
rdsv3_ib_dma_unmap_sg(ib_device_t *dev, struct rdsv3_scatterlist *scat,
ASSERT(scat->mihdl != NULL);
ASSERT(scat->sgl != NULL);
(void) ibt_unmap_mem_iov(ib_get_ibt_hca_hdl(dev), scat->mihdl);
kmem_free(scat->sgl, (num * 2) * sizeof (ibt_wr_ds_t));
scat->sgl = NULL;
scat->mihdl = NULL;
int rdsv3_page_remainder_alloc(struct rdsv3_scatterlist *scat,
#define rdsv3_sg_page(scat) (scat)->vaddr
#define rdsv3_sg_len(scat) (scat)->length
#define rdsv3_sg_set_page(scat, pg, len, off) \
(scat)->vaddr = (caddr_t)(pg + off); \
(scat)->length = len
#define rdsv3_ib_sg_dma_len(dev, scat) rdsv3_sg_len(scat)
*scat, uint_t num);
void rdsv3_ib_dma_unmap_sg(ib_device_t *dev, struct rdsv3_scatterlist *scat,