Skip to contentSkip to conversation

altera_tse: Correct rx packet length

PATCH Applied Vlastimil Setka 2 participants 2 messages Apr 28, 2015 – Apr 29, 2015

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 altera_tse: Correct rx packet length

From: Vlastimil Setka <[email protected]>

Altera TSE MAC rx DMA transfer starts with the 2 additional bytes for IP payload alignment. This patch fixes tse_rx() function loop which reads DMA rx status and extracts packet length from it. Status signalises a whole DMA transfer length, which is 2 bytes longer than the packet itself.

---
 drivers/net/ethernet/altera/altera_tse_main.c | 6 ++++++
 1 file changed, 6 insertions(+)
drivers/net/ethernet/altera/altera_tse_main.c +6 -0
index 90a7630..592ef28 100644
@@ -391,6 +391,12 @@ static int tse_rx(struct altera_tse_private *priv, int limit)
 				   "RCV pktstatus %08X pktlength %08X\n",
 				   pktstatus, pktlength);
 
+		/* DMA trasfer from TSE starts with 2 aditional bytes for
+		 * IP payload alignment. Status returned by get_rx_status()
+		 * contains DMA transfer length. Packet is 2 bytes shorter.
+		 */
+		pktlength -= 2;
+
 		count++;
 		next_entry = (++priv->rx_cons) % priv->rx_ring_size;
 
Signature · 1 line
1.8.1.2
maintainer Applied
#1 lore raw

From: Vlastimil Setka <[email protected]>
Date: Wed, 29 Apr 2015 00:17:11 +0200

Quoted 8 lines

From: Vlastimil Setka <[email protected]>

Altera TSE MAC rx DMA transfer starts with the 2 additional bytes for IP payload alignment. This patch fixes tse_rx() function loop which reads DMA rx status and extracts packet length from it. Status signalises a whole DMA transfer length, which is 2 bytes longer than the packet itself.

Applied, thank you.