Skip to content

Commit 13b94fb

Browse files
rsa9000kuba-moo
authored andcommitted
net: wwan: iosm: allow trace port be uninitialized
Collecting modem firmware traces is optional for the regular modem use. There are not many reasons for aborting device initialization due to an inability to initialize the trace port and (or) its debugfs interface. So, demote the initialization failure erro message into a warning and do not break the initialization sequence in this case. Rework packet processing and deinitialization so that they do not crash in case of uninitialized trace port. This change is mainly a preparation for an upcoming configuration option introduction that will help disable driver debugfs functionality. Signed-off-by: Sergey Ryazanov <[email protected]> Reviewed-by: Loic Poulain <[email protected]> Acked-by: M Chetan Kumar <[email protected]> Signed-off-by: Jakub Kicinski <[email protected]>
1 parent e9877d4 commit 13b94fb

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

drivers/net/wwan/iosm/iosm_ipc_imem.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ static void ipc_imem_dl_skb_process(struct iosm_imem *ipc_imem,
272272
if (port_id == IPC_MEM_CTRL_CHL_ID_7)
273273
ipc_imem_sys_devlink_notify_rx(ipc_imem->ipc_devlink,
274274
skb);
275-
else if (port_id == ipc_imem->trace->chl_id)
275+
else if (ipc_is_trace_channel(ipc_imem, port_id))
276276
ipc_trace_port_rx(ipc_imem->trace, skb);
277277
else
278278
wwan_port_rx(ipc_imem->ipc_port[port_id]->iosm_port,
@@ -555,10 +555,8 @@ static void ipc_imem_run_state_worker(struct work_struct *instance)
555555
}
556556

557557
ipc_imem->trace = ipc_trace_init(ipc_imem);
558-
if (!ipc_imem->trace) {
559-
dev_err(ipc_imem->dev, "trace channel init failed");
560-
return;
561-
}
558+
if (!ipc_imem->trace)
559+
dev_warn(ipc_imem->dev, "trace channel init failed");
562560

563561
ipc_task_queue_send_task(ipc_imem, ipc_imem_send_mdm_rdy_cb, 0, NULL, 0,
564562
false);

drivers/net/wwan/iosm/iosm_ipc_trace.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,9 @@ struct iosm_trace *ipc_trace_init(struct iosm_imem *ipc_imem)
172172
*/
173173
void ipc_trace_deinit(struct iosm_trace *ipc_trace)
174174
{
175+
if (!ipc_trace)
176+
return;
177+
175178
debugfs_remove(ipc_trace->ctrl_file);
176179
relay_close(ipc_trace->ipc_rchan);
177180
mutex_destroy(&ipc_trace->trc_mutex);

drivers/net/wwan/iosm/iosm_ipc_trace.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ struct iosm_trace {
4545
enum trace_ctrl_mode mode;
4646
};
4747

48+
static inline bool ipc_is_trace_channel(struct iosm_imem *ipc_mem, u16 chl_id)
49+
{
50+
return ipc_mem->trace && ipc_mem->trace->chl_id == chl_id;
51+
}
52+
4853
struct iosm_trace *ipc_trace_init(struct iosm_imem *ipc_imem);
4954
void ipc_trace_deinit(struct iosm_trace *ipc_trace);
5055
void ipc_trace_port_rx(struct iosm_trace *ipc_trace, struct sk_buff *skb);

0 commit comments

Comments
 (0)