diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/pcie/trans.c')
| -rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/trans.c | 30 | 
1 files changed, 16 insertions, 14 deletions
diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c index 26bdbe3ff7c..e316ca4632b 100644 --- a/drivers/net/wireless/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c @@ -1646,13 +1646,9 @@ static const char *get_fh_string(int cmd)  #undef IWL_CMD  } -int iwl_dump_fh(struct iwl_trans *trans, char **buf, bool display) +int iwl_dump_fh(struct iwl_trans *trans, char **buf)  {  	int i; -#ifdef CONFIG_IWLWIFI_DEBUG -	int pos = 0; -	size_t bufsz = 0; -#endif  	static const u32 fh_tbl[] = {  		FH_RSCSR_CHNL0_STTS_WPTR_REG,  		FH_RSCSR_CHNL0_RBDCB_BASE_REG, @@ -1664,29 +1660,35 @@ int iwl_dump_fh(struct iwl_trans *trans, char **buf, bool display)  		FH_TSSR_TX_STATUS_REG,  		FH_TSSR_TX_ERROR_REG  	}; -#ifdef CONFIG_IWLWIFI_DEBUG -	if (display) { -		bufsz = ARRAY_SIZE(fh_tbl) * 48 + 40; + +#ifdef CONFIG_IWLWIFI_DEBUGFS +	if (buf) { +		int pos = 0; +		size_t bufsz = ARRAY_SIZE(fh_tbl) * 48 + 40; +  		*buf = kmalloc(bufsz, GFP_KERNEL);  		if (!*buf)  			return -ENOMEM; +  		pos += scnprintf(*buf + pos, bufsz - pos,  				"FH register values:\n"); -		for (i = 0; i < ARRAY_SIZE(fh_tbl); i++) { + +		for (i = 0; i < ARRAY_SIZE(fh_tbl); i++)  			pos += scnprintf(*buf + pos, bufsz - pos,  				"  %34s: 0X%08x\n",  				get_fh_string(fh_tbl[i]),  				iwl_read_direct32(trans, fh_tbl[i])); -		} +  		return pos;  	}  #endif +  	IWL_ERR(trans, "FH register values:\n"); -	for (i = 0; i <  ARRAY_SIZE(fh_tbl); i++) { +	for (i = 0; i <  ARRAY_SIZE(fh_tbl); i++)  		IWL_ERR(trans, "  %34s: 0X%08x\n",  			get_fh_string(fh_tbl[i]),  			iwl_read_direct32(trans, fh_tbl[i])); -	} +  	return 0;  } @@ -1979,11 +1981,11 @@ static ssize_t iwl_dbgfs_fh_reg_read(struct file *file,  				     size_t count, loff_t *ppos)  {  	struct iwl_trans *trans = file->private_data; -	char *buf; +	char *buf = NULL;  	int pos = 0;  	ssize_t ret = -EFAULT; -	ret = pos = iwl_dump_fh(trans, &buf, true); +	ret = pos = iwl_dump_fh(trans, &buf);  	if (buf) {  		ret = simple_read_from_buffer(user_buf,  					      count, ppos, buf, pos);  |