Commit 4bd451f4 authored by Dimitri Daskalakis's avatar Dimitri Daskalakis Committed by Paolo Abeni
Browse files

net: fbnic: Fix page chunking logic when PAGE_SIZE > 4K



The HW always works on a 4K page size. When the OS supports larger
pages, we fragment them across multiple BDQ descriptors.
We were not properly incrementing the descriptor, which resulted in us
specifying the last chunks id/addr and then 15 zero descriptors. This
would cause packet loss and driver crashes. This is not a fix since the
Kconfig prevents use outside of x86.

Signed-off-by: default avatarDimitri Daskalakis <dimitri.daskalakis1@gmail.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20251013211449.1377054-2-dimitri.daskalakis1@gmail.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent cb85ca4c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -887,6 +887,7 @@ static void fbnic_bd_prep(struct fbnic_ring *bdq, u16 id, netmem_ref netmem)
		*bdq_desc = cpu_to_le64(bd);
		bd += FIELD_PREP(FBNIC_BD_DESC_ADDR_MASK, 1) |
		      FIELD_PREP(FBNIC_BD_DESC_ID_MASK, 1);
		bdq_desc++;
	} while (--i);
}