// Common function definition
 //==================================================================================================
 #define DEBUG_ENABLED
-#define ETH_LENGTH_OF_ADDRESS  6
 #ifdef DEBUG_ENABLED
 #define WBDEBUG( _M )  printk _M
 #else
 
 //  Return Value:
 //    None.
 //==============================================================================================================
-void CardGetMulticastBit(   u8 Address[ETH_LENGTH_OF_ADDRESS],
-                                                  u8 *Byte,  u8 *Value )
+void CardGetMulticastBit( u8 Address[ETH_ALEN], u8 *Byte, u8 *Value )
 {
     u32 Crc;
     u32 BitNumber;
 
     // First compute the CRC.
-    Crc = CardComputeCrc(Address, ETH_LENGTH_OF_ADDRESS);
+    Crc = CardComputeCrc(Address, ETH_ALEN);
 
        // The computed CRC is bit0~31 from left to right
        //At first we should do right shift 25bits, and read 7bits by using '&', 2^7=128
 
        Wb35Reg_ReadSync( pHwData, 0x03b4, &Region_ScanInterval );
 
        // Update Ethernet address
-       memcpy( pHwData->CurrentMacAddress, pHwData->PermanentMacAddress, ETH_LENGTH_OF_ADDRESS );
+       memcpy( pHwData->CurrentMacAddress, pHwData->PermanentMacAddress, ETH_ALEN );
 
        // Update software variable
        pHwData->SoftwareSet = (u16)(SoftwareSet & 0xffff);
 
 
        if( pHwData->SurpriseRemove ) return;
 
-       memcpy( pHwData->CurrentMacAddress, current_address, ETH_LENGTH_OF_ADDRESS );
+       memcpy( pHwData->CurrentMacAddress, current_address, ETH_ALEN );
 
        ltmp[0]= cpu_to_le32( *(u32 *)pHwData->CurrentMacAddress );
        ltmp[1]= cpu_to_le32( *(u32 *)(pHwData->CurrentMacAddress + 4) ) & 0xffff;
 
 #define __WINBOND_WBHAL_S_H
 
 #include <linux/types.h>
+#include <linux/if_ether.h> /* for ETH_ALEN */
 
 #include "common.h"
 
 #include "wb35tx_s.h"
 #include "wb35rx_s.h"
 
-
 // For Hal using ==================================================================
 typedef struct _HW_DATA_T
 {
        //===============================================
        // Definition for MAC address
        //===============================================
-       u8              PermanentMacAddress[ETH_LENGTH_OF_ADDRESS + 2]; // The Enthernet addr that are stored in EEPROM.  + 2 to 8-byte alignment
-       u8              CurrentMacAddress[ETH_LENGTH_OF_ADDRESS + 2]; // The Enthernet addr that are in used.  + 2 to 8-byte alignment
+       u8              PermanentMacAddress[ETH_ALEN + 2]; // The Enthernet addr that are stored in EEPROM.  + 2 to 8-byte alignment
+       u8              CurrentMacAddress[ETH_ALEN + 2]; // The Enthernet addr that are in used.  + 2 to 8-byte alignment
 
        //=====================================================================
        // Definition for 802.11