sky2: propogate rx hash when packet is copied
authorstephen hemminger <shemminger@vyatta.com>
Mon, 30 Apr 2012 05:49:45 +0000 (05:49 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 1 May 2012 17:39:13 +0000 (13:39 -0400)
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>
drivers/net/ethernet/marvell/sky2.c

index c9b504e2dfc3bfdc4707dd0f3db240b1f365ec0c..0ced3117abc658c3a05fc95ebf134d3aea1f0757 100644 (file)
@@ -2494,8 +2494,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);
        }