Loading drivers/soc/qcom/icnss.c +9 −0 Original line number Diff line number Diff line Loading @@ -642,6 +642,7 @@ static int icnss_driver_event_server_arrive(void *data) return -ENODEV; set_bit(ICNSS_WLFW_EXISTS, &penv->state); clear_bit(ICNSS_FW_DOWN, &penv->state); ret = icnss_connect_to_fw_server(penv); if (ret) Loading Loading @@ -1080,6 +1081,8 @@ static int icnss_modem_notifier_nb(struct notifier_block *nb, icnss_pr_info("Modem went down, state: 0x%lx, crashed: %d\n", priv->state, notif->crashed); set_bit(ICNSS_FW_DOWN, &priv->state); if (notif->crashed) priv->stats.recovery.root_pd_crash++; else Loading Loading @@ -1206,6 +1209,7 @@ static int icnss_service_notifier_notify(struct notifier_block *nb, icnss_pr_info("PD service down, pd_state: %d, state: 0x%lx: cause: %s\n", *state, priv->state, icnss_pdr_cause[cause]); event_post: set_bit(ICNSS_FW_DOWN, &priv->state); icnss_ignore_fw_timeout(true); clear_bit(ICNSS_HOST_TRIGGERED_PDR, &priv->state); Loading @@ -1214,6 +1218,8 @@ static int icnss_service_notifier_notify(struct notifier_block *nb, icnss_driver_event_post(ICNSS_DRIVER_EVENT_PD_SERVICE_DOWN, ICNSS_EVENT_SYNC, event_data); done: if (notification == SERVREG_NOTIF_SERVICE_STATE_UP_V01) clear_bit(ICNSS_FW_DOWN, &priv->state); return NOTIFY_OK; } Loading Loading @@ -2270,6 +2276,9 @@ static int icnss_stats_show_state(struct seq_file *s, struct icnss_priv *priv) case ICNSS_HOST_TRIGGERED_PDR: seq_puts(s, "HOST TRIGGERED PDR"); continue; case ICNSS_FW_DOWN: seq_puts(s, "FW DOWN"); continue; } seq_printf(s, "UNKNOWN-%d", i); Loading drivers/soc/qcom/icnss_private.h +1 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,7 @@ enum icnss_driver_state { ICNSS_WLFW_EXISTS, ICNSS_SHUTDOWN_DONE, ICNSS_HOST_TRIGGERED_PDR, ICNSS_FW_DOWN, }; struct ce_irq_list { Loading drivers/soc/qcom/icnss_qmi.c +6 −0 Original line number Diff line number Diff line Loading @@ -868,6 +868,12 @@ void icnss_qmi_wlfw_clnt_ind(struct qmi_handle *handle, icnss_pr_dbg("Received Ind 0x%x, msg_len: %d\n", msg_id, msg_len); if (test_bit(ICNSS_FW_DOWN, &priv->state)) { icnss_pr_dbg("FW down, ignoring 0x%x, state: 0x%lx\n", msg_id, priv->state); return; } switch (msg_id) { case QMI_WLFW_FW_READY_IND_V01: icnss_driver_event_post(ICNSS_DRIVER_EVENT_FW_READY_IND, Loading Loading
drivers/soc/qcom/icnss.c +9 −0 Original line number Diff line number Diff line Loading @@ -642,6 +642,7 @@ static int icnss_driver_event_server_arrive(void *data) return -ENODEV; set_bit(ICNSS_WLFW_EXISTS, &penv->state); clear_bit(ICNSS_FW_DOWN, &penv->state); ret = icnss_connect_to_fw_server(penv); if (ret) Loading Loading @@ -1080,6 +1081,8 @@ static int icnss_modem_notifier_nb(struct notifier_block *nb, icnss_pr_info("Modem went down, state: 0x%lx, crashed: %d\n", priv->state, notif->crashed); set_bit(ICNSS_FW_DOWN, &priv->state); if (notif->crashed) priv->stats.recovery.root_pd_crash++; else Loading Loading @@ -1206,6 +1209,7 @@ static int icnss_service_notifier_notify(struct notifier_block *nb, icnss_pr_info("PD service down, pd_state: %d, state: 0x%lx: cause: %s\n", *state, priv->state, icnss_pdr_cause[cause]); event_post: set_bit(ICNSS_FW_DOWN, &priv->state); icnss_ignore_fw_timeout(true); clear_bit(ICNSS_HOST_TRIGGERED_PDR, &priv->state); Loading @@ -1214,6 +1218,8 @@ static int icnss_service_notifier_notify(struct notifier_block *nb, icnss_driver_event_post(ICNSS_DRIVER_EVENT_PD_SERVICE_DOWN, ICNSS_EVENT_SYNC, event_data); done: if (notification == SERVREG_NOTIF_SERVICE_STATE_UP_V01) clear_bit(ICNSS_FW_DOWN, &priv->state); return NOTIFY_OK; } Loading Loading @@ -2270,6 +2276,9 @@ static int icnss_stats_show_state(struct seq_file *s, struct icnss_priv *priv) case ICNSS_HOST_TRIGGERED_PDR: seq_puts(s, "HOST TRIGGERED PDR"); continue; case ICNSS_FW_DOWN: seq_puts(s, "FW DOWN"); continue; } seq_printf(s, "UNKNOWN-%d", i); Loading
drivers/soc/qcom/icnss_private.h +1 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,7 @@ enum icnss_driver_state { ICNSS_WLFW_EXISTS, ICNSS_SHUTDOWN_DONE, ICNSS_HOST_TRIGGERED_PDR, ICNSS_FW_DOWN, }; struct ce_irq_list { Loading
drivers/soc/qcom/icnss_qmi.c +6 −0 Original line number Diff line number Diff line Loading @@ -868,6 +868,12 @@ void icnss_qmi_wlfw_clnt_ind(struct qmi_handle *handle, icnss_pr_dbg("Received Ind 0x%x, msg_len: %d\n", msg_id, msg_len); if (test_bit(ICNSS_FW_DOWN, &priv->state)) { icnss_pr_dbg("FW down, ignoring 0x%x, state: 0x%lx\n", msg_id, priv->state); return; } switch (msg_id) { case QMI_WLFW_FW_READY_IND_V01: icnss_driver_event_post(ICNSS_DRIVER_EVENT_FW_READY_IND, Loading