[haiku-commits] r37144 - in haiku/trunk/src/add-ons/kernel/drivers/network: pegasus usb_asix usb_davicom usb_ecm

  • From: philippe.houdoin@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 15 Jun 2010 03:29:20 +0200 (CEST)

Author: phoudoin
Date: 2010-06-15 03:29:20 +0200 (Tue, 15 Jun 2010)
New Revision: 37144
Changeset: http://dev.haiku-os.org/changeset/37144/haiku

Modified:
   haiku/trunk/src/add-ons/kernel/drivers/network/pegasus/driver.c
   haiku/trunk/src/add-ons/kernel/drivers/network/usb_asix/ASIXDevice.cpp
   haiku/trunk/src/add-ons/kernel/drivers/network/usb_davicom/DavicomDevice.cpp
   haiku/trunk/src/add-ons/kernel/drivers/network/usb_ecm/ECMDevice.cpp
Log:
USB devices should report better than generic B_ERROR in order to 
help the stack to detect and handle hotplug device removal.


Modified: haiku/trunk/src/add-ons/kernel/drivers/network/pegasus/driver.c
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/network/pegasus/driver.c     
2010-06-15 00:09:51 UTC (rev 37143)
+++ haiku/trunk/src/add-ons/kernel/drivers/network/pegasus/driver.c     
2010-06-15 01:29:20 UTC (rev 37144)
@@ -486,6 +486,9 @@
                return B_BAD_VALUE;
        }
 
+       if (dev->aue_dying)
+               return B_DEVICE_NOT_FOUND;              /* already unplugged */
+
        blockFlag = dev->nonblocking ? B_TIMEOUT : 0;
 
        // block until receive is available (if blocking is allowed)
@@ -552,6 +555,9 @@
                DPRINTF_ERR("EINVAL\n");
                return EINVAL;
        }
+
+       if (dev->aue_dying)
+               return B_DEVICE_NOT_FOUND;              /* already unplugged */
        
                // block until a free tx descriptor is available
        if ((status = acquire_sem_etc(dev->tx_sem, 1, B_TIMEOUT, 
ETHER_TRANSMIT_TIMEOUT)) < B_NO_ERROR) {
@@ -623,7 +629,7 @@
        DPRINTF_INFO("ioctl(0x%x)\n", (int)op);
 
        if (device->aue_dying)
-               return B_ERROR;         /* already unplugged */
+               return B_DEVICE_NOT_FOUND;              /* already unplugged */
 
        switch (op) {
                case ETHER_INIT:

Modified: haiku/trunk/src/add-ons/kernel/drivers/network/usb_asix/ASIXDevice.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/network/usb_asix/ASIXDevice.cpp      
2010-06-15 00:09:51 UTC (rev 37143)
+++ haiku/trunk/src/add-ons/kernel/drivers/network/usb_asix/ASIXDevice.cpp      
2010-06-15 01:29:20 UTC (rev 37144)
@@ -175,7 +175,7 @@
        if (fRemoved) {
                TRACE_ALWAYS("Error of receiving %d bytes from removed 
device.\n", 
                                                                                
                                        numBytesToRead);
-               return B_ERROR;
+               return B_DEVICE_NOT_FOUND;
        }
 
        TRACE_FLOW("Request %d bytes.\n", numBytesToRead);
@@ -252,7 +252,7 @@
        if (fRemoved) {
                TRACE_ALWAYS("Error of writing %d bytes to removed device.\n", 
                                                                                
                                numBytesToWrite);
-               return B_ERROR;
+               return B_DEVICE_NOT_FOUND;
        }
 
        TRACE_FLOW("Write %d bytes.\n", numBytesToWrite);

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-06-15 00:09:51 UTC (rev 37143)
+++ 
haiku/trunk/src/add-ons/kernel/drivers/network/usb_davicom/DavicomDevice.cpp    
    2010-06-15 01:29:20 UTC (rev 37144)
@@ -235,7 +235,7 @@
        if (fRemoved) {
                TRACE_ALWAYS("Error of receiving %d bytes from removed 
device.\n", 
                        numBytesToRead);
-               return B_ERROR;
+               return B_DEVICE_NOT_FOUND;
        }
 
        TRACE_FLOW("Request %d bytes.\n", numBytesToRead);
@@ -305,7 +305,7 @@
        if (fRemoved) {
                TRACE_ALWAYS("Error of writing %d bytes to removed device.\n", 
                        numBytesToWrite);
-               return B_ERROR;
+               return B_DEVICE_NOT_FOUND;
        }
 
        if (!fHasConnection) {

Modified: haiku/trunk/src/add-ons/kernel/drivers/network/usb_ecm/ECMDevice.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/network/usb_ecm/ECMDevice.cpp        
2010-06-15 00:09:51 UTC (rev 37143)
+++ haiku/trunk/src/add-ons/kernel/drivers/network/usb_ecm/ECMDevice.cpp        
2010-06-15 01:29:20 UTC (rev 37144)
@@ -178,7 +178,7 @@
 {
        if (fRemoved) {
                *numBytes = 0;
-               return B_ERROR;
+               return B_DEVICE_NOT_FOUND;
        }
 
        status_t result = gUSBModule->queue_bulk(fReadEndpoint, buffer, 
*numBytes,
@@ -215,7 +215,7 @@
 {
        if (fRemoved) {
                *numBytes = 0;
-               return B_ERROR;
+               return B_DEVICE_NOT_FOUND;
        }
 
        status_t result = gUSBModule->queue_bulk(fWriteEndpoint, (uint8 
*)buffer,


Other related posts:

  • » [haiku-commits] r37144 - in haiku/trunk/src/add-ons/kernel/drivers/network: pegasus usb_asix usb_davicom usb_ecm - philippe . houdoin