Lines Matching refs:efx

53 static int efx_mcdi_drv_attach(struct efx_nic *efx, bool driver_operating,
55 static bool efx_mcdi_poll_once(struct efx_nic *efx);
56 static void efx_mcdi_abandon(struct efx_nic *efx);
65 int efx_mcdi_init(struct efx_nic *efx) in efx_mcdi_init() argument
71 efx->mcdi = kzalloc(sizeof(*efx->mcdi), GFP_KERNEL); in efx_mcdi_init()
72 if (!efx->mcdi) in efx_mcdi_init()
75 mcdi = efx_mcdi(efx); in efx_mcdi_init()
76 mcdi->efx = efx; in efx_mcdi_init()
93 (void) efx_mcdi_poll_reboot(efx); in efx_mcdi_init()
97 rc = efx_mcdi_handle_assertion(efx); in efx_mcdi_init()
104 rc = efx_mcdi_drv_attach(efx, true, &already_attached); in efx_mcdi_init()
106 netif_err(efx, probe, efx->net_dev, in efx_mcdi_init()
112 netif_err(efx, probe, efx->net_dev, in efx_mcdi_init()
115 if (efx->mcdi->fn_flags & in efx_mcdi_init()
117 efx->primary = efx; in efx_mcdi_init()
125 kfree(efx->mcdi); in efx_mcdi_init()
126 efx->mcdi = NULL; in efx_mcdi_init()
131 void efx_mcdi_fini(struct efx_nic *efx) in efx_mcdi_fini() argument
133 if (!efx->mcdi) in efx_mcdi_fini()
136 BUG_ON(efx->mcdi->iface.state != MCDI_STATE_QUIESCENT); in efx_mcdi_fini()
139 efx_mcdi_drv_attach(efx, false, NULL); in efx_mcdi_fini()
142 free_page((unsigned long)efx->mcdi->iface.logging_buffer); in efx_mcdi_fini()
145 kfree(efx->mcdi); in efx_mcdi_fini()
148 static void efx_mcdi_send_request(struct efx_nic *efx, unsigned cmd, in efx_mcdi_send_request() argument
151 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_send_request()
171 if (efx->type->mcdi_max_ver == 1) { in efx_mcdi_send_request()
220 netif_info(efx, hw, efx->net_dev, "MCDI RPC REQ:%s\n", buf); in efx_mcdi_send_request()
224 efx->type->mcdi_request(efx, hdr, hdr_len, inbuf, inlen); in efx_mcdi_send_request()
261 static void efx_mcdi_read_response_header(struct efx_nic *efx) in efx_mcdi_read_response_header() argument
263 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_read_response_header()
270 efx->type->mcdi_read_response(efx, &hdr, 0, 4); in efx_mcdi_read_response_header()
279 efx->type->mcdi_read_response(efx, &hdr, 4, 4); in efx_mcdi_read_response_header()
302 efx->type->mcdi_read_response(efx, &hdr, (i * 4), 4); in efx_mcdi_read_response_header()
308 efx->type->mcdi_read_response(efx, &hdr, in efx_mcdi_read_response_header()
314 netif_info(efx, hw, efx->net_dev, "MCDI RPC RESP:%s\n", buf); in efx_mcdi_read_response_header()
319 netif_err(efx, hw, efx->net_dev, "MC rebooted\n"); in efx_mcdi_read_response_header()
322 netif_err(efx, hw, efx->net_dev, in efx_mcdi_read_response_header()
327 efx->type->mcdi_read_response(efx, &hdr, mcdi->resp_hdr_len, 4); in efx_mcdi_read_response_header()
335 static bool efx_mcdi_poll_once(struct efx_nic *efx) in efx_mcdi_poll_once() argument
337 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_poll_once()
340 if (!efx->type->mcdi_poll_response(efx)) in efx_mcdi_poll_once()
344 efx_mcdi_read_response_header(efx); in efx_mcdi_poll_once()
350 static int efx_mcdi_poll(struct efx_nic *efx) in efx_mcdi_poll() argument
352 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_poll()
358 rc = efx_mcdi_poll_reboot(efx); in efx_mcdi_poll()
385 if (efx_mcdi_poll_once(efx)) in efx_mcdi_poll()
399 int efx_mcdi_poll_reboot(struct efx_nic *efx) in efx_mcdi_poll_reboot() argument
401 if (!efx->mcdi) in efx_mcdi_poll_reboot()
404 return efx->type->mcdi_poll_reboot(efx); in efx_mcdi_poll_reboot()
425 static int efx_mcdi_await_completion(struct efx_nic *efx) in efx_mcdi_await_completion() argument
427 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_await_completion()
442 return efx_mcdi_poll(efx); in efx_mcdi_await_completion()
466 struct efx_nic *efx = mcdi->efx; in efx_mcdi_release() local
474 efx_mcdi_send_request(efx, async->cmd, in efx_mcdi_release()
497 struct efx_nic *efx = mcdi->efx; in efx_mcdi_complete_async() local
540 efx->type->mcdi_read_response(efx, outbuf, hdr_len, in efx_mcdi_complete_async()
544 efx->type->mcdi_read_response(efx, errbuf, hdr_len, in efx_mcdi_complete_async()
546 efx_mcdi_display_error(efx, async->cmd, async->inlen, errbuf, in efx_mcdi_complete_async()
549 async->complete(efx, async->cookie, rc, outbuf, data_len); in efx_mcdi_complete_async()
557 static void efx_mcdi_ev_cpl(struct efx_nic *efx, unsigned int seqno, in efx_mcdi_ev_cpl() argument
560 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_ev_cpl()
570 netif_err(efx, hw, efx->net_dev, in efx_mcdi_ev_cpl()
574 if (efx->type->mcdi_max_ver >= 2) { in efx_mcdi_ev_cpl()
576 efx_mcdi_read_response_header(efx); in efx_mcdi_ev_cpl()
609 efx_mcdi_check_supported(struct efx_nic *efx, unsigned int cmd, size_t inlen) in efx_mcdi_check_supported() argument
611 if (efx->type->mcdi_max_ver < 0 || in efx_mcdi_check_supported()
612 (efx->type->mcdi_max_ver < 2 && in efx_mcdi_check_supported()
617 (efx->type->mcdi_max_ver < 2 && in efx_mcdi_check_supported()
624 static int _efx_mcdi_rpc_finish(struct efx_nic *efx, unsigned cmd, size_t inlen, in _efx_mcdi_rpc_finish() argument
628 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in _efx_mcdi_rpc_finish()
633 rc = efx_mcdi_poll(efx); in _efx_mcdi_rpc_finish()
635 rc = efx_mcdi_await_completion(efx); in _efx_mcdi_rpc_finish()
638 netif_err(efx, hw, efx->net_dev, in _efx_mcdi_rpc_finish()
642 if (mcdi->mode == MCDI_MODE_EVENTS && efx_mcdi_poll_once(efx)) { in _efx_mcdi_rpc_finish()
643 netif_err(efx, hw, efx->net_dev, in _efx_mcdi_rpc_finish()
648 efx_mcdi_abandon(efx); in _efx_mcdi_rpc_finish()
679 efx->type->mcdi_read_response(efx, outbuf, hdr_len, in _efx_mcdi_rpc_finish()
684 efx->type->mcdi_read_response(efx, errbuf, hdr_len, err_len); in _efx_mcdi_rpc_finish()
689 netif_err(efx, hw, efx->net_dev, "MC fatal error %d\n", in _efx_mcdi_rpc_finish()
691 efx_schedule_reset(efx, RESET_TYPE_MC_FAILURE); in _efx_mcdi_rpc_finish()
693 efx_mcdi_display_error(efx, cmd, inlen, errbuf, err_len, in _efx_mcdi_rpc_finish()
699 efx_mcdi_poll_reboot(efx); in _efx_mcdi_rpc_finish()
708 static int _efx_mcdi_rpc(struct efx_nic *efx, unsigned cmd, in _efx_mcdi_rpc() argument
715 rc = efx_mcdi_rpc_start(efx, cmd, inbuf, inlen); in _efx_mcdi_rpc()
721 return _efx_mcdi_rpc_finish(efx, cmd, inlen, outbuf, outlen, in _efx_mcdi_rpc()
725 int efx_mcdi_rpc(struct efx_nic *efx, unsigned cmd, in efx_mcdi_rpc() argument
730 return _efx_mcdi_rpc(efx, cmd, inbuf, inlen, outbuf, outlen, in efx_mcdi_rpc()
742 int efx_mcdi_rpc_quiet(struct efx_nic *efx, unsigned cmd, in efx_mcdi_rpc_quiet() argument
747 return _efx_mcdi_rpc(efx, cmd, inbuf, inlen, outbuf, outlen, in efx_mcdi_rpc_quiet()
751 int efx_mcdi_rpc_start(struct efx_nic *efx, unsigned cmd, in efx_mcdi_rpc_start() argument
754 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_rpc_start()
757 rc = efx_mcdi_check_supported(efx, cmd, inlen); in efx_mcdi_rpc_start()
761 if (efx->mc_bist_for_other_fn) in efx_mcdi_rpc_start()
768 efx_mcdi_send_request(efx, cmd, inbuf, inlen); in efx_mcdi_rpc_start()
772 static int _efx_mcdi_rpc_async(struct efx_nic *efx, unsigned int cmd, in _efx_mcdi_rpc_async() argument
778 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in _efx_mcdi_rpc_async()
782 rc = efx_mcdi_check_supported(efx, cmd, inlen); in _efx_mcdi_rpc_async()
786 if (efx->mc_bist_for_other_fn) in _efx_mcdi_rpc_async()
812 efx_mcdi_send_request(efx, cmd, inbuf, inlen); in _efx_mcdi_rpc_async()
847 efx_mcdi_rpc_async(struct efx_nic *efx, unsigned int cmd, in efx_mcdi_rpc_async() argument
851 return _efx_mcdi_rpc_async(efx, cmd, inbuf, inlen, outlen, complete, in efx_mcdi_rpc_async()
855 int efx_mcdi_rpc_async_quiet(struct efx_nic *efx, unsigned int cmd, in efx_mcdi_rpc_async_quiet() argument
860 return _efx_mcdi_rpc_async(efx, cmd, inbuf, inlen, outlen, complete, in efx_mcdi_rpc_async_quiet()
864 int efx_mcdi_rpc_finish(struct efx_nic *efx, unsigned cmd, size_t inlen, in efx_mcdi_rpc_finish() argument
868 return _efx_mcdi_rpc_finish(efx, cmd, inlen, outbuf, outlen, in efx_mcdi_rpc_finish()
872 int efx_mcdi_rpc_finish_quiet(struct efx_nic *efx, unsigned cmd, size_t inlen, in efx_mcdi_rpc_finish_quiet() argument
876 return _efx_mcdi_rpc_finish(efx, cmd, inlen, outbuf, outlen, in efx_mcdi_rpc_finish_quiet()
880 void efx_mcdi_display_error(struct efx_nic *efx, unsigned cmd, in efx_mcdi_display_error() argument
890 netif_err(efx, hw, efx->net_dev, in efx_mcdi_display_error()
899 void efx_mcdi_mode_poll(struct efx_nic *efx) in efx_mcdi_mode_poll() argument
903 if (!efx->mcdi) in efx_mcdi_mode_poll()
906 mcdi = efx_mcdi(efx); in efx_mcdi_mode_poll()
930 void efx_mcdi_flush_async(struct efx_nic *efx) in efx_mcdi_flush_async() argument
935 if (!efx->mcdi) in efx_mcdi_flush_async()
938 mcdi = efx_mcdi(efx); in efx_mcdi_flush_async()
950 efx_mcdi_poll(efx); in efx_mcdi_flush_async()
960 async->complete(efx, async->cookie, -ENETDOWN, NULL, 0); in efx_mcdi_flush_async()
966 void efx_mcdi_mode_event(struct efx_nic *efx) in efx_mcdi_mode_event() argument
970 if (!efx->mcdi) in efx_mcdi_mode_event()
973 mcdi = efx_mcdi(efx); in efx_mcdi_mode_event()
993 static void efx_mcdi_ev_death(struct efx_nic *efx, int rc) in efx_mcdi_ev_death() argument
995 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_ev_death()
1031 rc = efx_mcdi_poll_reboot(efx); in efx_mcdi_ev_death()
1043 if (!rc && efx->type->mcdi_reboot_detected) in efx_mcdi_ev_death()
1044 efx->type->mcdi_reboot_detected(efx); in efx_mcdi_ev_death()
1049 efx_schedule_reset(efx, RESET_TYPE_MC_FAILURE); in efx_mcdi_ev_death()
1060 static void efx_mcdi_ev_bist(struct efx_nic *efx) in efx_mcdi_ev_bist() argument
1062 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_ev_bist()
1065 efx->mc_bist_for_other_fn = true; in efx_mcdi_ev_bist()
1075 efx_schedule_reset(efx, RESET_TYPE_MC_BIST); in efx_mcdi_ev_bist()
1082 static void efx_mcdi_abandon(struct efx_nic *efx) in efx_mcdi_abandon() argument
1084 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_abandon()
1088 netif_dbg(efx, hw, efx->net_dev, "MCDI is timing out; trying to recover\n"); in efx_mcdi_abandon()
1089 efx_schedule_reset(efx, RESET_TYPE_MCDI_TIMEOUT); in efx_mcdi_abandon()
1096 struct efx_nic *efx = channel->efx; in efx_mcdi_process_event() local
1102 netif_err(efx, hw, efx->net_dev, in efx_mcdi_process_event()
1104 efx_mcdi_ev_death(efx, -EINTR); in efx_mcdi_process_event()
1108 netif_info(efx, wol, efx->net_dev, "MCDI PM event.\n"); in efx_mcdi_process_event()
1112 efx_mcdi_ev_cpl(efx, in efx_mcdi_process_event()
1119 efx_mcdi_process_link_change(efx, event); in efx_mcdi_process_event()
1122 efx_mcdi_sensor_event(efx, event); in efx_mcdi_process_event()
1125 netif_dbg(efx, hw, efx->net_dev, in efx_mcdi_process_event()
1130 netif_info(efx, hw, efx->net_dev, "MC Reboot\n"); in efx_mcdi_process_event()
1131 efx_mcdi_ev_death(efx, -EIO); in efx_mcdi_process_event()
1134 netif_info(efx, hw, efx->net_dev, "MC entered BIST mode\n"); in efx_mcdi_process_event()
1135 efx_mcdi_ev_bist(efx); in efx_mcdi_process_event()
1141 if (efx->type->sriov_flr) in efx_mcdi_process_event()
1142 efx->type->sriov_flr(efx, in efx_mcdi_process_event()
1148 efx_ptp_event(efx, event); in efx_mcdi_process_event()
1164 efx_ef10_handle_drain_event(efx); in efx_mcdi_process_event()
1168 netif_err(efx, hw, efx->net_dev, in efx_mcdi_process_event()
1172 efx_schedule_reset(efx, RESET_TYPE_DMA_ERROR); in efx_mcdi_process_event()
1175 netif_err(efx, hw, efx->net_dev, "Unknown MCDI event 0x%x\n", in efx_mcdi_process_event()
1187 void efx_mcdi_print_fwver(struct efx_nic *efx, char *buf, size_t len) in efx_mcdi_print_fwver() argument
1196 rc = efx_mcdi_rpc(efx, MC_CMD_GET_VERSION, NULL, 0, in efx_mcdi_print_fwver()
1213 if (efx_nic_rev(efx) >= EFX_REV_HUNT_A0) { in efx_mcdi_print_fwver()
1214 struct efx_ef10_nic_data *nic_data = efx->nic_data; in efx_mcdi_print_fwver()
1231 netif_err(efx, probe, efx->net_dev, "%s: failed rc=%d\n", __func__, rc); in efx_mcdi_print_fwver()
1235 static int efx_mcdi_drv_attach(struct efx_nic *efx, bool driver_operating, in efx_mcdi_drv_attach() argument
1248 rc = efx_mcdi_rpc_quiet(efx, MC_CMD_DRV_ATTACH, inbuf, sizeof(inbuf), in efx_mcdi_drv_attach()
1255 netif_dbg(efx, probe, efx->net_dev, in efx_mcdi_drv_attach()
1259 rc = efx_mcdi_rpc_quiet(efx, MC_CMD_DRV_ATTACH, inbuf, in efx_mcdi_drv_attach()
1264 efx_mcdi_display_error(efx, MC_CMD_DRV_ATTACH, sizeof(inbuf), in efx_mcdi_drv_attach()
1275 efx->mcdi->fn_flags = in efx_mcdi_drv_attach()
1280 efx->mcdi->fn_flags = in efx_mcdi_drv_attach()
1283 (efx_port_num(efx) == 0) << in efx_mcdi_drv_attach()
1298 netif_err(efx, probe, efx->net_dev, "%s: failed rc=%d\n", __func__, rc); in efx_mcdi_drv_attach()
1302 int efx_mcdi_get_board_cfg(struct efx_nic *efx, u8 *mac_address, in efx_mcdi_get_board_cfg() argument
1307 int port_num = efx_port_num(efx); in efx_mcdi_get_board_cfg()
1315 rc = efx_mcdi_rpc(efx, MC_CMD_GET_BOARD_CFG, NULL, 0, in efx_mcdi_get_board_cfg()
1352 netif_err(efx, hw, efx->net_dev, "%s: failed rc=%d len=%d\n", in efx_mcdi_get_board_cfg()
1358 int efx_mcdi_log_ctrl(struct efx_nic *efx, bool evq, bool uart, u32 dest_evq) in efx_mcdi_log_ctrl() argument
1374 rc = efx_mcdi_rpc(efx, MC_CMD_LOG_CTRL, inbuf, sizeof(inbuf), in efx_mcdi_log_ctrl()
1379 int efx_mcdi_nvram_types(struct efx_nic *efx, u32 *nvram_types_out) in efx_mcdi_nvram_types() argument
1387 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_TYPES, NULL, 0, in efx_mcdi_nvram_types()
1400 netif_err(efx, hw, efx->net_dev, "%s: failed rc=%d\n", in efx_mcdi_nvram_types()
1405 int efx_mcdi_nvram_info(struct efx_nic *efx, unsigned int type, in efx_mcdi_nvram_info() argument
1416 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_INFO, inbuf, sizeof(inbuf), in efx_mcdi_nvram_info()
1432 netif_err(efx, hw, efx->net_dev, "%s: failed rc=%d\n", __func__, rc); in efx_mcdi_nvram_info()
1436 static int efx_mcdi_nvram_test(struct efx_nic *efx, unsigned int type) in efx_mcdi_nvram_test() argument
1444 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_TEST, inbuf, sizeof(inbuf), in efx_mcdi_nvram_test()
1458 int efx_mcdi_nvram_test_all(struct efx_nic *efx) in efx_mcdi_nvram_test_all() argument
1464 rc = efx_mcdi_nvram_types(efx, &nvram_types); in efx_mcdi_nvram_test_all()
1471 rc = efx_mcdi_nvram_test(efx, type); in efx_mcdi_nvram_test_all()
1482 netif_err(efx, hw, efx->net_dev, "%s: failed type=%u\n", in efx_mcdi_nvram_test_all()
1485 netif_err(efx, hw, efx->net_dev, "%s: failed rc=%d\n", __func__, rc); in efx_mcdi_nvram_test_all()
1492 static int efx_mcdi_read_assertion(struct efx_nic *efx) in efx_mcdi_read_assertion() argument
1510 rc = efx_mcdi_rpc_quiet(efx, MC_CMD_GET_ASSERTS, in efx_mcdi_read_assertion()
1518 efx_mcdi_display_error(efx, MC_CMD_GET_ASSERTS, in efx_mcdi_read_assertion()
1538 netif_err(efx, hw, efx->net_dev, in efx_mcdi_read_assertion()
1547 netif_err(efx, hw, efx->net_dev, "R%.2d (?): 0x%.8x\n", in efx_mcdi_read_assertion()
1555 static int efx_mcdi_exit_assertion(struct efx_nic *efx) in efx_mcdi_exit_assertion() argument
1569 rc = efx_mcdi_rpc_quiet(efx, MC_CMD_REBOOT, inbuf, MC_CMD_REBOOT_IN_LEN, in efx_mcdi_exit_assertion()
1574 efx_mcdi_display_error(efx, MC_CMD_REBOOT, MC_CMD_REBOOT_IN_LEN, in efx_mcdi_exit_assertion()
1579 int efx_mcdi_handle_assertion(struct efx_nic *efx) in efx_mcdi_handle_assertion() argument
1583 rc = efx_mcdi_read_assertion(efx); in efx_mcdi_handle_assertion()
1587 return efx_mcdi_exit_assertion(efx); in efx_mcdi_handle_assertion()
1590 void efx_mcdi_set_id_led(struct efx_nic *efx, enum efx_led_mode mode) in efx_mcdi_set_id_led() argument
1603 rc = efx_mcdi_rpc(efx, MC_CMD_SET_ID_LED, inbuf, sizeof(inbuf), in efx_mcdi_set_id_led()
1607 static int efx_mcdi_reset_func(struct efx_nic *efx) in efx_mcdi_reset_func() argument
1615 rc = efx_mcdi_rpc(efx, MC_CMD_ENTITY_RESET, inbuf, sizeof(inbuf), in efx_mcdi_reset_func()
1620 static int efx_mcdi_reset_mc(struct efx_nic *efx) in efx_mcdi_reset_mc() argument
1627 rc = efx_mcdi_rpc(efx, MC_CMD_REBOOT, inbuf, sizeof(inbuf), in efx_mcdi_reset_mc()
1642 int efx_mcdi_reset(struct efx_nic *efx, enum reset_type method) in efx_mcdi_reset() argument
1648 rc = pci_reset_function(efx->pci_dev); in efx_mcdi_reset()
1652 if (efx->mcdi) { in efx_mcdi_reset()
1653 struct efx_mcdi_iface *mcdi = efx_mcdi(efx); in efx_mcdi_reset()
1660 rc = efx_mcdi_handle_assertion(efx); in efx_mcdi_reset()
1667 return efx_mcdi_reset_mc(efx); in efx_mcdi_reset()
1669 return efx_mcdi_reset_func(efx); in efx_mcdi_reset()
1672 static int efx_mcdi_wol_filter_set(struct efx_nic *efx, u32 type, in efx_mcdi_wol_filter_set() argument
1685 rc = efx_mcdi_rpc(efx, MC_CMD_WOL_FILTER_SET, inbuf, sizeof(inbuf), in efx_mcdi_wol_filter_set()
1701 netif_err(efx, hw, efx->net_dev, "%s: failed rc=%d\n", __func__, rc); in efx_mcdi_wol_filter_set()
1708 efx_mcdi_wol_filter_set_magic(struct efx_nic *efx, const u8 *mac, int *id_out) in efx_mcdi_wol_filter_set_magic() argument
1710 return efx_mcdi_wol_filter_set(efx, MC_CMD_WOL_TYPE_MAGIC, mac, id_out); in efx_mcdi_wol_filter_set_magic()
1714 int efx_mcdi_wol_filter_get_magic(struct efx_nic *efx, int *id_out) in efx_mcdi_wol_filter_get_magic() argument
1720 rc = efx_mcdi_rpc(efx, MC_CMD_WOL_FILTER_GET, NULL, 0, in efx_mcdi_wol_filter_get_magic()
1736 netif_err(efx, hw, efx->net_dev, "%s: failed rc=%d\n", __func__, rc); in efx_mcdi_wol_filter_get_magic()
1741 int efx_mcdi_wol_filter_remove(struct efx_nic *efx, int id) in efx_mcdi_wol_filter_remove() argument
1748 rc = efx_mcdi_rpc(efx, MC_CMD_WOL_FILTER_REMOVE, inbuf, sizeof(inbuf), in efx_mcdi_wol_filter_remove()
1753 int efx_mcdi_flush_rxqs(struct efx_nic *efx) in efx_mcdi_flush_rxqs() argument
1765 efx_for_each_channel(channel, efx) { in efx_mcdi_flush_rxqs()
1769 atomic_dec(&efx->rxq_flush_pending); in efx_mcdi_flush_rxqs()
1778 rc = efx_mcdi_rpc(efx, MC_CMD_FLUSH_RX_QUEUES, inbuf, in efx_mcdi_flush_rxqs()
1785 int efx_mcdi_wol_filter_reset(struct efx_nic *efx) in efx_mcdi_wol_filter_reset() argument
1789 rc = efx_mcdi_rpc(efx, MC_CMD_WOL_FILTER_RESET, NULL, 0, NULL, 0, NULL); in efx_mcdi_wol_filter_reset()
1793 int efx_mcdi_set_workaround(struct efx_nic *efx, u32 type, bool enabled, in efx_mcdi_set_workaround() argument
1804 rc = efx_mcdi_rpc(efx, MC_CMD_WORKAROUND, inbuf, sizeof(inbuf), in efx_mcdi_set_workaround()
1820 int efx_mcdi_get_workarounds(struct efx_nic *efx, unsigned int *impl_out, in efx_mcdi_get_workarounds() argument
1827 rc = efx_mcdi_rpc(efx, MC_CMD_GET_WORKAROUNDS, NULL, 0, in efx_mcdi_get_workarounds()
1849 netif_printk(efx, hw, rc == -ENOSYS ? KERN_DEBUG : KERN_ERR, in efx_mcdi_get_workarounds()
1850 efx->net_dev, "%s: failed rc=%d\n", __func__, rc); in efx_mcdi_get_workarounds()
1858 static int efx_mcdi_nvram_update_start(struct efx_nic *efx, unsigned int type) in efx_mcdi_nvram_update_start() argument
1867 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_UPDATE_START, inbuf, sizeof(inbuf), in efx_mcdi_nvram_update_start()
1872 static int efx_mcdi_nvram_read(struct efx_nic *efx, unsigned int type, in efx_mcdi_nvram_read() argument
1885 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_READ, inbuf, sizeof(inbuf), in efx_mcdi_nvram_read()
1894 static int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, in efx_mcdi_nvram_write() argument
1908 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_WRITE, inbuf, in efx_mcdi_nvram_write()
1914 static int efx_mcdi_nvram_erase(struct efx_nic *efx, unsigned int type, in efx_mcdi_nvram_erase() argument
1926 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_ERASE, inbuf, sizeof(inbuf), in efx_mcdi_nvram_erase()
1931 static int efx_mcdi_nvram_update_finish(struct efx_nic *efx, unsigned int type) in efx_mcdi_nvram_update_finish() argument
1940 rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_UPDATE_FINISH, inbuf, sizeof(inbuf), in efx_mcdi_nvram_update_finish()
1949 struct efx_nic *efx = mtd->priv; in efx_mcdi_mtd_read() local
1957 rc = efx_mcdi_nvram_read(efx, part->nvram_type, offset, in efx_mcdi_mtd_read()
1972 struct efx_nic *efx = mtd->priv; in efx_mcdi_mtd_erase() local
1979 rc = efx_mcdi_nvram_update_start(efx, part->nvram_type); in efx_mcdi_mtd_erase()
1989 rc = efx_mcdi_nvram_erase(efx, part->nvram_type, offset, in efx_mcdi_mtd_erase()
2003 struct efx_nic *efx = mtd->priv; in efx_mcdi_mtd_write() local
2010 rc = efx_mcdi_nvram_update_start(efx, part->nvram_type); in efx_mcdi_mtd_write()
2018 rc = efx_mcdi_nvram_write(efx, part->nvram_type, offset, in efx_mcdi_mtd_write()
2033 struct efx_nic *efx = mtd->priv; in efx_mcdi_mtd_sync() local
2038 rc = efx_mcdi_nvram_update_finish(efx, part->nvram_type); in efx_mcdi_mtd_sync()
2048 struct efx_nic *efx = part->mtd.priv; in efx_mcdi_mtd_rename() local
2051 efx->name, part->type_name, mcdi_part->fw_subtype); in efx_mcdi_mtd_rename()