[haiku-commits] r35019 - haiku/trunk/src/add-ons/kernel/drivers/network/usb_davicom

Author: pulkomandy
Date: 2010-01-11 22:39:43 +0100 (Mon, 11 Jan 2010)
New Revision: 35019
Changeset: http://dev.haiku-os.org/changeset/35019/haiku

Modified:
   haiku/trunk/src/add-ons/kernel/drivers/network/usb_davicom/DavicomDevice.cpp
Log:
Fixed a stupid bug preventing media stauts to become active.


Modified: 
haiku/trunk/src/add-ons/kernel/drivers/network/usb_davicom/DavicomDevice.cpp
===================================================================
--- 
haiku/trunk/src/add-ons/kernel/drivers/network/usb_davicom/DavicomDevice.cpp    
    2010-01-11 21:38:07 UTC (rev 35018)
+++ 
haiku/trunk/src/add-ons/kernel/drivers/network/usb_davicom/DavicomDevice.cpp    
    2010-01-11 21:39:43 UTC (rev 35019)
@@ -799,12 +799,15 @@
        
        bool linkIsUp = (fNotifyBuffer[0] & NSR_LINKST) != 0;
 
-       bool linkStateChange = linkIsUp != fHasConnection;
+       bool linkStateChange = (linkIsUp != fHasConnection);
        fHasConnection = linkIsUp;
 
-       if(linkStateChange) {
-               TRACE("Link is now %s at %s Mb/s\n", 
-                       fHasConnection ? "up" : "down", (fNotifyBuffer[0] & 
NSR_SPEED) ? "10" : "100");
+       if (linkStateChange) {
+               if (fHasConnection) {
+                       TRACE("Link is now up at %s Mb/s\n", 
+                               (fNotifyBuffer[0] & NSR_SPEED) ? "10" : "100");
+               } else
+                       TRACE("Link is now down");
        }
 
        if (linkStateChange && fLinkStateChangeSem >= B_OK)
@@ -829,9 +832,9 @@
 
        linkState->quality = 1000;
 
-       uint16 mediumStatus = IFM_ETHER | IFM_100_TX;
+       linkState->media = IFM_ETHER | IFM_100_TX;
        if (fHasConnection) {
-               mediumStatus |= IFM_ACTIVE;
+               linkState->media |= IFM_ACTIVE;
                result = _ReadRegister(NCR, 1, &registerValue);
                if (result != B_OK) {
                        TRACE_ALWAYS("Error reading NCR register! %x\n",result);
@@ -839,16 +842,14 @@
                }
 
                if (registerValue & NCR_FDX)
-                       mediumStatus |= IFM_FULL_DUPLEX;
+                       linkState->media |= IFM_FULL_DUPLEX;
                else
-                       mediumStatus |= IFM_HALF_DUPLEX;
+                       linkState->media |= IFM_HALF_DUPLEX;
 
                if (registerValue & NCR_LBK)
-                       mediumStatus |= IFM_LOOP;
+                       linkState->media |= IFM_LOOP;
        }
 
-       linkState->media = mediumStatus;
-
        TRACE_FLOW("Medium state: %s, %lld MBit/s, %s duplex.\n", 
                                                (linkState->media & IFM_ACTIVE) 
? "active" : "inactive",
                                                linkState->speed / 1000,


Other related posts:

  • » [haiku-commits] r35019 - haiku/trunk/src/add-ons/kernel/drivers/network/usb_davicom - pulkomandy