diff options
| -rw-r--r-- | drivers/net/ethernet/sun/sungem.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/net/ethernet/sun/sungem.c b/drivers/net/ethernet/sun/sungem.c index 7a16d40a72d1..b9221fc1674d 100644 --- a/drivers/net/ethernet/sun/sungem.c +++ b/drivers/net/ethernet/sun/sungem.c | |||
| @@ -60,8 +60,7 @@ | |||
| 60 | #include <linux/sungem_phy.h> | 60 | #include <linux/sungem_phy.h> |
| 61 | #include "sungem.h" | 61 | #include "sungem.h" |
| 62 | 62 | ||
| 63 | /* Stripping FCS is causing problems, disabled for now */ | 63 | #define STRIP_FCS |
| 64 | #undef STRIP_FCS | ||
| 65 | 64 | ||
| 66 | #define DEFAULT_MSG (NETIF_MSG_DRV | \ | 65 | #define DEFAULT_MSG (NETIF_MSG_DRV | \ |
| 67 | NETIF_MSG_PROBE | \ | 66 | NETIF_MSG_PROBE | \ |
| @@ -435,7 +434,7 @@ static int gem_rxmac_reset(struct gem *gp) | |||
| 435 | writel(desc_dma & 0xffffffff, gp->regs + RXDMA_DBLOW); | 434 | writel(desc_dma & 0xffffffff, gp->regs + RXDMA_DBLOW); |
| 436 | writel(RX_RING_SIZE - 4, gp->regs + RXDMA_KICK); | 435 | writel(RX_RING_SIZE - 4, gp->regs + RXDMA_KICK); |
| 437 | val = (RXDMA_CFG_BASE | (RX_OFFSET << 10) | | 436 | val = (RXDMA_CFG_BASE | (RX_OFFSET << 10) | |
| 438 | ((14 / 2) << 13) | RXDMA_CFG_FTHRESH_128); | 437 | (ETH_HLEN << 13) | RXDMA_CFG_FTHRESH_128); |
| 439 | writel(val, gp->regs + RXDMA_CFG); | 438 | writel(val, gp->regs + RXDMA_CFG); |
| 440 | if (readl(gp->regs + GREG_BIFCFG) & GREG_BIFCFG_M66EN) | 439 | if (readl(gp->regs + GREG_BIFCFG) & GREG_BIFCFG_M66EN) |
| 441 | writel(((5 & RXDMA_BLANK_IPKTS) | | 440 | writel(((5 & RXDMA_BLANK_IPKTS) | |
| @@ -760,7 +759,6 @@ static int gem_rx(struct gem *gp, int work_to_do) | |||
| 760 | struct net_device *dev = gp->dev; | 759 | struct net_device *dev = gp->dev; |
| 761 | int entry, drops, work_done = 0; | 760 | int entry, drops, work_done = 0; |
| 762 | u32 done; | 761 | u32 done; |
| 763 | __sum16 csum; | ||
| 764 | 762 | ||
| 765 | if (netif_msg_rx_status(gp)) | 763 | if (netif_msg_rx_status(gp)) |
| 766 | printk(KERN_DEBUG "%s: rx interrupt, done: %d, rx_new: %d\n", | 764 | printk(KERN_DEBUG "%s: rx interrupt, done: %d, rx_new: %d\n", |
| @@ -855,9 +853,13 @@ static int gem_rx(struct gem *gp, int work_to_do) | |||
| 855 | skb = copy_skb; | 853 | skb = copy_skb; |
| 856 | } | 854 | } |
| 857 | 855 | ||
| 858 | csum = (__force __sum16)htons((status & RXDCTRL_TCPCSUM) ^ 0xffff); | 856 | if (likely(dev->features & NETIF_F_RXCSUM)) { |
| 859 | skb->csum = csum_unfold(csum); | 857 | __sum16 csum; |
| 860 | skb->ip_summed = CHECKSUM_COMPLETE; | 858 | |
| 859 | csum = (__force __sum16)htons((status & RXDCTRL_TCPCSUM) ^ 0xffff); | ||
| 860 | skb->csum = csum_unfold(csum); | ||
| 861 | skb->ip_summed = CHECKSUM_COMPLETE; | ||
| 862 | } | ||
| 861 | skb->protocol = eth_type_trans(skb, gp->dev); | 863 | skb->protocol = eth_type_trans(skb, gp->dev); |
| 862 | 864 | ||
| 863 | napi_gro_receive(&gp->napi, skb); | 865 | napi_gro_receive(&gp->napi, skb); |
| @@ -1761,7 +1763,7 @@ static void gem_init_dma(struct gem *gp) | |||
| 1761 | writel(0, gp->regs + TXDMA_KICK); | 1763 | writel(0, gp->regs + TXDMA_KICK); |
| 1762 | 1764 | ||
| 1763 | val = (RXDMA_CFG_BASE | (RX_OFFSET << 10) | | 1765 | val = (RXDMA_CFG_BASE | (RX_OFFSET << 10) | |
| 1764 | ((14 / 2) << 13) | RXDMA_CFG_FTHRESH_128); | 1766 | (ETH_HLEN << 13) | RXDMA_CFG_FTHRESH_128); |
| 1765 | writel(val, gp->regs + RXDMA_CFG); | 1767 | writel(val, gp->regs + RXDMA_CFG); |
| 1766 | 1768 | ||
| 1767 | writel(desc_dma >> 32, gp->regs + RXDMA_DBHI); | 1769 | writel(desc_dma >> 32, gp->regs + RXDMA_DBHI); |
| @@ -2985,8 +2987,8 @@ static int gem_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
| 2985 | pci_set_drvdata(pdev, dev); | 2987 | pci_set_drvdata(pdev, dev); |
| 2986 | 2988 | ||
| 2987 | /* We can do scatter/gather and HW checksum */ | 2989 | /* We can do scatter/gather and HW checksum */ |
| 2988 | dev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM; | 2990 | dev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM; |
| 2989 | dev->features |= dev->hw_features | NETIF_F_RXCSUM; | 2991 | dev->features = dev->hw_features; |
| 2990 | if (pci_using_dac) | 2992 | if (pci_using_dac) |
| 2991 | dev->features |= NETIF_F_HIGHDMA; | 2993 | dev->features |= NETIF_F_HIGHDMA; |
| 2992 | 2994 | ||
