mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-15 17:43:59 +00:00
net: wwan: iosm: fixes net interface nonfunctional after fw flash
Devlink initialization flow was overwriting the IP traffic channel configuration. This was causing wwan0 network interface to be unusable after fw flash. When device boots to fully functional mode restore the IP channel configuration. Signed-off-by: M Chetan Kumar <m.chetan.kumar@linux.intel.com> Reviewed-by: Sergey Ryazanov <ryazanov.s.a@gmail.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
373f121a3c
commit
07d3f2743d
@ -531,6 +531,9 @@ static void ipc_imem_run_state_worker(struct work_struct *instance)
|
||||
return;
|
||||
}
|
||||
|
||||
if (test_and_clear_bit(IOSM_DEVLINK_INIT, &ipc_imem->flag))
|
||||
ipc_devlink_deinit(ipc_imem->ipc_devlink);
|
||||
|
||||
if (!ipc_imem_setup_cp_mux_cap_init(ipc_imem, &mux_cfg))
|
||||
ipc_imem->mux = ipc_mux_init(&mux_cfg, ipc_imem);
|
||||
|
||||
@ -1171,7 +1174,7 @@ void ipc_imem_cleanup(struct iosm_imem *ipc_imem)
|
||||
ipc_port_deinit(ipc_imem->ipc_port);
|
||||
}
|
||||
|
||||
if (ipc_imem->ipc_devlink)
|
||||
if (test_and_clear_bit(IOSM_DEVLINK_INIT, &ipc_imem->flag))
|
||||
ipc_devlink_deinit(ipc_imem->ipc_devlink);
|
||||
|
||||
ipc_imem_device_ipc_uninit(ipc_imem);
|
||||
@ -1335,6 +1338,8 @@ struct iosm_imem *ipc_imem_init(struct iosm_pcie *pcie, unsigned int device_id,
|
||||
|
||||
if (ipc_flash_link_establish(ipc_imem))
|
||||
goto devlink_channel_fail;
|
||||
|
||||
set_bit(IOSM_DEVLINK_INIT, &ipc_imem->flag);
|
||||
}
|
||||
return ipc_imem;
|
||||
devlink_channel_fail:
|
||||
|
@ -101,6 +101,7 @@ struct ipc_chnl_cfg;
|
||||
#define IOSM_CHIP_INFO_SIZE_MAX 100
|
||||
|
||||
#define FULLY_FUNCTIONAL 0
|
||||
#define IOSM_DEVLINK_INIT 1
|
||||
|
||||
/* List of the supported UL/DL pipes. */
|
||||
enum ipc_mem_pipes {
|
||||
|
@ -450,6 +450,7 @@ void ipc_imem_sys_devlink_close(struct iosm_devlink *ipc_devlink)
|
||||
/* Release the pipe resources */
|
||||
ipc_imem_pipe_cleanup(ipc_imem, &channel->ul_pipe);
|
||||
ipc_imem_pipe_cleanup(ipc_imem, &channel->dl_pipe);
|
||||
ipc_imem->nr_of_channels--;
|
||||
}
|
||||
|
||||
void ipc_imem_sys_devlink_notify_rx(struct iosm_devlink *ipc_devlink,
|
||||
|
Loading…
x
Reference in New Issue
Block a user