Staging: merge staging patches into Linus's main branch
[sfrench/cifs-2.6.git] / drivers / staging / rtl8192su / r8192U_core.c
index 6f424fe8a23757a756e1aeb8af4c2cfc9201172d..7d0305cc21062320969ed6426d3f0adb9ecb752f 100644 (file)
@@ -110,7 +110,7 @@ u32 rt_global_debug_component = \
 #define TOTAL_CAM_ENTRY 32
 #define CAM_CONTENT_COUNT 8
 
-static struct usb_device_id rtl8192_usb_id_tbl[] = {
+static const struct usb_device_id rtl8192_usb_id_tbl[] = {
        /* Realtek */
        {USB_DEVICE(0x0bda, 0x8192)},
        {USB_DEVICE(0x0bda, 0x8709)},
@@ -2340,25 +2340,24 @@ short rtl8192SU_tx(struct net_device *dev, struct sk_buff* skb)
                                    skb->len, rtl8192_tx_isr, skb);
 
        status = usb_submit_urb(tx_urb, GFP_ATOMIC);
-       if (!status){
-//we need to send 0 byte packet whenever 512N bytes/64N(HIGN SPEED/NORMAL SPEED) bytes packet has been transmitted. Otherwise, it will be halt to wait for another packet. WB. 2008.08.27
+       if (!status) {
+               /*
+                * we need to send 0 byte packet whenever 512N bytes/64N(HIGN SPEED/NORMAL SPEED) bytes packet has been transmitted.
+                * Otherwise, it will be halt to wait for another packet. WB. 2008.08.27
+                */
                bool bSend0Byte = false;
                u8 zero = 0;
-               if(udev->speed == USB_SPEED_HIGH)
-               {
+               if(udev->speed == USB_SPEED_HIGH) {
                        if (skb->len > 0 && skb->len % 512 == 0)
                                bSend0Byte = true;
                }
-               else
-               {
+               else {
                        if (skb->len > 0 && skb->len % 64 == 0)
                                bSend0Byte = true;
                }
-               if (bSend0Byte)
-               {
-#if 1
+               if (bSend0Byte) {
                        tx_urb_zero = usb_alloc_urb(0,GFP_ATOMIC);
-                       if(!tx_urb_zero){
+                       if(!tx_urb_zero) {
                                RT_TRACE(COMP_ERR, "can't alloc urb for zero byte\n");
                                return -ENOMEM;
                        }
@@ -2366,16 +2365,23 @@ short rtl8192SU_tx(struct net_device *dev, struct sk_buff* skb)
                                        usb_sndbulkpipe(udev,idx_pipe), &zero,
                                        0, tx_zero_isr, dev);
                        status = usb_submit_urb(tx_urb_zero, GFP_ATOMIC);
-                       if (status){
-                       RT_TRACE(COMP_ERR, "Error TX URB for zero byte %d, error %d", atomic_read(&priv->tx_pending[tcb_desc->queue_index]), status);
-                       return -1;
+                       switch (status) {
+                               case 0:
+                                       break;
+                               case -ECONNRESET:
+                               case -ENOENT:
+                               case -ESHUTDOWN:
+                                       break;
+                               default:
+                                       RT_TRACE(COMP_ERR, "Error TX URB for zero byte %d, error %d",
+                                               atomic_read(&priv->tx_pending[tcb_desc->queue_index]), status);
+                                       return -1;
                        }
-#endif
                }
                dev->trans_start = jiffies;
                atomic_inc(&priv->tx_pending[tcb_desc->queue_index]);
                return 0;
-       }else{
+       } else {
                RT_TRACE(COMP_ERR, "Error TX URB %d, error %d", atomic_read(&priv->tx_pending[tcb_desc->queue_index]),
                                status);
                return -1;
@@ -2952,7 +2958,7 @@ void rtl8192_SetWirelessMode(struct net_device* dev, u8 wireless_mode)
                        wireless_mode = WIRELESS_MODE_B;
                }
        }
-#ifdef TO_DO_LIST //// TODO: this function doesn't work well at this time, we shoud wait for FPGA
+#ifdef TO_DO_LIST //// TODO: this function doesn't work well at this time, we should wait for FPGA
        ActUpdateChannelAccessSetting( pAdapter, pHalData->CurrentWirelessMode, &pAdapter->MgntInfo.Info8185.ChannelAccessSetting );
 #endif
        //LZM 090306 usb crash here, mark it temp
@@ -3359,6 +3365,46 @@ u8 rtl8192SU_BoardTypeToRFtype(struct net_device* dev,  u8 Boardtype)
        return RFtype;
 }
 
+void update_hal_variables(struct r8192_priv *priv)
+{
+       int rf_path;
+       int i;
+       u8 index;
+
+       for (rf_path = 0; rf_path < 2; rf_path++) {
+               for (i = 0; i < 3; i++) {
+                       RT_TRACE((COMP_INIT), "CCK RF-%d CHan_Area-%d = 0x%x\n", rf_path, i, priv->RfCckChnlAreaTxPwr[rf_path][i]);
+                       RT_TRACE((COMP_INIT), "OFDM-1T RF-%d CHan_Area-%d = 0x%x\n", rf_path, i, priv->RfOfdmChnlAreaTxPwr1T[rf_path][i]);
+                       RT_TRACE((COMP_INIT), "OFDM-2T RF-%d CHan_Area-%d = 0x%x\n", rf_path, i, priv->RfOfdmChnlAreaTxPwr2T[rf_path][i]);
+               }
+               /* Assign dedicated channel tx power */
+               for(i = 0; i < 14; i++) {
+                       /* channel 1-3 use the same Tx Power Level. */
+                       if (i < 3)                      /* Channel 1-3 */
+                               index = 0;
+                       else if (i < 9)                 /* Channel 4-9 */
+                               index = 1;
+                       else                            /* Channel 10-14 */
+                               index = 2;
+                       /* Record A & B CCK /OFDM - 1T/2T Channel area tx power */
+                       priv->RfTxPwrLevelCck[rf_path][i] = priv->RfCckChnlAreaTxPwr[rf_path][index];
+                       priv->RfTxPwrLevelOfdm1T[rf_path][i]  = priv->RfOfdmChnlAreaTxPwr1T[rf_path][index];
+                       priv->RfTxPwrLevelOfdm2T[rf_path][i]  = priv->RfOfdmChnlAreaTxPwr2T[rf_path][index];
+                       if (rf_path == 0) {
+                               priv->TxPowerLevelOFDM24G[i] = priv->RfTxPwrLevelOfdm1T[rf_path][i] ;
+                               priv->TxPowerLevelCCK[i] = priv->RfTxPwrLevelCck[rf_path][i];
+                       }
+               }
+               for(i = 0; i < 14; i++) {
+                       RT_TRACE((COMP_INIT),
+                       "Rf-%d TxPwr CH-%d CCK OFDM_1T OFDM_2T= 0x%x/0x%x/0x%x\n",
+                               rf_path, i, priv->RfTxPwrLevelCck[rf_path][i],
+                               priv->RfTxPwrLevelOfdm1T[rf_path][i] ,
+                               priv->RfTxPwrLevelOfdm2T[rf_path][i] );
+               }
+       }
+}
+
 //
 //     Description:
 //             Config HW adapter information into initial value.
@@ -3374,7 +3420,7 @@ rtl8192SU_ConfigAdapterInfo8192SForAutoLoadFail(struct net_device* dev)
        struct r8192_priv       *priv = ieee80211_priv(dev);
        //u16                   i,usValue;
        //u8 sMacAddr[6] = {0x00, 0xE0, 0x4C, 0x81, 0x92, 0x00};
-       u8              rf_path, index; // For EEPROM/EFUSE After V0.6_1117
+       u8              rf_path;        // For EEPROM/EFUSE After V0.6_1117
        int     i;
 
        RT_TRACE(COMP_INIT, "====> ConfigAdapterInfo8192SForAutoLoadFail\n");
@@ -3426,10 +3472,9 @@ rtl8192SU_ConfigAdapterInfo8192SForAutoLoadFail(struct net_device* dev)
        write_nic_dword(dev, IDR0, ((u32*)dev->dev_addr)[0]);
        write_nic_word(dev, IDR4, ((u16*)(dev->dev_addr + 4))[0]);
 
-       RT_TRACE(COMP_INIT, "ReadAdapterInfo8192SEFuse(), Permanent Address = %02x-%02x-%02x-%02x-%02x-%02x\n",
-                       dev->dev_addr[0], dev->dev_addr[1],
-                       dev->dev_addr[2], dev->dev_addr[3],
-                       dev->dev_addr[4], dev->dev_addr[5]);
+       RT_TRACE(COMP_INIT,
+               "ReadAdapterInfo8192SEFuse(), Permanent Address = %pM\n",
+               dev->dev_addr);
 
        priv->EEPROMBoardType = EEPROM_Default_BoardType;
        priv->rf_type = RF_1T2R; //RF_2T2R
@@ -3455,42 +3500,7 @@ rtl8192SU_ConfigAdapterInfo8192SForAutoLoadFail(struct net_device* dev)
                }
        }
 
-       for (i = 0; i < 3; i++)
-       {
-               //RT_TRACE((COMP_EFUSE), "CCK RF-%d CHan_Area-%d = 0x%x\n",  rf_path, i,
-               //priv->RfCckChnlAreaTxPwr[rf_path][i]);
-               //RT_TRACE((COMP_EFUSE), "OFDM-1T RF-%d CHan_Area-%d = 0x%x\n",  rf_path, i,
-               //priv->RfOfdmChnlAreaTxPwr1T[rf_path][i]);
-               //RT_TRACE((COMP_EFUSE), "OFDM-2T RF-%d CHan_Area-%d = 0x%x\n",  rf_path, i,
-               //priv->RfOfdmChnlAreaTxPwr2T[rf_path][i]);
-       }
-
-       // Assign dedicated channel tx power
-       for(i=0; i<14; i++)     // channel 1~3 use the same Tx Power Level.
-               {
-               if (i < 3)                      // Cjanel 1-3
-                       index = 0;
-               else if (i < 9)         // Channel 4-9
-                       index = 1;
-               else                            // Channel 10-14
-                       index = 2;
-
-               // Record A & B CCK /OFDM - 1T/2T Channel area tx power
-               priv->RfTxPwrLevelCck[rf_path][i]  =
-               priv->RfCckChnlAreaTxPwr[rf_path][index];
-               priv->RfTxPwrLevelOfdm1T[rf_path][i]  =
-               priv->RfOfdmChnlAreaTxPwr1T[rf_path][index];
-               priv->RfTxPwrLevelOfdm2T[rf_path][i]  =
-               priv->RfOfdmChnlAreaTxPwr2T[rf_path][index];
-               }
-
-               for(i=0; i<14; i++)
-               {
-               //RT_TRACE((COMP_EFUSE), "Rf-%d TxPwr CH-%d CCK OFDM_1T OFDM_2T= 0x%x/0x%x/0x%x\n",
-               //rf_path, i, priv->RfTxPwrLevelCck[0][i],
-               //priv->RfTxPwrLevelOfdm1T[0][i] ,
-               //priv->RfTxPwrLevelOfdm2T[0][i] );
-               }
+       update_hal_variables(priv);
 
        //
        // Update remained HAL variables.
@@ -3767,10 +3777,9 @@ rtl8192SU_ReadAdapterInfo8192SUsb(struct net_device* dev)
        write_nic_dword(dev, IDR0, ((u32*)dev->dev_addr)[0]);
        write_nic_word(dev, IDR4, ((u16*)(dev->dev_addr + 4))[0]);
 
-       RT_TRACE(COMP_INIT, "ReadAdapterInfo8192SEFuse(), Permanent Address = %02x-%02x-%02x-%02x-%02x-%02x\n",
-                       dev->dev_addr[0], dev->dev_addr[1],
-                       dev->dev_addr[2], dev->dev_addr[3],
-                       dev->dev_addr[4], dev->dev_addr[5]);
+       RT_TRACE(COMP_INIT,
+               "ReadAdapterInfo8192SEFuse(), Permanent Address = %pM\n",
+               dev->dev_addr);
 
        //
        // Get CustomerID(Boad Type)
@@ -3901,53 +3910,7 @@ rtl8192SU_ReadAdapterInfo8192SUsb(struct net_device* dev)
                        }
 
                }
-//
-               // Update Tx Power HAL variables.
-//
-               for (rf_path = 0; rf_path < 2; rf_path++)
-               {
-                       for (i = 0; i < 3; i++)
-                       {
-                               RT_TRACE((COMP_INIT),  "CCK RF-%d CHan_Area-%d = 0x%x\n",  rf_path, i,
-                               priv->RfCckChnlAreaTxPwr[rf_path][i]);
-                               RT_TRACE((COMP_INIT), "OFDM-1T RF-%d CHan_Area-%d = 0x%x\n",  rf_path, i,
-                               priv->RfOfdmChnlAreaTxPwr1T[rf_path][i]);
-                               RT_TRACE((COMP_INIT), "OFDM-2T RF-%d CHan_Area-%d = 0x%x\n",  rf_path, i, priv->RfOfdmChnlAreaTxPwr2T[rf_path][i]);
-                       }
-
-                       // Assign dedicated channel tx power
-                       for(i=0; i<14; i++)     // channel 1~3 use the same Tx Power Level.
-                       {
-                               if (i < 3)                      // Cjanel 1-3
-                                       index = 0;
-                               else if (i < 9)         // Channel 4-9
-                                       index = 1;
-                               else                            // Channel 10-14
-                                       index = 2;
-
-                               // Record A & B CCK /OFDM - 1T/2T Channel area tx power
-                               priv->RfTxPwrLevelCck[rf_path][i]  =
-                               priv->RfCckChnlAreaTxPwr[rf_path][index];
-                               priv->RfTxPwrLevelOfdm1T[rf_path][i]  =
-                               priv->RfOfdmChnlAreaTxPwr1T[rf_path][index];
-                               priv->RfTxPwrLevelOfdm2T[rf_path][i]  =
-                               priv->RfOfdmChnlAreaTxPwr2T[rf_path][index];
-                               if (rf_path == 0)
-                               {
-                                       priv->TxPowerLevelOFDM24G[i] = priv->RfTxPwrLevelOfdm1T[rf_path][i] ;
-                                       priv->TxPowerLevelCCK[i] = priv->RfTxPwrLevelCck[rf_path][i];
-                               }
-                       }
-
-                       for(i=0; i<14; i++)
-                       {
-                               RT_TRACE((COMP_INIT),
-                               "Rf-%d TxPwr CH-%d CCK OFDM_1T OFDM_2T= 0x%x/0x%x/0x%x\n",
-                               rf_path, i, priv->RfTxPwrLevelCck[rf_path][i],
-                               priv->RfTxPwrLevelOfdm1T[rf_path][i] ,
-                               priv->RfTxPwrLevelOfdm2T[rf_path][i] );
-                       }
-               }
+               update_hal_variables(priv);
        }
 
        //
@@ -7677,7 +7640,7 @@ void setKey(      struct net_device *dev,
        if (EntryNo >= TOTAL_CAM_ENTRY)
                RT_TRACE(COMP_ERR, "cam entry exceeds in setKey()\n");
 
-       RT_TRACE(COMP_SEC, "====>to setKey(), dev:%p, EntryNo:%d, KeyIndex:%d, KeyType:%d, MacAddr"MAC_FMT"\n", dev,EntryNo, KeyIndex, KeyType, MAC_ARG(MacAddr));
+       RT_TRACE(COMP_SEC, "====>to setKey(), dev:%p, EntryNo:%d, KeyIndex:%d, KeyType:%d, MacAddr%pM\n", dev,EntryNo, KeyIndex, KeyType, MacAddr);
 
        if (DefaultKey)
                usConfig |= BIT15 | (KeyType<<2);