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

Commit 93ac8488 authored by Ido Reis's avatar Ido Reis Committed by Luciano Coelho
Browse files

wlcore: fwlog dynamic mem_block control



number of fwlog mem_blocks can be configured using module param.
this is a fw debug feature: in case a large fw log data is busrted during
a short period of time, the memory get filled and data is lost.
this allows us to dynamicly set the fw log mem_block usage, although
configuring more mem_block for logger comes at the expense of TP.

Signed-off-by: default avatarYair Shapira <yair.shapira@ti.com>
Signed-off-by: default avatarIdo Reis <idor@ti.com>
Signed-off-by: default avatarEliad Peller <eliad@wizery.com>
Signed-off-by: default avatarLuciano Coelho <luciano.coelho@intel.com>
parent 4b674144
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1274,6 +1274,9 @@ struct conf_rx_streaming_settings {
	u8 always;
} __packed;

#define CONF_FWLOG_MIN_MEM_BLOCKS	2
#define CONF_FWLOG_MAX_MEM_BLOCKS	16

struct conf_fwlog {
	/* Continuous or on-demand */
	u8 mode;
@@ -1281,7 +1284,7 @@ struct conf_fwlog {
	/*
	 * Number of memory blocks dedicated for the FW logger
	 *
	 * Range: 1-3, or 0 to disable the FW logger
	 * Range: 2-16, or 0 to disable the FW logger
	 */
	u8 mem_blocks;

+16 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@
#define WL1271_BOOT_RETRIES 3

static char *fwlog_param;
static int fwlog_mem_blocks = -1;
static int bug_on_recovery = -1;
static int no_recovery     = -1;

@@ -291,6 +292,18 @@ static void wlcore_adjust_conf(struct wl1271 *wl)
{
	/* Adjust settings according to optional module parameters */

	/* Firmware Logger params */
	if (fwlog_mem_blocks != -1) {
		if (fwlog_mem_blocks >= CONF_FWLOG_MIN_MEM_BLOCKS &&
		    fwlog_mem_blocks <= CONF_FWLOG_MAX_MEM_BLOCKS) {
			wl->conf.fwlog.mem_blocks = fwlog_mem_blocks;
		} else {
			wl1271_error(
				"Illegal fwlog_mem_blocks=%d using default %d",
				fwlog_mem_blocks, wl->conf.fwlog.mem_blocks);
		}
	}

	if (fwlog_param) {
		if (!strcmp(fwlog_param, "continuous")) {
			wl->conf.fwlog.mode = WL12XX_FWLOG_CONTINUOUS;
@@ -6158,6 +6171,9 @@ module_param_named(fwlog, fwlog_param, charp, 0);
MODULE_PARM_DESC(fwlog,
		 "FW logger options: continuous, ondemand, dbgpins or disable");

module_param(fwlog_mem_blocks, int, S_IRUSR | S_IWUSR);
MODULE_PARM_DESC(fwlog_mem_blocks, "fwlog mem_blocks");

module_param(bug_on_recovery, int, S_IRUSR | S_IWUSR);
MODULE_PARM_DESC(bug_on_recovery, "BUG() on fw recovery");