rtlwifi: Remove addressof casts to same type
[pandora-kernel.git] / drivers / net / wireless / rtlwifi / pci.c
index d7aa165..7d71170 100644 (file)
@@ -811,19 +811,19 @@ done:
                if (pci_dma_mapping_error(rtlpci->pdev, bufferaddress))
                        return;
                tmp_one = 1;
-               rtlpriv->cfg->ops->set_desc((u8 *) pdesc, false,
+               rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, false,
                                            HW_DESC_RXBUFF_ADDR,
                                            (u8 *)&bufferaddress);
-               rtlpriv->cfg->ops->set_desc((u8 *)pdesc, false,
+               rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, false,
                                            HW_DESC_RXPKT_LEN,
                                            (u8 *)&rtlpci->rxbuffersize);
 
                if (index == rtlpci->rxringcount - 1)
-                       rtlpriv->cfg->ops->set_desc((u8 *)pdesc, false,
+                       rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, false,
                                                    HW_DESC_RXERO,
                                                    &tmp_one);
 
-               rtlpriv->cfg->ops->set_desc((u8 *)pdesc, false, HW_DESC_RXOWN,
+               rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, false, HW_DESC_RXOWN,
                                            &tmp_one);
 
                index = (index + 1) % rtlpci->rxringcount;
@@ -983,6 +983,8 @@ static void _rtl_pci_prepare_bcn_tasklet(struct ieee80211_hw *hw)
        struct sk_buff *pskb = NULL;
        struct rtl_tx_desc *pdesc = NULL;
        struct rtl_tcb_desc tcb_desc;
+       /*This is for new trx flow*/
+       struct rtl_tx_buffer_desc *pbuffer_desc = NULL;
        u8 temp_one = 1;
 
        memset(&tcb_desc, 0, sizeof(struct rtl_tcb_desc));
@@ -1004,11 +1006,12 @@ static void _rtl_pci_prepare_bcn_tasklet(struct ieee80211_hw *hw)
        info = IEEE80211_SKB_CB(pskb);
        pdesc = &ring->desc[0];
        rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *) pdesc,
-               info, NULL, pskb, BEACON_QUEUE, &tcb_desc);
+                                       (u8 *)pbuffer_desc, info, NULL, pskb,
+                                       BEACON_QUEUE, &tcb_desc);
 
        __skb_queue_tail(&ring->queue, pskb);
 
-       rtlpriv->cfg->ops->set_desc((u8 *) pdesc, true, HW_DESC_OWN,
+       rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, true, HW_DESC_OWN,
                                    &temp_one);
 
        return;
@@ -1066,7 +1069,7 @@ static void _rtl_pci_init_struct(struct ieee80211_hw *hw,
        mac->current_ampdu_factor = 3;
 
        /*QOS*/
-       rtlpci->acm_method = eAcmWay2_SW;
+       rtlpci->acm_method = EACMWAY2_SW;
 
        /*task */
        tasklet_init(&rtlpriv->works.irq_tasklet,
@@ -1113,7 +1116,7 @@ static int _rtl_pci_init_tx_ring(struct ieee80211_hw *hw,
                                              ((i + 1) % entries) *
                                              sizeof(*ring);
 
-               rtlpriv->cfg->ops->set_desc((u8 *)&(ring[i]),
+               rtlpriv->cfg->ops->set_desc(hw, (u8 *)&(ring[i]),
                                            true, HW_DESC_TX_NEXTDESC_ADDR,
                                            (u8 *)&nextdescaddress);
        }
@@ -1188,19 +1191,19 @@ static int _rtl_pci_init_rx_ring(struct ieee80211_hw *hw)
                                dev_kfree_skb_any(skb);
                                return 1;
                        }
-                       rtlpriv->cfg->ops->set_desc((u8 *)entry, false,
+                       rtlpriv->cfg->ops->set_desc(hw, (u8 *)entry, false,
                                                    HW_DESC_RXBUFF_ADDR,
                                                    (u8 *)&bufferaddress);
-                       rtlpriv->cfg->ops->set_desc((u8 *)entry, false,
+                       rtlpriv->cfg->ops->set_desc(hw, (u8 *)entry, false,
                                                    HW_DESC_RXPKT_LEN,
                                                    (u8 *)&rtlpci->
                                                    rxbuffersize);
-                       rtlpriv->cfg->ops->set_desc((u8 *) entry, false,
+                       rtlpriv->cfg->ops->set_desc(hw, (u8 *)entry, false,
                                                    HW_DESC_RXOWN,
                                                    &tmp_one);
                }
 
-               rtlpriv->cfg->ops->set_desc((u8 *) entry, false,
+               rtlpriv->cfg->ops->set_desc(hw, (u8 *)entry, false,
                                            HW_DESC_RXERO, &tmp_one);
        }
        return 0;
@@ -1331,7 +1334,7 @@ int rtl_pci_reset_trx_ring(struct ieee80211_hw *hw)
 
                        for (i = 0; i < rtlpci->rxringcount; i++) {
                                entry = &rtlpci->rx_ring[rx_queue_idx].desc[i];
-                               rtlpriv->cfg->ops->set_desc((u8 *) entry,
+                               rtlpriv->cfg->ops->set_desc(hw, (u8 *)entry,
                                                            false,
                                                            HW_DESC_RXOWN,
                                                            &tmp_one);
@@ -1424,6 +1427,7 @@ static int rtl_pci_tx(struct ieee80211_hw *hw,
        struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
        struct rtl8192_tx_ring *ring;
        struct rtl_tx_desc *pdesc;
+       struct rtl_tx_buffer_desc *ptx_bd_desc = NULL;
        u8 idx;
        u8 hw_queue = _rtl_mac_to_hwqueue(hw, skb);
        unsigned long flags;
@@ -1464,17 +1468,22 @@ static int rtl_pci_tx(struct ieee80211_hw *hw,
                idx = 0;
 
        pdesc = &ring->desc[idx];
-       own = (u8) rtlpriv->cfg->ops->get_desc((u8 *) pdesc,
-                       true, HW_DESC_OWN);
+       if (rtlpriv->use_new_trx_flow) {
+               ptx_bd_desc = &ring->buffer_desc[idx];
+       } else {
+               own = (u8) rtlpriv->cfg->ops->get_desc((u8 *)pdesc,
+                               true, HW_DESC_OWN);
 
-       if ((own == 1) && (hw_queue != BEACON_QUEUE)) {
-               RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING,
-                        "No more TX desc@%d, ring->idx = %d, idx = %d, skb_queue_len = 0x%d\n",
-                        hw_queue, ring->idx, idx,
-                        skb_queue_len(&ring->queue));
+               if ((own == 1) && (hw_queue != BEACON_QUEUE)) {
+                       RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING,
+                                "No more TX desc@%d, ring->idx = %d, idx = %d, skb_queue_len = 0x%d\n",
+                                hw_queue, ring->idx, idx,
+                                skb_queue_len(&ring->queue));
 
-               spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags);
-               return skb->len;
+                       spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock,
+                                              flags);
+                       return skb->len;
+               }
        }
 
        if (ieee80211_is_data_qos(fc)) {
@@ -1494,17 +1503,20 @@ static int rtl_pci_tx(struct ieee80211_hw *hw,
                rtlpriv->cfg->ops->led_control(hw, LED_CTL_TX);
 
        rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *)pdesc,
-                       info, sta, skb, hw_queue, ptcb_desc);
+                       (u8 *)ptx_bd_desc, info, sta, skb, hw_queue, ptcb_desc);
 
        __skb_queue_tail(&ring->queue, skb);
 
-       rtlpriv->cfg->ops->set_desc((u8 *)pdesc, true,
-                                   HW_DESC_OWN, &temp_one);
-
+       if (rtlpriv->use_new_trx_flow) {
+               rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, true,
+                                           HW_DESC_OWN, &hw_queue);
+       } else {
+               rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, true,
+                                           HW_DESC_OWN, &temp_one);
+       }
 
        if ((ring->entries - skb_queue_len(&ring->queue)) < 2 &&
            hw_queue != BEACON_QUEUE) {
-
                RT_TRACE(rtlpriv, COMP_ERR, DBG_LOUD,
                         "less desc left, stop skb_queue@%d, ring->idx = %d, idx = %d, skb_queue_len = 0x%d\n",
                         hw_queue, ring->idx, idx,