Commit 91311239 authored by Russell King's avatar Russell King Committed by Kalle Valo

wlcore: tidy up use of fw_log.actual_buff_size

Tidy up the use of fw_log.actual_buff_size - rather than reading it
multiple times and applying the endian conversion, read it once into
actual_len and use that instead.
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/E1lolvS-0003Ql-NJ@rmk-PC.armlinux.org.uk
parent 11ef6bc8
...@@ -40,7 +40,7 @@ int wlcore_event_fw_logger(struct wl1271 *wl) ...@@ -40,7 +40,7 @@ int wlcore_event_fw_logger(struct wl1271 *wl)
buffer = kzalloc(WL18XX_LOGGER_SDIO_BUFF_MAX, GFP_KERNEL); buffer = kzalloc(WL18XX_LOGGER_SDIO_BUFF_MAX, GFP_KERNEL);
if (!buffer) { if (!buffer) {
wl1271_error("Fail to allocate fw logger memory"); wl1271_error("Fail to allocate fw logger memory");
fw_log.actual_buff_size = cpu_to_le32(0); actual_len = 0;
goto out; goto out;
} }
...@@ -49,30 +49,30 @@ int wlcore_event_fw_logger(struct wl1271 *wl) ...@@ -49,30 +49,30 @@ int wlcore_event_fw_logger(struct wl1271 *wl)
if (ret < 0) { if (ret < 0) {
wl1271_error("Fail to read logger buffer, error_id = %d", wl1271_error("Fail to read logger buffer, error_id = %d",
ret); ret);
fw_log.actual_buff_size = cpu_to_le32(0); actual_len = 0;
goto free_out; goto free_out;
} }
memcpy(&fw_log, buffer, sizeof(fw_log)); memcpy(&fw_log, buffer, sizeof(fw_log));
if (le32_to_cpu(fw_log.actual_buff_size) == 0) actual_len = le32_to_cpu(fw_log.actual_buff_size);
if (actual_len == 0)
goto free_out; goto free_out;
actual_len = le32_to_cpu(fw_log.actual_buff_size);
start_loc = (le32_to_cpu(fw_log.buff_read_ptr) - start_loc = (le32_to_cpu(fw_log.buff_read_ptr) -
internal_fw_addrbase) - addr; internal_fw_addrbase) - addr;
end_buff_addr += le32_to_cpu(fw_log.max_buff_size); end_buff_addr += le32_to_cpu(fw_log.max_buff_size);
available_len = end_buff_addr - available_len = end_buff_addr -
(le32_to_cpu(fw_log.buff_read_ptr) - (le32_to_cpu(fw_log.buff_read_ptr) -
internal_fw_addrbase); internal_fw_addrbase);
actual_len = min(actual_len, available_len);
len = actual_len;
/* Copy initial part from end of ring buffer */
len = min(actual_len, available_len);
wl12xx_copy_fwlog(wl, &buffer[start_loc], len); wl12xx_copy_fwlog(wl, &buffer[start_loc], len);
clear_addr = addr + start_loc + le32_to_cpu(fw_log.actual_buff_size) + clear_addr = addr + start_loc + actual_len + internal_fw_addrbase;
internal_fw_addrbase;
len = le32_to_cpu(fw_log.actual_buff_size) - len; /* Copy any remaining part from beginning of ring buffer */
len = actual_len - len;
if (len) { if (len) {
wl12xx_copy_fwlog(wl, wl12xx_copy_fwlog(wl,
&buffer[WL18XX_LOGGER_BUFF_OFFSET], &buffer[WL18XX_LOGGER_BUFF_OFFSET],
...@@ -93,7 +93,7 @@ int wlcore_event_fw_logger(struct wl1271 *wl) ...@@ -93,7 +93,7 @@ int wlcore_event_fw_logger(struct wl1271 *wl)
free_out: free_out:
kfree(buffer); kfree(buffer);
out: out:
return le32_to_cpu(fw_log.actual_buff_size); return actual_len;
} }
EXPORT_SYMBOL_GPL(wlcore_event_fw_logger); EXPORT_SYMBOL_GPL(wlcore_event_fw_logger);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment