Lines Matching full:async

471 		struct efx_mcdi_async_param *async;  in efx_mcdi_release()  local
476 async = list_first_entry_or_null( in efx_mcdi_release()
478 if (async) { in efx_mcdi_release()
480 efx_mcdi_send_request(efx, async->cmd, in efx_mcdi_release()
481 (const efx_dword_t *)(async + 1), in efx_mcdi_release()
482 async->inlen); in efx_mcdi_release()
488 if (async) in efx_mcdi_release()
504 struct efx_mcdi_async_param *async; in efx_mcdi_complete_async() local
540 async = list_first_entry(&mcdi->async_list, in efx_mcdi_complete_async()
542 list_del(&async->list); in efx_mcdi_complete_async()
545 outbuf = (efx_dword_t *)(async + 1); in efx_mcdi_complete_async()
547 min(async->outlen, data_len)); in efx_mcdi_complete_async()
548 if (!timeout && rc && !async->quiet) { in efx_mcdi_complete_async()
552 efx_siena_mcdi_display_error(efx, async->cmd, async->inlen, in efx_mcdi_complete_async()
556 if (async->complete) in efx_mcdi_complete_async()
557 async->complete(efx, async->cookie, rc, outbuf, in efx_mcdi_complete_async()
558 min(async->outlen, data_len)); in efx_mcdi_complete_async()
559 kfree(async); in efx_mcdi_complete_async()
982 struct efx_mcdi_async_param *async; in _efx_mcdi_rpc_async() local
992 async = kmalloc(sizeof(*async) + ALIGN(max(inlen, outlen), 4), in _efx_mcdi_rpc_async()
994 if (!async) in _efx_mcdi_rpc_async()
997 async->cmd = cmd; in _efx_mcdi_rpc_async()
998 async->inlen = inlen; in _efx_mcdi_rpc_async()
999 async->outlen = outlen; in _efx_mcdi_rpc_async()
1000 async->quiet = quiet; in _efx_mcdi_rpc_async()
1001 async->complete = complete; in _efx_mcdi_rpc_async()
1002 async->cookie = cookie; in _efx_mcdi_rpc_async()
1003 memcpy(async + 1, inbuf, inlen); in _efx_mcdi_rpc_async()
1008 list_add_tail(&async->list, &mcdi->async_list); in _efx_mcdi_rpc_async()
1013 if (mcdi->async_list.next == &async->list && in _efx_mcdi_rpc_async()
1020 kfree(async); in _efx_mcdi_rpc_async()
1137 struct efx_mcdi_async_param *async, *next; in efx_siena_mcdi_flush_async() local
1159 /* Nothing else will access the async list now, so it is safe in efx_siena_mcdi_flush_async()
1164 list_for_each_entry_safe(async, next, &mcdi->async_list, list) { in efx_siena_mcdi_flush_async()
1165 if (async->complete) in efx_siena_mcdi_flush_async()
1166 async->complete(efx, async->cookie, -ENETDOWN, NULL, 0); in efx_siena_mcdi_flush_async()
1167 list_del(&async->list); in efx_siena_mcdi_flush_async()
1168 kfree(async); in efx_siena_mcdi_flush_async()