diff options
Diffstat (limited to 'drivers/net/via-velocity.c')
-rw-r--r-- | drivers/net/via-velocity.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c index c5691fdb7079..fb53ef872df3 100644 --- a/drivers/net/via-velocity.c +++ b/drivers/net/via-velocity.c | |||
@@ -1838,17 +1838,19 @@ static void velocity_free_tx_buf(struct velocity_info *vptr, struct velocity_td_ | |||
1838 | { | 1838 | { |
1839 | struct sk_buff *skb = tdinfo->skb; | 1839 | struct sk_buff *skb = tdinfo->skb; |
1840 | int i; | 1840 | int i; |
1841 | int pktlen; | ||
1841 | 1842 | ||
1842 | /* | 1843 | /* |
1843 | * Don't unmap the pre-allocated tx_bufs | 1844 | * Don't unmap the pre-allocated tx_bufs |
1844 | */ | 1845 | */ |
1845 | if (tdinfo->skb_dma) { | 1846 | if (tdinfo->skb_dma) { |
1846 | 1847 | ||
1848 | pktlen = (skb->len > ETH_ZLEN ? : ETH_ZLEN); | ||
1847 | for (i = 0; i < tdinfo->nskb_dma; i++) { | 1849 | for (i = 0; i < tdinfo->nskb_dma; i++) { |
1848 | #ifdef VELOCITY_ZERO_COPY_SUPPORT | 1850 | #ifdef VELOCITY_ZERO_COPY_SUPPORT |
1849 | pci_unmap_single(vptr->pdev, tdinfo->skb_dma[i], le16_to_cpu(td->tdesc1.len), PCI_DMA_TODEVICE); | 1851 | pci_unmap_single(vptr->pdev, tdinfo->skb_dma[i], le16_to_cpu(td->tdesc1.len), PCI_DMA_TODEVICE); |
1850 | #else | 1852 | #else |
1851 | pci_unmap_single(vptr->pdev, tdinfo->skb_dma[i], skb->len, PCI_DMA_TODEVICE); | 1853 | pci_unmap_single(vptr->pdev, tdinfo->skb_dma[i], pktlen, PCI_DMA_TODEVICE); |
1852 | #endif | 1854 | #endif |
1853 | tdinfo->skb_dma[i] = 0; | 1855 | tdinfo->skb_dma[i] = 0; |
1854 | } | 1856 | } |
@@ -2080,17 +2082,14 @@ static int velocity_xmit(struct sk_buff *skb, struct net_device *dev) | |||
2080 | struct tx_desc *td_ptr; | 2082 | struct tx_desc *td_ptr; |
2081 | struct velocity_td_info *tdinfo; | 2083 | struct velocity_td_info *tdinfo; |
2082 | unsigned long flags; | 2084 | unsigned long flags; |
2083 | int pktlen = skb->len; | 2085 | int pktlen; |
2084 | __le16 len; | 2086 | __le16 len; |
2085 | int index; | 2087 | int index; |
2086 | 2088 | ||
2087 | 2089 | ||
2088 | 2090 | if (skb_padto(skb, ETH_ZLEN)) | |
2089 | if (skb->len < ETH_ZLEN) { | 2091 | goto out; |
2090 | if (skb_padto(skb, ETH_ZLEN)) | 2092 | pktlen = max_t(unsigned int, skb->len, ETH_ZLEN); |
2091 | goto out; | ||
2092 | pktlen = ETH_ZLEN; | ||
2093 | } | ||
2094 | 2093 | ||
2095 | len = cpu_to_le16(pktlen); | 2094 | len = cpu_to_le16(pktlen); |
2096 | 2095 | ||