if (port_id == IPC_MEM_CTRL_CHL_ID_7)
                        ipc_imem_sys_devlink_notify_rx(ipc_imem->ipc_devlink,
                                                       skb);
-               else if (port_id == ipc_imem->trace->chl_id)
+               else if (ipc_is_trace_channel(ipc_imem, port_id))
                        ipc_trace_port_rx(ipc_imem->trace, skb);
                else
                        wwan_port_rx(ipc_imem->ipc_port[port_id]->iosm_port,
        }
 
        ipc_imem->trace = ipc_trace_init(ipc_imem);
-       if (!ipc_imem->trace) {
-               dev_err(ipc_imem->dev, "trace channel init failed");
-               return;
-       }
+       if (!ipc_imem->trace)
+               dev_warn(ipc_imem->dev, "trace channel init failed");
 
        ipc_task_queue_send_task(ipc_imem, ipc_imem_send_mdm_rdy_cb, 0, NULL, 0,
                                 false);
 
  */
 void ipc_trace_deinit(struct iosm_trace *ipc_trace)
 {
+       if (!ipc_trace)
+               return;
+
        debugfs_remove(ipc_trace->ctrl_file);
        relay_close(ipc_trace->ipc_rchan);
        mutex_destroy(&ipc_trace->trc_mutex);
 
        enum trace_ctrl_mode mode;
 };
 
+static inline bool ipc_is_trace_channel(struct iosm_imem *ipc_mem, u16 chl_id)
+{
+       return ipc_mem->trace && ipc_mem->trace->chl_id == chl_id;
+}
+
 struct iosm_trace *ipc_trace_init(struct iosm_imem *ipc_imem);
 void ipc_trace_deinit(struct iosm_trace *ipc_trace);
 void ipc_trace_port_rx(struct iosm_trace *ipc_trace, struct sk_buff *skb);