Staging: w35und: remove atomic op wrappers
authorPekka Enberg <penberg@cs.helsinki.fi>
Wed, 29 Oct 2008 18:10:32 +0000 (20:10 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 6 Jan 2009 21:51:45 +0000 (13:51 -0800)
Use the kernel provided atomic op functions and remove the OS_ATOMIC and
related wrapper macros.

Acked-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
14 files changed:
drivers/staging/winbond/adapter.h
drivers/staging/winbond/linux/common.h
drivers/staging/winbond/linux/wb35reg.c
drivers/staging/winbond/linux/wb35reg_s.h
drivers/staging/winbond/linux/wb35rx.c
drivers/staging/winbond/linux/wb35rx_s.h
drivers/staging/winbond/linux/wb35tx.c
drivers/staging/winbond/linux/wb35tx_s.h
drivers/staging/winbond/mds.c
drivers/staging/winbond/mds_s.h
drivers/staging/winbond/wbhal.c
drivers/staging/winbond/wbhal_s.h
drivers/staging/winbond/wblinux.c
drivers/staging/winbond/wblinux_f.h

index e102dcb150521c7695b77edf98d0e95ca181e45d..bc09e4142d8753263573e27f958d9df9ba60b702 100644 (file)
@@ -32,11 +32,10 @@ struct wb35_adapter {
        hw_data_t sHwData;      //For HAL
        MDS Mds;
 
-       spinlock_t AtomicSpinLock;
        spinlock_t SpinLock;
        u32 shutdown;
 
-       OS_ATOMIC ThreadCount;
+       atomic_t ThreadCount;
 
        u32 LinkStatus;         // OS_DISCONNECTED or OS_CONNECTED
 
index 521b68a9381b5fe2cc212751dc0cedb612a44efd..925e1b6cbc4f9f286270676715bccb2068b704d1 100644 (file)
 #define OS_EVENT_INDICATE( _A, _B, _F )
 #define OS_PMKID_STATUS_EVENT( _A )
 
-
-/* Uff, no, longs are not atomic on all architectures Linux
- * supports. This should really use atomic_t */
-
-#define OS_ATOMIC                      u32
-#define OS_ATOMIC_READ( _A, _V )       _V
-#define OS_ATOMIC_INC( _A, _V )                EncapAtomicInc( _A, (void*)_V )
-#define OS_ATOMIC_DEC( _A, _V )                EncapAtomicDec( _A, (void*)_V )
 #define OS_MEMORY_CLEAR( _A, _S )      memset( (u8 *)_A,0,_S)
 #define OS_MEMORY_COMPARE( _A, _B, _S )        (memcmp(_A,_B,_S)? 0 : 1) // Definition is reverse with Ndis 1: the same 0: different
 
index 56ad504bb06d966dd2cb0bf719d60a8bb1323800..6215e3ca418aa00c4bf031677675c7f0c32d468a 100644 (file)
@@ -386,11 +386,11 @@ Wb35Reg_EP0VM_start(  phw_data_t pHwData )
 {
        struct wb35_reg *reg = &pHwData->reg;
 
-       if (OS_ATOMIC_INC( pHwData->adapter, &reg->RegFireCount) == 1) {
+       if (atomic_inc_return(&reg->RegFireCount) == 1) {
                reg->EP0vm_state = VM_RUNNING;
                Wb35Reg_EP0VM(pHwData);
        } else
-               OS_ATOMIC_DEC( pHwData->adapter, &reg->RegFireCount );
+               atomic_dec(&reg->RegFireCount);
 }
 
 void
@@ -447,7 +447,7 @@ Wb35Reg_EP0VM(phw_data_t pHwData )
 
  cleanup:
        reg->EP0vm_state = VM_STOP;
-       OS_ATOMIC_DEC( pHwData->adapter, &reg->RegFireCount );
+       atomic_dec(&reg->RegFireCount);
 }
 
 
@@ -465,7 +465,7 @@ Wb35Reg_EP0VM_complete(struct urb *urb)
 
        if (pHwData->SurpriseRemove) { // Let WbWlanHalt to handle surprise remove
                reg->EP0vm_state = VM_STOP;
-               OS_ATOMIC_DEC( pHwData->adapter, &reg->RegFireCount );
+               atomic_dec(&reg->RegFireCount);
        } else {
                // Complete to send, remove the URB from the first
                spin_lock_irq( &reg->EP0VM_spin_lock );
index c77306c585d3ac8ac43bd211e4a7bd56262b96e7..2f665d1b1a4f7e83d51fb97ab98ce50f2ebce15a 100644 (file)
@@ -142,7 +142,7 @@ struct wb35_reg {
        u32             EP0VM_status;//$$
        struct wb35_reg_queue *reg_first;
        struct wb35_reg_queue *reg_last;
-       OS_ATOMIC       RegFireCount;
+       atomic_t       RegFireCount;
 
        // Hardware status
        u8      EP0vm_state;
index e492fa581a49aaada8d8257557d49ebf245550b3..f690298dea292874a08ae046921d4999be93c424 100644 (file)
 //============================================================================
 #include "sysdef.h"
 
-
 void Wb35Rx_start(phw_data_t pHwData)
 {
        PWB35RX pWb35Rx = &pHwData->Wb35Rx;
 
        // Allow only one thread to run into the Wb35Rx() function
-       if (OS_ATOMIC_INC(pHwData->adapter, &pWb35Rx->RxFireCounter) == 1) {
+       if (atomic_inc_return(&pWb35Rx->RxFireCounter) == 1) {
                pWb35Rx->EP3vm_state = VM_RUNNING;
                Wb35Rx(pHwData);
        } else
-               OS_ATOMIC_DEC(pHwData->adapter, &pWb35Rx->RxFireCounter);
+               atomic_dec(&pWb35Rx->RxFireCounter);
 }
 
 // This function cannot reentrain
@@ -82,7 +81,7 @@ void Wb35Rx(  phw_data_t pHwData )
 error:
        // VM stop
        pWb35Rx->EP3vm_state = VM_STOP;
-       OS_ATOMIC_DEC( pHwData->adapter, &pWb35Rx->RxFireCounter );
+       atomic_dec(&pWb35Rx->RxFireCounter);
 }
 
 void Wb35Rx_Complete(struct urb *urb)
@@ -157,7 +156,7 @@ void Wb35Rx_Complete(struct urb *urb)
 
 error:
        pWb35Rx->RxOwner[ RxBufferId ] = 1; // Set the owner to hardware
-       OS_ATOMIC_DEC( pHwData->adapter, &pWb35Rx->RxFireCounter );
+       atomic_dec(&pWb35Rx->RxFireCounter);
        pWb35Rx->EP3vm_state = VM_STOP;
 }
 
index b90c269e6adb5bff6698f4f188a401d0d72fa300..f18350b41c44a999459891fdb47127af7d7ed702 100644 (file)
@@ -18,7 +18,7 @@
 typedef struct _WB35RX
 {
        u32                     ByteReceived;// For calculating throughput of BulkIn
-       OS_ATOMIC               RxFireCounter;// Does Wb35Rx module fire?
+       atomic_t                RxFireCounter;// Does Wb35Rx module fire?
 
        u8      RxBuffer[ MAX_USB_RX_BUFFER_NUMBER ][ ((MAX_USB_RX_BUFFER+3) & ~0x03 ) ];
        u16     RxBufferSize[ ((MAX_USB_RX_BUFFER_NUMBER+1) & ~0x01) ];
index 020c52d761cb3023b8d6d8d93a3e89a4b1fa28eb..a58a193ce2b1366d3b17e9a04c9f11314bfadd21 100644 (file)
@@ -25,11 +25,11 @@ void Wb35Tx_start(phw_data_t pHwData)
        PWB35TX pWb35Tx = &pHwData->Wb35Tx;
 
        // Allow only one thread to run into function
-       if (OS_ATOMIC_INC(pHwData->adapter, &pWb35Tx->TxFireCounter) == 1) {
+       if (atomic_inc_return(&pWb35Tx->TxFireCounter) == 1) {
                pWb35Tx->EP4vm_state = VM_RUNNING;
                Wb35Tx(pHwData);
        } else
-               OS_ATOMIC_DEC( pHwData->adapter, &pWb35Tx->TxFireCounter );
+               atomic_dec(&pWb35Tx->TxFireCounter);
 }
 
 
@@ -81,7 +81,7 @@ void Wb35Tx(phw_data_t pHwData)
 
  cleanup:
        pWb35Tx->EP4vm_state = VM_STOP;
-       OS_ATOMIC_DEC( pHwData->adapter, &pWb35Tx->TxFireCounter );
+       atomic_dec(&pWb35Tx->TxFireCounter);
 }
 
 
@@ -118,7 +118,7 @@ void Wb35Tx_complete(struct urb * pUrb)
        return;
 
 error:
-       OS_ATOMIC_DEC( pHwData->adapter, &pWb35Tx->TxFireCounter );
+       atomic_dec(&pWb35Tx->TxFireCounter);
        pWb35Tx->EP4vm_state = VM_STOP;
 }
 
@@ -211,12 +211,12 @@ void Wb35Tx_EP2VM_start(phw_data_t pHwData)
        PWB35TX pWb35Tx = &pHwData->Wb35Tx;
 
        // Allow only one thread to run into function
-       if (OS_ATOMIC_INC( pHwData->adapter, &pWb35Tx->TxResultCount ) == 1) {
+       if (atomic_inc_return(&pWb35Tx->TxResultCount) == 1) {
                pWb35Tx->EP2vm_state = VM_RUNNING;
                Wb35Tx_EP2VM( pHwData );
        }
        else
-               OS_ATOMIC_DEC( pHwData->adapter, &pWb35Tx->TxResultCount );
+               atomic_dec(&pWb35Tx->TxResultCount);
 }
 
 
@@ -252,7 +252,7 @@ void Wb35Tx_EP2VM(phw_data_t pHwData)
        return;
 error:
        pWb35Tx->EP2vm_state = VM_STOP;
-       OS_ATOMIC_DEC( pHwData->adapter, &pWb35Tx->TxResultCount );
+       atomic_dec(&pWb35Tx->TxResultCount);
 }
 
 
@@ -301,7 +301,7 @@ void Wb35Tx_EP2VM_complete(struct urb * pUrb)
 
        return;
 error:
-       OS_ATOMIC_DEC( pHwData->adapter, &pWb35Tx->TxResultCount );
+       atomic_dec(&pWb35Tx->TxResultCount);
        pWb35Tx->EP2vm_state = VM_STOP;
 }
 
index ac43257367604f4229bcd885509452cfb6449b5c..8cb449f7a3877e74c034c4a771456542e2ce9b95 100644 (file)
@@ -21,8 +21,8 @@ typedef struct _WB35TX
        // For Interrupt pipe
        u8      EP2_buf[MAX_INTERRUPT_LENGTH];
 
-       OS_ATOMIC       TxResultCount;// For thread control of EP2 931130.4.m
-       OS_ATOMIC       TxFireCounter;// For thread control of EP4 931130.4.n
+       atomic_t        TxResultCount;// For thread control of EP2 931130.4.m
+       atomic_t        TxFireCounter;// For thread control of EP4 931130.4.n
        u32                     ByteTransfer;
 
        u32         TxSendIndex;// The next index of Mds array to be sent
index 8d3c8adf4fa1e6b6da65463b5e54d585f86d85e9..20008e35fe0b29636bdb641b4610195b77c74400 100644 (file)
@@ -6,7 +6,7 @@ Mds_reset_descriptor(struct wb35_adapter * adapter)
        PMDS pMds = &adapter->Mds;
 
        pMds->TxPause = 0;
-       pMds->TxThreadCount = 0;
+       atomic_set(&pMds->TxThreadCount, 0);
        pMds->TxFillIndex = 0;
        pMds->TxDesIndex = 0;
        pMds->ScanTxPause = 0;
@@ -52,7 +52,7 @@ Mds_Tx(struct wb35_adapter * adapter)
                return;
 
        //Only one thread can be run here
-       if (!OS_ATOMIC_INC( adapter, &pMds->TxThreadCount) == 1)
+       if (!atomic_inc_return(&pMds->TxThreadCount) == 1)
                goto cleanup;
 
        // Start to fill the data
@@ -172,7 +172,7 @@ Mds_Tx(struct wb35_adapter * adapter)
                Wb35Tx_start(pHwData);
 
  cleanup:
-       OS_ATOMIC_DEC( adapter, &pMds->TxThreadCount );
+       atomic_dec(&pMds->TxThreadCount);
 }
 
 void
index ac1875f6485f1260a6a81b7a3478cb3e77820be6..e1d373e03c6ec6f5499741bfe7815bf69f6084db 100644 (file)
@@ -96,9 +96,9 @@ typedef struct _MDS
        u8      ScanTxPause;    //data Tx pause because the scanning is progressing, but probe request Tx won't.
        u8      TxPause;//For pause the Mds_Tx modult
 
-       OS_ATOMIC       TxThreadCount;//For thread counting 931130.4.v
+       atomic_t        TxThreadCount;//For thread counting 931130.4.v
 //950301 delete due to HW
-//     OS_ATOMIC       TxConcurrentCount;//931130.4.w
+//     atomic_t        TxConcurrentCount;//931130.4.w
 
        u16     TxResult[ ((MAX_USB_TX_DESCRIPTOR + 1) & ~0x01) ];//Collect the sending result of Mpdu
 
index 3edcc4793922db2d3609d29fe814aa6236dc8839..100a407f49cf37f55395b3be44529ca7ad1141ca 100644 (file)
@@ -843,7 +843,7 @@ void hal_system_power_change(phw_data_t pHwData, u32 PowerState)
 void hal_surprise_remove(  phw_data_t pHwData )
 {
        struct wb35_adapter * adapter = pHwData->adapter;
-       if (OS_ATOMIC_INC( adapter, &pHwData->SurpriseRemoveCount ) == 1) {
+       if (atomic_inc_return( &pHwData->SurpriseRemoveCount ) == 1) {
                #ifdef _PE_STATE_DUMP_
                WBDEBUG(("Calling hal_surprise_remove\n"));
                #endif
index 2d3adfc3fcb2fecbaa8574de7733ec74bf4befcd..4eeb08926e2ee52473beb6bc30203054a811eb23 100644 (file)
@@ -570,7 +570,7 @@ typedef struct _HW_DATA_T
        u32             RxByteCountLast;
        u32             TxByteCountLast;
 
-       s32             SurpriseRemoveCount;
+       atomic_t        SurpriseRemoveCount;
 
        // For global timer
        u32             time_count;//TICK_TIME_100ms 1 = 100ms
index a9a605b0feef6ec4be2f011c51e5689070a57b27..87b9970883d8cc7657b780880020aa06bd45cf14 100644 (file)
 //============================================================================
 #include "os_common.h"
 
-s32
-EncapAtomicInc(struct wb35_adapter * adapter, void* pAtomic)
-{
-       u32     ltmp;
-       u32 *   pltmp = (u32 *)pAtomic;
-       spin_lock_irq( &adapter->AtomicSpinLock );
-       (*pltmp)++;
-       ltmp = (*pltmp);
-       spin_unlock_irq( &adapter->AtomicSpinLock );
-       return ltmp;
-}
-
-s32
-EncapAtomicDec(struct wb35_adapter * adapter, void* pAtomic)
-{
-       u32     ltmp;
-       u32 *   pltmp = (u32 *)pAtomic;
-       spin_lock_irq( &adapter->AtomicSpinLock );
-       (*pltmp)--;
-       ltmp = (*pltmp);
-       spin_unlock_irq( &adapter->AtomicSpinLock );
-       return ltmp;
-}
-
 unsigned char
 WBLINUX_Initial(struct wb35_adapter * adapter)
 {
        spin_lock_init( &adapter->SpinLock );
-       spin_lock_init( &adapter->AtomicSpinLock );
        return true;
 }
 
@@ -75,7 +50,7 @@ WBLINUX_stop(  struct wb35_adapter * adapter )
 {
        struct sk_buff *pSkb;
 
-       if (OS_ATOMIC_INC( adapter, &adapter->ThreadCount ) == 1) {
+       if (atomic_inc_return(&adapter->ThreadCount) == 1) {
                // Shutdown module immediately
                adapter->shutdown = 1;
 
@@ -97,7 +72,7 @@ WBLINUX_stop(  struct wb35_adapter * adapter )
 #endif
        }
 
-       OS_ATOMIC_DEC(adapter, &adapter->ThreadCount);
+       atomic_dec(&adapter->ThreadCount);
 }
 
 void
index f19c0ee73bdbf5d2ae732b912139a11b8c91b7ac..d763820081a1645ee518f2cecfe39f738fa9cc33 100644 (file)
@@ -3,8 +3,6 @@
 //
 // wblinux_f.h
 //
-s32 EncapAtomicInc(  struct wb35_adapter *adapter,  void* pAtomic );
-s32 EncapAtomicDec(  struct wb35_adapter *adapter,  void* pAtomic );
 void WBLinux_ReceivePacket(  struct wb35_adapter *adapter,  PRXLAYER1 pRxLayer1 );
 unsigned char WBLINUX_Initial(  struct wb35_adapter *adapter );
 int wb35_start_xmit(struct sk_buff *skb, struct net_device *netdev );