| From 3cab11147df5cc3a4b344754236ef108bc47dc75 Mon Sep 17 00:00:00 2001 |
| From: stephen hemminger <shemminger@vyatta.com> |
| Date: Mon, 30 Apr 2012 05:49:45 +0000 |
| Subject: sky2: propogate rx hash when packet is copied |
| |
| |
| From: stephen hemminger <shemminger@vyatta.com> |
| |
| [ 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: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/marvell/sky2.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/drivers/net/ethernet/marvell/sky2.c |
| +++ b/drivers/net/ethernet/marvell/sky2.c |
| @@ -2483,8 +2483,11 @@ static struct sk_buff *receive_copy(stru |
| 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); |
| } |