Signed-off-by: Matthias Beyer <m...@beyermatthias.de>
---
 drivers/staging/bcm/InterfaceMisc.c | 69 +++++++++++++++++--------------------
 1 file changed, 31 insertions(+), 38 deletions(-)

diff --git a/drivers/staging/bcm/InterfaceMisc.c 
b/drivers/staging/bcm/InterfaceMisc.c
index fff7d68..a0f159e 100644
--- a/drivers/staging/bcm/InterfaceMisc.c
+++ b/drivers/staging/bcm/InterfaceMisc.c
@@ -1,36 +1,46 @@
 #include "headers.h"
 
-int InterfaceRDM(struct bcm_interface_adapter *psIntfAdapter,
-               unsigned int addr,
-               void *buff,
-               int len)
+static int adapter_err_occurred(const struct bcm_interface_adapter *ad)
 {
-       int bytes;
-
-       if (!psIntfAdapter)
-               return -EINVAL;
-
-       if (psIntfAdapter->psAdapter->device_removed == TRUE) {
-               BCM_DEBUG_PRINT(psIntfAdapter->psAdapter, DBG_TYPE_PRINTK, 0, 0,
+       if (ad->psAdapter->device_removed == TRUE) {
+               BCM_DEBUG_PRINT(ad->psAdapter, DBG_TYPE_PRINTK, 0, 0,
                                "Device got removed");
                return -ENODEV;
        }
 
-       if ((psIntfAdapter->psAdapter->StopAllXaction == TRUE) &&
-           (psIntfAdapter->psAdapter->chip_id >= T3LPB)) {
-               BCM_DEBUG_PRINT(psIntfAdapter->psAdapter, DBG_TYPE_OTHERS, RDM,
+       if ((ad->psAdapter->StopAllXaction == TRUE) &&
+           (ad->psAdapter->chip_id >= T3LPB)) {
+               BCM_DEBUG_PRINT(ad->psAdapter, DBG_TYPE_OTHERS, RDM,
                                DBG_LVL_ALL,
                                "Currently Xaction is not allowed on the bus");
                return -EACCES;
        }
 
-       if (psIntfAdapter->bSuspended == TRUE ||
-           psIntfAdapter->bPreparingForBusSuspend == TRUE) {
-               BCM_DEBUG_PRINT(psIntfAdapter->psAdapter, DBG_TYPE_OTHERS, RDM,
+       if (ad->bSuspended == TRUE || ad->bPreparingForBusSuspend == TRUE) {
+               BCM_DEBUG_PRINT(ad->psAdapter, DBG_TYPE_OTHERS, RDM,
                                DBG_LVL_ALL,
                                "Bus is in suspended states hence RDM not 
allowed..");
                return -EACCES;
        }
+
+       return 0;
+}
+
+int InterfaceRDM(struct bcm_interface_adapter *psIntfAdapter,
+               unsigned int addr,
+               void *buff,
+               int len)
+{
+       int bytes;
+       int err = 0;
+
+       if (!psIntfAdapter)
+               return -EINVAL;
+
+       err = adapter_err_occurred(psIntfAdapter);
+       if (err)
+               return err;
+
        psIntfAdapter->psAdapter->DeviceAccess = TRUE;
 
        bytes = usb_control_msg(psIntfAdapter->udev,
@@ -63,31 +73,14 @@ int InterfaceWRM(struct bcm_interface_adapter 
*psIntfAdapter,
                int len)
 {
        int retval = 0;
+       int err = 0;
 
        if (!psIntfAdapter)
                return -EINVAL;
 
-       if (psIntfAdapter->psAdapter->device_removed == TRUE) {
-               BCM_DEBUG_PRINT(psIntfAdapter->psAdapter, DBG_TYPE_PRINTK, 0, 0,
-                               "Device got removed");
-               return -ENODEV;
-       }
-
-       if ((psIntfAdapter->psAdapter->StopAllXaction == TRUE) &&
-           (psIntfAdapter->psAdapter->chip_id >= T3LPB)) {
-               BCM_DEBUG_PRINT(psIntfAdapter->psAdapter, DBG_TYPE_OTHERS, WRM,
-                               DBG_LVL_ALL,
-                               "Currently Xaction is not allowed on the 
bus...");
-               return -EACCES;
-       }
-
-       if (psIntfAdapter->bSuspended == TRUE ||
-           psIntfAdapter->bPreparingForBusSuspend == TRUE) {
-               BCM_DEBUG_PRINT(psIntfAdapter->psAdapter, DBG_TYPE_OTHERS, WRM,
-                               DBG_LVL_ALL,
-                               "Bus is in suspended states hence RDM not 
allowed..");
-               return -EACCES;
-       }
+       err = adapter_err_occurred(psIntfAdapter);
+       if (err)
+               return err;
 
        psIntfAdapter->psAdapter->DeviceAccess = TRUE;
 
-- 
2.0.0

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to