Lines Matching full:async
470 struct efx_mcdi_async_param *async; in efx_mcdi_release() local
475 async = list_first_entry_or_null( in efx_mcdi_release()
477 if (async) { in efx_mcdi_release()
479 efx_mcdi_send_request(efx, async->cmd, in efx_mcdi_release()
480 (const efx_dword_t *)(async + 1), in efx_mcdi_release()
481 async->inlen); in efx_mcdi_release()
487 if (async) in efx_mcdi_release()
503 struct efx_mcdi_async_param *async; in efx_mcdi_complete_async() local
539 async = list_first_entry(&mcdi->async_list, in efx_mcdi_complete_async()
541 list_del(&async->list); in efx_mcdi_complete_async()
544 outbuf = (efx_dword_t *)(async + 1); in efx_mcdi_complete_async()
546 min(async->outlen, data_len)); in efx_mcdi_complete_async()
547 if (!timeout && rc && !async->quiet) { in efx_mcdi_complete_async()
551 efx_mcdi_display_error(efx, async->cmd, async->inlen, errbuf, in efx_mcdi_complete_async()
555 if (async->complete) in efx_mcdi_complete_async()
556 async->complete(efx, async->cookie, rc, outbuf, in efx_mcdi_complete_async()
557 min(async->outlen, data_len)); in efx_mcdi_complete_async()
558 kfree(async); in efx_mcdi_complete_async()
981 struct efx_mcdi_async_param *async; in _efx_mcdi_rpc_async() local
991 async = kmalloc(sizeof(*async) + ALIGN(max(inlen, outlen), 4), in _efx_mcdi_rpc_async()
993 if (!async) in _efx_mcdi_rpc_async()
996 async->cmd = cmd; in _efx_mcdi_rpc_async()
997 async->inlen = inlen; in _efx_mcdi_rpc_async()
998 async->outlen = outlen; in _efx_mcdi_rpc_async()
999 async->quiet = quiet; in _efx_mcdi_rpc_async()
1000 async->complete = complete; in _efx_mcdi_rpc_async()
1001 async->cookie = cookie; in _efx_mcdi_rpc_async()
1002 memcpy(async + 1, inbuf, inlen); in _efx_mcdi_rpc_async()
1007 list_add_tail(&async->list, &mcdi->async_list); in _efx_mcdi_rpc_async()
1012 if (mcdi->async_list.next == &async->list && in _efx_mcdi_rpc_async()
1019 kfree(async); in _efx_mcdi_rpc_async()
1134 struct efx_mcdi_async_param *async, *next; in efx_mcdi_flush_async() local
1156 /* Nothing else will access the async list now, so it is safe in efx_mcdi_flush_async()
1161 list_for_each_entry_safe(async, next, &mcdi->async_list, list) { in efx_mcdi_flush_async()
1162 if (async->complete) in efx_mcdi_flush_async()
1163 async->complete(efx, async->cookie, -ENETDOWN, NULL, 0); in efx_mcdi_flush_async()
1164 list_del(&async->list); in efx_mcdi_flush_async()
1165 kfree(async); in efx_mcdi_flush_async()