diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-05-10 08:01:31 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-05-10 08:01:31 -0400 |
commit | 1ae5dc342ac78d7a42965fd1f323815f6f5ef2c1 (patch) | |
tree | d1955a7639e99832590df26466a34d5786a880ae /drivers/net/arm | |
parent | 2b0b05ddc04b6d45e71cd36405df512075786f1e (diff) |
net: trans_start cleanups
Now that core network takes care of trans_start updates, dont do it
in drivers themselves, if possible. Drivers can avoid one cache miss
(on dev->trans_start) in their start_xmit() handler.
Exceptions are NETIF_F_LLTX drivers
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/arm')
-rw-r--r-- | drivers/net/arm/am79c961a.c | 1 | ||||
-rw-r--r-- | drivers/net/arm/at91_ether.c | 1 | ||||
-rw-r--r-- | drivers/net/arm/ep93xx_eth.c | 2 | ||||
-rw-r--r-- | drivers/net/arm/ether1.c | 1 | ||||
-rw-r--r-- | drivers/net/arm/ether3.c | 1 | ||||
-rw-r--r-- | drivers/net/arm/ixp4xx_eth.c | 1 | ||||
-rw-r--r-- | drivers/net/arm/ks8695net.c | 2 | ||||
-rw-r--r-- | drivers/net/arm/w90p910_ether.c | 6 |
8 files changed, 2 insertions, 13 deletions
diff --git a/drivers/net/arm/am79c961a.c b/drivers/net/arm/am79c961a.c index a4b5b08276f..8c496fb1ac9 100644 --- a/drivers/net/arm/am79c961a.c +++ b/drivers/net/arm/am79c961a.c | |||
@@ -469,7 +469,6 @@ am79c961_sendpacket(struct sk_buff *skb, struct net_device *dev) | |||
469 | 469 | ||
470 | spin_lock_irqsave(&priv->chip_lock, flags); | 470 | spin_lock_irqsave(&priv->chip_lock, flags); |
471 | write_rreg (dev->base_addr, CSR0, CSR0_TDMD|CSR0_IENA); | 471 | write_rreg (dev->base_addr, CSR0, CSR0_TDMD|CSR0_IENA); |
472 | dev->trans_start = jiffies; | ||
473 | spin_unlock_irqrestore(&priv->chip_lock, flags); | 472 | spin_unlock_irqrestore(&priv->chip_lock, flags); |
474 | 473 | ||
475 | /* | 474 | /* |
diff --git a/drivers/net/arm/at91_ether.c b/drivers/net/arm/at91_ether.c index 0adab30f626..e07b314ed8f 100644 --- a/drivers/net/arm/at91_ether.c +++ b/drivers/net/arm/at91_ether.c | |||
@@ -824,7 +824,6 @@ static int at91ether_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
824 | /* Set length of the packet in the Transmit Control register */ | 824 | /* Set length of the packet in the Transmit Control register */ |
825 | at91_emac_write(AT91_EMAC_TCR, skb->len); | 825 | at91_emac_write(AT91_EMAC_TCR, skb->len); |
826 | 826 | ||
827 | dev->trans_start = jiffies; | ||
828 | } else { | 827 | } else { |
829 | printk(KERN_ERR "at91_ether.c: at91ether_start_xmit() called, but device is busy!\n"); | 828 | printk(KERN_ERR "at91_ether.c: at91ether_start_xmit() called, but device is busy!\n"); |
830 | return NETDEV_TX_BUSY; /* if we return anything but zero, dev.c:1055 calls kfree_skb(skb) | 829 | return NETDEV_TX_BUSY; /* if we return anything but zero, dev.c:1055 calls kfree_skb(skb) |
diff --git a/drivers/net/arm/ep93xx_eth.c b/drivers/net/arm/ep93xx_eth.c index 6995169d285..c5f6736b7d6 100644 --- a/drivers/net/arm/ep93xx_eth.c +++ b/drivers/net/arm/ep93xx_eth.c | |||
@@ -374,8 +374,6 @@ static int ep93xx_xmit(struct sk_buff *skb, struct net_device *dev) | |||
374 | skb->len, DMA_TO_DEVICE); | 374 | skb->len, DMA_TO_DEVICE); |
375 | dev_kfree_skb(skb); | 375 | dev_kfree_skb(skb); |
376 | 376 | ||
377 | dev->trans_start = jiffies; | ||
378 | |||
379 | spin_lock_irq(&ep->tx_pending_lock); | 377 | spin_lock_irq(&ep->tx_pending_lock); |
380 | ep->tx_pending++; | 378 | ep->tx_pending++; |
381 | if (ep->tx_pending == TX_QUEUE_ENTRIES) | 379 | if (ep->tx_pending == TX_QUEUE_ENTRIES) |
diff --git a/drivers/net/arm/ether1.c b/drivers/net/arm/ether1.c index e47c0d96285..b17ab5153f5 100644 --- a/drivers/net/arm/ether1.c +++ b/drivers/net/arm/ether1.c | |||
@@ -736,7 +736,6 @@ ether1_sendpacket (struct sk_buff *skb, struct net_device *dev) | |||
736 | local_irq_restore(flags); | 736 | local_irq_restore(flags); |
737 | 737 | ||
738 | /* handle transmit */ | 738 | /* handle transmit */ |
739 | dev->trans_start = jiffies; | ||
740 | 739 | ||
741 | /* check to see if we have room for a full sized ether frame */ | 740 | /* check to see if we have room for a full sized ether frame */ |
742 | tmp = priv(dev)->tx_head; | 741 | tmp = priv(dev)->tx_head; |
diff --git a/drivers/net/arm/ether3.c b/drivers/net/arm/ether3.c index d9de9bce239..1361b7367c2 100644 --- a/drivers/net/arm/ether3.c +++ b/drivers/net/arm/ether3.c | |||
@@ -529,7 +529,6 @@ ether3_sendpacket(struct sk_buff *skb, struct net_device *dev) | |||
529 | return NETDEV_TX_BUSY; /* unable to queue */ | 529 | return NETDEV_TX_BUSY; /* unable to queue */ |
530 | } | 530 | } |
531 | 531 | ||
532 | dev->trans_start = jiffies; | ||
533 | ptr = 0x600 * priv(dev)->tx_head; | 532 | ptr = 0x600 * priv(dev)->tx_head; |
534 | priv(dev)->tx_head = next_ptr; | 533 | priv(dev)->tx_head = next_ptr; |
535 | next_ptr *= 0x600; | 534 | next_ptr *= 0x600; |
diff --git a/drivers/net/arm/ixp4xx_eth.c b/drivers/net/arm/ixp4xx_eth.c index 7800d7dfd29..24df0325090 100644 --- a/drivers/net/arm/ixp4xx_eth.c +++ b/drivers/net/arm/ixp4xx_eth.c | |||
@@ -708,7 +708,6 @@ static int eth_xmit(struct sk_buff *skb, struct net_device *dev) | |||
708 | /* NPE firmware pads short frames with zeros internally */ | 708 | /* NPE firmware pads short frames with zeros internally */ |
709 | wmb(); | 709 | wmb(); |
710 | queue_put_desc(TX_QUEUE(port->id), tx_desc_phys(port, n), desc); | 710 | queue_put_desc(TX_QUEUE(port->id), tx_desc_phys(port, n), desc); |
711 | dev->trans_start = jiffies; | ||
712 | 711 | ||
713 | if (qmgr_stat_below_low_watermark(txreadyq)) { /* empty */ | 712 | if (qmgr_stat_below_low_watermark(txreadyq)) { /* empty */ |
714 | #if DEBUG_TX | 713 | #if DEBUG_TX |
diff --git a/drivers/net/arm/ks8695net.c b/drivers/net/arm/ks8695net.c index 6404704f7ea..54c6d849cf2 100644 --- a/drivers/net/arm/ks8695net.c +++ b/drivers/net/arm/ks8695net.c | |||
@@ -1302,8 +1302,6 @@ ks8695_start_xmit(struct sk_buff *skb, struct net_device *ndev) | |||
1302 | if (++ksp->tx_ring_used == MAX_TX_DESC) | 1302 | if (++ksp->tx_ring_used == MAX_TX_DESC) |
1303 | netif_stop_queue(ndev); | 1303 | netif_stop_queue(ndev); |
1304 | 1304 | ||
1305 | ndev->trans_start = jiffies; | ||
1306 | |||
1307 | /* Kick the TX DMA in case it decided to go IDLE */ | 1305 | /* Kick the TX DMA in case it decided to go IDLE */ |
1308 | ks8695_writereg(ksp, KS8695_DTSC, 0); | 1306 | ks8695_writereg(ksp, KS8695_DTSC, 0); |
1309 | 1307 | ||
diff --git a/drivers/net/arm/w90p910_ether.c b/drivers/net/arm/w90p910_ether.c index 2491934b73e..2e852463382 100644 --- a/drivers/net/arm/w90p910_ether.c +++ b/drivers/net/arm/w90p910_ether.c | |||
@@ -483,7 +483,7 @@ static void w90p910_reset_mac(struct net_device *dev) | |||
483 | 483 | ||
484 | w90p910_init_desc(dev); | 484 | w90p910_init_desc(dev); |
485 | 485 | ||
486 | dev->trans_start = jiffies; | 486 | dev->trans_start = jiffies; /* prevent tx timeout */ |
487 | ether->cur_tx = 0x0; | 487 | ether->cur_tx = 0x0; |
488 | ether->finish_tx = 0x0; | 488 | ether->finish_tx = 0x0; |
489 | ether->cur_rx = 0x0; | 489 | ether->cur_rx = 0x0; |
@@ -497,7 +497,7 @@ static void w90p910_reset_mac(struct net_device *dev) | |||
497 | w90p910_trigger_tx(dev); | 497 | w90p910_trigger_tx(dev); |
498 | w90p910_trigger_rx(dev); | 498 | w90p910_trigger_rx(dev); |
499 | 499 | ||
500 | dev->trans_start = jiffies; | 500 | dev->trans_start = jiffies; /* prevent tx timeout */ |
501 | 501 | ||
502 | if (netif_queue_stopped(dev)) | 502 | if (netif_queue_stopped(dev)) |
503 | netif_wake_queue(dev); | 503 | netif_wake_queue(dev); |
@@ -634,8 +634,6 @@ static int w90p910_send_frame(struct net_device *dev, | |||
634 | 634 | ||
635 | txbd = ðer->tdesc->desclist[ether->cur_tx]; | 635 | txbd = ðer->tdesc->desclist[ether->cur_tx]; |
636 | 636 | ||
637 | dev->trans_start = jiffies; | ||
638 | |||
639 | if (txbd->mode & TX_OWEN_DMA) | 637 | if (txbd->mode & TX_OWEN_DMA) |
640 | netif_stop_queue(dev); | 638 | netif_stop_queue(dev); |
641 | 639 | ||