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

Commit 8ba83d4d authored by Arend van Spriel's avatar Arend van Spriel Committed by Kalle Valo
Browse files

brcmfmac: introduce module parameter to force successful probe



The module parameter can be used to ensure the probe succeeds thus
claiming the device and allowing post-mortem debugging in case of
firmware crash. It is only available when select CONFIG_BRCMDBG.

Reviewed-by: default avatarHante Meuleman <meuleman@broadcom.com>
Reviewed-by: default avatarFranky (Zhenhui) Lin <frankyl@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 7d34b056
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -67,6 +67,13 @@ static int brcmf_roamoff;
module_param_named(roamoff, brcmf_roamoff, int, S_IRUSR);
MODULE_PARM_DESC(roamoff, "Do not use internal roaming engine");

#ifdef DEBUG
/* always succeed brcmf_bus_start() */
static int brcmf_ignore_probe_fail;
module_param_named(ignore_probe_fail, brcmf_ignore_probe_fail, int, 0);
MODULE_PARM_DESC(ignore_probe_fail, "always succeed probe for debugging");
#endif

struct brcmf_mp_global_t brcmf_mp_global;

int brcmf_c_preinit_dcmds(struct brcmf_if *ifp)
@@ -232,7 +239,9 @@ int brcmf_mp_device_attach(struct brcmf_pub *drvr)
	drvr->settings->feature_disable = brcmf_feature_disable;
	drvr->settings->fcmode = brcmf_fcmode;
	drvr->settings->roamoff = !!brcmf_roamoff;

#ifdef DEBUG
	drvr->settings->ignore_probe_fail = !!brcmf_ignore_probe_fail;
#endif
	return 0;
}

+13 −0
Original line number Diff line number Diff line
@@ -55,11 +55,24 @@ struct brcmf_mp_device {
	int	feature_disable;
	int	fcmode;
	bool	roamoff;
	bool	ignore_probe_fail;
};

void brcmf_mp_attach(void);
int brcmf_mp_device_attach(struct brcmf_pub *drvr);
void brcmf_mp_device_detach(struct brcmf_pub *drvr);
#ifdef DEBUG
static inline bool brcmf_ignoring_probe_fail(struct brcmf_pub *drvr)
{
	return drvr->settings->ignore_probe_fail;
}
#else
static inline bool brcmf_ignoring_probe_fail(struct brcmf_pub *drvr)
{
	return false;
}
#endif

/* Sets dongle media info (drv_version, mac address). */
int brcmf_c_preinit_dcmds(struct brcmf_if *ifp);

+2 −0
Original line number Diff line number Diff line
@@ -1183,6 +1183,8 @@ int brcmf_bus_start(struct device *dev)
			brcmf_net_detach(p2p_ifp->ndev);
		drvr->iflist[0] = NULL;
		drvr->iflist[1] = NULL;
		if (brcmf_ignoring_probe_fail(drvr))
			ret = 0;
		return ret;
	}
	return 0;