Loading drivers/net/wireless/cnss2/bus.c +15 −0 Original line number Diff line number Diff line Loading @@ -418,6 +418,21 @@ int cnss_bus_is_device_down(struct cnss_plat_data *plat_priv) } } int cnss_bus_check_link_status(struct cnss_plat_data *plat_priv) { if (!plat_priv) return -ENODEV; switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_check_link_status(plat_priv->bus_priv); default: cnss_pr_dbg("Unsupported bus type: %d\n", plat_priv->bus_type); return 0; } } int cnss_bus_debug_reg_read(struct cnss_plat_data *plat_priv, u32 offset, u32 *val) { Loading drivers/net/wireless/cnss2/bus.h +1 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ int cnss_bus_call_driver_modem_status(struct cnss_plat_data *plat_priv, 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); int cnss_bus_check_link_status(struct cnss_plat_data *plat_priv); int cnss_bus_debug_reg_read(struct cnss_plat_data *plat_priv, u32 offset, u32 *val); int cnss_bus_debug_reg_write(struct cnss_plat_data *plat_priv, u32 offset, Loading drivers/net/wireless/cnss2/main.c +4 −0 Original line number Diff line number Diff line Loading @@ -1023,6 +1023,10 @@ static int cnss_do_recovery(struct cnss_plat_data *plat_priv, switch (reason) { case CNSS_REASON_LINK_DOWN: if (!cnss_bus_check_link_status(plat_priv)) { cnss_pr_dbg("Skip link down recovery as link is already up\n"); return 0; } if (test_bit(LINK_DOWN_SELF_RECOVERY, &plat_priv->ctrl_params.quirks)) goto self_recovery; Loading drivers/net/wireless/cnss2/pci.c +1 −1 Original line number Diff line number Diff line Loading @@ -356,7 +356,7 @@ static struct cnss_misc_reg wlaon_reg_access_seq[] = { #define PCIE_REG_SIZE ARRAY_SIZE(pcie_reg_access_seq) #define WLAON_REG_SIZE ARRAY_SIZE(wlaon_reg_access_seq) static int cnss_pci_check_link_status(struct cnss_pci_data *pci_priv) int cnss_pci_check_link_status(struct cnss_pci_data *pci_priv) { u16 device_id; Loading drivers/net/wireless/cnss2/pci.h +1 −0 Original line number Diff line number Diff line Loading @@ -162,6 +162,7 @@ static inline int cnss_pci_get_drv_connected(void *bus_priv) return atomic_read(&pci_priv->drv_connected); } int cnss_pci_check_link_status(struct cnss_pci_data *pci_priv); int cnss_suspend_pci_link(struct cnss_pci_data *pci_priv); int cnss_resume_pci_link(struct cnss_pci_data *pci_priv); int cnss_pci_init(struct cnss_plat_data *plat_priv); Loading Loading
drivers/net/wireless/cnss2/bus.c +15 −0 Original line number Diff line number Diff line Loading @@ -418,6 +418,21 @@ int cnss_bus_is_device_down(struct cnss_plat_data *plat_priv) } } int cnss_bus_check_link_status(struct cnss_plat_data *plat_priv) { if (!plat_priv) return -ENODEV; switch (plat_priv->bus_type) { case CNSS_BUS_PCI: return cnss_pci_check_link_status(plat_priv->bus_priv); default: cnss_pr_dbg("Unsupported bus type: %d\n", plat_priv->bus_type); return 0; } } int cnss_bus_debug_reg_read(struct cnss_plat_data *plat_priv, u32 offset, u32 *val) { Loading
drivers/net/wireless/cnss2/bus.h +1 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ int cnss_bus_call_driver_modem_status(struct cnss_plat_data *plat_priv, 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); int cnss_bus_check_link_status(struct cnss_plat_data *plat_priv); int cnss_bus_debug_reg_read(struct cnss_plat_data *plat_priv, u32 offset, u32 *val); int cnss_bus_debug_reg_write(struct cnss_plat_data *plat_priv, u32 offset, Loading
drivers/net/wireless/cnss2/main.c +4 −0 Original line number Diff line number Diff line Loading @@ -1023,6 +1023,10 @@ static int cnss_do_recovery(struct cnss_plat_data *plat_priv, switch (reason) { case CNSS_REASON_LINK_DOWN: if (!cnss_bus_check_link_status(plat_priv)) { cnss_pr_dbg("Skip link down recovery as link is already up\n"); return 0; } if (test_bit(LINK_DOWN_SELF_RECOVERY, &plat_priv->ctrl_params.quirks)) goto self_recovery; Loading
drivers/net/wireless/cnss2/pci.c +1 −1 Original line number Diff line number Diff line Loading @@ -356,7 +356,7 @@ static struct cnss_misc_reg wlaon_reg_access_seq[] = { #define PCIE_REG_SIZE ARRAY_SIZE(pcie_reg_access_seq) #define WLAON_REG_SIZE ARRAY_SIZE(wlaon_reg_access_seq) static int cnss_pci_check_link_status(struct cnss_pci_data *pci_priv) int cnss_pci_check_link_status(struct cnss_pci_data *pci_priv) { u16 device_id; Loading
drivers/net/wireless/cnss2/pci.h +1 −0 Original line number Diff line number Diff line Loading @@ -162,6 +162,7 @@ static inline int cnss_pci_get_drv_connected(void *bus_priv) return atomic_read(&pci_priv->drv_connected); } int cnss_pci_check_link_status(struct cnss_pci_data *pci_priv); int cnss_suspend_pci_link(struct cnss_pci_data *pci_priv); int cnss_resume_pci_link(struct cnss_pci_data *pci_priv); int cnss_pci_init(struct cnss_plat_data *plat_priv); Loading