Staging: bcm: InterfaceTx.c: Outsourced code chunk
authorMatthias Beyer <mail@beyermatthias.de>
Mon, 30 Jun 2014 08:20:23 +0000 (10:20 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 8 Jul 2014 23:20:25 +0000 (16:20 -0700)
This patch outsources a chunk of code into an own function and refactors
the variable names inside the new function.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Acked-by: Kevin McKinney <klmckinney1@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/bcm/InterfaceTx.c

index b1f28994915ae0a0e54e6a8bc0f6254a0e37b4d5..89e9e79c7c200d69da403ccc806e0bd213637067 100644 (file)
@@ -1,5 +1,87 @@
 #include "headers.h"
 
+static void prepare_low_power_mode(struct urb *urb,
+                                  struct bcm_interface_adapter *interface,
+                                  struct bcm_mini_adapter *ps_adapter,
+                                  struct bcm_mini_adapter *ad,
+                                  struct bcm_link_request *p_control_msg,
+                                  bool *b_power_down_msg)
+{
+       if (((p_control_msg->szData[0] == GO_TO_IDLE_MODE_PAYLOAD) &&
+               (p_control_msg->szData[1] == TARGET_CAN_GO_TO_IDLE_MODE))) {
+
+               *b_power_down_msg = TRUE;
+               /*
+                * This covers the bus err while Idle Request msg
+                * sent down.
+                */
+               if (urb->status != STATUS_SUCCESS) {
+                       ps_adapter->bPreparingForLowPowerMode = false;
+                       BCM_DEBUG_PRINT(ad, DBG_TYPE_TX, NEXT_SEND,
+                                       DBG_LVL_ALL,
+                                       "Idle Mode Request msg failed to reach to Modem");
+                       /* Signalling the cntrl pkt path in Ioctl */
+                       wake_up(&ps_adapter->lowpower_mode_wait_queue);
+                       StartInterruptUrb(interface);
+                       return;
+               }
+
+               if (ps_adapter->bDoSuspend == false) {
+                       ps_adapter->IdleMode = TRUE;
+                       /* since going in Idle mode completed hence making this var false */
+                       ps_adapter->bPreparingForLowPowerMode = false;
+
+                       BCM_DEBUG_PRINT(ad, DBG_TYPE_TX, NEXT_SEND,
+                                       DBG_LVL_ALL,
+                                       "Host Entered in Idle Mode State...");
+                       /* Signalling the cntrl pkt path in Ioctl*/
+                       wake_up(&ps_adapter->lowpower_mode_wait_queue);
+               }
+
+       } else if ((p_control_msg->Leader.Status == LINK_UP_CONTROL_REQ) &&
+               (p_control_msg->szData[0] == LINK_UP_ACK) &&
+               (p_control_msg->szData[1] == LINK_SHUTDOWN_REQ_FROM_FIRMWARE)  &&
+               (p_control_msg->szData[2] == SHUTDOWN_ACK_FROM_DRIVER)) {
+               /*
+                * This covers the bus err while shutdown Request
+                * msg sent down.
+                */
+               if (urb->status != STATUS_SUCCESS) {
+                       ps_adapter->bPreparingForLowPowerMode = false;
+                       BCM_DEBUG_PRINT(ad, DBG_TYPE_TX, NEXT_SEND,
+                                       DBG_LVL_ALL,
+                                       "Shutdown Request Msg failed to reach to Modem");
+                       /* Signalling the cntrl pkt path in Ioctl */
+                       wake_up(&ps_adapter->lowpower_mode_wait_queue);
+                       StartInterruptUrb(interface);
+                       return;
+               }
+
+               *b_power_down_msg = TRUE;
+               if (ps_adapter->bDoSuspend == false) {
+                       ps_adapter->bShutStatus = TRUE;
+                       /*
+                        * since going in shutdown mode completed hence
+                        * making this var false
+                        */
+                       ps_adapter->bPreparingForLowPowerMode = false;
+                       BCM_DEBUG_PRINT(ad, DBG_TYPE_TX, NEXT_SEND,
+                                       DBG_LVL_ALL,
+                                       "Host Entered in shutdown Mode State...");
+                       /* Signalling the cntrl pkt path in Ioctl */
+                       wake_up(&ps_adapter->lowpower_mode_wait_queue);
+               }
+       }
+
+       if (ps_adapter->bDoSuspend && *b_power_down_msg) {
+               /* issuing bus suspend request */
+               BCM_DEBUG_PRINT(ad, DBG_TYPE_TX, NEXT_SEND, DBG_LVL_ALL,
+                               "Issuing the Bus suspend request to USB stack");
+               interface->bPreparingForBusSuspend = TRUE;
+               schedule_work(&interface->usbSuspendWork);
+       }
+}
+
 /*this is transmit call-back(BULK OUT)*/
 static void write_bulk_callback(struct urb *urb/*, struct pt_regs *regs*/)
 {
@@ -31,89 +113,10 @@ static void write_bulk_callback(struct urb *urb/*, struct pt_regs *regs*/)
        atomic_dec(&psIntfAdapter->uNumTcbUsed);
 
        if (TRUE == psAdapter->bPreparingForLowPowerMode) {
-
-               if (((pControlMsg->szData[0] == GO_TO_IDLE_MODE_PAYLOAD) &&
-                       (pControlMsg->szData[1] ==
-                        TARGET_CAN_GO_TO_IDLE_MODE))) {
-
-                       bpowerDownMsg = TRUE;
-                       /*
-                        * This covers the bus err while Idle Request msg
-                        * sent down.
-                        */
-                       if (urb->status != STATUS_SUCCESS) {
-                               psAdapter->bPreparingForLowPowerMode = false;
-                               BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, NEXT_SEND,
-                                               DBG_LVL_ALL,
-                                               "Idle Mode Request msg failed to reach to Modem");
-                               /* Signalling the cntrl pkt path in Ioctl */
-                               wake_up(&psAdapter->lowpower_mode_wait_queue);
-                               StartInterruptUrb(psIntfAdapter);
-                               goto err_exit;
-                       }
-
-                       if (psAdapter->bDoSuspend == false) {
-                               psAdapter->IdleMode = TRUE;
-                               /* since going in Idle mode completed hence making this var false */
-                               psAdapter->bPreparingForLowPowerMode = false;
-
-                               BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, NEXT_SEND,
-                                               DBG_LVL_ALL,
-                                               "Host Entered in Idle Mode State...");
-                               /* Signalling the cntrl pkt path in Ioctl*/
-                               wake_up(&psAdapter->lowpower_mode_wait_queue);
-                       }
-
-               } else if ((pControlMsg->Leader.Status ==
-                                       LINK_UP_CONTROL_REQ) &&
-                       (pControlMsg->szData[0] == LINK_UP_ACK) &&
-                       (pControlMsg->szData[1] ==
-                        LINK_SHUTDOWN_REQ_FROM_FIRMWARE)  &&
-                       (pControlMsg->szData[2] == SHUTDOWN_ACK_FROM_DRIVER)) {
-                       /*
-                        * This covers the bus err while shutdown Request
-                        * msg sent down.
-                        */
-                       if (urb->status != STATUS_SUCCESS) {
-                               psAdapter->bPreparingForLowPowerMode = false;
-                               BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, NEXT_SEND,
-                                               DBG_LVL_ALL,
-                                               "Shutdown Request Msg failed to reach to Modem");
-                               /* Signalling the cntrl pkt path in Ioctl */
-                               wake_up(&psAdapter->lowpower_mode_wait_queue);
-                               StartInterruptUrb(psIntfAdapter);
-                               goto err_exit;
-                       }
-
-                       bpowerDownMsg = TRUE;
-                       if (psAdapter->bDoSuspend == false) {
-                               psAdapter->bShutStatus = TRUE;
-                               /*
-                                * since going in shutdown mode completed hence
-                                * making this var false
-                                */
-                               psAdapter->bPreparingForLowPowerMode = false;
-                               BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, NEXT_SEND,
-                                               DBG_LVL_ALL,
-                                               "Host Entered in shutdown Mode State...");
-                               /* Signalling the cntrl pkt path in Ioctl */
-                               wake_up(&psAdapter->lowpower_mode_wait_queue);
-                       }
-               }
-
-               if (psAdapter->bDoSuspend && bpowerDownMsg) {
-                       /* issuing bus suspend request */
-                       BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, NEXT_SEND,
-                                       DBG_LVL_ALL,
-                                       "Issuing the Bus suspend request to USB stack");
-                       psIntfAdapter->bPreparingForBusSuspend = TRUE;
-                       schedule_work(&psIntfAdapter->usbSuspendWork);
-
-               }
-
+               prepare_low_power_mode(urb, psIntfAdapter, psAdapter, Adapter,
+                                      pControlMsg, &bpowerDownMsg);
        }
 
-err_exit:
        usb_free_coherent(urb->dev, urb->transfer_buffer_length,
                        urb->transfer_buffer, urb->transfer_dma);
 }