OSDN Git Service

[netdrvr forcedeth] remove superfluous rx engine stop/start
authorAyaz Abdulla <aabdulla@nvidia.com>
Fri, 11 Nov 2005 13:29:59 +0000 (08:29 -0500)
committerJeff Garzik <jgarzik@pobox.com>
Fri, 11 Nov 2005 13:29:59 +0000 (08:29 -0500)
Signed-off-by: Ayaz Abdulla <aabdulla@nvidia.com>
drivers/net/forcedeth.c

index 22aec6e..6364adb 100644 (file)
@@ -80,7 +80,7 @@
  *                        into nv_close, otherwise reenabling for wol can
  *                        cause DMA to kfree'd memory.
  *     0.31: 14 Nov 2004: ethtool support for getting/setting link
- *                        capabilities.
+ *                        capabilities.
  *     0.32: 16 Apr 2005: RX_ERROR4 handling added.
  *     0.33: 16 May 2005: Support for MCP51 added.
  *     0.34: 18 Jun 2005: Add DEV_NEED_LINKTIMER to all nForce nics.
  *     0.37: 10 Jul 2005: Additional ethtool support, cleanup of pci id list
  *     0.38: 16 Jul 2005: tx irq rewrite: Use global flags instead of
  *                        per-packet flags.
- *      0.39: 18 Jul 2005: Add 64bit descriptor support.
- *      0.40: 19 Jul 2005: Add support for mac address change.
- *      0.41: 30 Jul 2005: Write back original MAC in nv_close instead
+ *     0.39: 18 Jul 2005: Add 64bit descriptor support.
+ *     0.40: 19 Jul 2005: Add support for mac address change.
+ *     0.41: 30 Jul 2005: Write back original MAC in nv_close instead
  *                        of nv_remove
- *      0.42: 06 Aug 2005: Fix lack of link speed initialization
+ *     0.42: 06 Aug 2005: Fix lack of link speed initialization
  *                        in the second (and later) nv_open call
- *      0.43: 10 Aug 2005: Add support for tx checksum.
- *      0.44: 20 Aug 2005: Add support for scatter gather and segmentation.
+ *     0.43: 10 Aug 2005: Add support for tx checksum.
+ *     0.44: 20 Aug 2005: Add support for scatter gather and segmentation.
+ *     0.45: 18 Sep 2005: Remove nv_stop/start_rx from every link check
  *
  * Known bugs:
  * We suspect that on some hardware no TX done interrupts are generated.
  * DEV_NEED_TIMERIRQ will not harm you on sane hardware, only generating a few
  * superfluous timer interrupts from the nic.
  */
-#define FORCEDETH_VERSION              "0.44"
+#define FORCEDETH_VERSION              "0.45"
 #define DRV_NAME                       "forcedeth"
 
 #include <linux/module.h>
@@ -1612,6 +1613,17 @@ static void nv_set_multicast(struct net_device *dev)
        spin_unlock_irq(&np->lock);
 }
 
+/**
+ * nv_update_linkspeed: Setup the MAC according to the link partner
+ * @dev: Network device to be configured
+ *
+ * The function queries the PHY and checks if there is a link partner.
+ * If yes, then it sets up the MAC accordingly. Otherwise, the MAC is
+ * set to 10 MBit HD.
+ *
+ * The function returns 0 if there is no link partner and 1 if there is
+ * a good link partner.
+ */
 static int nv_update_linkspeed(struct net_device *dev)
 {
        struct fe_priv *np = netdev_priv(dev);
@@ -1751,13 +1763,11 @@ set_speed:
 static void nv_linkchange(struct net_device *dev)
 {
        if (nv_update_linkspeed(dev)) {
-               if (netif_carrier_ok(dev)) {
-                       nv_stop_rx(dev);
-               } else {
+               if (!netif_carrier_ok(dev)) {
                        netif_carrier_on(dev);
                        printk(KERN_INFO "%s: link up.\n", dev->name);
+                       nv_start_rx(dev);
                }
-               nv_start_rx(dev);
        } else {
                if (netif_carrier_ok(dev)) {
                        netif_carrier_off(dev);