Loading drivers/net/wireless/cnss2/bus.c +15 −0 Original line number Diff line number Diff line Loading @@ -372,3 +372,18 @@ int cnss_bus_update_status(struct cnss_plat_data *plat_priv, return -EINVAL; } } int cnss_bus_is_device_down(struct cnss_plat_data *plat_priv) { if (!plat_priv) return -ENODEV; switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pcie_is_device_down(plat_priv->bus_priv); default: cnss_pr_dbg("Unsupported bus type: %d\n", plat_priv->bus_type); return 0; } } drivers/net/wireless/cnss2/bus.h +1 −0 Original line number Diff line number Diff line Loading @@ -45,5 +45,6 @@ int cnss_bus_call_driver_modem_status(struct cnss_plat_data *plat_priv, int modem_current_status); int cnss_bus_update_status(struct cnss_plat_data *plat_priv, enum cnss_driver_status status); int cnss_bus_is_device_down(struct cnss_plat_data *plat_priv); #endif /* _CNSS_BUS_H */ drivers/net/wireless/cnss2/main.c +2 −2 Original line number Diff line number Diff line Loading @@ -1137,7 +1137,7 @@ int cnss_force_fw_assert(struct device *dev) return -EOPNOTSUPP; } if (cnss_pci_is_device_down(dev)) { if (cnss_bus_is_device_down(plat_priv)) { cnss_pr_info("Device is already in bad state, ignore force assert\n"); return 0; } Loading Loading @@ -1173,7 +1173,7 @@ int cnss_force_collect_rddm(struct device *dev) return -EOPNOTSUPP; } if (cnss_pci_is_device_down(dev)) { if (cnss_bus_is_device_down(plat_priv)) { cnss_pr_info("Device is already in bad state, ignore force collect rddm\n"); return 0; } Loading drivers/net/wireless/cnss2/pci.c +14 −8 Original line number Diff line number Diff line Loading @@ -545,25 +545,31 @@ int cnss_pci_link_down(struct device *dev) } EXPORT_SYMBOL(cnss_pci_link_down); int cnss_pci_is_device_down(struct device *dev) int cnss_pcie_is_device_down(struct cnss_pci_data *pci_priv) { struct cnss_plat_data *plat_priv = cnss_bus_dev_to_plat_priv(dev); struct cnss_pci_data *pci_priv; struct cnss_plat_data *plat_priv; if (!plat_priv) { cnss_pr_err("plat_priv is NULL\n"); if (!pci_priv) { cnss_pr_err("pci_priv is NULL\n"); return -ENODEV; } pci_priv = plat_priv->bus_priv; if (!pci_priv) { cnss_pr_err("pci_priv is NULL\n"); plat_priv = pci_priv->plat_priv; if (!plat_priv) { cnss_pr_err("plat_priv is NULL\n"); return -ENODEV; } return test_bit(CNSS_DEV_ERR_NOTIFY, &plat_priv->driver_state) | pci_priv->pci_link_down_ind; } int cnss_pci_is_device_down(struct device *dev) { struct cnss_pci_data *pci_priv = cnss_get_pci_priv(to_pci_dev(dev)); return cnss_pcie_is_device_down(pci_priv); } EXPORT_SYMBOL(cnss_pci_is_device_down); static char *cnss_mhi_state_to_str(enum cnss_mhi_state mhi_state) Loading drivers/net/wireless/cnss2/pci.h +1 −0 Original line number Diff line number Diff line Loading @@ -183,5 +183,6 @@ void cnss_pci_pm_runtime_put_noidle(struct cnss_pci_data *pci_priv); void cnss_pci_pm_runtime_mark_last_busy(struct cnss_pci_data *pci_priv); int cnss_pci_update_status(struct cnss_pci_data *pci_priv, enum cnss_driver_status status); int cnss_pcie_is_device_down(struct cnss_pci_data *pci_priv); #endif /* _CNSS_PCI_H */ Loading
drivers/net/wireless/cnss2/bus.c +15 −0 Original line number Diff line number Diff line Loading @@ -372,3 +372,18 @@ int cnss_bus_update_status(struct cnss_plat_data *plat_priv, return -EINVAL; } } int cnss_bus_is_device_down(struct cnss_plat_data *plat_priv) { if (!plat_priv) return -ENODEV; switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pcie_is_device_down(plat_priv->bus_priv); default: cnss_pr_dbg("Unsupported bus type: %d\n", plat_priv->bus_type); return 0; } }
drivers/net/wireless/cnss2/bus.h +1 −0 Original line number Diff line number Diff line Loading @@ -45,5 +45,6 @@ int cnss_bus_call_driver_modem_status(struct cnss_plat_data *plat_priv, int modem_current_status); int cnss_bus_update_status(struct cnss_plat_data *plat_priv, enum cnss_driver_status status); int cnss_bus_is_device_down(struct cnss_plat_data *plat_priv); #endif /* _CNSS_BUS_H */
drivers/net/wireless/cnss2/main.c +2 −2 Original line number Diff line number Diff line Loading @@ -1137,7 +1137,7 @@ int cnss_force_fw_assert(struct device *dev) return -EOPNOTSUPP; } if (cnss_pci_is_device_down(dev)) { if (cnss_bus_is_device_down(plat_priv)) { cnss_pr_info("Device is already in bad state, ignore force assert\n"); return 0; } Loading Loading @@ -1173,7 +1173,7 @@ int cnss_force_collect_rddm(struct device *dev) return -EOPNOTSUPP; } if (cnss_pci_is_device_down(dev)) { if (cnss_bus_is_device_down(plat_priv)) { cnss_pr_info("Device is already in bad state, ignore force collect rddm\n"); return 0; } Loading
drivers/net/wireless/cnss2/pci.c +14 −8 Original line number Diff line number Diff line Loading @@ -545,25 +545,31 @@ int cnss_pci_link_down(struct device *dev) } EXPORT_SYMBOL(cnss_pci_link_down); int cnss_pci_is_device_down(struct device *dev) int cnss_pcie_is_device_down(struct cnss_pci_data *pci_priv) { struct cnss_plat_data *plat_priv = cnss_bus_dev_to_plat_priv(dev); struct cnss_pci_data *pci_priv; struct cnss_plat_data *plat_priv; if (!plat_priv) { cnss_pr_err("plat_priv is NULL\n"); if (!pci_priv) { cnss_pr_err("pci_priv is NULL\n"); return -ENODEV; } pci_priv = plat_priv->bus_priv; if (!pci_priv) { cnss_pr_err("pci_priv is NULL\n"); plat_priv = pci_priv->plat_priv; if (!plat_priv) { cnss_pr_err("plat_priv is NULL\n"); return -ENODEV; } return test_bit(CNSS_DEV_ERR_NOTIFY, &plat_priv->driver_state) | pci_priv->pci_link_down_ind; } int cnss_pci_is_device_down(struct device *dev) { struct cnss_pci_data *pci_priv = cnss_get_pci_priv(to_pci_dev(dev)); return cnss_pcie_is_device_down(pci_priv); } EXPORT_SYMBOL(cnss_pci_is_device_down); static char *cnss_mhi_state_to_str(enum cnss_mhi_state mhi_state) Loading
drivers/net/wireless/cnss2/pci.h +1 −0 Original line number Diff line number Diff line Loading @@ -183,5 +183,6 @@ void cnss_pci_pm_runtime_put_noidle(struct cnss_pci_data *pci_priv); void cnss_pci_pm_runtime_mark_last_busy(struct cnss_pci_data *pci_priv); int cnss_pci_update_status(struct cnss_pci_data *pci_priv, enum cnss_driver_status status); int cnss_pcie_is_device_down(struct cnss_pci_data *pci_priv); #endif /* _CNSS_PCI_H */