Lines Matching refs:efx

49 static int efx_mcdi_drv_attach(struct efx_nic *efx, bool driver_operating,
51 static bool efx_mcdi_poll_once(struct efx_nic *efx);
52 static void efx_mcdi_abandon(struct efx_nic *efx);
61 int efx_mcdi_init(struct efx_nic *efx) in efx_mcdi_init() argument
67 efx->mcdi = kzalloc(sizeof(*efx->mcdi), GFP_KERNEL); in efx_mcdi_init()
68 if (!efx->mcdi) in efx_mcdi_init()
71 mcdi = efx_mcdi(efx); in efx_mcdi_init()
72 mcdi->efx = efx; in efx_mcdi_init()
89 (void) efx_mcdi_poll_reboot(efx); in efx_mcdi_init()
93 rc = efx_mcdi_handle_assertion(efx); in efx_mcdi_init()
100 rc = efx_mcdi_drv_attach(efx, true, &already_attached); in efx_mcdi_init()
102 netif_err(efx, probe, efx->net_dev, in efx_mcdi_init()
108 netif_err(efx, probe, efx->net_dev, in efx_mcdi_init()
111 if (efx->mcdi->fn_flags & in efx_mcdi_init()
113 efx->primary = efx; in efx_mcdi_init()
121 kfree(efx->mcdi); in efx_mcdi_init()
122 efx->mcdi = NULL; in efx_mcdi_init()
127 void efx_mcdi_detach(struct efx_nic *efx) in efx_mcdi_detach() argument
129 if (!efx->mcdi) in efx_mcdi_detach()
132 BUG_ON(efx->mcdi->iface.state != MCDI_STATE_QUIESCENT); in efx_mcdi_detach()
135 efx_mcdi_drv_attach(efx, false, NULL); in efx_mcdi_detach()
138 void efx_mcdi_fini(struct efx_nic *efx) in efx_mcdi_fini() argument
140 if (!efx->mcdi) in efx_mcdi_fini()
144 free_page((unsigned long)efx->mcdi->iface.logging_buffer); in efx_mcdi_fini()
147 kfree(efx->mcdi); in efx_mcdi_fini()
150 static void efx_mcdi_send_request(struct efx_nic *efx, unsigned cmd, in efx_mcdi_send_request() argument
153 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_send_request()
173 if (efx->type->mcdi_max_ver == 1) { in efx_mcdi_send_request()
224 netif_info(efx, hw, efx->net_dev, "MCDI RPC REQ:%s\n", buf); in efx_mcdi_send_request()
228 efx->type->mcdi_request(efx, hdr, hdr_len, inbuf, inlen); in efx_mcdi_send_request()
265 static void efx_mcdi_read_response_header(struct efx_nic *efx) in efx_mcdi_read_response_header() argument
267 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_read_response_header()
274 efx->type->mcdi_read_response(efx, &hdr, 0, 4); in efx_mcdi_read_response_header()
283 efx->type->mcdi_read_response(efx, &hdr, 4, 4); in efx_mcdi_read_response_header()
306 efx->type->mcdi_read_response(efx, &hdr, (i * 4), 4); in efx_mcdi_read_response_header()
312 efx->type->mcdi_read_response(efx, &hdr, in efx_mcdi_read_response_header()
318 netif_info(efx, hw, efx->net_dev, "MCDI RPC RESP:%s\n", buf); in efx_mcdi_read_response_header()
324 netif_err(efx, hw, efx->net_dev, "MC rebooted\n"); in efx_mcdi_read_response_header()
327 netif_err(efx, hw, efx->net_dev, in efx_mcdi_read_response_header()
332 efx->type->mcdi_read_response(efx, &hdr, mcdi->resp_hdr_len, 4); in efx_mcdi_read_response_header()
340 static bool efx_mcdi_poll_once(struct efx_nic *efx) in efx_mcdi_poll_once() argument
342 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_poll_once()
345 if (!efx->type->mcdi_poll_response(efx)) in efx_mcdi_poll_once()
349 efx_mcdi_read_response_header(efx); in efx_mcdi_poll_once()
355 static int efx_mcdi_poll(struct efx_nic *efx) in efx_mcdi_poll() argument
357 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_poll()
363 rc = efx_mcdi_poll_reboot(efx); in efx_mcdi_poll()
390 if (efx_mcdi_poll_once(efx)) in efx_mcdi_poll()
404 int efx_mcdi_poll_reboot(struct efx_nic *efx) in efx_mcdi_poll_reboot() argument
406 if (!efx->mcdi) in efx_mcdi_poll_reboot()
409 return efx->type->mcdi_poll_reboot(efx); in efx_mcdi_poll_reboot()
430 static int efx_mcdi_await_completion(struct efx_nic *efx) in efx_mcdi_await_completion() argument
432 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_await_completion()
447 return efx_mcdi_poll(efx); in efx_mcdi_await_completion()
471 struct efx_nic *efx = mcdi->efx; in efx_mcdi_release() local
479 efx_mcdi_send_request(efx, async->cmd, in efx_mcdi_release()
502 struct efx_nic *efx = mcdi->efx; in efx_mcdi_complete_async() local
545 efx->type->mcdi_read_response(efx, outbuf, hdr_len, in efx_mcdi_complete_async()
549 efx->type->mcdi_read_response(efx, errbuf, hdr_len, in efx_mcdi_complete_async()
551 efx_mcdi_display_error(efx, async->cmd, async->inlen, errbuf, in efx_mcdi_complete_async()
556 async->complete(efx, async->cookie, rc, outbuf, in efx_mcdi_complete_async()
565 static void efx_mcdi_ev_cpl(struct efx_nic *efx, unsigned int seqno, in efx_mcdi_ev_cpl() argument
568 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_ev_cpl()
578 netif_err(efx, hw, efx->net_dev, in efx_mcdi_ev_cpl()
582 if (efx->type->mcdi_max_ver >= 2) { in efx_mcdi_ev_cpl()
584 efx_mcdi_read_response_header(efx); in efx_mcdi_ev_cpl()
617 efx_mcdi_check_supported(struct efx_nic *efx, unsigned int cmd, size_t inlen) in efx_mcdi_check_supported() argument
619 if (efx->type->mcdi_max_ver < 0 || in efx_mcdi_check_supported()
620 (efx->type->mcdi_max_ver < 2 && in efx_mcdi_check_supported()
625 (efx->type->mcdi_max_ver < 2 && in efx_mcdi_check_supported()
632 static bool efx_mcdi_get_proxy_handle(struct efx_nic *efx, in efx_mcdi_get_proxy_handle() argument
642 efx->type->mcdi_read_response(efx, testbuf, hdr_len, buflen); in efx_mcdi_get_proxy_handle()
651 static int _efx_mcdi_rpc_finish(struct efx_nic *efx, unsigned int cmd, in _efx_mcdi_rpc_finish() argument
657 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in _efx_mcdi_rpc_finish()
662 rc = efx_mcdi_poll(efx); in _efx_mcdi_rpc_finish()
664 rc = efx_mcdi_await_completion(efx); in _efx_mcdi_rpc_finish()
667 netif_err(efx, hw, efx->net_dev, in _efx_mcdi_rpc_finish()
671 if (mcdi->mode == MCDI_MODE_EVENTS && efx_mcdi_poll_once(efx)) { in _efx_mcdi_rpc_finish()
672 netif_err(efx, hw, efx->net_dev, in _efx_mcdi_rpc_finish()
677 efx_mcdi_abandon(efx); in _efx_mcdi_rpc_finish()
713 efx->type->mcdi_read_response(efx, outbuf, hdr_len, in _efx_mcdi_rpc_finish()
718 efx->type->mcdi_read_response(efx, errbuf, hdr_len, err_len); in _efx_mcdi_rpc_finish()
723 netif_err(efx, hw, efx->net_dev, "MC reboot detected\n"); in _efx_mcdi_rpc_finish()
724 netif_dbg(efx, hw, efx->net_dev, "MC rebooted during command %d rc %d\n", in _efx_mcdi_rpc_finish()
726 if (efx->type->mcdi_reboot_detected) in _efx_mcdi_rpc_finish()
727 efx->type->mcdi_reboot_detected(efx); in _efx_mcdi_rpc_finish()
728 efx_schedule_reset(efx, RESET_TYPE_MC_FAILURE); in _efx_mcdi_rpc_finish()
730 efx_mcdi_get_proxy_handle(efx, hdr_len, data_len, in _efx_mcdi_rpc_finish()
736 efx_mcdi_display_error(efx, cmd, inlen, errbuf, err_len, in _efx_mcdi_rpc_finish()
742 efx_mcdi_poll_reboot(efx); in _efx_mcdi_rpc_finish()
761 static void efx_mcdi_ev_proxy_response(struct efx_nic *efx, in efx_mcdi_ev_proxy_response() argument
764 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_ev_proxy_response()
777 static int efx_mcdi_proxy_wait(struct efx_nic *efx, u32 handle, bool quiet) in efx_mcdi_proxy_wait() argument
779 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_proxy_wait()
789 netif_dbg(efx, hw, efx->net_dev, in efx_mcdi_proxy_wait()
793 netif_warn(efx, hw, efx->net_dev, in efx_mcdi_proxy_wait()
802 static int _efx_mcdi_rpc(struct efx_nic *efx, unsigned int cmd, in _efx_mcdi_rpc() argument
816 rc = efx_mcdi_rpc_start(efx, cmd, inbuf, inlen); in _efx_mcdi_rpc()
820 rc = _efx_mcdi_rpc_finish(efx, cmd, inlen, outbuf, outlen, in _efx_mcdi_rpc()
828 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in _efx_mcdi_rpc()
830 netif_dbg(efx, hw, efx->net_dev, in _efx_mcdi_rpc()
833 rc = efx_mcdi_proxy_wait(efx, proxy_handle, quiet); in _efx_mcdi_rpc()
836 netif_dbg(efx, hw, efx->net_dev, in _efx_mcdi_rpc()
841 efx_mcdi_send_request(efx, cmd, inbuf, inlen); in _efx_mcdi_rpc()
843 rc = _efx_mcdi_rpc_finish(efx, cmd, inlen, in _efx_mcdi_rpc()
847 netif_cond_dbg(efx, hw, efx->net_dev, rc == -EPERM, err, in _efx_mcdi_rpc()
852 efx_schedule_reset(efx, RESET_TYPE_MC_FAILURE); in _efx_mcdi_rpc()
860 static int _efx_mcdi_rpc_evb_retry(struct efx_nic *efx, unsigned cmd, in _efx_mcdi_rpc_evb_retry() argument
868 rc = _efx_mcdi_rpc(efx, cmd, inbuf, inlen, in _efx_mcdi_rpc_evb_retry()
872 efx->type->is_vf) { in _efx_mcdi_rpc_evb_retry()
880 netif_dbg(efx, hw, efx->net_dev, in _efx_mcdi_rpc_evb_retry()
886 rc = _efx_mcdi_rpc(efx, cmd, inbuf, inlen, in _efx_mcdi_rpc_evb_retry()
897 efx_mcdi_display_error(efx, cmd, inlen, in _efx_mcdi_rpc_evb_retry()
927 int efx_mcdi_rpc(struct efx_nic *efx, unsigned cmd, in efx_mcdi_rpc() argument
932 return _efx_mcdi_rpc_evb_retry(efx, cmd, inbuf, inlen, outbuf, outlen, in efx_mcdi_rpc()
944 int efx_mcdi_rpc_quiet(struct efx_nic *efx, unsigned cmd, in efx_mcdi_rpc_quiet() argument
949 return _efx_mcdi_rpc_evb_retry(efx, cmd, inbuf, inlen, outbuf, outlen, in efx_mcdi_rpc_quiet()
953 int efx_mcdi_rpc_start(struct efx_nic *efx, unsigned cmd, in efx_mcdi_rpc_start() argument
956 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_rpc_start()
959 rc = efx_mcdi_check_supported(efx, cmd, inlen); in efx_mcdi_rpc_start()
963 if (efx->mc_bist_for_other_fn) in efx_mcdi_rpc_start()
970 efx_mcdi_send_request(efx, cmd, inbuf, inlen); in efx_mcdi_rpc_start()
974 static int _efx_mcdi_rpc_async(struct efx_nic *efx, unsigned int cmd, in _efx_mcdi_rpc_async() argument
980 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in _efx_mcdi_rpc_async()
984 rc = efx_mcdi_check_supported(efx, cmd, inlen); in _efx_mcdi_rpc_async()
988 if (efx->mc_bist_for_other_fn) in _efx_mcdi_rpc_async()
1014 efx_mcdi_send_request(efx, cmd, inbuf, inlen); in _efx_mcdi_rpc_async()
1049 efx_mcdi_rpc_async(struct efx_nic *efx, unsigned int cmd, in efx_mcdi_rpc_async() argument
1053 return _efx_mcdi_rpc_async(efx, cmd, inbuf, inlen, outlen, complete, in efx_mcdi_rpc_async()
1057 int efx_mcdi_rpc_async_quiet(struct efx_nic *efx, unsigned int cmd, in efx_mcdi_rpc_async_quiet() argument
1062 return _efx_mcdi_rpc_async(efx, cmd, inbuf, inlen, outlen, complete, in efx_mcdi_rpc_async_quiet()
1066 int efx_mcdi_rpc_finish(struct efx_nic *efx, unsigned cmd, size_t inlen, in efx_mcdi_rpc_finish() argument
1070 return _efx_mcdi_rpc_finish(efx, cmd, inlen, outbuf, outlen, in efx_mcdi_rpc_finish()
1074 int efx_mcdi_rpc_finish_quiet(struct efx_nic *efx, unsigned cmd, size_t inlen, in efx_mcdi_rpc_finish_quiet() argument
1078 return _efx_mcdi_rpc_finish(efx, cmd, inlen, outbuf, outlen, in efx_mcdi_rpc_finish_quiet()
1082 void efx_mcdi_display_error(struct efx_nic *efx, unsigned cmd, in efx_mcdi_display_error() argument
1092 netif_cond_dbg(efx, hw, efx->net_dev, rc == -EPERM, err, in efx_mcdi_display_error()
1101 void efx_mcdi_mode_poll(struct efx_nic *efx) in efx_mcdi_mode_poll() argument
1105 if (!efx->mcdi) in efx_mcdi_mode_poll()
1108 mcdi = efx_mcdi(efx); in efx_mcdi_mode_poll()
1132 void efx_mcdi_flush_async(struct efx_nic *efx) in efx_mcdi_flush_async() argument
1137 if (!efx->mcdi) in efx_mcdi_flush_async()
1140 mcdi = efx_mcdi(efx); in efx_mcdi_flush_async()
1152 efx_mcdi_poll(efx); in efx_mcdi_flush_async()
1163 async->complete(efx, async->cookie, -ENETDOWN, NULL, 0); in efx_mcdi_flush_async()
1169 void efx_mcdi_mode_event(struct efx_nic *efx) in efx_mcdi_mode_event() argument
1173 if (!efx->mcdi) in efx_mcdi_mode_event()
1176 mcdi = efx_mcdi(efx); in efx_mcdi_mode_event()
1196 static void efx_mcdi_ev_death(struct efx_nic *efx, int rc) in efx_mcdi_ev_death() argument
1198 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_ev_death()
1239 rc = efx_mcdi_poll_reboot(efx); in efx_mcdi_ev_death()
1251 if (!rc && efx->type->mcdi_reboot_detected) in efx_mcdi_ev_death()
1252 efx->type->mcdi_reboot_detected(efx); in efx_mcdi_ev_death()
1257 efx_schedule_reset(efx, RESET_TYPE_MC_FAILURE); in efx_mcdi_ev_death()
1268 static void efx_mcdi_ev_bist(struct efx_nic *efx) in efx_mcdi_ev_bist() argument
1270 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_ev_bist()
1273 efx->mc_bist_for_other_fn = true; in efx_mcdi_ev_bist()
1285 efx_schedule_reset(efx, RESET_TYPE_MC_BIST); in efx_mcdi_ev_bist()
1292 static void efx_mcdi_abandon(struct efx_nic *efx) in efx_mcdi_abandon() argument
1294 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_abandon()
1298 netif_dbg(efx, hw, efx->net_dev, "MCDI is timing out; trying to recover\n"); in efx_mcdi_abandon()
1299 efx_schedule_reset(efx, RESET_TYPE_MCDI_TIMEOUT); in efx_mcdi_abandon()
1302 static void efx_handle_drain_event(struct efx_nic *efx) in efx_handle_drain_event() argument
1304 if (atomic_dec_and_test(&efx->active_queues)) in efx_handle_drain_event()
1305 wake_up(&efx->flush_wq); in efx_handle_drain_event()
1307 WARN_ON(atomic_read(&efx->active_queues) < 0); in efx_handle_drain_event()
1314 struct efx_nic *efx = channel->efx; in efx_mcdi_process_event() local
1320 netif_err(efx, hw, efx->net_dev, in efx_mcdi_process_event()
1322 efx_mcdi_ev_death(efx, -EINTR); in efx_mcdi_process_event()
1326 netif_info(efx, wol, efx->net_dev, "MCDI PM event.\n"); in efx_mcdi_process_event()
1330 efx_mcdi_ev_cpl(efx, in efx_mcdi_process_event()
1337 efx_mcdi_process_link_change(efx, event); in efx_mcdi_process_event()
1340 efx_sensor_event(efx, event); in efx_mcdi_process_event()
1343 netif_dbg(efx, hw, efx->net_dev, in efx_mcdi_process_event()
1348 netif_info(efx, hw, efx->net_dev, "MC Reboot\n"); in efx_mcdi_process_event()
1349 efx_mcdi_ev_death(efx, -EIO); in efx_mcdi_process_event()
1352 netif_info(efx, hw, efx->net_dev, "MC entered BIST mode\n"); in efx_mcdi_process_event()
1353 efx_mcdi_ev_bist(efx); in efx_mcdi_process_event()
1359 if (efx->type->sriov_flr) in efx_mcdi_process_event()
1360 efx->type->sriov_flr(efx, in efx_mcdi_process_event()
1366 efx_ptp_event(efx, event); in efx_mcdi_process_event()
1382 efx_handle_drain_event(efx); in efx_mcdi_process_event()
1386 netif_err(efx, hw, efx->net_dev, in efx_mcdi_process_event()
1390 efx_schedule_reset(efx, RESET_TYPE_DMA_ERROR); in efx_mcdi_process_event()
1393 efx_mcdi_ev_proxy_response(efx, in efx_mcdi_process_event()
1398 netif_err(efx, hw, efx->net_dev, in efx_mcdi_process_event()
1411 void efx_mcdi_print_fwver(struct efx_nic *efx, char *buf, size_t len) in efx_mcdi_print_fwver() argument
1420 rc = efx_mcdi_rpc(efx, MC_CMD_GET_VERSION, NULL, 0, in efx_mcdi_print_fwver()
1436 if (efx->type->print_additional_fwver) in efx_mcdi_print_fwver()
1437 offset += efx->type->print_additional_fwver(efx, buf + offset, in efx_mcdi_print_fwver()
1450 netif_err(efx, probe, efx->net_dev, "%s: failed rc=%d\n", __func__, rc); in efx_mcdi_print_fwver()
1454 static int efx_mcdi_drv_attach(struct efx_nic *efx, bool driver_operating, in efx_mcdi_drv_attach() argument
1467 rc = efx_mcdi_rpc_quiet(efx, MC_CMD_DRV_ATTACH, inbuf, sizeof(inbuf), in efx_mcdi_drv_attach()
1474 netif_dbg(efx, probe, efx->net_dev, in efx_mcdi_drv_attach()
1478 rc = efx_mcdi_rpc_quiet(efx, MC_CMD_DRV_ATTACH, inbuf, in efx_mcdi_drv_attach()
1483 efx_mcdi_display_error(efx, MC_CMD_DRV_ATTACH, sizeof(inbuf), in efx_mcdi_drv_attach()
1494 efx->mcdi->fn_flags = in efx_mcdi_drv_attach()
1499 efx->mcdi->fn_flags = in efx_mcdi_drv_attach()
1502 (efx_port_num(efx) == 0) << in efx_mcdi_drv_attach()
1517 netif_err(efx, probe, efx->net_dev, "%s: failed rc=%d\n", __func__, rc); in efx_mcdi_drv_attach()
1521 int efx_mcdi_get_board_cfg(struct efx_nic *efx, u8 *mac_address, in efx_mcdi_get_board_cfg() argument
1526 int port_num = efx_port_num(efx); in efx_mcdi_get_board_cfg()
1534 rc = efx_mcdi_rpc(efx, MC_CMD_GET_BOARD_CFG, NULL, 0, in efx_mcdi_get_board_cfg()
1571 netif_err(efx, hw, efx->net_dev, "%s: failed rc=%d len=%d\n", in efx_mcdi_get_board_cfg()
1577 int efx_mcdi_log_ctrl(struct efx_nic *efx, bool evq, bool uart, u32 dest_evq) in efx_mcdi_log_ctrl() argument
1593 rc = efx_mcdi_rpc(efx, MC_CMD_LOG_CTRL, inbuf, sizeof(inbuf), in efx_mcdi_log_ctrl()
1598 int efx_mcdi_nvram_types(struct efx_nic *efx, u32 *nvram_types_out) in efx_mcdi_nvram_types() argument
1606 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_TYPES, NULL, 0, in efx_mcdi_nvram_types()
1619 netif_err(efx, hw, efx->net_dev, "%s: failed rc=%d\n", in efx_mcdi_nvram_types()
1625 static int efx_new_mcdi_nvram_types(struct efx_nic *efx, u32 *number, in efx_new_mcdi_nvram_types() argument
1638 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_PARTITIONS, NULL, 0, in efx_new_mcdi_nvram_types()
1653 int efx_mcdi_nvram_info(struct efx_nic *efx, unsigned int type, in efx_mcdi_nvram_info() argument
1664 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_INFO, inbuf, sizeof(inbuf), in efx_mcdi_nvram_info()
1680 netif_err(efx, hw, efx->net_dev, "%s: failed rc=%d\n", __func__, rc); in efx_mcdi_nvram_info()
1684 static int efx_mcdi_nvram_test(struct efx_nic *efx, unsigned int type) in efx_mcdi_nvram_test() argument
1692 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_TEST, inbuf, sizeof(inbuf), in efx_mcdi_nvram_test()
1707 int efx_new_mcdi_nvram_test_all(struct efx_nic *efx) in efx_new_mcdi_nvram_test_all() argument
1717 rc = efx_new_mcdi_nvram_types(efx, &number, nvram_types); in efx_new_mcdi_nvram_test_all()
1729 rc = efx_mcdi_nvram_test(efx, nvram_types[i]); in efx_new_mcdi_nvram_test_all()
1739 int efx_mcdi_nvram_test_all(struct efx_nic *efx) in efx_mcdi_nvram_test_all() argument
1745 rc = efx_mcdi_nvram_types(efx, &nvram_types); in efx_mcdi_nvram_test_all()
1752 rc = efx_mcdi_nvram_test(efx, type); in efx_mcdi_nvram_test_all()
1763 netif_err(efx, hw, efx->net_dev, "%s: failed type=%u\n", in efx_mcdi_nvram_test_all()
1766 netif_err(efx, hw, efx->net_dev, "%s: failed rc=%d\n", __func__, rc); in efx_mcdi_nvram_test_all()
1773 static int efx_mcdi_read_assertion(struct efx_nic *efx) in efx_mcdi_read_assertion() argument
1791 rc = efx_mcdi_rpc_quiet(efx, MC_CMD_GET_ASSERTS, in efx_mcdi_read_assertion()
1799 efx_mcdi_display_error(efx, MC_CMD_GET_ASSERTS, in efx_mcdi_read_assertion()
1819 netif_err(efx, hw, efx->net_dev, in efx_mcdi_read_assertion()
1828 netif_err(efx, hw, efx->net_dev, "R%.2d (?): 0x%.8x\n", in efx_mcdi_read_assertion()
1836 static int efx_mcdi_exit_assertion(struct efx_nic *efx) in efx_mcdi_exit_assertion() argument
1850 rc = efx_mcdi_rpc_quiet(efx, MC_CMD_REBOOT, inbuf, MC_CMD_REBOOT_IN_LEN, in efx_mcdi_exit_assertion()
1855 efx_mcdi_display_error(efx, MC_CMD_REBOOT, MC_CMD_REBOOT_IN_LEN, in efx_mcdi_exit_assertion()
1860 int efx_mcdi_handle_assertion(struct efx_nic *efx) in efx_mcdi_handle_assertion() argument
1864 rc = efx_mcdi_read_assertion(efx); in efx_mcdi_handle_assertion()
1868 return efx_mcdi_exit_assertion(efx); in efx_mcdi_handle_assertion()
1871 int efx_mcdi_set_id_led(struct efx_nic *efx, enum efx_led_mode mode) in efx_mcdi_set_id_led() argument
1883 return efx_mcdi_rpc(efx, MC_CMD_SET_ID_LED, inbuf, sizeof(inbuf), NULL, 0, NULL); in efx_mcdi_set_id_led()
1886 static int efx_mcdi_reset_func(struct efx_nic *efx) in efx_mcdi_reset_func() argument
1894 rc = efx_mcdi_rpc(efx, MC_CMD_ENTITY_RESET, inbuf, sizeof(inbuf), in efx_mcdi_reset_func()
1899 static int efx_mcdi_reset_mc(struct efx_nic *efx) in efx_mcdi_reset_mc() argument
1906 rc = efx_mcdi_rpc(efx, MC_CMD_REBOOT, inbuf, sizeof(inbuf), in efx_mcdi_reset_mc()
1921 int efx_mcdi_reset(struct efx_nic *efx, enum reset_type method) in efx_mcdi_reset() argument
1927 rc = pci_reset_function(efx->pci_dev); in efx_mcdi_reset()
1931 if (efx->mcdi) { in efx_mcdi_reset()
1932 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_reset()
1939 rc = efx_mcdi_handle_assertion(efx); in efx_mcdi_reset()
1946 return efx_mcdi_reset_mc(efx); in efx_mcdi_reset()
1948 return efx_mcdi_reset_func(efx); in efx_mcdi_reset()
1951 static int efx_mcdi_wol_filter_set(struct efx_nic *efx, u32 type, in efx_mcdi_wol_filter_set() argument
1964 rc = efx_mcdi_rpc(efx, MC_CMD_WOL_FILTER_SET, inbuf, sizeof(inbuf), in efx_mcdi_wol_filter_set()
1980 netif_err(efx, hw, efx->net_dev, "%s: failed rc=%d\n", __func__, rc); in efx_mcdi_wol_filter_set()
1987 efx_mcdi_wol_filter_set_magic(struct efx_nic *efx, const u8 *mac, int *id_out) in efx_mcdi_wol_filter_set_magic() argument
1989 return efx_mcdi_wol_filter_set(efx, MC_CMD_WOL_TYPE_MAGIC, mac, id_out); in efx_mcdi_wol_filter_set_magic()
1993 int efx_mcdi_wol_filter_get_magic(struct efx_nic *efx, int *id_out) in efx_mcdi_wol_filter_get_magic() argument
1999 rc = efx_mcdi_rpc(efx, MC_CMD_WOL_FILTER_GET, NULL, 0, in efx_mcdi_wol_filter_get_magic()
2015 netif_err(efx, hw, efx->net_dev, "%s: failed rc=%d\n", __func__, rc); in efx_mcdi_wol_filter_get_magic()
2020 int efx_mcdi_wol_filter_remove(struct efx_nic *efx, int id) in efx_mcdi_wol_filter_remove() argument
2027 rc = efx_mcdi_rpc(efx, MC_CMD_WOL_FILTER_REMOVE, inbuf, sizeof(inbuf), in efx_mcdi_wol_filter_remove()
2032 int efx_mcdi_flush_rxqs(struct efx_nic *efx) in efx_mcdi_flush_rxqs() argument
2044 efx_for_each_channel(channel, efx) { in efx_mcdi_flush_rxqs()
2048 atomic_dec(&efx->rxq_flush_pending); in efx_mcdi_flush_rxqs()
2057 rc = efx_mcdi_rpc(efx, MC_CMD_FLUSH_RX_QUEUES, inbuf, in efx_mcdi_flush_rxqs()
2064 int efx_mcdi_wol_filter_reset(struct efx_nic *efx) in efx_mcdi_wol_filter_reset() argument
2068 rc = efx_mcdi_rpc(efx, MC_CMD_WOL_FILTER_RESET, NULL, 0, NULL, 0, NULL); in efx_mcdi_wol_filter_reset()
2072 int efx_mcdi_set_workaround(struct efx_nic *efx, u32 type, bool enabled, in efx_mcdi_set_workaround() argument
2083 rc = efx_mcdi_rpc(efx, MC_CMD_WORKAROUND, inbuf, sizeof(inbuf), in efx_mcdi_set_workaround()
2099 int efx_mcdi_get_workarounds(struct efx_nic *efx, unsigned int *impl_out, in efx_mcdi_get_workarounds() argument
2106 rc = efx_mcdi_rpc(efx, MC_CMD_GET_WORKAROUNDS, NULL, 0, in efx_mcdi_get_workarounds()
2128 netif_cond_dbg(efx, hw, efx->net_dev, rc == -ENOSYS, err, in efx_mcdi_get_workarounds()
2137 static int efx_mcdi_nvram_update_start(struct efx_nic *efx, unsigned int type) in efx_mcdi_nvram_update_start() argument
2149 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_UPDATE_START, inbuf, sizeof(inbuf), in efx_mcdi_nvram_update_start()
2155 static int efx_mcdi_nvram_read(struct efx_nic *efx, unsigned int type, in efx_mcdi_nvram_read() argument
2170 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_READ, inbuf, sizeof(inbuf), in efx_mcdi_nvram_read()
2179 static int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, in efx_mcdi_nvram_write() argument
2193 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_WRITE, inbuf, in efx_mcdi_nvram_write()
2199 static int efx_mcdi_nvram_erase(struct efx_nic *efx, unsigned int type, in efx_mcdi_nvram_erase() argument
2211 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_ERASE, inbuf, sizeof(inbuf), in efx_mcdi_nvram_erase()
2216 static int efx_mcdi_nvram_update_finish(struct efx_nic *efx, unsigned int type) in efx_mcdi_nvram_update_finish() argument
2229 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_UPDATE_FINISH, inbuf, sizeof(inbuf), in efx_mcdi_nvram_update_finish()
2234 netif_err(efx, drv, efx->net_dev, in efx_mcdi_nvram_update_finish()
2257 netif_err(efx, drv, efx->net_dev, in efx_mcdi_nvram_update_finish()
2270 struct efx_nic *efx = mtd->priv; in efx_mcdi_mtd_read() local
2278 rc = efx_mcdi_nvram_read(efx, part->nvram_type, offset, in efx_mcdi_mtd_read()
2293 struct efx_nic *efx = mtd->priv; in efx_mcdi_mtd_erase() local
2300 rc = efx_mcdi_nvram_update_start(efx, part->nvram_type); in efx_mcdi_mtd_erase()
2310 rc = efx_mcdi_nvram_erase(efx, part->nvram_type, offset, in efx_mcdi_mtd_erase()
2324 struct efx_nic *efx = mtd->priv; in efx_mcdi_mtd_write() local
2331 rc = efx_mcdi_nvram_update_start(efx, part->nvram_type); in efx_mcdi_mtd_write()
2339 rc = efx_mcdi_nvram_write(efx, part->nvram_type, offset, in efx_mcdi_mtd_write()
2354 struct efx_nic *efx = mtd->priv; in efx_mcdi_mtd_sync() local
2359 rc = efx_mcdi_nvram_update_finish(efx, part->nvram_type); in efx_mcdi_mtd_sync()
2369 struct efx_nic *efx = part->mtd.priv; in efx_mcdi_mtd_rename() local
2372 efx->name, part->type_name, mcdi_part->fw_subtype); in efx_mcdi_mtd_rename()