diff options
Diffstat (limited to 'drivers/net/ethernet/freescale')
| -rw-r--r-- | drivers/net/ethernet/freescale/fec_main.c | 6 | ||||
| -rw-r--r-- | drivers/net/ethernet/freescale/gianfar.c | 11 | 
2 files changed, 15 insertions, 2 deletions
| diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 610573855213..8184d2fca9be 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -818,6 +818,12 @@ static void fec_enet_bd_init(struct net_device *dev)  		for (i = 0; i < txq->bd.ring_size; i++) {  			/* Initialize the BD for every fragment in the page. */  			bdp->cbd_sc = cpu_to_fec16(0); +			if (bdp->cbd_bufaddr && +			    !IS_TSO_HEADER(txq, fec32_to_cpu(bdp->cbd_bufaddr))) +				dma_unmap_single(&fep->pdev->dev, +						 fec32_to_cpu(bdp->cbd_bufaddr), +						 fec16_to_cpu(bdp->cbd_datlen), +						 DMA_TO_DEVICE);  			if (txq->tx_skbuff[i]) {  				dev_kfree_skb_any(txq->tx_skbuff[i]);  				txq->tx_skbuff[i] = NULL; diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c index 5be52d89b182..7f837006bb6a 100644 --- a/drivers/net/ethernet/freescale/gianfar.c +++ b/drivers/net/ethernet/freescale/gianfar.c @@ -1378,9 +1378,11 @@ static int gfar_probe(struct platform_device *ofdev)  	gfar_init_addr_hash_table(priv); -	/* Insert receive time stamps into padding alignment bytes */ +	/* Insert receive time stamps into padding alignment bytes, and +	 * plus 2 bytes padding to ensure the cpu alignment. +	 */  	if (priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER) -		priv->padding = 8; +		priv->padding = 8 + DEFAULT_PADDING;  	if (dev->features & NETIF_F_IP_CSUM ||  	    priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER) @@ -1790,6 +1792,7 @@ static int init_phy(struct net_device *dev)  		GFAR_SUPPORTED_GBIT : 0;  	phy_interface_t interface;  	struct phy_device *phydev; +	struct ethtool_eee edata;  	priv->oldlink = 0;  	priv->oldspeed = 0; @@ -1814,6 +1817,10 @@ static int init_phy(struct net_device *dev)  	/* Add support for flow control, but don't advertise it by default */  	phydev->supported |= (SUPPORTED_Pause | SUPPORTED_Asym_Pause); +	/* disable EEE autoneg, EEE not supported by eTSEC */ +	memset(&edata, 0, sizeof(struct ethtool_eee)); +	phy_ethtool_set_eee(phydev, &edata); +  	return 0;  } |