diff options
Diffstat (limited to 'drivers/net/ethernet/xilinx/xilinx_axienet_main.c')
| -rw-r--r-- | drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 18 | 
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c index b2ff038d6d2..7b0a7355626 100644 --- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c +++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c @@ -22,11 +22,11 @@  #include <linux/delay.h>  #include <linux/etherdevice.h> -#include <linux/init.h>  #include <linux/module.h>  #include <linux/netdevice.h>  #include <linux/of_mdio.h>  #include <linux/of_platform.h> +#include <linux/of_irq.h>  #include <linux/of_address.h>  #include <linux/skbuff.h>  #include <linux/spinlock.h> @@ -601,7 +601,8 @@ static void axienet_start_xmit_done(struct net_device *ndev)  		size += status & XAXIDMA_BD_STS_ACTUAL_LEN_MASK;  		packets++; -		lp->tx_bd_ci = ++lp->tx_bd_ci % TX_BD_NUM; +		++lp->tx_bd_ci; +		lp->tx_bd_ci %= TX_BD_NUM;  		cur_p = &lp->tx_bd_v[lp->tx_bd_ci];  		status = cur_p->status;  	} @@ -687,7 +688,8 @@ static int axienet_start_xmit(struct sk_buff *skb, struct net_device *ndev)  				     skb_headlen(skb), DMA_TO_DEVICE);  	for (ii = 0; ii < num_frag; ii++) { -		lp->tx_bd_tail = ++lp->tx_bd_tail % TX_BD_NUM; +		++lp->tx_bd_tail; +		lp->tx_bd_tail %= TX_BD_NUM;  		cur_p = &lp->tx_bd_v[lp->tx_bd_tail];  		frag = &skb_shinfo(skb)->frags[ii];  		cur_p->phys = dma_map_single(ndev->dev.parent, @@ -703,7 +705,8 @@ static int axienet_start_xmit(struct sk_buff *skb, struct net_device *ndev)  	tail_p = lp->tx_bd_p + sizeof(*lp->tx_bd_v) * lp->tx_bd_tail;  	/* Start the transfer */  	axienet_dma_out32(lp, XAXIDMA_TX_TDESC_OFFSET, tail_p); -	lp->tx_bd_tail = ++lp->tx_bd_tail % TX_BD_NUM; +	++lp->tx_bd_tail; +	lp->tx_bd_tail %= TX_BD_NUM;  	return NETDEV_TX_OK;  } @@ -753,7 +756,7 @@ static void axienet_recv(struct net_device *ndev)  				skb->ip_summed = CHECKSUM_UNNECESSARY;  			}  		} else if ((lp->features & XAE_FEATURE_PARTIAL_RX_CSUM) != 0 && -			   skb->protocol == __constant_htons(ETH_P_IP) && +			   skb->protocol == htons(ETH_P_IP) &&  			   skb->len > 64) {  			skb->csum = be32_to_cpu(cur_p->app3 & 0xFFFF);  			skb->ip_summed = CHECKSUM_COMPLETE; @@ -775,7 +778,8 @@ static void axienet_recv(struct net_device *ndev)  		cur_p->status = 0;  		cur_p->sw_id_offset = (u32) new_skb; -		lp->rx_bd_ci = ++lp->rx_bd_ci % RX_BD_NUM; +		++lp->rx_bd_ci; +		lp->rx_bd_ci %= RX_BD_NUM;  		cur_p = &lp->rx_bd_v[lp->rx_bd_ci];  	} @@ -1486,7 +1490,7 @@ static int axienet_of_probe(struct platform_device *op)  	SET_NETDEV_DEV(ndev, &op->dev);  	ndev->flags &= ~IFF_MULTICAST;  /* clear multicast */ -	ndev->features = NETIF_F_SG | NETIF_F_FRAGLIST; +	ndev->features = NETIF_F_SG;  	ndev->netdev_ops = &axienet_netdev_ops;  	ndev->ethtool_ops = &axienet_ethtool_ops;  | 
