40 lines
1.5 KiB
Diff
40 lines
1.5 KiB
Diff
From 5ab3f9a96c8f77166a2d0c3bdd9ed2a5029e3271 Mon Sep 17 00:00:00 2001
|
|
From: stephen hemminger <shemminger@vyatta.com>
|
|
Date: Mon, 30 Apr 2012 05:49:45 +0000
|
|
Subject: [PATCH 05/10] sky2: propogate rx hash when packet is copied
|
|
|
|
[ Upstream commit 3f42941b5d1d13542b1a755a9e4f633aa72e4d3e ]
|
|
|
|
When a small packet is received, the driver copies it to a new skb to allow
|
|
reusing the full size Rx buffer. The copy was propogating the checksum offload
|
|
but not the receive hash information. The bug is impact was mostly harmless
|
|
and therefore not observed until reviewing this area of code.
|
|
|
|
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|
---
|
|
drivers/net/ethernet/marvell/sky2.c | 3 +++
|
|
1 file changed, 3 insertions(+)
|
|
|
|
diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
|
|
index 7eb8a00..e1f4b65 100644
|
|
--- a/drivers/net/ethernet/marvell/sky2.c
|
|
+++ b/drivers/net/ethernet/marvell/sky2.c
|
|
@@ -2475,8 +2475,11 @@ static struct sk_buff *receive_copy(struct sky2_port *sky2,
|
|
skb_copy_from_linear_data(re->skb, skb->data, length);
|
|
skb->ip_summed = re->skb->ip_summed;
|
|
skb->csum = re->skb->csum;
|
|
+ skb->rxhash = re->skb->rxhash;
|
|
+
|
|
pci_dma_sync_single_for_device(sky2->hw->pdev, re->data_addr,
|
|
length, PCI_DMA_FROMDEVICE);
|
|
+ re->skb->rxhash = 0;
|
|
re->skb->ip_summed = CHECKSUM_NONE;
|
|
skb_put(skb, length);
|
|
}
|
|
--
|
|
1.7.10.1
|
|
|
|
|