[PATCH 2/3] Staging: bcm: InterfaceTx.c: Outsourced code chunk

Matthias Beyer mail at beyermatthias.de
Mon Jun 30 08:20:23 UTC 2014


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 at beyermatthias.de>
---
 drivers/staging/bcm/InterfaceTx.c | 165 +++++++++++++++++++-------------------
 1 file changed, 84 insertions(+), 81 deletions(-)

diff --git a/drivers/staging/bcm/InterfaceTx.c b/drivers/staging/bcm/InterfaceTx.c
index b1f2899..89e9e79 100644
--- a/drivers/staging/bcm/InterfaceTx.c
+++ b/drivers/staging/bcm/InterfaceTx.c
@@ -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);
 }
-- 
2.0.1



More information about the devel mailing list