Commit 28d9a84e authored by Kashyap Desai's avatar Kashyap Desai Committed by Jakub Kicinski
Browse files

bnxt_en: Always provide max entry and entry size in coredump segments



While populating firmware host logging segments for the coredump, it is
possible for the FW command that flushes the segment to fail.  When that
happens, the existing code will not update the max entry and entry size
in the segment header and this causes software that decodes the coredump
to skip the segment.

The segment most likely has already collected some DMA data, so always
update these 2 segment fields in the header to allow the decoder to
decode any data in the segment.

Fixes: 3c2179e6 ("bnxt_en: Add FW trace coredump segments to the coredump")
Reviewed-by: default avatarShruti Parab <shruti.parab@broadcom.com>
Signed-off-by: default avatarKashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
Link: https://patch.msgid.link/20251104005700.542174-5-michael.chan@broadcom.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent ff02be05
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -333,13 +333,14 @@ static void bnxt_fill_drv_seg_record(struct bnxt *bp,
	u32 offset = 0;
	int rc = 0;

	record->max_entries = cpu_to_le32(ctxm->max_entries);
	record->entry_size = cpu_to_le32(ctxm->entry_size);

	rc = bnxt_dbg_hwrm_log_buffer_flush(bp, type, 0, &offset);
	if (rc)
		return;

	bnxt_bs_trace_check_wrap(bs_trace, offset);
	record->max_entries = cpu_to_le32(ctxm->max_entries);
	record->entry_size = cpu_to_le32(ctxm->entry_size);
	record->offset = cpu_to_le32(bs_trace->last_offset);
	record->wrapped = bs_trace->wrapped;
}