diff options
Diffstat (limited to 'drivers/net/pxa168_eth.c')
| -rw-r--r-- | drivers/net/pxa168_eth.c | 9 | 
1 files changed, 6 insertions, 3 deletions
| diff --git a/drivers/net/pxa168_eth.c b/drivers/net/pxa168_eth.c index 89f7540d90f9..1a3033d8e7ed 100644 --- a/drivers/net/pxa168_eth.c +++ b/drivers/net/pxa168_eth.c @@ -502,7 +502,7 @@ static int add_del_hash_entry(struct pxa168_eth_private *pep,  	 * Pick the appropriate table, start scanning for free/reusable  	 * entries at the index obtained by hashing the specified MAC address  	 */ -	start = (struct addr_table_entry *)(pep->htpr); +	start = pep->htpr;  	entry = start + hash_function(mac_addr);  	for (i = 0; i < HOP_NUMBER; i++) {  		if (!(le32_to_cpu(entry->lo) & HASH_ENTRY_VALID)) { @@ -1267,13 +1267,16 @@ static int pxa168_eth_start_xmit(struct sk_buff *skb, struct net_device *dev)  	pep->tx_skb[tx_index] = skb;  	desc->byte_cnt = length;  	desc->buf_ptr = dma_map_single(NULL, skb->data, length, DMA_TO_DEVICE); + +	skb_tx_timestamp(skb); +  	wmb();  	desc->cmd_sts = BUF_OWNED_BY_DMA | TX_GEN_CRC | TX_FIRST_DESC |  			TX_ZERO_PADDING | TX_LAST_DESC | TX_EN_INT;  	wmb();  	wrl(pep, SDMA_CMD, SDMA_CMD_TXDH | SDMA_CMD_ERD); -	stats->tx_bytes += skb->len; +	stats->tx_bytes += length;  	stats->tx_packets++;  	dev->trans_start = jiffies;  	if (pep->tx_ring_size - pep->tx_desc_count <= 1) { @@ -1502,7 +1505,7 @@ static int pxa168_eth_probe(struct platform_device *pdev)  		err = -ENODEV;  		goto err_netdev;  	} -	pep->base = ioremap(res->start, res->end - res->start + 1); +	pep->base = ioremap(res->start, resource_size(res));  	if (pep->base == NULL) {  		err = -ENOMEM;  		goto err_netdev; | 
