Skip to content

Commit

Permalink
[PATCH] Spidernet: remove ETH_ZLEN check in earlier patch
Browse files Browse the repository at this point in the history
In an earlier patch, code was added to pad packets that were less that
ETH_ZLEN (60) bytes using the skb_pad function.  This has caused hangs when
accessing certain NFS mounted file systems.  This patch removes the check
and solves the NFS problem.  The driver, with this patch, has been tested
extensively.  Please apply.

Signed-off-by: James K Lewis <jklewis@us.ibm.com>
Cc: Stephen Hemminger <shemminger@osdl.org>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
James K Lewis authored and Jeff Garzik committed Nov 30, 2006
1 parent 418e8f3 commit 9c434f5
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 14 deletions.
18 changes: 5 additions & 13 deletions drivers/net/spider_net.c
Original file line number Diff line number Diff line change
Expand Up @@ -644,20 +644,12 @@ spider_net_prepare_tx_descr(struct spider_net_card *card,
struct spider_net_descr *descr;
dma_addr_t buf;
unsigned long flags;
int length;

length = skb->len;
if (length < ETH_ZLEN) {
if (skb_pad(skb, ETH_ZLEN-length))
return 0;
length = ETH_ZLEN;
}

buf = pci_map_single(card->pdev, skb->data, length, PCI_DMA_TODEVICE);
buf = pci_map_single(card->pdev, skb->data, skb->len, PCI_DMA_TODEVICE);
if (pci_dma_mapping_error(buf)) {
if (netif_msg_tx_err(card) && net_ratelimit())
pr_err("could not iommu-map packet (%p, %i). "
"Dropping packet\n", skb->data, length);
"Dropping packet\n", skb->data, skb->len);
card->spider_stats.tx_iommu_map_error++;
return -ENOMEM;
}
Expand All @@ -667,7 +659,7 @@ spider_net_prepare_tx_descr(struct spider_net_card *card,
card->tx_chain.head = descr->next;

descr->buf_addr = buf;
descr->buf_size = length;
descr->buf_size = skb->len;
descr->next_descr_addr = 0;
descr->skb = skb;
descr->data_status = 0;
Expand Down Expand Up @@ -802,8 +794,8 @@ spider_net_release_tx_chain(struct spider_net_card *card, int brutal)

/* unmap the skb */
if (skb) {
int len = skb->len < ETH_ZLEN ? ETH_ZLEN : skb->len;
pci_unmap_single(card->pdev, buf_addr, len, PCI_DMA_TODEVICE);
pci_unmap_single(card->pdev, buf_addr, skb->len,
PCI_DMA_TODEVICE);
dev_kfree_skb(skb);
}
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/spider_net.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
#ifndef _SPIDER_NET_H
#define _SPIDER_NET_H

#define VERSION "1.1 A"
#define VERSION "1.5 A"

#include "sungem_phy.h"

Expand Down

0 comments on commit 9c434f5

Please sign in to comment.