Lines Matching refs:dmaxfer
512 dhd_dmaxfer_t dmaxfer; /* for test/DMA loopback */ member
3251 prot->dmaxfer.srcmem.va = NULL;
3252 prot->dmaxfer.dstmem.va = NULL;
3253 prot->dmaxfer.in_progress = FALSE;
7268 void dmaxfer_free_dmaaddr(dhd_pub_t *dhd, dhd_dmaxfer_t *dmaxfer) argument
7270 if (dmaxfer == NULL)
7273 dhd_dma_buf_free(dhd, &dmaxfer->srcmem);
7274 dhd_dma_buf_free(dhd, &dmaxfer->dstmem);
7282 dhd_dmaxfer_t *dmaxfer = &prot->dmaxfer; local
7290 dmap->srcmem = &(dmaxfer->srcmem);
7291 dmap->dstmem = &(dmaxfer->dstmem);
7323 uint srcdelay, uint destdelay, dhd_dmaxfer_t *dmaxfer) argument
7326 if (!dmaxfer)
7330 dmaxfer_free_dmaaddr(dhd, dmaxfer);
7332 if (dhd_dma_buf_alloc(dhd, &dmaxfer->srcmem, len)) {
7336 if (dhd_dma_buf_alloc(dhd, &dmaxfer->dstmem, len + 8)) {
7337 dhd_dma_buf_free(dhd, &dmaxfer->srcmem);
7341 dmaxfer->len = len;
7353 while (i < dmaxfer->len) {
7354 ((uint8*)dmaxfer->srcmem.va)[i] = j % 256;
7361 OSL_CACHE_FLUSH(dmaxfer->srcmem.va, dmaxfer->len);
7363 dmaxfer->srcdelay = srcdelay;
7364 dmaxfer->destdelay = destdelay;
7381 prot->dmaxfer.status = cmplt->compl_hdr.status;
7382 OSL_CACHE_INV(prot->dmaxfer.dstmem.va, prot->dmaxfer.len);
7383 if (prot->dmaxfer.srcmem.va && prot->dmaxfer.dstmem.va) {
7384 if (memcmp(prot->dmaxfer.srcmem.va,
7385 prot->dmaxfer.dstmem.va, prot->dmaxfer.len) ||
7393 prot->dmaxfer.status = BCME_ERROR;
7395 prot->dmaxfer.srcmem.va, prot->dmaxfer.len);
7397 prot->dmaxfer.dstmem.va, prot->dmaxfer.len);
7400 switch (prot->dmaxfer.d11_lpbk) {
7426 dhd_prhex("XFER SRC: ", prot->dmaxfer.srcmem.va,
7427 prot->dmaxfer.len, DHD_INFO_VAL);
7428 dhd_prhex("XFER DST: ", prot->dmaxfer.dstmem.va,
7429 prot->dmaxfer.len, DHD_INFO_VAL);
7435 end_usec -= prot->dmaxfer.start_usec;
7437 prot->dmaxfer.time_taken = end_usec;
7439 prot->dmaxfer.len, (unsigned long)end_usec,
7440 (prot->dmaxfer.len * (1000 * 1000 / 1024) / (uint32)end_usec)));
7442 dhd->prot->dmaxfer.in_progress = FALSE;
7467 if (prot->dmaxfer.in_progress) {
7480 prot->dmaxfer.in_progress = TRUE;
7482 &prot->dmaxfer)) != BCME_OK) {
7483 prot->dmaxfer.in_progress = FALSE;
7492 dmaxfer_free_dmaaddr(dhd, &prot->dmaxfer);
7493 prot->dmaxfer.in_progress = FALSE;
7505 dmap->host_input_buf_addr.high = htol32(PHYSADDRHI(prot->dmaxfer.srcmem.pa));
7506 dmap->host_input_buf_addr.low = htol32(PHYSADDRLO(prot->dmaxfer.srcmem.pa));
7507 dmap->host_ouput_buf_addr.high = htol32(PHYSADDRHI(prot->dmaxfer.dstmem.pa));
7508 dmap->host_ouput_buf_addr.low = htol32(PHYSADDRLO(prot->dmaxfer.dstmem.pa));
7509 dmap->xfer_len = htol32(prot->dmaxfer.len);
7510 dmap->srcdelay = htol32(prot->dmaxfer.srcdelay);
7511 dmap->destdelay = htol32(prot->dmaxfer.destdelay);
7512 prot->dmaxfer.d11_lpbk = d11_lpbk;
7515 ((prot->dmaxfer.d11_lpbk & PCIE_DMA_XFER_FLG_D11_LPBK_MASK)
7517 prot->dmaxfer.start_usec = OSL_SYSUPTIME_US();
7534 if (prot->dmaxfer.in_progress)
7536 else if (prot->dmaxfer.status == 0)
7541 result->type = prot->dmaxfer.d11_lpbk;
7542 result->error_code = prot->dmaxfer.status;
7543 result->num_bytes = prot->dmaxfer.len;
7544 result->time_taken = prot->dmaxfer.time_taken;
7545 if (prot->dmaxfer.time_taken) {
7548 (prot->dmaxfer.len * (1000 * 1000 / 1024)) /
7549 (uint32)prot->dmaxfer.time_taken;