rtlwifi: Convert usb routines for addition of rtl8192se and rtl8192de
authorChaoming_Li <chaoming_li@realsil.com.cn>
Mon, 25 Apr 2011 17:53:29 +0000 (12:53 -0500)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 26 Apr 2011 20:13:32 +0000 (16:13 -0400)
Convert usb routines for addition of RTL8192SE and RTL8192DE code

Signed-off-by: Chaoming_Li <chaoming_li@realsil.com.cn>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rtlwifi/pci.c
drivers/net/wireless/rtlwifi/usb.c
drivers/net/wireless/rtlwifi/wifi.h

index fa66205..e496361 100644 (file)
@@ -1569,10 +1569,8 @@ int rtl_pci_tx(struct ieee80211_hw *hw, struct sk_buff *skb,
        if (ieee80211_is_data(fc))
                rtlpriv->cfg->ops->led_control(hw, LED_CTL_TX);
 
-#if 0  /* temporary */
        rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *)pdesc,
                        info, skb, hw_queue, ptcb_desc);
-#endif
 
        __skb_queue_tail(&ring->queue, skb);
 
index 14539eb..a9367eb 100644 (file)
@@ -852,6 +852,7 @@ static void _rtl_usb_tx_preprocess(struct ieee80211_hw *hw, struct sk_buff *skb,
        struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
        struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
        struct rtl_tx_desc *pdesc = NULL;
+       struct rtl_tcb_desc tcb_desc;
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data);
        __le16 fc = hdr->frame_control;
        u8 *pda_addr = hdr->addr1;
@@ -860,6 +861,17 @@ static void _rtl_usb_tx_preprocess(struct ieee80211_hw *hw, struct sk_buff *skb,
        u8 tid = 0;
        u16 seq_number = 0;
 
+       if (ieee80211_is_auth(fc)) {
+               RT_TRACE(rtlpriv, COMP_SEND, DBG_DMESG, ("MAC80211_LINKING\n"));
+               rtl_ips_nic_on(hw);
+       }
+
+       if (rtlpriv->psc.sw_ps_enabled) {
+               if (ieee80211_is_data(fc) && !ieee80211_is_nullfunc(fc) &&
+                   !ieee80211_has_pm(fc))
+                       hdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_PM);
+       }
+
        rtl_action_proc(hw, skb, true);
        if (is_multicast_ether_addr(pda_addr))
                rtlpriv->stats.txbytesmulticast += skb->len;
@@ -876,7 +888,7 @@ static void _rtl_usb_tx_preprocess(struct ieee80211_hw *hw, struct sk_buff *skb,
                seq_number <<= 4;
        }
        rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *)pdesc, info, skb,
-                                       hw_queue);
+                                       hw_queue, &tcb_desc);
        if (!ieee80211_has_morefrags(hdr->frame_control)) {
                if (qc)
                        mac->tids[tid].seq_number = seq_number;
index 4776cd1..683f7f7 100644 (file)
@@ -1378,18 +1378,11 @@ struct rtl_hal_ops {
        void (*update_rate_table) (struct ieee80211_hw *hw);
 #endif
        void (*update_rate_mask) (struct ieee80211_hw *hw, u8 rssi_level);
-#if 0  /* temporary */
        void (*fill_tx_desc) (struct ieee80211_hw *hw,
                              struct ieee80211_hdr *hdr, u8 *pdesc_tx,
                              struct ieee80211_tx_info *info,
                              struct sk_buff *skb, u8 hw_queue,
                              struct rtl_tcb_desc *ptcb_desc);
-#else
-       void (*fill_tx_desc) (struct ieee80211_hw *hw,
-                             struct ieee80211_hdr *hdr, u8 *pdesc_tx,
-                             struct ieee80211_tx_info *info,
-                             struct sk_buff *skb, unsigned int queue_index);
-#endif
        void (*fill_fake_txdesc) (struct ieee80211_hw *hw, u8 *pDesc,
                                  u32 buffer_len, bool bIsPsPoll);
        void (*fill_tx_cmddesc) (struct ieee80211_hw *hw, u8 *pdesc,