mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init()
@ 2009-04-08  8:13 Pekka Enberg
  2009-04-08  8:13 ` [PATCH 02/11] w35und: move hal_init_hardware() and hal_halt() int wbusb.c Pekka Enberg
                   ` (10 more replies)
  0 siblings, 11 replies; 13+ messages in thread
From: Pekka Enberg @ 2009-04-08  8:13 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, Pavel Machek

Impact: cleanup

This patch replaces the switch-based error handling in wb35_hw_init()
with regular gotos.

Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
 drivers/staging/winbond/wbusb.c |   36 ++++++++++--------------------------
 1 files changed, 10 insertions(+), 26 deletions(-)

diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c
index 12934a3..1c6e0c4 100644
--- a/drivers/staging/winbond/wbusb.c
+++ b/drivers/staging/winbond/wbusb.c
@@ -178,15 +178,15 @@ static const struct ieee80211_ops wbsoft_ops = {
 // conf_tx: hal_set_cwmin()/hal_set_cwmax;
 };
 
-static unsigned char wb35_hw_init(struct ieee80211_hw *hw)
+static int wb35_hw_init(struct ieee80211_hw *hw)
 {
 	struct wbsoft_priv *priv = hw->priv;
 	struct hw_data *	pHwData;
 	u8		*pMacAddr;
 	u8		*pMacAddr2;
-	u32		InitStep = 0;
 	u8		EEPROM_region;
 	u8		HwRadioOff;
+	int err;
 
 	//
 	// Setting default value for Linux
@@ -209,10 +209,11 @@ static unsigned char wb35_hw_init(struct ieee80211_hw *hw)
 	priv->sLocalPara.WepKeyDetectTimerCount= 2 * 100; /// 2 seconds
 
 	// Initial USB hal
-	InitStep = 1;
 	pHwData = &priv->sHwData;
-	if (!hal_init_hardware(hw))
+	if (!hal_init_hardware(hw)) {
+		err = -EINVAL;
 		goto error;
+	}
 
 	EEPROM_region = hal_get_region_from_EEPROM( pHwData );
 	if (EEPROM_region != REGION_AUTO)
@@ -229,21 +230,12 @@ static unsigned char wb35_hw_init(struct ieee80211_hw *hw)
 	if (hal_software_set(pHwData) & 0x00000001)
 		priv->sLocalPara.boAntennaDiversity = true;
 
-	//
-	// For TS module
-	//
-	InitStep = 2;
-
 	// For MDS module
-	InitStep = 3;
 	Mds_initial(priv);
 
 	//=======================================
 	// Initialize the SME, SCAN, MLME, ROAM
 	//=======================================
-	InitStep = 4;
-	InitStep = 5;
-	InitStep = 6;
 
 	// If no user-defined address in the registry, use the addresss "burned" on the NIC instead.
 	pMacAddr = priv->sLocalPara.ThisMacAddress;
@@ -277,19 +269,12 @@ static unsigned char wb35_hw_init(struct ieee80211_hw *hw)
 	hal_driver_init_OK(pHwData) = 1; // Notify hal that the driver is ready now.
 	//set a tx power for reference.....
 //	sme_set_tx_power_level(priv, 12);	FIXME?
-	return true;
+	return 0;
 
 error:
-	switch (InitStep) {
-	case 5:
-	case 4:
-	case 3: Mds_Destroy( priv );
-	case 2:
-	case 1: hal_halt( pHwData, NULL );
-	case 0: break;
-	}
+	hal_halt(pHwData, NULL);
 
-	return false;
+	return err;
 }
 
 static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id_table)
@@ -341,10 +326,9 @@ static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id
 		pWbUsb->IsUsb20 = 1;
 	}
 
-	if (!wb35_hw_init(dev)) {
-		err = -EINVAL;
+	err = wb35_hw_init(dev);
+	if (err)
 		goto error_free_hw;
-	}
 
 	SET_IEEE80211_DEV(dev, &udev->dev);
 	{
-- 
1.5.6.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 02/11] w35und: move hal_init_hardware() and hal_halt() int wbusb.c
  2009-04-08  8:13 [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pekka Enberg
@ 2009-04-08  8:13 ` Pekka Enberg
  2009-04-08  8:13 ` [PATCH 03/11] w35und: simplify error handling in wb35_hw_init() Pekka Enberg
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Pekka Enberg @ 2009-04-08  8:13 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, Pavel Machek

Impact: cleanup

The hal_init_hardware() and hal_halt() functions are only used in
wbusb.c so move them there.

Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
 drivers/staging/winbond/wbhal.c   |  346 -------------------------------------
 drivers/staging/winbond/wbhal_f.h |    2 -
 drivers/staging/winbond/wbusb.c   |  345 ++++++++++++++++++++++++++++++++++++
 3 files changed, 345 insertions(+), 348 deletions(-)

diff --git a/drivers/staging/winbond/wbhal.c b/drivers/staging/winbond/wbhal.c
index c985ad0..6f1964c 100644
--- a/drivers/staging/winbond/wbhal.c
+++ b/drivers/staging/winbond/wbhal.c
@@ -23,352 +23,6 @@ void hal_get_permanent_address( struct hw_data * pHwData, u8 *pethernet_address
 	memcpy( pethernet_address, pHwData->PermanentMacAddress, 6 );
 }
 
-static void hal_led_control(unsigned long data)
-{
-	struct wbsoft_priv *adapter = (struct wbsoft_priv *) data;
-	struct hw_data * pHwData = &adapter->sHwData;
-	struct wb35_reg *reg = &pHwData->reg;
-	u32	LEDSet = (pHwData->SoftwareSet & HAL_LED_SET_MASK) >> HAL_LED_SET_SHIFT;
-	u8	LEDgray[20] = { 0,3,4,6,8,10,11,12,13,14,15,14,13,12,11,10,8,6,4,2 };
-	u8	LEDgray2[30] = { 7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,14,13,12,11,10,9,8 };
-	u32	TimeInterval = 500, ltmp, ltmp2;
-        ltmp=0;
-
-	if( pHwData->SurpriseRemove ) return;
-
-	if( pHwData->LED_control ) {
-		ltmp2 = pHwData->LED_control & 0xff;
-		if( ltmp2 == 5 ) // 5 is WPS mode
-		{
-			TimeInterval = 100;
-			ltmp2 = (pHwData->LED_control>>8) & 0xff;
-			switch( ltmp2 )
-			{
-				case 1: // [0.2 On][0.1 Off]...
-					pHwData->LED_Blinking %= 3;
-					ltmp = 0x1010; // Led 1 & 0 Green and Red
-					if( pHwData->LED_Blinking == 2 ) // Turn off
-						ltmp = 0;
-					break;
-				case 2: // [0.1 On][0.1 Off]...
-					pHwData->LED_Blinking %= 2;
-					ltmp = 0x0010; // Led 0 red color
-					if( pHwData->LED_Blinking ) // Turn off
-						ltmp = 0;
-					break;
-				case 3: // [0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.5 Off]...
-					pHwData->LED_Blinking %= 15;
-					ltmp = 0x0010; // Led 0 red color
-					if( (pHwData->LED_Blinking >= 9) || (pHwData->LED_Blinking%2) ) // Turn off 0.6 sec
-						ltmp = 0;
-					break;
-				case 4: // [300 On][ off ]
-					ltmp = 0x1000; // Led 1 Green color
-					if( pHwData->LED_Blinking >= 3000 )
-						ltmp = 0; // led maybe on after 300sec * 32bit counter overlap.
-					break;
-			}
-			pHwData->LED_Blinking++;
-
-			reg->U1BC_LEDConfigure = ltmp;
-			if( LEDSet != 7 ) // Only 111 mode has 2 LEDs on PCB.
-			{
-				reg->U1BC_LEDConfigure |= (ltmp &0xff)<<8; // Copy LED result to each LED control register
-				reg->U1BC_LEDConfigure |= (ltmp &0xff00)>>8;
-			}
-			Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
-		}
-	}
-	else if( pHwData->CurrentRadioSw || pHwData->CurrentRadioHw ) // If radio off
-	{
-		if( reg->U1BC_LEDConfigure & 0x1010 )
-		{
-			reg->U1BC_LEDConfigure &= ~0x1010;
-			Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
-		}
-	}
-	else
-	{
-		switch( LEDSet )
-		{
-			case 4: // [100] Only 1 Led be placed on PCB and use pin 21 of IC. Use LED_0 for showing
-				if( !pHwData->LED_LinkOn ) // Blink only if not Link On
-				{
-					// Blinking if scanning is on progress
-					if( pHwData->LED_Scanning )
-					{
-						if( pHwData->LED_Blinking == 0 )
-						{
-							reg->U1BC_LEDConfigure |= 0x10;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 On
-							pHwData->LED_Blinking = 1;
-							TimeInterval = 300;
-						}
-						else
-						{
-							reg->U1BC_LEDConfigure &= ~0x10;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
-							pHwData->LED_Blinking = 0;
-							TimeInterval = 300;
-						}
-					}
-					else
-					{
-						//Turn Off LED_0
-						if( reg->U1BC_LEDConfigure & 0x10 )
-						{
-							reg->U1BC_LEDConfigure &= ~0x10;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
-						}
-					}
-				}
-				else
-				{
-					// Turn On LED_0
-					if( (reg->U1BC_LEDConfigure & 0x10) == 0 )
-					{
-						reg->U1BC_LEDConfigure |= 0x10;
-						Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
-					}
-				}
-				break;
-
-			case 6: // [110] Only 1 Led be placed on PCB and use pin 21 of IC. Use LED_0 for showing
-				if( !pHwData->LED_LinkOn ) // Blink only if not Link On
-				{
-					// Blinking if scanning is on progress
-					if( pHwData->LED_Scanning )
-					{
-						if( pHwData->LED_Blinking == 0 )
-						{
-							reg->U1BC_LEDConfigure &= ~0xf;
-							reg->U1BC_LEDConfigure |= 0x10;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 On
-							pHwData->LED_Blinking = 1;
-							TimeInterval = 300;
-						}
-						else
-						{
-							reg->U1BC_LEDConfigure &= ~0x1f;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
-							pHwData->LED_Blinking = 0;
-							TimeInterval = 300;
-						}
-					}
-					else
-					{
-						// 20060901 Gray blinking if in disconnect state and not scanning
-						ltmp = reg->U1BC_LEDConfigure;
-						reg->U1BC_LEDConfigure &= ~0x1f;
-						if( LEDgray2[(pHwData->LED_Blinking%30)] )
-						{
-							reg->U1BC_LEDConfigure |= 0x10;
-							reg->U1BC_LEDConfigure |= LEDgray2[ (pHwData->LED_Blinking%30) ];
-						}
-						pHwData->LED_Blinking++;
-						if( reg->U1BC_LEDConfigure != ltmp )
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
-						TimeInterval = 100;
-					}
-				}
-				else
-				{
-					// Turn On LED_0
-					if( (reg->U1BC_LEDConfigure & 0x10) == 0 )
-					{
-						reg->U1BC_LEDConfigure |= 0x10;
-						Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
-					}
-				}
-				break;
-
-			case 5: // [101] Only 1 Led be placed on PCB and use LED_1 for showing
-				if( !pHwData->LED_LinkOn ) // Blink only if not Link On
-				{
-					// Blinking if scanning is on progress
-					if( pHwData->LED_Scanning )
-					{
-						if( pHwData->LED_Blinking == 0 )
-						{
-							reg->U1BC_LEDConfigure |= 0x1000;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 On
-							pHwData->LED_Blinking = 1;
-							TimeInterval = 300;
-						}
-						else
-						{
-							reg->U1BC_LEDConfigure &= ~0x1000;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 Off
-							pHwData->LED_Blinking = 0;
-							TimeInterval = 300;
-						}
-					}
-					else
-					{
-						//Turn Off LED_1
-						if( reg->U1BC_LEDConfigure & 0x1000 )
-						{
-							reg->U1BC_LEDConfigure &= ~0x1000;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 Off
-						}
-					}
-				}
-				else
-				{
-					// Is transmitting/receiving ??
-					if( (adapter->RxByteCount != pHwData->RxByteCountLast ) ||
-						(adapter->TxByteCount != pHwData->TxByteCountLast ) )
-					{
-						if( (reg->U1BC_LEDConfigure & 0x3000) != 0x3000 )
-						{
-							reg->U1BC_LEDConfigure |= 0x3000;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 On
-						}
-
-						// Update variable
-						pHwData->RxByteCountLast = adapter->RxByteCount;
-						pHwData->TxByteCountLast = adapter->TxByteCount;
-						TimeInterval = 200;
-					}
-					else
-					{
-						// Turn On LED_1 and blinking if transmitting/receiving
-						 if( (reg->U1BC_LEDConfigure & 0x3000) != 0x1000 )
-						 {
-							 reg->U1BC_LEDConfigure &= ~0x3000;
-							 reg->U1BC_LEDConfigure |= 0x1000;
-							 Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 On
-						 }
-					}
-				}
-				break;
-
-			default: // Default setting. 2 LED be placed on PCB. LED_0: Link On LED_1 Active
-				if( (reg->U1BC_LEDConfigure & 0x3000) != 0x3000 )
-				{
-					reg->U1BC_LEDConfigure |= 0x3000;// LED_1 is always on and event enable
-					Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
-				}
-
-				if( pHwData->LED_Blinking )
-				{
-					// Gray blinking
-					reg->U1BC_LEDConfigure &= ~0x0f;
-					reg->U1BC_LEDConfigure |= 0x10;
-					reg->U1BC_LEDConfigure |= LEDgray[ (pHwData->LED_Blinking-1)%20 ];
-					Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
-
-					pHwData->LED_Blinking += 2;
-					if( pHwData->LED_Blinking < 40 )
-						TimeInterval = 100;
-					else
-					{
-						pHwData->LED_Blinking = 0; // Stop blinking
-						reg->U1BC_LEDConfigure &= ~0x0f;
-						Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
-					}
-					break;
-				}
-
-				if( pHwData->LED_LinkOn )
-				{
-					if( !(reg->U1BC_LEDConfigure & 0x10) ) // Check the LED_0
-					{
-						//Try to turn ON LED_0 after gray blinking
-						reg->U1BC_LEDConfigure |= 0x10;
-						pHwData->LED_Blinking = 1; //Start blinking
-						TimeInterval = 50;
-					}
-				}
-				else
-				{
-					if( reg->U1BC_LEDConfigure & 0x10 ) // Check the LED_0
-					{
-						reg->U1BC_LEDConfigure &= ~0x10;
-						Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
-					}
-				}
-				break;
-		}
-
-		//20060828.1 Active send null packet to avoid AP disconnect
-		if( pHwData->LED_LinkOn )
-		{
-			pHwData->NullPacketCount += TimeInterval;
-			if( pHwData->NullPacketCount >= DEFAULT_NULL_PACKET_COUNT )
-			{
-				pHwData->NullPacketCount = 0;
-			}
-		}
-	}
-
-	pHwData->time_count += TimeInterval;
-	Wb35Tx_CurrentTime(adapter, pHwData->time_count); // 20060928 add
-	pHwData->LEDTimer.expires = jiffies + msecs_to_jiffies(TimeInterval);
-	add_timer(&pHwData->LEDTimer);
-}
-
-u8 hal_init_hardware(struct ieee80211_hw *hw)
-{
-	struct wbsoft_priv *priv = hw->priv;
-	struct hw_data * pHwData = &priv->sHwData;
-	u16 SoftwareSet;
-
-	// Initial the variable
-	pHwData->MaxReceiveLifeTime = DEFAULT_MSDU_LIFE_TIME; // Setting Rx maximum MSDU life time
-	pHwData->FragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD; // Setting default fragment threshold
-
-	pHwData->InitialResource = 1;
-	if( Wb35Reg_initial(pHwData)) {
-		pHwData->InitialResource = 2;
-		if (Wb35Tx_initial(pHwData)) {
-			pHwData->InitialResource = 3;
-			if (Wb35Rx_initial(pHwData)) {
-				pHwData->InitialResource = 4;
-				init_timer(&pHwData->LEDTimer);
-				pHwData->LEDTimer.function = hal_led_control;
-				pHwData->LEDTimer.data = (unsigned long) priv;
-				pHwData->LEDTimer.expires = jiffies + msecs_to_jiffies(1000);
-				add_timer(&pHwData->LEDTimer);
-
-				//
-				// For restrict to vendor's hardware
-				//
-				SoftwareSet = hal_software_set( pHwData );
-
-				#ifdef Vendor2
-				// Try to make sure the EEPROM contain
-				SoftwareSet >>= 8;
-				if( SoftwareSet != 0x82 )
-					return false;
-				#endif
-
-				Wb35Rx_start(hw);
-				Wb35Tx_EP2VM_start(priv);
-
-				return true;
-			}
-		}
-	}
-
-	pHwData->SurpriseRemove = 1;
-	return false;
-}
-
-
-void hal_halt(struct hw_data * pHwData, void *ppa_data)
-{
-	switch( pHwData->InitialResource )
-	{
-		case 4:
-		case 3: del_timer_sync(&pHwData->LEDTimer);
-			msleep(100); // Wait for Timer DPC exit 940623.2
-			Wb35Rx_destroy( pHwData ); // Release the Rx
-		case 2: Wb35Tx_destroy( pHwData ); // Release the Tx
-		case 1: Wb35Reg_destroy( pHwData ); // Release the Wb35 Regisster resources
-	}
-}
-
 //---------------------------------------------------------------------------------------------------
 void hal_set_beacon_period(  struct hw_data * pHwData,  u16 beacon_period )
 {
diff --git a/drivers/staging/winbond/wbhal_f.h b/drivers/staging/winbond/wbhal_f.h
index efcaefb..d51709f 100644
--- a/drivers/staging/winbond/wbhal_f.h
+++ b/drivers/staging/winbond/wbhal_f.h
@@ -21,7 +21,6 @@ void hal_clear_all_key(  struct hw_data * pHwData );
 void hal_get_ethernet_address(  struct hw_data * pHwData,  u8 *current_address );
 void hal_set_ethernet_address(  struct hw_data * pHwData,  u8 *current_address );
 void hal_get_permanent_address(  struct hw_data * pHwData,  u8 *pethernet_address );
-u8 hal_init_hardware(struct ieee80211_hw *hw);
 void hal_set_power_save_mode(  struct hw_data * pHwData,  unsigned char power_save,  unsigned char wakeup,  unsigned char dtim );
 void hal_get_power_save_mode(  struct hw_data * pHwData,   u8 *pin_pwr_save );
 void hal_set_slot_time(  struct hw_data * pHwData,  u8 type );
@@ -42,7 +41,6 @@ void hal_set_accept_broadcast(  struct hw_data * pHwData,  u8 enable );
 void hal_set_accept_multicast(  struct hw_data * pHwData,  u8 enable );
 void hal_set_accept_beacon(  struct hw_data * pHwData,  u8 enable );
 void hal_stop(  struct hw_data * pHwData );
-void hal_halt(  struct hw_data * pHwData, void *ppa_data );
 void hal_start_tx0(  struct hw_data * pHwData );
 void hal_set_phy_type(  struct hw_data * pHwData,  u8 PhyType );
 #define hal_get_cwmin( _A ) ( (_A)->cwmin )
diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c
index 1c6e0c4..a035c8c 100644
--- a/drivers/staging/winbond/wbusb.c
+++ b/drivers/staging/winbond/wbusb.c
@@ -178,6 +178,351 @@ static const struct ieee80211_ops wbsoft_ops = {
 // conf_tx: hal_set_cwmin()/hal_set_cwmax;
 };
 
+static void hal_halt(struct hw_data *pHwData, void *ppa_data)
+{
+	switch( pHwData->InitialResource )
+	{
+		case 4:
+		case 3: del_timer_sync(&pHwData->LEDTimer);
+			msleep(100); // Wait for Timer DPC exit 940623.2
+			Wb35Rx_destroy( pHwData ); // Release the Rx
+		case 2: Wb35Tx_destroy( pHwData ); // Release the Tx
+		case 1: Wb35Reg_destroy( pHwData ); // Release the Wb35 Regisster resources
+	}
+}
+
+static void hal_led_control(unsigned long data)
+{
+	struct wbsoft_priv *adapter = (struct wbsoft_priv *) data;
+	struct hw_data * pHwData = &adapter->sHwData;
+	struct wb35_reg *reg = &pHwData->reg;
+	u32	LEDSet = (pHwData->SoftwareSet & HAL_LED_SET_MASK) >> HAL_LED_SET_SHIFT;
+	u8	LEDgray[20] = { 0,3,4,6,8,10,11,12,13,14,15,14,13,12,11,10,8,6,4,2 };
+	u8	LEDgray2[30] = { 7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,14,13,12,11,10,9,8 };
+	u32	TimeInterval = 500, ltmp, ltmp2;
+        ltmp=0;
+
+	if( pHwData->SurpriseRemove ) return;
+
+	if( pHwData->LED_control ) {
+		ltmp2 = pHwData->LED_control & 0xff;
+		if( ltmp2 == 5 ) // 5 is WPS mode
+		{
+			TimeInterval = 100;
+			ltmp2 = (pHwData->LED_control>>8) & 0xff;
+			switch( ltmp2 )
+			{
+				case 1: // [0.2 On][0.1 Off]...
+					pHwData->LED_Blinking %= 3;
+					ltmp = 0x1010; // Led 1 & 0 Green and Red
+					if( pHwData->LED_Blinking == 2 ) // Turn off
+						ltmp = 0;
+					break;
+				case 2: // [0.1 On][0.1 Off]...
+					pHwData->LED_Blinking %= 2;
+					ltmp = 0x0010; // Led 0 red color
+					if( pHwData->LED_Blinking ) // Turn off
+						ltmp = 0;
+					break;
+				case 3: // [0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.5 Off]...
+					pHwData->LED_Blinking %= 15;
+					ltmp = 0x0010; // Led 0 red color
+					if( (pHwData->LED_Blinking >= 9) || (pHwData->LED_Blinking%2) ) // Turn off 0.6 sec
+						ltmp = 0;
+					break;
+				case 4: // [300 On][ off ]
+					ltmp = 0x1000; // Led 1 Green color
+					if( pHwData->LED_Blinking >= 3000 )
+						ltmp = 0; // led maybe on after 300sec * 32bit counter overlap.
+					break;
+			}
+			pHwData->LED_Blinking++;
+
+			reg->U1BC_LEDConfigure = ltmp;
+			if( LEDSet != 7 ) // Only 111 mode has 2 LEDs on PCB.
+			{
+				reg->U1BC_LEDConfigure |= (ltmp &0xff)<<8; // Copy LED result to each LED control register
+				reg->U1BC_LEDConfigure |= (ltmp &0xff00)>>8;
+			}
+			Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
+		}
+	}
+	else if( pHwData->CurrentRadioSw || pHwData->CurrentRadioHw ) // If radio off
+	{
+		if( reg->U1BC_LEDConfigure & 0x1010 )
+		{
+			reg->U1BC_LEDConfigure &= ~0x1010;
+			Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
+		}
+	}
+	else
+	{
+		switch( LEDSet )
+		{
+			case 4: // [100] Only 1 Led be placed on PCB and use pin 21 of IC. Use LED_0 for showing
+				if( !pHwData->LED_LinkOn ) // Blink only if not Link On
+				{
+					// Blinking if scanning is on progress
+					if( pHwData->LED_Scanning )
+					{
+						if( pHwData->LED_Blinking == 0 )
+						{
+							reg->U1BC_LEDConfigure |= 0x10;
+							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 On
+							pHwData->LED_Blinking = 1;
+							TimeInterval = 300;
+						}
+						else
+						{
+							reg->U1BC_LEDConfigure &= ~0x10;
+							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
+							pHwData->LED_Blinking = 0;
+							TimeInterval = 300;
+						}
+					}
+					else
+					{
+						//Turn Off LED_0
+						if( reg->U1BC_LEDConfigure & 0x10 )
+						{
+							reg->U1BC_LEDConfigure &= ~0x10;
+							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
+						}
+					}
+				}
+				else
+				{
+					// Turn On LED_0
+					if( (reg->U1BC_LEDConfigure & 0x10) == 0 )
+					{
+						reg->U1BC_LEDConfigure |= 0x10;
+						Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
+					}
+				}
+				break;
+
+			case 6: // [110] Only 1 Led be placed on PCB and use pin 21 of IC. Use LED_0 for showing
+				if( !pHwData->LED_LinkOn ) // Blink only if not Link On
+				{
+					// Blinking if scanning is on progress
+					if( pHwData->LED_Scanning )
+					{
+						if( pHwData->LED_Blinking == 0 )
+						{
+							reg->U1BC_LEDConfigure &= ~0xf;
+							reg->U1BC_LEDConfigure |= 0x10;
+							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 On
+							pHwData->LED_Blinking = 1;
+							TimeInterval = 300;
+						}
+						else
+						{
+							reg->U1BC_LEDConfigure &= ~0x1f;
+							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
+							pHwData->LED_Blinking = 0;
+							TimeInterval = 300;
+						}
+					}
+					else
+					{
+						// 20060901 Gray blinking if in disconnect state and not scanning
+						ltmp = reg->U1BC_LEDConfigure;
+						reg->U1BC_LEDConfigure &= ~0x1f;
+						if( LEDgray2[(pHwData->LED_Blinking%30)] )
+						{
+							reg->U1BC_LEDConfigure |= 0x10;
+							reg->U1BC_LEDConfigure |= LEDgray2[ (pHwData->LED_Blinking%30) ];
+						}
+						pHwData->LED_Blinking++;
+						if( reg->U1BC_LEDConfigure != ltmp )
+							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
+						TimeInterval = 100;
+					}
+				}
+				else
+				{
+					// Turn On LED_0
+					if( (reg->U1BC_LEDConfigure & 0x10) == 0 )
+					{
+						reg->U1BC_LEDConfigure |= 0x10;
+						Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
+					}
+				}
+				break;
+
+			case 5: // [101] Only 1 Led be placed on PCB and use LED_1 for showing
+				if( !pHwData->LED_LinkOn ) // Blink only if not Link On
+				{
+					// Blinking if scanning is on progress
+					if( pHwData->LED_Scanning )
+					{
+						if( pHwData->LED_Blinking == 0 )
+						{
+							reg->U1BC_LEDConfigure |= 0x1000;
+							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 On
+							pHwData->LED_Blinking = 1;
+							TimeInterval = 300;
+						}
+						else
+						{
+							reg->U1BC_LEDConfigure &= ~0x1000;
+							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 Off
+							pHwData->LED_Blinking = 0;
+							TimeInterval = 300;
+						}
+					}
+					else
+					{
+						//Turn Off LED_1
+						if( reg->U1BC_LEDConfigure & 0x1000 )
+						{
+							reg->U1BC_LEDConfigure &= ~0x1000;
+							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 Off
+						}
+					}
+				}
+				else
+				{
+					// Is transmitting/receiving ??
+					if( (adapter->RxByteCount != pHwData->RxByteCountLast ) ||
+						(adapter->TxByteCount != pHwData->TxByteCountLast ) )
+					{
+						if( (reg->U1BC_LEDConfigure & 0x3000) != 0x3000 )
+						{
+							reg->U1BC_LEDConfigure |= 0x3000;
+							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 On
+						}
+
+						// Update variable
+						pHwData->RxByteCountLast = adapter->RxByteCount;
+						pHwData->TxByteCountLast = adapter->TxByteCount;
+						TimeInterval = 200;
+					}
+					else
+					{
+						// Turn On LED_1 and blinking if transmitting/receiving
+						 if( (reg->U1BC_LEDConfigure & 0x3000) != 0x1000 )
+						 {
+							 reg->U1BC_LEDConfigure &= ~0x3000;
+							 reg->U1BC_LEDConfigure |= 0x1000;
+							 Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 On
+						 }
+					}
+				}
+				break;
+
+			default: // Default setting. 2 LED be placed on PCB. LED_0: Link On LED_1 Active
+				if( (reg->U1BC_LEDConfigure & 0x3000) != 0x3000 )
+				{
+					reg->U1BC_LEDConfigure |= 0x3000;// LED_1 is always on and event enable
+					Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
+				}
+
+				if( pHwData->LED_Blinking )
+				{
+					// Gray blinking
+					reg->U1BC_LEDConfigure &= ~0x0f;
+					reg->U1BC_LEDConfigure |= 0x10;
+					reg->U1BC_LEDConfigure |= LEDgray[ (pHwData->LED_Blinking-1)%20 ];
+					Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
+
+					pHwData->LED_Blinking += 2;
+					if( pHwData->LED_Blinking < 40 )
+						TimeInterval = 100;
+					else
+					{
+						pHwData->LED_Blinking = 0; // Stop blinking
+						reg->U1BC_LEDConfigure &= ~0x0f;
+						Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
+					}
+					break;
+				}
+
+				if( pHwData->LED_LinkOn )
+				{
+					if( !(reg->U1BC_LEDConfigure & 0x10) ) // Check the LED_0
+					{
+						//Try to turn ON LED_0 after gray blinking
+						reg->U1BC_LEDConfigure |= 0x10;
+						pHwData->LED_Blinking = 1; //Start blinking
+						TimeInterval = 50;
+					}
+				}
+				else
+				{
+					if( reg->U1BC_LEDConfigure & 0x10 ) // Check the LED_0
+					{
+						reg->U1BC_LEDConfigure &= ~0x10;
+						Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
+					}
+				}
+				break;
+		}
+
+		//20060828.1 Active send null packet to avoid AP disconnect
+		if( pHwData->LED_LinkOn )
+		{
+			pHwData->NullPacketCount += TimeInterval;
+			if( pHwData->NullPacketCount >= DEFAULT_NULL_PACKET_COUNT )
+			{
+				pHwData->NullPacketCount = 0;
+			}
+		}
+	}
+
+	pHwData->time_count += TimeInterval;
+	Wb35Tx_CurrentTime(adapter, pHwData->time_count); // 20060928 add
+	pHwData->LEDTimer.expires = jiffies + msecs_to_jiffies(TimeInterval);
+	add_timer(&pHwData->LEDTimer);
+}
+
+static u8 hal_init_hardware(struct ieee80211_hw *hw)
+{
+	struct wbsoft_priv *priv = hw->priv;
+	struct hw_data * pHwData = &priv->sHwData;
+	u16 SoftwareSet;
+
+	// Initial the variable
+	pHwData->MaxReceiveLifeTime = DEFAULT_MSDU_LIFE_TIME; // Setting Rx maximum MSDU life time
+	pHwData->FragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD; // Setting default fragment threshold
+
+	pHwData->InitialResource = 1;
+	if( Wb35Reg_initial(pHwData)) {
+		pHwData->InitialResource = 2;
+		if (Wb35Tx_initial(pHwData)) {
+			pHwData->InitialResource = 3;
+			if (Wb35Rx_initial(pHwData)) {
+				pHwData->InitialResource = 4;
+				init_timer(&pHwData->LEDTimer);
+				pHwData->LEDTimer.function = hal_led_control;
+				pHwData->LEDTimer.data = (unsigned long) priv;
+				pHwData->LEDTimer.expires = jiffies + msecs_to_jiffies(1000);
+				add_timer(&pHwData->LEDTimer);
+
+				//
+				// For restrict to vendor's hardware
+				//
+				SoftwareSet = hal_software_set( pHwData );
+
+				#ifdef Vendor2
+				// Try to make sure the EEPROM contain
+				SoftwareSet >>= 8;
+				if( SoftwareSet != 0x82 )
+					return false;
+				#endif
+
+				Wb35Rx_start(hw);
+				Wb35Tx_EP2VM_start(priv);
+
+				return true;
+			}
+		}
+	}
+
+	pHwData->SurpriseRemove = 1;
+	return false;
+}
+
 static int wb35_hw_init(struct ieee80211_hw *hw)
 {
 	struct wbsoft_priv *priv = hw->priv;
-- 
1.5.6.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 03/11] w35und: simplify error handling in wb35_hw_init()
  2009-04-08  8:13 [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pekka Enberg
  2009-04-08  8:13 ` [PATCH 02/11] w35und: move hal_init_hardware() and hal_halt() int wbusb.c Pekka Enberg
@ 2009-04-08  8:13 ` Pekka Enberg
  2009-04-08  8:13 ` [PATCH 04/11] w35und: simplify hal_init_hardware() error handling Pekka Enberg
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Pekka Enberg @ 2009-04-08  8:13 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, Pavel Machek

Impact: cleanup

Change hal_init_hardware() to return an error code rather than a boolean
to simplify error handling in wb35_hw_init().

Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
 drivers/staging/winbond/wbusb.c |   11 +++++------
 1 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c
index a035c8c..1943ff0 100644
--- a/drivers/staging/winbond/wbusb.c
+++ b/drivers/staging/winbond/wbusb.c
@@ -476,7 +476,7 @@ static void hal_led_control(unsigned long data)
 	add_timer(&pHwData->LEDTimer);
 }
 
-static u8 hal_init_hardware(struct ieee80211_hw *hw)
+static int hal_init_hardware(struct ieee80211_hw *hw)
 {
 	struct wbsoft_priv *priv = hw->priv;
 	struct hw_data * pHwData = &priv->sHwData;
@@ -514,13 +514,13 @@ static u8 hal_init_hardware(struct ieee80211_hw *hw)
 				Wb35Rx_start(hw);
 				Wb35Tx_EP2VM_start(priv);
 
-				return true;
+				return 0;
 			}
 		}
 	}
 
 	pHwData->SurpriseRemove = 1;
-	return false;
+	return -EINVAL;
 }
 
 static int wb35_hw_init(struct ieee80211_hw *hw)
@@ -555,10 +555,9 @@ static int wb35_hw_init(struct ieee80211_hw *hw)
 
 	// Initial USB hal
 	pHwData = &priv->sHwData;
-	if (!hal_init_hardware(hw)) {
-		err = -EINVAL;
+	err = hal_init_hardware(hw);
+	if (err)
 		goto error;
-	}
 
 	EEPROM_region = hal_get_region_from_EEPROM( pHwData );
 	if (EEPROM_region != REGION_AUTO)
-- 
1.5.6.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 04/11] w35und: simplify hal_init_hardware() error handling
  2009-04-08  8:13 [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pekka Enberg
  2009-04-08  8:13 ` [PATCH 02/11] w35und: move hal_init_hardware() and hal_halt() int wbusb.c Pekka Enberg
  2009-04-08  8:13 ` [PATCH 03/11] w35und: simplify error handling in wb35_hw_init() Pekka Enberg
@ 2009-04-08  8:13 ` Pekka Enberg
  2009-04-08  8:14 ` [PATCH 05/11] " Pekka Enberg
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Pekka Enberg @ 2009-04-08  8:13 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, Pavel Machek

Impact: cleanup

Use gotos to simplify the deep if-statement nesting in
hal_init_hardware().

Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
 drivers/staging/winbond/wbusb.c |   66 ++++++++++++++++++++------------------
 1 files changed, 35 insertions(+), 31 deletions(-)

diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c
index 1943ff0..65d443a 100644
--- a/drivers/staging/winbond/wbusb.c
+++ b/drivers/staging/winbond/wbusb.c
@@ -487,38 +487,42 @@ static int hal_init_hardware(struct ieee80211_hw *hw)
 	pHwData->FragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD; // Setting default fragment threshold
 
 	pHwData->InitialResource = 1;
-	if( Wb35Reg_initial(pHwData)) {
-		pHwData->InitialResource = 2;
-		if (Wb35Tx_initial(pHwData)) {
-			pHwData->InitialResource = 3;
-			if (Wb35Rx_initial(pHwData)) {
-				pHwData->InitialResource = 4;
-				init_timer(&pHwData->LEDTimer);
-				pHwData->LEDTimer.function = hal_led_control;
-				pHwData->LEDTimer.data = (unsigned long) priv;
-				pHwData->LEDTimer.expires = jiffies + msecs_to_jiffies(1000);
-				add_timer(&pHwData->LEDTimer);
-
-				//
-				// For restrict to vendor's hardware
-				//
-				SoftwareSet = hal_software_set( pHwData );
-
-				#ifdef Vendor2
-				// Try to make sure the EEPROM contain
-				SoftwareSet >>= 8;
-				if( SoftwareSet != 0x82 )
-					return false;
-				#endif
-
-				Wb35Rx_start(hw);
-				Wb35Tx_EP2VM_start(priv);
-
-				return 0;
-			}
-		}
-	}
+	if (!Wb35Reg_initial(pHwData))
+		goto error;
+
+	pHwData->InitialResource = 2;
+	if (!Wb35Tx_initial(pHwData))
+		goto error;
+
+	pHwData->InitialResource = 3;
+	if (!Wb35Rx_initial(pHwData))
+		goto error;
+
+	pHwData->InitialResource = 4;
+	init_timer(&pHwData->LEDTimer);
+	pHwData->LEDTimer.function = hal_led_control;
+	pHwData->LEDTimer.data = (unsigned long) priv;
+	pHwData->LEDTimer.expires = jiffies + msecs_to_jiffies(1000);
+	add_timer(&pHwData->LEDTimer);
+
+	//
+	// For restrict to vendor's hardware
+	//
+	SoftwareSet = hal_software_set( pHwData );
+
+	#ifdef Vendor2
+	// Try to make sure the EEPROM contain
+	SoftwareSet >>= 8;
+	if( SoftwareSet != 0x82 )
+		return false;
+	#endif
 
+	Wb35Rx_start(hw);
+	Wb35Tx_EP2VM_start(priv);
+
+	return 0;
+
+error:
 	pHwData->SurpriseRemove = 1;
 	return -EINVAL;
 }
-- 
1.5.6.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 05/11] w35und: simplify hal_init_hardware() error handling
  2009-04-08  8:13 [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pekka Enberg
                   ` (2 preceding siblings ...)
  2009-04-08  8:13 ` [PATCH 04/11] w35und: simplify hal_init_hardware() error handling Pekka Enberg
@ 2009-04-08  8:14 ` Pekka Enberg
  2009-04-08  8:14 ` [PATCH 06/11] w35und: simplify hal_init_hardware() and hal_halt() Pekka Enberg
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Pekka Enberg @ 2009-04-08  8:14 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, Pavel Machek

Impact: fix, cleanup

If initialization in hal_init_hardware() fails, we call hal_halt() to
clean up and release resource. However, hal_halt() will attempt to
call del_timer_sync() on ->LEDTimer on "stage 3" although it's not
initialized at that point. Fix that up by simplifying error handling
logic in hal_init_hardware() with gotos.

Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
 drivers/staging/winbond/wbusb.c |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c
index 65d443a..b1ef30a 100644
--- a/drivers/staging/winbond/wbusb.c
+++ b/drivers/staging/winbond/wbusb.c
@@ -488,15 +488,15 @@ static int hal_init_hardware(struct ieee80211_hw *hw)
 
 	pHwData->InitialResource = 1;
 	if (!Wb35Reg_initial(pHwData))
-		goto error;
+		goto error_reg_destroy;
 
 	pHwData->InitialResource = 2;
 	if (!Wb35Tx_initial(pHwData))
-		goto error;
+		goto error_tx_destroy;
 
 	pHwData->InitialResource = 3;
 	if (!Wb35Rx_initial(pHwData))
-		goto error;
+		goto error_rx_destroy;
 
 	pHwData->InitialResource = 4;
 	init_timer(&pHwData->LEDTimer);
@@ -522,7 +522,13 @@ static int hal_init_hardware(struct ieee80211_hw *hw)
 
 	return 0;
 
-error:
+error_rx_destroy:
+	Wb35Rx_destroy(pHwData);
+error_tx_destroy:
+	Wb35Tx_destroy(pHwData);
+error_reg_destroy:
+	Wb35Reg_destroy(pHwData);
+
 	pHwData->SurpriseRemove = 1;
 	return -EINVAL;
 }
@@ -617,11 +623,8 @@ static int wb35_hw_init(struct ieee80211_hw *hw)
 	hal_driver_init_OK(pHwData) = 1; // Notify hal that the driver is ready now.
 	//set a tx power for reference.....
 //	sme_set_tx_power_level(priv, 12);	FIXME?
-	return 0;
 
 error:
-	hal_halt(pHwData, NULL);
-
 	return err;
 }
 
-- 
1.5.6.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 06/11] w35und: simplify hal_init_hardware() and hal_halt()
  2009-04-08  8:13 [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pekka Enberg
                   ` (3 preceding siblings ...)
  2009-04-08  8:14 ` [PATCH 05/11] " Pekka Enberg
@ 2009-04-08  8:14 ` Pekka Enberg
  2009-04-08  8:14 ` [PATCH 07/11] w35und: clean up comments in wbusb.c Pekka Enberg
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Pekka Enberg @ 2009-04-08  8:14 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, Pavel Machek

Impact: cleanup

Now that hal_halt() is called from wb35_hw_halt() only where
->InitialResource is always set to 4, we can simplify
hal_init_hardware() and hal_halt().

Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
 drivers/staging/winbond/wbhal_s.h |    1 -
 drivers/staging/winbond/wbusb.c   |   29 +++++++++++------------------
 2 files changed, 11 insertions(+), 19 deletions(-)

diff --git a/drivers/staging/winbond/wbhal_s.h b/drivers/staging/winbond/wbhal_s.h
index acfebf0..16d0e6f 100644
--- a/drivers/staging/winbond/wbhal_s.h
+++ b/drivers/staging/winbond/wbhal_s.h
@@ -401,7 +401,6 @@ struct hw_data {
 
 	// For surprise remove
 	u32	SurpriseRemove; // 0: Normal 1: Surprise remove
-	u8	InitialResource;
 	u8	IsKeyPreSet;
 	u8	CalOneTime; // 20060630.1
 
diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c
index b1ef30a..5dc1ba6 100644
--- a/drivers/staging/winbond/wbusb.c
+++ b/drivers/staging/winbond/wbusb.c
@@ -178,19 +178,6 @@ static const struct ieee80211_ops wbsoft_ops = {
 // conf_tx: hal_set_cwmin()/hal_set_cwmax;
 };
 
-static void hal_halt(struct hw_data *pHwData, void *ppa_data)
-{
-	switch( pHwData->InitialResource )
-	{
-		case 4:
-		case 3: del_timer_sync(&pHwData->LEDTimer);
-			msleep(100); // Wait for Timer DPC exit 940623.2
-			Wb35Rx_destroy( pHwData ); // Release the Rx
-		case 2: Wb35Tx_destroy( pHwData ); // Release the Tx
-		case 1: Wb35Reg_destroy( pHwData ); // Release the Wb35 Regisster resources
-	}
-}
-
 static void hal_led_control(unsigned long data)
 {
 	struct wbsoft_priv *adapter = (struct wbsoft_priv *) data;
@@ -486,19 +473,15 @@ static int hal_init_hardware(struct ieee80211_hw *hw)
 	pHwData->MaxReceiveLifeTime = DEFAULT_MSDU_LIFE_TIME; // Setting Rx maximum MSDU life time
 	pHwData->FragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD; // Setting default fragment threshold
 
-	pHwData->InitialResource = 1;
 	if (!Wb35Reg_initial(pHwData))
 		goto error_reg_destroy;
 
-	pHwData->InitialResource = 2;
 	if (!Wb35Tx_initial(pHwData))
 		goto error_tx_destroy;
 
-	pHwData->InitialResource = 3;
 	if (!Wb35Rx_initial(pHwData))
 		goto error_rx_destroy;
 
-	pHwData->InitialResource = 4;
 	init_timer(&pHwData->LEDTimer);
 	pHwData->LEDTimer.function = hal_led_control;
 	pHwData->LEDTimer.data = (unsigned long) priv;
@@ -714,6 +697,16 @@ error:
 	return err;
 }
 
+static void hal_halt(struct hw_data *pHwData)
+{
+	del_timer_sync(&pHwData->LEDTimer);
+	/* XXX: Wait for Timer DPC exit. */
+	msleep(100);
+	Wb35Rx_destroy(pHwData);
+	Wb35Tx_destroy(pHwData);
+	Wb35Reg_destroy(pHwData);
+}
+
 static void wb35_hw_halt(struct wbsoft_priv *adapter)
 {
 	Mds_Destroy( adapter );
@@ -726,7 +719,7 @@ static void wb35_hw_halt(struct wbsoft_priv *adapter)
 	msleep(100);// Waiting Irp completed
 
 	// Halt the HAL
-	hal_halt(&adapter->sHwData, NULL);
+	hal_halt(&adapter->sHwData);
 }
 
 
-- 
1.5.6.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 07/11] w35und: clean up comments in wbusb.c
  2009-04-08  8:13 [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pekka Enberg
                   ` (4 preceding siblings ...)
  2009-04-08  8:14 ` [PATCH 06/11] w35und: simplify hal_init_hardware() and hal_halt() Pekka Enberg
@ 2009-04-08  8:14 ` Pekka Enberg
  2009-04-08  8:14 ` [PATCH 08/11] w35und: inline hal_set_phy_type() to wb35_hw_init() Pekka Enberg
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Pekka Enberg @ 2009-04-08  8:14 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, Pavel Machek

Impact: cleanup

Remove some useless comments and clean up others.

Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
 drivers/staging/winbond/wbusb.c |   71 ++++++++++++++-------------------------
 1 files changed, 25 insertions(+), 46 deletions(-)

diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c
index 5dc1ba6..fad3b99 100644
--- a/drivers/staging/winbond/wbusb.c
+++ b/drivers/staging/winbond/wbusb.c
@@ -124,27 +124,17 @@ static int wbsoft_config(struct ieee80211_hw *dev, u32 changed)
 
 	printk("wbsoft_config called\n");
 
+	/* Should use channel_num, or something, as that is already pre-translated */
 	ch.band = 1;
-	ch.ChanNo = 1;	/* Should use channel_num, or something, as that is already pre-translated */
-
+	ch.ChanNo = 1;
 
 	hal_set_current_channel(&priv->sHwData, ch);
 	hal_set_beacon_period(&priv->sHwData, conf->beacon_int);
-//	hal_set_cap_info(&priv->sHwData, ?? );
-// hal_set_ssid(struct hw_data * pHwData,  u8 * pssid,  u8 ssid_len); ??
 	hal_set_accept_broadcast(&priv->sHwData, 1);
 	hal_set_accept_promiscuous(&priv->sHwData,  1);
 	hal_set_accept_multicast(&priv->sHwData,  1);
 	hal_set_accept_beacon(&priv->sHwData,  1);
 	hal_set_radio_mode(&priv->sHwData,  0);
-	//hal_set_antenna_number(  struct hw_data * pHwData, u8 number )
-	//hal_set_rf_power(struct hw_data * pHwData, u8 PowerIndex)
-
-
-//	hal_start_bss(&priv->sHwData, WLAN_BSSTYPE_INFRASTRUCTURE);	??
-
-//void hal_set_rates(struct hw_data * pHwData, u8 * pbss_rates,
-//		   u8 length, unsigned char basic_rate_set)
 
 	return 0;
 }
@@ -165,7 +155,7 @@ static u64 wbsoft_get_tsf(struct ieee80211_hw *dev)
 
 static const struct ieee80211_ops wbsoft_ops = {
 	.tx			= wbsoft_tx,
-	.start			= wbsoft_start,		/* Start can be pretty much empty as we do wb35_hw_init() during probe? */
+	.start			= wbsoft_start,
 	.stop			= wbsoft_stop,
 	.add_interface		= wbsoft_add_interface,
 	.remove_interface	= wbsoft_remove_interface,
@@ -175,7 +165,6 @@ static const struct ieee80211_ops wbsoft_ops = {
 	.get_stats		= wbsoft_get_stats,
 	.get_tx_stats		= wbsoft_get_tx_stats,
 	.get_tsf		= wbsoft_get_tsf,
-// conf_tx: hal_set_cwmin()/hal_set_cwmax;
 };
 
 static void hal_led_control(unsigned long data)
@@ -469,9 +458,8 @@ static int hal_init_hardware(struct ieee80211_hw *hw)
 	struct hw_data * pHwData = &priv->sHwData;
 	u16 SoftwareSet;
 
-	// Initial the variable
-	pHwData->MaxReceiveLifeTime = DEFAULT_MSDU_LIFE_TIME; // Setting Rx maximum MSDU life time
-	pHwData->FragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD; // Setting default fragment threshold
+	pHwData->MaxReceiveLifeTime = DEFAULT_MSDU_LIFE_TIME;
+	pHwData->FragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD;
 
 	if (!Wb35Reg_initial(pHwData))
 		goto error_reg_destroy;
@@ -488,9 +476,6 @@ static int hal_init_hardware(struct ieee80211_hw *hw)
 	pHwData->LEDTimer.expires = jiffies + msecs_to_jiffies(1000);
 	add_timer(&pHwData->LEDTimer);
 
-	//
-	// For restrict to vendor's hardware
-	//
 	SoftwareSet = hal_software_set( pHwData );
 
 	#ifdef Vendor2
@@ -526,12 +511,9 @@ static int wb35_hw_init(struct ieee80211_hw *hw)
 	u8		HwRadioOff;
 	int err;
 
-	//
-	// Setting default value for Linux
-	//
 	priv->sLocalPara.region_INF = REGION_AUTO;
 	priv->sLocalPara.TxRateMode = RATE_AUTO;
-	priv->sLocalPara.bMacOperationMode = MODE_802_11_BG;	// B/G mode
+	priv->sLocalPara.bMacOperationMode = MODE_802_11_BG;
 	priv->Mds.TxRTSThreshold = DEFAULT_RTSThreshold;
 	priv->Mds.TxFragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD;
 	hal_set_phy_type( &priv->sHwData, RF_WB_242_1 );
@@ -541,12 +523,10 @@ static int wb35_hw_init(struct ieee80211_hw *hw)
 	pHwData = &priv->sHwData;
 	hal_set_phy_type( pHwData, RF_DECIDE_BY_INF );
 
-	//added by ws for wep key error detection
 	priv->sLocalPara.bWepKeyError= false;
 	priv->sLocalPara.bToSelfPacketReceived = false;
-	priv->sLocalPara.WepKeyDetectTimerCount= 2 * 100; /// 2 seconds
+	priv->sLocalPara.WepKeyDetectTimerCount= 2 * 100; /* 2 seconds */
 
-	// Initial USB hal
 	pHwData = &priv->sHwData;
 	err = hal_init_hardware(hw);
 	if (err)
@@ -559,7 +539,7 @@ static int wb35_hw_init(struct ieee80211_hw *hw)
 		if (priv->sLocalPara.region_INF != REGION_AUTO)
 			priv->sLocalPara.region = priv->sLocalPara.region_INF;
 		else
-			priv->sLocalPara.region = REGION_USA;	//default setting
+			priv->sLocalPara.region = REGION_USA; /* default setting */
 	}
 
 	// Get Software setting flag from hal
@@ -567,32 +547,31 @@ static int wb35_hw_init(struct ieee80211_hw *hw)
 	if (hal_software_set(pHwData) & 0x00000001)
 		priv->sLocalPara.boAntennaDiversity = true;
 
-	// For MDS module
 	Mds_initial(priv);
 
-	//=======================================
-	// Initialize the SME, SCAN, MLME, ROAM
-	//=======================================
-
-	// If no user-defined address in the registry, use the addresss "burned" on the NIC instead.
+	/*
+	 * If no user-defined address in the registry, use the addresss
+	 * "burned" on the NIC instead.
+	 */
 	pMacAddr = priv->sLocalPara.ThisMacAddress;
 	pMacAddr2 = priv->sLocalPara.PermanentAddress;
-	hal_get_permanent_address( pHwData, priv->sLocalPara.PermanentAddress );// Reading ethernet address from EEPROM
+
+	/* Reading ethernet address from EEPROM */
+	hal_get_permanent_address( pHwData, priv->sLocalPara.PermanentAddress );
 	if (memcmp(pMacAddr, "\x00\x00\x00\x00\x00\x00", MAC_ADDR_LENGTH) == 0)
 		memcpy(pMacAddr, pMacAddr2, MAC_ADDR_LENGTH);
 	else {
-		// Set the user define MAC address
+		/* Set the user define MAC address */
 		hal_set_ethernet_address(pHwData, priv->sLocalPara.ThisMacAddress);
 	}
 
-	//get current antenna
 	priv->sLocalPara.bAntennaNo = hal_get_antenna_number(pHwData);
 #ifdef _PE_STATE_DUMP_
 	printk("Driver init, antenna no = %d\n", psLOCAL->bAntennaNo);
 #endif
 	hal_get_hw_radio_off( pHwData );
 
-	// Waiting for HAL setting OK
+	/* Waiting for HAL setting OK */
 	while (!hal_idle(pHwData))
 		msleep(10);
 
@@ -603,9 +582,8 @@ static int wb35_hw_init(struct ieee80211_hw *hw)
 
 	hal_set_radio_mode( pHwData, (unsigned char)(priv->sLocalPara.RadioOffStatus.boSwRadioOff || priv->sLocalPara.RadioOffStatus.boHwRadioOff) );
 
-	hal_driver_init_OK(pHwData) = 1; // Notify hal that the driver is ready now.
-	//set a tx power for reference.....
-//	sme_set_tx_power_level(priv, 12);	FIXME?
+	/* Notify hal that the driver is ready now. */
+	hal_driver_init_OK(pHwData) = 1;
 
 error:
 	return err;
@@ -624,7 +602,7 @@ static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id
 
 	usb_get_dev(udev);
 
-	// 20060630.2 Check the device if it already be opened
+	/* Check the device if it already be opened */
 	nr = usb_control_msg(udev, usb_rcvctrlpipe( udev, 0 ),
 			     0x01, USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_DIR_IN,
 			     0x0, 0x400, &ltmp, 4, HZ*100 );
@@ -633,8 +611,9 @@ static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id
 		goto error;
 	}
 
+	/* Is already initialized? */
 	ltmp = cpu_to_le32(ltmp);
-	if (ltmp) {  // Is already initialized?
+	if (ltmp) {
 		err = -EBUSY;
 		goto error;
 	}
@@ -711,14 +690,14 @@ static void wb35_hw_halt(struct wbsoft_priv *adapter)
 {
 	Mds_Destroy( adapter );
 
-	// Turn off Rx and Tx hardware ability
+	/* Turn off Rx and Tx hardware ability */
 	hal_stop( &adapter->sHwData );
 #ifdef _PE_USB_INI_DUMP_
 	printk("[w35und] Hal_stop O.K.\n");
 #endif
-	msleep(100);// Waiting Irp completed
+	/* Waiting Irp completed */
+	msleep(100);
 
-	// Halt the HAL
 	hal_halt(&adapter->sHwData);
 }
 
-- 
1.5.6.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 08/11] w35und: inline hal_set_phy_type() to wb35_hw_init()
  2009-04-08  8:13 [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pekka Enberg
                   ` (5 preceding siblings ...)
  2009-04-08  8:14 ` [PATCH 07/11] w35und: clean up comments in wbusb.c Pekka Enberg
@ 2009-04-08  8:14 ` Pekka Enberg
  2009-04-08  8:14 ` [PATCH 09/11] w35und: reformat wbusb.c Pekka Enberg
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Pekka Enberg @ 2009-04-08  8:14 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, Pavel Machek

Impact: cleanup

The hal_set_phy_type() is called in wb35_hw_init() only so inline the
function there. Also remove a redundant assignment of ->phy_type to
RF_WB_242_1.

Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
 drivers/staging/winbond/wbhal.c   |    5 -----
 drivers/staging/winbond/wbhal_f.h |    1 -
 drivers/staging/winbond/wbusb.c   |    8 +++-----
 3 files changed, 3 insertions(+), 11 deletions(-)

diff --git a/drivers/staging/winbond/wbhal.c b/drivers/staging/winbond/wbhal.c
index 6f1964c..14253f0 100644
--- a/drivers/staging/winbond/wbhal.c
+++ b/drivers/staging/winbond/wbhal.c
@@ -145,11 +145,6 @@ unsigned char hal_idle(struct hw_data * pHwData)
 
 	return true;
 }
-//---------------------------------------------------------------------------------------------------
-void hal_set_phy_type(  struct hw_data * pHwData,  u8 PhyType )
-{
-	pHwData->phy_type = PhyType;
-}
 
 void hal_set_radio_mode( struct hw_data * pHwData,  unsigned char radio_off)
 {
diff --git a/drivers/staging/winbond/wbhal_f.h b/drivers/staging/winbond/wbhal_f.h
index d51709f..bdea22f 100644
--- a/drivers/staging/winbond/wbhal_f.h
+++ b/drivers/staging/winbond/wbhal_f.h
@@ -42,7 +42,6 @@ void hal_set_accept_multicast(  struct hw_data * pHwData,  u8 enable );
 void hal_set_accept_beacon(  struct hw_data * pHwData,  u8 enable );
 void hal_stop(  struct hw_data * pHwData );
 void hal_start_tx0(  struct hw_data * pHwData );
-void hal_set_phy_type(  struct hw_data * pHwData,  u8 PhyType );
 #define hal_get_cwmin( _A ) ( (_A)->cwmin )
 void hal_set_cwmax(  struct hw_data * pHwData,  u16 cwin_max );
 #define hal_get_cwmax( _A ) ( (_A)->cwmax )
diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c
index fad3b99..742bf7d 100644
--- a/drivers/staging/winbond/wbusb.c
+++ b/drivers/staging/winbond/wbusb.c
@@ -504,7 +504,7 @@ error_reg_destroy:
 static int wb35_hw_init(struct ieee80211_hw *hw)
 {
 	struct wbsoft_priv *priv = hw->priv;
-	struct hw_data *	pHwData;
+	struct hw_data *	pHwData = &priv->sHwData;
 	u8		*pMacAddr;
 	u8		*pMacAddr2;
 	u8		EEPROM_region;
@@ -516,18 +516,16 @@ static int wb35_hw_init(struct ieee80211_hw *hw)
 	priv->sLocalPara.bMacOperationMode = MODE_802_11_BG;
 	priv->Mds.TxRTSThreshold = DEFAULT_RTSThreshold;
 	priv->Mds.TxFragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD;
-	hal_set_phy_type( &priv->sHwData, RF_WB_242_1 );
 	priv->sLocalPara.MTUsize = MAX_ETHERNET_PACKET_SIZE;
 	priv->sLocalPara.bPreambleMode = AUTO_MODE;
 	priv->sLocalPara.RadioOffStatus.boSwRadioOff = false;
-	pHwData = &priv->sHwData;
-	hal_set_phy_type( pHwData, RF_DECIDE_BY_INF );
+
+	pHwData->phy_type = RF_DECIDE_BY_INF;
 
 	priv->sLocalPara.bWepKeyError= false;
 	priv->sLocalPara.bToSelfPacketReceived = false;
 	priv->sLocalPara.WepKeyDetectTimerCount= 2 * 100; /* 2 seconds */
 
-	pHwData = &priv->sHwData;
 	err = hal_init_hardware(hw);
 	if (err)
 		goto error;
-- 
1.5.6.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 09/11] w35und: reformat wbusb.c
  2009-04-08  8:13 [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pekka Enberg
                   ` (6 preceding siblings ...)
  2009-04-08  8:14 ` [PATCH 08/11] w35und: inline hal_set_phy_type() to wb35_hw_init() Pekka Enberg
@ 2009-04-08  8:14 ` Pekka Enberg
  2009-04-08  8:14 ` [PATCH 10/11] w35und: remove MODULE_AUTHOR Pekka Enberg
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Pekka Enberg @ 2009-04-08  8:14 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, Pavel Machek

Impact: cleanup

Use scripts/Lindent on the file and clean up the rest by hand.

Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
 drivers/staging/winbond/wbusb.c |  563 +++++++++++++++++++--------------------
 1 files changed, 270 insertions(+), 293 deletions(-)

diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c
index 742bf7d..526aac5 100644
--- a/drivers/staging/winbond/wbusb.c
+++ b/drivers/staging/winbond/wbusb.c
@@ -19,13 +19,13 @@ MODULE_LICENSE("GPL");
 MODULE_VERSION("0.1");
 
 static struct usb_device_id wb35_table[] __devinitdata = {
-	{USB_DEVICE(0x0416, 0x0035)},
-	{USB_DEVICE(0x18E8, 0x6201)},
-	{USB_DEVICE(0x18E8, 0x6206)},
-	{USB_DEVICE(0x18E8, 0x6217)},
-	{USB_DEVICE(0x18E8, 0x6230)},
-	{USB_DEVICE(0x18E8, 0x6233)},
-	{USB_DEVICE(0x1131, 0x2035)},
+	{ USB_DEVICE(0x0416, 0x0035) },
+	{ USB_DEVICE(0x18E8, 0x6201) },
+	{ USB_DEVICE(0x18E8, 0x6206) },
+	{ USB_DEVICE(0x18E8, 0x6217) },
+	{ USB_DEVICE(0x18E8, 0x6230) },
+	{ USB_DEVICE(0x18E8, 0x6233) },
+	{ USB_DEVICE(0x1131, 0x2035) },
 	{ 0, }
 };
 
@@ -36,7 +36,7 @@ static struct ieee80211_rate wbsoft_rates[] = {
 };
 
 static struct ieee80211_channel wbsoft_channels[] = {
-	{ .center_freq = 2412},
+	{ .center_freq = 2412 },
 };
 
 static struct ieee80211_supported_band wbsoft_band_2GHz = {
@@ -47,14 +47,14 @@ static struct ieee80211_supported_band wbsoft_band_2GHz = {
 };
 
 static int wbsoft_add_interface(struct ieee80211_hw *dev,
-				 struct ieee80211_if_init_conf *conf)
+				struct ieee80211_if_init_conf *conf)
 {
 	printk("wbsoft_add interface called\n");
 	return 0;
 }
 
 static void wbsoft_remove_interface(struct ieee80211_hw *dev,
-				     struct ieee80211_if_init_conf *conf)
+				    struct ieee80211_if_init_conf *conf)
 {
 	printk("wbsoft_remove interface called\n");
 }
@@ -79,9 +79,9 @@ static int wbsoft_get_tx_stats(struct ieee80211_hw *hw,
 }
 
 static void wbsoft_configure_filter(struct ieee80211_hw *dev,
-				     unsigned int changed_flags,
-				     unsigned int *total_flags,
-				     int mc_count, struct dev_mc_list *mclist)
+				    unsigned int changed_flags,
+				    unsigned int *total_flags,
+				    int mc_count, struct dev_mc_list *mclist)
 {
 	unsigned int new_flags;
 
@@ -106,7 +106,6 @@ static int wbsoft_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
 	return NETDEV_TX_OK;
 }
 
-
 static int wbsoft_start(struct ieee80211_hw *dev)
 {
 	struct wbsoft_priv *priv = dev->priv;
@@ -131,17 +130,17 @@ static int wbsoft_config(struct ieee80211_hw *dev, u32 changed)
 	hal_set_current_channel(&priv->sHwData, ch);
 	hal_set_beacon_period(&priv->sHwData, conf->beacon_int);
 	hal_set_accept_broadcast(&priv->sHwData, 1);
-	hal_set_accept_promiscuous(&priv->sHwData,  1);
-	hal_set_accept_multicast(&priv->sHwData,  1);
-	hal_set_accept_beacon(&priv->sHwData,  1);
-	hal_set_radio_mode(&priv->sHwData,  0);
+	hal_set_accept_promiscuous(&priv->sHwData, 1);
+	hal_set_accept_multicast(&priv->sHwData, 1);
+	hal_set_accept_beacon(&priv->sHwData, 1);
+	hal_set_radio_mode(&priv->sHwData, 0);
 
 	return 0;
 }
 
 static int wbsoft_config_interface(struct ieee80211_hw *dev,
-				    struct ieee80211_vif *vif,
-				    struct ieee80211_if_conf *conf)
+				   struct ieee80211_vif *vif,
+				   struct ieee80211_if_conf *conf)
 {
 	printk("wbsoft_config_interface called\n");
 	return 0;
@@ -169,285 +168,256 @@ static const struct ieee80211_ops wbsoft_ops = {
 
 static void hal_led_control(unsigned long data)
 {
-	struct wbsoft_priv *adapter = (struct wbsoft_priv *) data;
-	struct hw_data * pHwData = &adapter->sHwData;
+	struct wbsoft_priv *adapter = (struct wbsoft_priv *)data;
+	struct hw_data *pHwData = &adapter->sHwData;
 	struct wb35_reg *reg = &pHwData->reg;
-	u32	LEDSet = (pHwData->SoftwareSet & HAL_LED_SET_MASK) >> HAL_LED_SET_SHIFT;
-	u8	LEDgray[20] = { 0,3,4,6,8,10,11,12,13,14,15,14,13,12,11,10,8,6,4,2 };
-	u8	LEDgray2[30] = { 7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,14,13,12,11,10,9,8 };
-	u32	TimeInterval = 500, ltmp, ltmp2;
-        ltmp=0;
+	u32 LEDSet = (pHwData->SoftwareSet & HAL_LED_SET_MASK) >> HAL_LED_SET_SHIFT;
+	u8 LEDgray[20] = { 0, 3, 4, 6, 8, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 8, 6, 4, 2 };
+	u8 LEDgray2[30] = { 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
+	u32 TimeInterval = 500, ltmp, ltmp2;
+	ltmp = 0;
 
-	if( pHwData->SurpriseRemove ) return;
+	if (pHwData->SurpriseRemove)
+		return;
 
-	if( pHwData->LED_control ) {
+	if (pHwData->LED_control) {
 		ltmp2 = pHwData->LED_control & 0xff;
-		if( ltmp2 == 5 ) // 5 is WPS mode
+		if (ltmp2 == 5)	// 5 is WPS mode
 		{
 			TimeInterval = 100;
-			ltmp2 = (pHwData->LED_control>>8) & 0xff;
-			switch( ltmp2 )
-			{
-				case 1: // [0.2 On][0.1 Off]...
-					pHwData->LED_Blinking %= 3;
-					ltmp = 0x1010; // Led 1 & 0 Green and Red
-					if( pHwData->LED_Blinking == 2 ) // Turn off
-						ltmp = 0;
-					break;
-				case 2: // [0.1 On][0.1 Off]...
-					pHwData->LED_Blinking %= 2;
-					ltmp = 0x0010; // Led 0 red color
-					if( pHwData->LED_Blinking ) // Turn off
-						ltmp = 0;
-					break;
-				case 3: // [0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.5 Off]...
-					pHwData->LED_Blinking %= 15;
-					ltmp = 0x0010; // Led 0 red color
-					if( (pHwData->LED_Blinking >= 9) || (pHwData->LED_Blinking%2) ) // Turn off 0.6 sec
-						ltmp = 0;
-					break;
-				case 4: // [300 On][ off ]
-					ltmp = 0x1000; // Led 1 Green color
-					if( pHwData->LED_Blinking >= 3000 )
-						ltmp = 0; // led maybe on after 300sec * 32bit counter overlap.
-					break;
+			ltmp2 = (pHwData->LED_control >> 8) & 0xff;
+			switch (ltmp2) {
+			case 1:	// [0.2 On][0.1 Off]...
+				pHwData->LED_Blinking %= 3;
+				ltmp = 0x1010;	// Led 1 & 0 Green and Red
+				if (pHwData->LED_Blinking == 2)	// Turn off
+					ltmp = 0;
+				break;
+			case 2:	// [0.1 On][0.1 Off]...
+				pHwData->LED_Blinking %= 2;
+				ltmp = 0x0010;	// Led 0 red color
+				if (pHwData->LED_Blinking)	// Turn off
+					ltmp = 0;
+				break;
+			case 3:	// [0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.5 Off]...
+				pHwData->LED_Blinking %= 15;
+				ltmp = 0x0010;	// Led 0 red color
+				if ((pHwData->LED_Blinking >= 9) || (pHwData->LED_Blinking % 2))	// Turn off 0.6 sec
+					ltmp = 0;
+				break;
+			case 4:	// [300 On][ off ]
+				ltmp = 0x1000;	// Led 1 Green color
+				if (pHwData->LED_Blinking >= 3000)
+					ltmp = 0;	// led maybe on after 300sec * 32bit counter overlap.
+				break;
 			}
 			pHwData->LED_Blinking++;
 
 			reg->U1BC_LEDConfigure = ltmp;
-			if( LEDSet != 7 ) // Only 111 mode has 2 LEDs on PCB.
+			if (LEDSet != 7)	// Only 111 mode has 2 LEDs on PCB.
 			{
-				reg->U1BC_LEDConfigure |= (ltmp &0xff)<<8; // Copy LED result to each LED control register
-				reg->U1BC_LEDConfigure |= (ltmp &0xff00)>>8;
+				reg->U1BC_LEDConfigure |= (ltmp & 0xff) << 8;	// Copy LED result to each LED control register
+				reg->U1BC_LEDConfigure |= (ltmp & 0xff00) >> 8;
 			}
-			Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
+			Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);
 		}
-	}
-	else if( pHwData->CurrentRadioSw || pHwData->CurrentRadioHw ) // If radio off
+	} else if (pHwData->CurrentRadioSw || pHwData->CurrentRadioHw)	// If radio off
 	{
-		if( reg->U1BC_LEDConfigure & 0x1010 )
-		{
+		if (reg->U1BC_LEDConfigure & 0x1010) {
 			reg->U1BC_LEDConfigure &= ~0x1010;
-			Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
+			Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);
 		}
-	}
-	else
-	{
-		switch( LEDSet )
-		{
-			case 4: // [100] Only 1 Led be placed on PCB and use pin 21 of IC. Use LED_0 for showing
-				if( !pHwData->LED_LinkOn ) // Blink only if not Link On
-				{
-					// Blinking if scanning is on progress
-					if( pHwData->LED_Scanning )
-					{
-						if( pHwData->LED_Blinking == 0 )
-						{
-							reg->U1BC_LEDConfigure |= 0x10;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 On
-							pHwData->LED_Blinking = 1;
-							TimeInterval = 300;
-						}
-						else
-						{
-							reg->U1BC_LEDConfigure &= ~0x10;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
-							pHwData->LED_Blinking = 0;
-							TimeInterval = 300;
-						}
+	} else {
+		switch (LEDSet) {
+		case 4:	// [100] Only 1 Led be placed on PCB and use pin 21 of IC. Use LED_0 for showing
+			if (!pHwData->LED_LinkOn)	// Blink only if not Link On
+			{
+				// Blinking if scanning is on progress
+				if (pHwData->LED_Scanning) {
+					if (pHwData->LED_Blinking == 0) {
+						reg->U1BC_LEDConfigure |= 0x10;
+						Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);	// LED_0 On
+						pHwData->LED_Blinking = 1;
+						TimeInterval = 300;
+					} else {
+						reg->U1BC_LEDConfigure &= ~0x10;
+						Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);	// LED_0 Off
+						pHwData->LED_Blinking = 0;
+						TimeInterval = 300;
 					}
-					else
-					{
-						//Turn Off LED_0
-						if( reg->U1BC_LEDConfigure & 0x10 )
-						{
-							reg->U1BC_LEDConfigure &= ~0x10;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
-						}
+				} else {
+					//Turn Off LED_0
+					if (reg->U1BC_LEDConfigure & 0x10) {
+						reg->U1BC_LEDConfigure &= ~0x10;
+						Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);	// LED_0 Off
 					}
 				}
-				else
-				{
-					// Turn On LED_0
-					if( (reg->U1BC_LEDConfigure & 0x10) == 0 )
-					{
-						reg->U1BC_LEDConfigure |= 0x10;
-						Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
-					}
+			} else {
+				// Turn On LED_0
+				if ((reg->U1BC_LEDConfigure & 0x10) == 0) {
+					reg->U1BC_LEDConfigure |= 0x10;
+					Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);	// LED_0 Off
 				}
-				break;
+			}
+			break;
 
-			case 6: // [110] Only 1 Led be placed on PCB and use pin 21 of IC. Use LED_0 for showing
-				if( !pHwData->LED_LinkOn ) // Blink only if not Link On
-				{
-					// Blinking if scanning is on progress
-					if( pHwData->LED_Scanning )
-					{
-						if( pHwData->LED_Blinking == 0 )
-						{
-							reg->U1BC_LEDConfigure &= ~0xf;
-							reg->U1BC_LEDConfigure |= 0x10;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 On
-							pHwData->LED_Blinking = 1;
-							TimeInterval = 300;
-						}
-						else
-						{
-							reg->U1BC_LEDConfigure &= ~0x1f;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
-							pHwData->LED_Blinking = 0;
-							TimeInterval = 300;
-						}
-					}
-					else
-					{
-						// 20060901 Gray blinking if in disconnect state and not scanning
-						ltmp = reg->U1BC_LEDConfigure;
+		case 6:	// [110] Only 1 Led be placed on PCB and use pin 21 of IC. Use LED_0 for showing
+			if (!pHwData->LED_LinkOn)	// Blink only if not Link On
+			{
+				// Blinking if scanning is on progress
+				if (pHwData->LED_Scanning) {
+					if (pHwData->LED_Blinking == 0) {
+						reg->U1BC_LEDConfigure &= ~0xf;
+						reg->U1BC_LEDConfigure |= 0x10;
+						Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);	// LED_0 On
+						pHwData->LED_Blinking = 1;
+						TimeInterval = 300;
+					} else {
 						reg->U1BC_LEDConfigure &= ~0x1f;
-						if( LEDgray2[(pHwData->LED_Blinking%30)] )
-						{
-							reg->U1BC_LEDConfigure |= 0x10;
-							reg->U1BC_LEDConfigure |= LEDgray2[ (pHwData->LED_Blinking%30) ];
-						}
-						pHwData->LED_Blinking++;
-						if( reg->U1BC_LEDConfigure != ltmp )
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
-						TimeInterval = 100;
+						Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);	// LED_0 Off
+						pHwData->LED_Blinking = 0;
+						TimeInterval = 300;
 					}
-				}
-				else
-				{
-					// Turn On LED_0
-					if( (reg->U1BC_LEDConfigure & 0x10) == 0 )
-					{
+				} else {
+					// 20060901 Gray blinking if in disconnect state and not scanning
+					ltmp = reg->U1BC_LEDConfigure;
+					reg->U1BC_LEDConfigure &= ~0x1f;
+					if (LEDgray2[(pHwData->LED_Blinking % 30)]) {
 						reg->U1BC_LEDConfigure |= 0x10;
-						Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_0 Off
+						reg->U1BC_LEDConfigure |=
+						    LEDgray2[(pHwData->LED_Blinking % 30)];
 					}
+					pHwData->LED_Blinking++;
+					if (reg->U1BC_LEDConfigure != ltmp)
+						Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);	// LED_0 Off
+					TimeInterval = 100;
 				}
-				break;
+			} else {
+				// Turn On LED_0
+				if ((reg->U1BC_LEDConfigure & 0x10) == 0) {
+					reg->U1BC_LEDConfigure |= 0x10;
+					Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);	// LED_0 Off
+				}
+			}
+			break;
 
-			case 5: // [101] Only 1 Led be placed on PCB and use LED_1 for showing
-				if( !pHwData->LED_LinkOn ) // Blink only if not Link On
-				{
-					// Blinking if scanning is on progress
-					if( pHwData->LED_Scanning )
-					{
-						if( pHwData->LED_Blinking == 0 )
-						{
-							reg->U1BC_LEDConfigure |= 0x1000;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 On
-							pHwData->LED_Blinking = 1;
-							TimeInterval = 300;
-						}
-						else
-						{
-							reg->U1BC_LEDConfigure &= ~0x1000;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 Off
-							pHwData->LED_Blinking = 0;
-							TimeInterval = 300;
-						}
+		case 5:	// [101] Only 1 Led be placed on PCB and use LED_1 for showing
+			if (!pHwData->LED_LinkOn)	// Blink only if not Link On
+			{
+				// Blinking if scanning is on progress
+				if (pHwData->LED_Scanning) {
+					if (pHwData->LED_Blinking == 0) {
+						reg->U1BC_LEDConfigure |=
+						    0x1000;
+						Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);	// LED_1 On
+						pHwData->LED_Blinking = 1;
+						TimeInterval = 300;
+					} else {
+						reg->U1BC_LEDConfigure &=
+						    ~0x1000;
+						Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);	// LED_1 Off
+						pHwData->LED_Blinking = 0;
+						TimeInterval = 300;
 					}
-					else
-					{
-						//Turn Off LED_1
-						if( reg->U1BC_LEDConfigure & 0x1000 )
-						{
-							reg->U1BC_LEDConfigure &= ~0x1000;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 Off
-						}
+				} else {
+					//Turn Off LED_1
+					if (reg->U1BC_LEDConfigure & 0x1000) {
+						reg->U1BC_LEDConfigure &=
+						    ~0x1000;
+						Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);	// LED_1 Off
 					}
 				}
-				else
-				{
-					// Is transmitting/receiving ??
-					if( (adapter->RxByteCount != pHwData->RxByteCountLast ) ||
-						(adapter->TxByteCount != pHwData->TxByteCountLast ) )
-					{
-						if( (reg->U1BC_LEDConfigure & 0x3000) != 0x3000 )
-						{
-							reg->U1BC_LEDConfigure |= 0x3000;
-							Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 On
-						}
-
-						// Update variable
-						pHwData->RxByteCountLast = adapter->RxByteCount;
-						pHwData->TxByteCountLast = adapter->TxByteCount;
-						TimeInterval = 200;
+			} else {
+				// Is transmitting/receiving ??
+				if ((adapter->RxByteCount !=
+				     pHwData->RxByteCountLast)
+				    || (adapter->TxByteCount !=
+					pHwData->TxByteCountLast)) {
+					if ((reg->U1BC_LEDConfigure & 0x3000) !=
+					    0x3000) {
+						reg->U1BC_LEDConfigure |=
+						    0x3000;
+						Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);	// LED_1 On
 					}
-					else
-					{
-						// Turn On LED_1 and blinking if transmitting/receiving
-						 if( (reg->U1BC_LEDConfigure & 0x3000) != 0x1000 )
-						 {
-							 reg->U1BC_LEDConfigure &= ~0x3000;
-							 reg->U1BC_LEDConfigure |= 0x1000;
-							 Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure ); // LED_1 On
-						 }
+					// Update variable
+					pHwData->RxByteCountLast =
+					    adapter->RxByteCount;
+					pHwData->TxByteCountLast =
+					    adapter->TxByteCount;
+					TimeInterval = 200;
+				} else {
+					// Turn On LED_1 and blinking if transmitting/receiving
+					if ((reg->U1BC_LEDConfigure & 0x3000) !=
+					    0x1000) {
+						reg->U1BC_LEDConfigure &=
+						    ~0x3000;
+						reg->U1BC_LEDConfigure |=
+						    0x1000;
+						Wb35Reg_Write(pHwData, 0x03bc, reg->U1BC_LEDConfigure);	// LED_1 On
 					}
 				}
-				break;
+			}
+			break;
 
-			default: // Default setting. 2 LED be placed on PCB. LED_0: Link On LED_1 Active
-				if( (reg->U1BC_LEDConfigure & 0x3000) != 0x3000 )
-				{
-					reg->U1BC_LEDConfigure |= 0x3000;// LED_1 is always on and event enable
-					Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
-				}
+		default:	// Default setting. 2 LED be placed on PCB. LED_0: Link On LED_1 Active
+			if ((reg->U1BC_LEDConfigure & 0x3000) != 0x3000) {
+				reg->U1BC_LEDConfigure |= 0x3000;	// LED_1 is always on and event enable
+				Wb35Reg_Write(pHwData, 0x03bc,
+					      reg->U1BC_LEDConfigure);
+			}
 
-				if( pHwData->LED_Blinking )
-				{
-					// Gray blinking
+			if (pHwData->LED_Blinking) {
+				// Gray blinking
+				reg->U1BC_LEDConfigure &= ~0x0f;
+				reg->U1BC_LEDConfigure |= 0x10;
+				reg->U1BC_LEDConfigure |=
+				    LEDgray[(pHwData->LED_Blinking - 1) % 20];
+				Wb35Reg_Write(pHwData, 0x03bc,
+					      reg->U1BC_LEDConfigure);
+
+				pHwData->LED_Blinking += 2;
+				if (pHwData->LED_Blinking < 40)
+					TimeInterval = 100;
+				else {
+					pHwData->LED_Blinking = 0;	// Stop blinking
 					reg->U1BC_LEDConfigure &= ~0x0f;
-					reg->U1BC_LEDConfigure |= 0x10;
-					reg->U1BC_LEDConfigure |= LEDgray[ (pHwData->LED_Blinking-1)%20 ];
-					Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
-
-					pHwData->LED_Blinking += 2;
-					if( pHwData->LED_Blinking < 40 )
-						TimeInterval = 100;
-					else
-					{
-						pHwData->LED_Blinking = 0; // Stop blinking
-						reg->U1BC_LEDConfigure &= ~0x0f;
-						Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
-					}
-					break;
+					Wb35Reg_Write(pHwData, 0x03bc,
+						      reg->U1BC_LEDConfigure);
 				}
+				break;
+			}
 
-				if( pHwData->LED_LinkOn )
+			if (pHwData->LED_LinkOn) {
+				if (!(reg->U1BC_LEDConfigure & 0x10))	// Check the LED_0
 				{
-					if( !(reg->U1BC_LEDConfigure & 0x10) ) // Check the LED_0
-					{
-						//Try to turn ON LED_0 after gray blinking
-						reg->U1BC_LEDConfigure |= 0x10;
-						pHwData->LED_Blinking = 1; //Start blinking
-						TimeInterval = 50;
-					}
+					//Try to turn ON LED_0 after gray blinking
+					reg->U1BC_LEDConfigure |= 0x10;
+					pHwData->LED_Blinking = 1;	//Start blinking
+					TimeInterval = 50;
 				}
-				else
+			} else {
+				if (reg->U1BC_LEDConfigure & 0x10)	// Check the LED_0
 				{
-					if( reg->U1BC_LEDConfigure & 0x10 ) // Check the LED_0
-					{
-						reg->U1BC_LEDConfigure &= ~0x10;
-						Wb35Reg_Write( pHwData, 0x03bc, reg->U1BC_LEDConfigure );
-					}
+					reg->U1BC_LEDConfigure &= ~0x10;
+					Wb35Reg_Write(pHwData, 0x03bc,
+						      reg->U1BC_LEDConfigure);
 				}
-				break;
+			}
+			break;
 		}
 
 		//20060828.1 Active send null packet to avoid AP disconnect
-		if( pHwData->LED_LinkOn )
-		{
+		if (pHwData->LED_LinkOn) {
 			pHwData->NullPacketCount += TimeInterval;
-			if( pHwData->NullPacketCount >= DEFAULT_NULL_PACKET_COUNT )
-			{
+			if (pHwData->NullPacketCount >=
+			    DEFAULT_NULL_PACKET_COUNT) {
 				pHwData->NullPacketCount = 0;
 			}
 		}
 	}
 
 	pHwData->time_count += TimeInterval;
-	Wb35Tx_CurrentTime(adapter, pHwData->time_count); // 20060928 add
+	Wb35Tx_CurrentTime(adapter, pHwData->time_count);	// 20060928 add
 	pHwData->LEDTimer.expires = jiffies + msecs_to_jiffies(TimeInterval);
 	add_timer(&pHwData->LEDTimer);
 }
@@ -455,7 +425,7 @@ static void hal_led_control(unsigned long data)
 static int hal_init_hardware(struct ieee80211_hw *hw)
 {
 	struct wbsoft_priv *priv = hw->priv;
-	struct hw_data * pHwData = &priv->sHwData;
+	struct hw_data *pHwData = &priv->sHwData;
 	u16 SoftwareSet;
 
 	pHwData->MaxReceiveLifeTime = DEFAULT_MSDU_LIFE_TIME;
@@ -472,18 +442,18 @@ static int hal_init_hardware(struct ieee80211_hw *hw)
 
 	init_timer(&pHwData->LEDTimer);
 	pHwData->LEDTimer.function = hal_led_control;
-	pHwData->LEDTimer.data = (unsigned long) priv;
+	pHwData->LEDTimer.data = (unsigned long)priv;
 	pHwData->LEDTimer.expires = jiffies + msecs_to_jiffies(1000);
 	add_timer(&pHwData->LEDTimer);
 
-	SoftwareSet = hal_software_set( pHwData );
+	SoftwareSet = hal_software_set(pHwData);
 
-	#ifdef Vendor2
+#ifdef Vendor2
 	// Try to make sure the EEPROM contain
 	SoftwareSet >>= 8;
-	if( SoftwareSet != 0x82 )
+	if (SoftwareSet != 0x82)
 		return false;
-	#endif
+#endif
 
 	Wb35Rx_start(hw);
 	Wb35Tx_EP2VM_start(priv);
@@ -504,40 +474,41 @@ error_reg_destroy:
 static int wb35_hw_init(struct ieee80211_hw *hw)
 {
 	struct wbsoft_priv *priv = hw->priv;
-	struct hw_data *	pHwData = &priv->sHwData;
-	u8		*pMacAddr;
-	u8		*pMacAddr2;
-	u8		EEPROM_region;
-	u8		HwRadioOff;
+	struct hw_data *pHwData = &priv->sHwData;
+	u8 EEPROM_region;
+	u8 HwRadioOff;
+	u8 *pMacAddr2;
+	u8 *pMacAddr;
 	int err;
 
-	priv->sLocalPara.region_INF = REGION_AUTO;
-	priv->sLocalPara.TxRateMode = RATE_AUTO;
-	priv->sLocalPara.bMacOperationMode = MODE_802_11_BG;
-	priv->Mds.TxRTSThreshold = DEFAULT_RTSThreshold;
-	priv->Mds.TxFragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD;
-	priv->sLocalPara.MTUsize = MAX_ETHERNET_PACKET_SIZE;
-	priv->sLocalPara.bPreambleMode = AUTO_MODE;
-	priv->sLocalPara.RadioOffStatus.boSwRadioOff = false;
-
 	pHwData->phy_type = RF_DECIDE_BY_INF;
 
-	priv->sLocalPara.bWepKeyError= false;
-	priv->sLocalPara.bToSelfPacketReceived = false;
-	priv->sLocalPara.WepKeyDetectTimerCount= 2 * 100; /* 2 seconds */
+	priv->Mds.TxRTSThreshold		= DEFAULT_RTSThreshold;
+	priv->Mds.TxFragmentThreshold		= DEFAULT_FRAGMENT_THRESHOLD;
+
+	priv->sLocalPara.region_INF		= REGION_AUTO;
+	priv->sLocalPara.TxRateMode		= RATE_AUTO;
+	priv->sLocalPara.bMacOperationMode	= MODE_802_11_BG;
+	priv->sLocalPara.MTUsize		= MAX_ETHERNET_PACKET_SIZE;
+	priv->sLocalPara.bPreambleMode		= AUTO_MODE;
+	priv->sLocalPara.bWepKeyError		= false;
+	priv->sLocalPara.bToSelfPacketReceived	= false;
+	priv->sLocalPara.WepKeyDetectTimerCount	= 2 * 100; /* 2 seconds */
+
+	priv->sLocalPara.RadioOffStatus.boSwRadioOff = false;
 
 	err = hal_init_hardware(hw);
 	if (err)
 		goto error;
 
-	EEPROM_region = hal_get_region_from_EEPROM( pHwData );
+	EEPROM_region = hal_get_region_from_EEPROM(pHwData);
 	if (EEPROM_region != REGION_AUTO)
 		priv->sLocalPara.region = EEPROM_region;
 	else {
 		if (priv->sLocalPara.region_INF != REGION_AUTO)
 			priv->sLocalPara.region = priv->sLocalPara.region_INF;
 		else
-			priv->sLocalPara.region = REGION_USA; /* default setting */
+			priv->sLocalPara.region = REGION_USA;	/* default setting */
 	}
 
 	// Get Software setting flag from hal
@@ -555,19 +526,20 @@ static int wb35_hw_init(struct ieee80211_hw *hw)
 	pMacAddr2 = priv->sLocalPara.PermanentAddress;
 
 	/* Reading ethernet address from EEPROM */
-	hal_get_permanent_address( pHwData, priv->sLocalPara.PermanentAddress );
+	hal_get_permanent_address(pHwData, priv->sLocalPara.PermanentAddress);
 	if (memcmp(pMacAddr, "\x00\x00\x00\x00\x00\x00", MAC_ADDR_LENGTH) == 0)
 		memcpy(pMacAddr, pMacAddr2, MAC_ADDR_LENGTH);
 	else {
 		/* Set the user define MAC address */
-		hal_set_ethernet_address(pHwData, priv->sLocalPara.ThisMacAddress);
+		hal_set_ethernet_address(pHwData,
+					 priv->sLocalPara.ThisMacAddress);
 	}
 
 	priv->sLocalPara.bAntennaNo = hal_get_antenna_number(pHwData);
 #ifdef _PE_STATE_DUMP_
 	printk("Driver init, antenna no = %d\n", psLOCAL->bAntennaNo);
 #endif
-	hal_get_hw_radio_off( pHwData );
+	hal_get_hw_radio_off(pHwData);
 
 	/* Waiting for HAL setting OK */
 	while (!hal_idle(pHwData))
@@ -575,10 +547,14 @@ static int wb35_hw_init(struct ieee80211_hw *hw)
 
 	MTO_Init(priv);
 
-	HwRadioOff = hal_get_hw_radio_off( pHwData );
+	HwRadioOff = hal_get_hw_radio_off(pHwData);
 	priv->sLocalPara.RadioOffStatus.boHwRadioOff = !!HwRadioOff;
 
-	hal_set_radio_mode( pHwData, (unsigned char)(priv->sLocalPara.RadioOffStatus.boSwRadioOff || priv->sLocalPara.RadioOffStatus.boHwRadioOff) );
+	hal_set_radio_mode(pHwData,
+			   (unsigned char)(priv->sLocalPara.RadioOffStatus.
+					   boSwRadioOff
+					   || priv->sLocalPara.RadioOffStatus.
+					   boHwRadioOff));
 
 	/* Notify hal that the driver is ready now. */
 	hal_driver_init_OK(pHwData) = 1;
@@ -587,23 +563,25 @@ error:
 	return err;
 }
 
-static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id_table)
+static int wb35_probe(struct usb_interface *intf,
+		      const struct usb_device_id *id_table)
 {
-	struct wb_usb *pWbUsb;
-        struct usb_host_interface *interface;
-	struct usb_endpoint_descriptor *endpoint;
-	u32	ltmp;
 	struct usb_device *udev = interface_to_usbdev(intf);
-	struct wbsoft_priv *priv;
+	struct usb_endpoint_descriptor *endpoint;
+	struct usb_host_interface *interface;
 	struct ieee80211_hw *dev;
+	struct wbsoft_priv *priv;
+	struct wb_usb *pWbUsb;
 	int nr, err;
+	u32 ltmp;
 
 	usb_get_dev(udev);
 
 	/* Check the device if it already be opened */
-	nr = usb_control_msg(udev, usb_rcvctrlpipe( udev, 0 ),
-			     0x01, USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_DIR_IN,
-			     0x0, 0x400, &ltmp, 4, HZ*100 );
+	nr = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
+			     0x01,
+			     USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
+			     0x0, 0x400, &ltmp, 4, HZ * 100);
 	if (nr < 0) {
 		err = nr;
 		goto error;
@@ -629,8 +607,8 @@ static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id
 	pWbUsb = &priv->sHwData.WbUsb;
 	pWbUsb->udev = udev;
 
-        interface = intf->cur_altsetting;
-        endpoint = &interface->endpoint[0].desc;
+	interface = intf->cur_altsetting;
+	endpoint = &interface->endpoint[0].desc;
 
 	if (endpoint[2].wMaxPacketSize == 512) {
 		printk("[w35und] Working on USB 2.0\n");
@@ -643,8 +621,8 @@ static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id
 
 	SET_IEEE80211_DEV(dev, &udev->dev);
 	{
-		struct hw_data * pHwData = &priv->sHwData;
-		unsigned char		dev_addr[MAX_ADDR_LEN];
+		struct hw_data *pHwData = &priv->sHwData;
+		unsigned char dev_addr[MAX_ADDR_LEN];
 		hal_get_permanent_address(pHwData, dev_addr);
 		SET_IEEE80211_PERM_ADDR(dev, dev_addr);
 	}
@@ -686,10 +664,10 @@ static void hal_halt(struct hw_data *pHwData)
 
 static void wb35_hw_halt(struct wbsoft_priv *adapter)
 {
-	Mds_Destroy( adapter );
+	Mds_Destroy(adapter);
 
 	/* Turn off Rx and Tx hardware ability */
-	hal_stop( &adapter->sHwData );
+	hal_stop(&adapter->sHwData);
 #ifdef _PE_USB_INI_DUMP_
 	printk("[w35und] Hal_stop O.K.\n");
 #endif
@@ -699,7 +677,6 @@ static void wb35_hw_halt(struct wbsoft_priv *adapter)
 	hal_halt(&adapter->sHwData);
 }
 
-
 static void wb35_disconnect(struct usb_interface *intf)
 {
 	struct wbsoft_priv *priv = usb_get_intfdata(intf);
-- 
1.5.6.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 10/11] w35und: remove MODULE_AUTHOR
  2009-04-08  8:13 [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pekka Enberg
                   ` (7 preceding siblings ...)
  2009-04-08  8:14 ` [PATCH 09/11] w35und: reformat wbusb.c Pekka Enberg
@ 2009-04-08  8:14 ` Pekka Enberg
  2009-04-08  8:14 ` [PATCH 11/11] w35und: make led lookup tables static Pekka Enberg
  2009-04-08  9:53 ` [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pavel Machek
  10 siblings, 0 replies; 13+ messages in thread
From: Pekka Enberg @ 2009-04-08  8:14 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, Pavel Machek

Impact: cleanup

The contact details in MODULE_AUTHOR do not reflect current state of
affairs so remove it.

Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
 drivers/staging/winbond/wbusb.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c
index 526aac5..cffd732 100644
--- a/drivers/staging/winbond/wbusb.c
+++ b/drivers/staging/winbond/wbusb.c
@@ -2,6 +2,12 @@
  * Copyright 2008 Pavel Machek <pavel@suse.cz>
  *
  * Distribute under GPLv2.
+ *
+ * The original driver was written by:
+ *     Jeff Lee <YY_Lee@issc.com.tw>
+ *
+ * and was adapted to the 2.6 kernel by:
+ *     Costantino Leandro (Rxart Desktop) <le_costantino@pixartargentina.com.ar>
  */
 #include <net/mac80211.h>
 #include <linux/usb.h>
@@ -13,7 +19,6 @@
 #include "wbhal_f.h"
 #include "wblinux_f.h"
 
-MODULE_AUTHOR("Original by: Jeff Lee<YY_Lee@issc.com.tw> Adapted to 2.6.x by Costantino Leandro (Rxart Desktop) <le_costantino@pixartargentina.com.ar>");
 MODULE_DESCRIPTION("IS89C35 802.11bg WLAN USB Driver");
 MODULE_LICENSE("GPL");
 MODULE_VERSION("0.1");
-- 
1.5.6.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 11/11] w35und: make led lookup tables static
  2009-04-08  8:13 [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pekka Enberg
                   ` (8 preceding siblings ...)
  2009-04-08  8:14 ` [PATCH 10/11] w35und: remove MODULE_AUTHOR Pekka Enberg
@ 2009-04-08  8:14 ` Pekka Enberg
  2009-04-08 10:02   ` Pavel Machek
  2009-04-08  9:53 ` [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pavel Machek
  10 siblings, 1 reply; 13+ messages in thread
From: Pekka Enberg @ 2009-04-08  8:14 UTC (permalink / raw)
  To: greg; +Cc: linux-kernel, Pavel Machek

Impact: cleanup

No need to keep read-only data on the stack.

Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
---
 drivers/staging/winbond/wbusb.c |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c
index cffd732..dc7cc08 100644
--- a/drivers/staging/winbond/wbusb.c
+++ b/drivers/staging/winbond/wbusb.c
@@ -171,14 +171,21 @@ static const struct ieee80211_ops wbsoft_ops = {
 	.get_tsf		= wbsoft_get_tsf,
 };
 
+static u8 LED_GRAY[20] = {
+	0, 3, 4, 6, 8, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 8, 6, 4, 2
+};
+
+static u8 LED_GRAY2[30] = {
+	7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 15, 14, 13, 12, 11, 10, 9, 8
+};
+
 static void hal_led_control(unsigned long data)
 {
 	struct wbsoft_priv *adapter = (struct wbsoft_priv *)data;
 	struct hw_data *pHwData = &adapter->sHwData;
 	struct wb35_reg *reg = &pHwData->reg;
 	u32 LEDSet = (pHwData->SoftwareSet & HAL_LED_SET_MASK) >> HAL_LED_SET_SHIFT;
-	u8 LEDgray[20] = { 0, 3, 4, 6, 8, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 8, 6, 4, 2 };
-	u8 LEDgray2[30] = { 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
 	u32 TimeInterval = 500, ltmp, ltmp2;
 	ltmp = 0;
 
@@ -287,10 +294,10 @@ static void hal_led_control(unsigned long data)
 					// 20060901 Gray blinking if in disconnect state and not scanning
 					ltmp = reg->U1BC_LEDConfigure;
 					reg->U1BC_LEDConfigure &= ~0x1f;
-					if (LEDgray2[(pHwData->LED_Blinking % 30)]) {
+					if (LED_GRAY2[(pHwData->LED_Blinking % 30)]) {
 						reg->U1BC_LEDConfigure |= 0x10;
 						reg->U1BC_LEDConfigure |=
-						    LEDgray2[(pHwData->LED_Blinking % 30)];
+						    LED_GRAY2[(pHwData->LED_Blinking % 30)];
 					}
 					pHwData->LED_Blinking++;
 					if (reg->U1BC_LEDConfigure != ltmp)
@@ -376,7 +383,7 @@ static void hal_led_control(unsigned long data)
 				reg->U1BC_LEDConfigure &= ~0x0f;
 				reg->U1BC_LEDConfigure |= 0x10;
 				reg->U1BC_LEDConfigure |=
-				    LEDgray[(pHwData->LED_Blinking - 1) % 20];
+				    LED_GRAY[(pHwData->LED_Blinking - 1) % 20];
 				Wb35Reg_Write(pHwData, 0x03bc,
 					      reg->U1BC_LEDConfigure);
 
-- 
1.5.6.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init()
  2009-04-08  8:13 [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pekka Enberg
                   ` (9 preceding siblings ...)
  2009-04-08  8:14 ` [PATCH 11/11] w35und: make led lookup tables static Pekka Enberg
@ 2009-04-08  9:53 ` Pavel Machek
  10 siblings, 0 replies; 13+ messages in thread
From: Pavel Machek @ 2009-04-08  9:53 UTC (permalink / raw)
  To: Pekka Enberg; +Cc: greg, linux-kernel

On Wed 2009-04-08 11:13:56, Pekka Enberg wrote:
> Impact: cleanup
> 
> This patch replaces the switch-based error handling in wb35_hw_init()
> with regular gotos.

Acked-by: Pavel Machek <pavel@ucw.cz>


-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 11/11] w35und: make led lookup tables static
  2009-04-08  8:14 ` [PATCH 11/11] w35und: make led lookup tables static Pekka Enberg
@ 2009-04-08 10:02   ` Pavel Machek
  0 siblings, 0 replies; 13+ messages in thread
From: Pavel Machek @ 2009-04-08 10:02 UTC (permalink / raw)
  To: Pekka Enberg; +Cc: greg, linux-kernel

On Wed 2009-04-08 11:14:06, Pekka Enberg wrote:
> Impact: cleanup
> 
> No need to keep read-only data on the stack.

It would be enough to just put static to the variables. They would
still be off-stack, but would be local...

Anyway that's a detail.

Whole series:

Acked-by: Pavel Machek <pavel@ucw.cz>

> diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c
> index cffd732..dc7cc08 100644
> --- a/drivers/staging/winbond/wbusb.c
> +++ b/drivers/staging/winbond/wbusb.c
> @@ -171,14 +171,21 @@ static const struct ieee80211_ops wbsoft_ops = {
>  	.get_tsf		= wbsoft_get_tsf,
>  };
>  
> +static u8 LED_GRAY[20] = {
> +	0, 3, 4, 6, 8, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 8, 6, 4, 2
> +};
> +
> +static u8 LED_GRAY2[30] = {
> +	7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
> +	0, 15, 14, 13, 12, 11, 10, 9, 8
> +};
> +
>  static void hal_led_control(unsigned long data)
>  {
>  	struct wbsoft_priv *adapter = (struct wbsoft_priv *)data;
>  	struct hw_data *pHwData = &adapter->sHwData;
>  	struct wb35_reg *reg = &pHwData->reg;
>  	u32 LEDSet = (pHwData->SoftwareSet & HAL_LED_SET_MASK) >> HAL_LED_SET_SHIFT;
> -	u8 LEDgray[20] = { 0, 3, 4, 6, 8, 10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10, 8, 6, 4, 2 };
> -	u8 LEDgray2[30] = { 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0,
> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 14, 13, 12, 11, 10, 9, 8 };


-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2009-04-08  9:59 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-08  8:13 [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pekka Enberg
2009-04-08  8:13 ` [PATCH 02/11] w35und: move hal_init_hardware() and hal_halt() int wbusb.c Pekka Enberg
2009-04-08  8:13 ` [PATCH 03/11] w35und: simplify error handling in wb35_hw_init() Pekka Enberg
2009-04-08  8:13 ` [PATCH 04/11] w35und: simplify hal_init_hardware() error handling Pekka Enberg
2009-04-08  8:14 ` [PATCH 05/11] " Pekka Enberg
2009-04-08  8:14 ` [PATCH 06/11] w35und: simplify hal_init_hardware() and hal_halt() Pekka Enberg
2009-04-08  8:14 ` [PATCH 07/11] w35und: clean up comments in wbusb.c Pekka Enberg
2009-04-08  8:14 ` [PATCH 08/11] w35und: inline hal_set_phy_type() to wb35_hw_init() Pekka Enberg
2009-04-08  8:14 ` [PATCH 09/11] w35und: reformat wbusb.c Pekka Enberg
2009-04-08  8:14 ` [PATCH 10/11] w35und: remove MODULE_AUTHOR Pekka Enberg
2009-04-08  8:14 ` [PATCH 11/11] w35und: make led lookup tables static Pekka Enberg
2009-04-08 10:02   ` Pavel Machek
2009-04-08  9:53 ` [PATCH 01/11] w35und: replace switch error handling with gotos in wb35_hw_init() Pavel Machek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®