diff options
Diffstat (limited to 'drivers/net/ethernet/sun')
| -rw-r--r-- | drivers/net/ethernet/sun/ldmvsw.c | 3 | ||||
| -rw-r--r-- | drivers/net/ethernet/sun/niu.c | 16 | ||||
| -rw-r--r-- | drivers/net/ethernet/sun/sungem.c | 22 | ||||
| -rw-r--r-- | drivers/net/ethernet/sun/sunvnet.c | 3 | 
4 files changed, 16 insertions, 28 deletions
| diff --git a/drivers/net/ethernet/sun/ldmvsw.c b/drivers/net/ethernet/sun/ldmvsw.c index a5dd627fe2f9..d42f47f6c632 100644 --- a/drivers/net/ethernet/sun/ldmvsw.c +++ b/drivers/net/ethernet/sun/ldmvsw.c @@ -101,7 +101,8 @@ static struct vnet_port *vsw_tx_port_find(struct sk_buff *skb,  }  static u16 vsw_select_queue(struct net_device *dev, struct sk_buff *skb, -			    void *accel_priv, select_queue_fallback_t fallback) +			    struct net_device *sb_dev, +			    select_queue_fallback_t fallback)  {  	struct vnet_port *port = netdev_priv(dev); diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c index 88c12474a0c3..9319d84bf49f 100644 --- a/drivers/net/ethernet/sun/niu.c +++ b/drivers/net/ethernet/sun/niu.c @@ -1225,25 +1225,9 @@ static int link_status_1g_rgmii(struct niu *np, int *link_up_p)  	bmsr = err;  	if (bmsr & BMSR_LSTATUS) { -		u16 adv, lpa; - -		err = mii_read(np, np->phy_addr, MII_ADVERTISE); -		if (err < 0) -			goto out; -		adv = err; - -		err = mii_read(np, np->phy_addr, MII_LPA); -		if (err < 0) -			goto out; -		lpa = err; - -		err = mii_read(np, np->phy_addr, MII_ESTATUS); -		if (err < 0) -			goto out;  		link_up = 1;  		current_speed = SPEED_1000;  		current_duplex = DUPLEX_FULL; -  	}  	lp->active_speed = current_speed;  	lp->active_duplex = current_duplex; 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 @@  #include <linux/sungem_phy.h>  #include "sungem.h" -/* Stripping FCS is causing problems, disabled for now */ -#undef STRIP_FCS +#define STRIP_FCS  #define DEFAULT_MSG	(NETIF_MSG_DRV		| \  			 NETIF_MSG_PROBE	| \ @@ -435,7 +434,7 @@ static int gem_rxmac_reset(struct gem *gp)  	writel(desc_dma & 0xffffffff, gp->regs + RXDMA_DBLOW);  	writel(RX_RING_SIZE - 4, gp->regs + RXDMA_KICK);  	val = (RXDMA_CFG_BASE | (RX_OFFSET << 10) | -	       ((14 / 2) << 13) | RXDMA_CFG_FTHRESH_128); +	       (ETH_HLEN << 13) | RXDMA_CFG_FTHRESH_128);  	writel(val, gp->regs + RXDMA_CFG);  	if (readl(gp->regs + GREG_BIFCFG) & GREG_BIFCFG_M66EN)  		writel(((5 & RXDMA_BLANK_IPKTS) | @@ -760,7 +759,6 @@ static int gem_rx(struct gem *gp, int work_to_do)  	struct net_device *dev = gp->dev;  	int entry, drops, work_done = 0;  	u32 done; -	__sum16 csum;  	if (netif_msg_rx_status(gp))  		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)  			skb = copy_skb;  		} -		csum = (__force __sum16)htons((status & RXDCTRL_TCPCSUM) ^ 0xffff); -		skb->csum = csum_unfold(csum); -		skb->ip_summed = CHECKSUM_COMPLETE; +		if (likely(dev->features & NETIF_F_RXCSUM)) { +			__sum16 csum; + +			csum = (__force __sum16)htons((status & RXDCTRL_TCPCSUM) ^ 0xffff); +			skb->csum = csum_unfold(csum); +			skb->ip_summed = CHECKSUM_COMPLETE; +		}  		skb->protocol = eth_type_trans(skb, gp->dev);  		napi_gro_receive(&gp->napi, skb); @@ -1761,7 +1763,7 @@ static void gem_init_dma(struct gem *gp)  	writel(0, gp->regs + TXDMA_KICK);  	val = (RXDMA_CFG_BASE | (RX_OFFSET << 10) | -	       ((14 / 2) << 13) | RXDMA_CFG_FTHRESH_128); +	       (ETH_HLEN << 13) | RXDMA_CFG_FTHRESH_128);  	writel(val, gp->regs + RXDMA_CFG);  	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)  	pci_set_drvdata(pdev, dev);  	/* We can do scatter/gather and HW checksum */ -	dev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM; -	dev->features |= dev->hw_features | NETIF_F_RXCSUM; +	dev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM; +	dev->features = dev->hw_features;  	if (pci_using_dac)  		dev->features |= NETIF_F_HIGHDMA; diff --git a/drivers/net/ethernet/sun/sunvnet.c b/drivers/net/ethernet/sun/sunvnet.c index a94f50442613..12539b357a78 100644 --- a/drivers/net/ethernet/sun/sunvnet.c +++ b/drivers/net/ethernet/sun/sunvnet.c @@ -234,7 +234,8 @@ static struct vnet_port *vnet_tx_port_find(struct sk_buff *skb,  }  static u16 vnet_select_queue(struct net_device *dev, struct sk_buff *skb, -			     void *accel_priv, select_queue_fallback_t fallback) +			     struct net_device *sb_dev, +			     select_queue_fallback_t fallback)  {  	struct vnet *vp = netdev_priv(dev);  	struct vnet_port *port = __tx_port_find(vp, skb); |