Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b1f0d19 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cnss2: Skip link down recovery if link has been recovered by retry"

parents d91914fa 15307054
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -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)
{
+1 −0
Original line number Diff line number Diff line
@@ -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,
+4 −0
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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;

+1 −0
Original line number Diff line number Diff line
@@ -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);