diff options
author | Larry Finger <Larry.Finger@lwfinger.net> | 2014-03-04 17:53:47 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-03-06 14:29:56 -0500 |
commit | f3355dd9f7c261d2a3e505ba5c62ffe3cd4df97a (patch) | |
tree | beea2255a875b3917b3df64ec42585c2ffae6c93 /drivers/net/wireless | |
parent | 997bc71a3601b25dbbe3ac75b77b4f49582c0ae5 (diff) |
rtlwifi: rtl8192ce: rtl8192cu: rtl8192de: rtl8192se: rtl8723ae: rtl8723be: rtl8188eu: Modify for new API
The addition of a driver for the RTL8821AE requires a new API for the
fill_tx_desc() and set_desc() callback routines. This commit makes the
appropriate modifications in all the other drivers.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
19 files changed, 282 insertions, 78 deletions
diff --git a/drivers/net/wireless/rtlwifi/btcoexist/halbtcoutsrc.c b/drivers/net/wireless/rtlwifi/btcoexist/halbtcoutsrc.c index 9e1217f2c966..b6722de64a31 100644 --- a/drivers/net/wireless/rtlwifi/btcoexist/halbtcoutsrc.c +++ b/drivers/net/wireless/rtlwifi/btcoexist/halbtcoutsrc.c | |||
@@ -980,7 +980,7 @@ void exhalbtc_set_chip_type(u8 chip_type) | |||
980 | case BT_RTL8723A: | 980 | case BT_RTL8723A: |
981 | gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_RTL8723A; | 981 | gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_RTL8723A; |
982 | break; | 982 | break; |
983 | case BT_RTL8821: | 983 | case BT_RTL8821A: |
984 | gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_RTL8821; | 984 | gl_bt_coexist.board_info.bt_chip_type = BTC_CHIP_RTL8821; |
985 | break; | 985 | break; |
986 | case BT_RTL8723B: | 986 | case BT_RTL8723B: |
diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c index 257726860a43..f26f4ffc771d 100644 --- a/drivers/net/wireless/rtlwifi/pci.c +++ b/drivers/net/wireless/rtlwifi/pci.c | |||
@@ -811,19 +811,19 @@ done: | |||
811 | if (pci_dma_mapping_error(rtlpci->pdev, bufferaddress)) | 811 | if (pci_dma_mapping_error(rtlpci->pdev, bufferaddress)) |
812 | return; | 812 | return; |
813 | tmp_one = 1; | 813 | tmp_one = 1; |
814 | rtlpriv->cfg->ops->set_desc((u8 *) pdesc, false, | 814 | rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, false, |
815 | HW_DESC_RXBUFF_ADDR, | 815 | HW_DESC_RXBUFF_ADDR, |
816 | (u8 *)&bufferaddress); | 816 | (u8 *)&bufferaddress); |
817 | rtlpriv->cfg->ops->set_desc((u8 *)pdesc, false, | 817 | rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, false, |
818 | HW_DESC_RXPKT_LEN, | 818 | HW_DESC_RXPKT_LEN, |
819 | (u8 *)&rtlpci->rxbuffersize); | 819 | (u8 *)&rtlpci->rxbuffersize); |
820 | 820 | ||
821 | if (index == rtlpci->rxringcount - 1) | 821 | if (index == rtlpci->rxringcount - 1) |
822 | rtlpriv->cfg->ops->set_desc((u8 *)pdesc, false, | 822 | rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, false, |
823 | HW_DESC_RXERO, | 823 | HW_DESC_RXERO, |
824 | &tmp_one); | 824 | &tmp_one); |
825 | 825 | ||
826 | rtlpriv->cfg->ops->set_desc((u8 *)pdesc, false, HW_DESC_RXOWN, | 826 | rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, false, HW_DESC_RXOWN, |
827 | &tmp_one); | 827 | &tmp_one); |
828 | 828 | ||
829 | index = (index + 1) % rtlpci->rxringcount; | 829 | index = (index + 1) % rtlpci->rxringcount; |
@@ -983,6 +983,8 @@ static void _rtl_pci_prepare_bcn_tasklet(struct ieee80211_hw *hw) | |||
983 | struct sk_buff *pskb = NULL; | 983 | struct sk_buff *pskb = NULL; |
984 | struct rtl_tx_desc *pdesc = NULL; | 984 | struct rtl_tx_desc *pdesc = NULL; |
985 | struct rtl_tcb_desc tcb_desc; | 985 | struct rtl_tcb_desc tcb_desc; |
986 | /*This is for new trx flow*/ | ||
987 | struct rtl_tx_buffer_desc *pbuffer_desc = NULL; | ||
986 | u8 temp_one = 1; | 988 | u8 temp_one = 1; |
987 | 989 | ||
988 | memset(&tcb_desc, 0, sizeof(struct rtl_tcb_desc)); | 990 | memset(&tcb_desc, 0, sizeof(struct rtl_tcb_desc)); |
@@ -1004,11 +1006,12 @@ static void _rtl_pci_prepare_bcn_tasklet(struct ieee80211_hw *hw) | |||
1004 | info = IEEE80211_SKB_CB(pskb); | 1006 | info = IEEE80211_SKB_CB(pskb); |
1005 | pdesc = &ring->desc[0]; | 1007 | pdesc = &ring->desc[0]; |
1006 | rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *) pdesc, | 1008 | rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *) pdesc, |
1007 | info, NULL, pskb, BEACON_QUEUE, &tcb_desc); | 1009 | (u8 *)pbuffer_desc, info, NULL, pskb, |
1010 | BEACON_QUEUE, &tcb_desc); | ||
1008 | 1011 | ||
1009 | __skb_queue_tail(&ring->queue, pskb); | 1012 | __skb_queue_tail(&ring->queue, pskb); |
1010 | 1013 | ||
1011 | rtlpriv->cfg->ops->set_desc((u8 *) pdesc, true, HW_DESC_OWN, | 1014 | rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, true, HW_DESC_OWN, |
1012 | &temp_one); | 1015 | &temp_one); |
1013 | 1016 | ||
1014 | return; | 1017 | return; |
@@ -1113,7 +1116,7 @@ static int _rtl_pci_init_tx_ring(struct ieee80211_hw *hw, | |||
1113 | ((i + 1) % entries) * | 1116 | ((i + 1) % entries) * |
1114 | sizeof(*ring); | 1117 | sizeof(*ring); |
1115 | 1118 | ||
1116 | rtlpriv->cfg->ops->set_desc((u8 *)&(ring[i]), | 1119 | rtlpriv->cfg->ops->set_desc(hw, (u8 *)&(ring[i]), |
1117 | true, HW_DESC_TX_NEXTDESC_ADDR, | 1120 | true, HW_DESC_TX_NEXTDESC_ADDR, |
1118 | (u8 *)&nextdescaddress); | 1121 | (u8 *)&nextdescaddress); |
1119 | } | 1122 | } |
@@ -1188,19 +1191,19 @@ static int _rtl_pci_init_rx_ring(struct ieee80211_hw *hw) | |||
1188 | dev_kfree_skb_any(skb); | 1191 | dev_kfree_skb_any(skb); |
1189 | return 1; | 1192 | return 1; |
1190 | } | 1193 | } |
1191 | rtlpriv->cfg->ops->set_desc((u8 *)entry, false, | 1194 | rtlpriv->cfg->ops->set_desc(hw, (u8 *)entry, false, |
1192 | HW_DESC_RXBUFF_ADDR, | 1195 | HW_DESC_RXBUFF_ADDR, |
1193 | (u8 *)&bufferaddress); | 1196 | (u8 *)&bufferaddress); |
1194 | rtlpriv->cfg->ops->set_desc((u8 *)entry, false, | 1197 | rtlpriv->cfg->ops->set_desc(hw, (u8 *)entry, false, |
1195 | HW_DESC_RXPKT_LEN, | 1198 | HW_DESC_RXPKT_LEN, |
1196 | (u8 *)&rtlpci-> | 1199 | (u8 *)&rtlpci-> |
1197 | rxbuffersize); | 1200 | rxbuffersize); |
1198 | rtlpriv->cfg->ops->set_desc((u8 *) entry, false, | 1201 | rtlpriv->cfg->ops->set_desc(hw, (u8 *)entry, false, |
1199 | HW_DESC_RXOWN, | 1202 | HW_DESC_RXOWN, |
1200 | &tmp_one); | 1203 | &tmp_one); |
1201 | } | 1204 | } |
1202 | 1205 | ||
1203 | rtlpriv->cfg->ops->set_desc((u8 *) entry, false, | 1206 | rtlpriv->cfg->ops->set_desc(hw, (u8 *)entry, false, |
1204 | HW_DESC_RXERO, &tmp_one); | 1207 | HW_DESC_RXERO, &tmp_one); |
1205 | } | 1208 | } |
1206 | return 0; | 1209 | return 0; |
@@ -1331,7 +1334,7 @@ int rtl_pci_reset_trx_ring(struct ieee80211_hw *hw) | |||
1331 | 1334 | ||
1332 | for (i = 0; i < rtlpci->rxringcount; i++) { | 1335 | for (i = 0; i < rtlpci->rxringcount; i++) { |
1333 | entry = &rtlpci->rx_ring[rx_queue_idx].desc[i]; | 1336 | entry = &rtlpci->rx_ring[rx_queue_idx].desc[i]; |
1334 | rtlpriv->cfg->ops->set_desc((u8 *) entry, | 1337 | rtlpriv->cfg->ops->set_desc(hw, (u8 *)entry, |
1335 | false, | 1338 | false, |
1336 | HW_DESC_RXOWN, | 1339 | HW_DESC_RXOWN, |
1337 | &tmp_one); | 1340 | &tmp_one); |
@@ -1424,6 +1427,7 @@ static int rtl_pci_tx(struct ieee80211_hw *hw, | |||
1424 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); | 1427 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); |
1425 | struct rtl8192_tx_ring *ring; | 1428 | struct rtl8192_tx_ring *ring; |
1426 | struct rtl_tx_desc *pdesc; | 1429 | struct rtl_tx_desc *pdesc; |
1430 | struct rtl_tx_buffer_desc *ptx_bd_desc = NULL; | ||
1427 | u8 idx; | 1431 | u8 idx; |
1428 | u8 hw_queue = _rtl_mac_to_hwqueue(hw, skb); | 1432 | u8 hw_queue = _rtl_mac_to_hwqueue(hw, skb); |
1429 | unsigned long flags; | 1433 | unsigned long flags; |
@@ -1464,17 +1468,22 @@ static int rtl_pci_tx(struct ieee80211_hw *hw, | |||
1464 | idx = 0; | 1468 | idx = 0; |
1465 | 1469 | ||
1466 | pdesc = &ring->desc[idx]; | 1470 | pdesc = &ring->desc[idx]; |
1467 | own = (u8) rtlpriv->cfg->ops->get_desc((u8 *) pdesc, | 1471 | if (rtlpriv->use_new_trx_flow) { |
1468 | true, HW_DESC_OWN); | 1472 | ptx_bd_desc = &ring->buffer_desc[idx]; |
1473 | } else { | ||
1474 | own = (u8) rtlpriv->cfg->ops->get_desc((u8 *)pdesc, | ||
1475 | true, HW_DESC_OWN); | ||
1469 | 1476 | ||
1470 | if ((own == 1) && (hw_queue != BEACON_QUEUE)) { | 1477 | if ((own == 1) && (hw_queue != BEACON_QUEUE)) { |
1471 | RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, | 1478 | RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, |
1472 | "No more TX desc@%d, ring->idx = %d, idx = %d, skb_queue_len = 0x%d\n", | 1479 | "No more TX desc@%d, ring->idx = %d, idx = %d, skb_queue_len = 0x%d\n", |
1473 | hw_queue, ring->idx, idx, | 1480 | hw_queue, ring->idx, idx, |
1474 | skb_queue_len(&ring->queue)); | 1481 | skb_queue_len(&ring->queue)); |
1475 | 1482 | ||
1476 | spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, flags); | 1483 | spin_unlock_irqrestore(&rtlpriv->locks.irq_th_lock, |
1477 | return skb->len; | 1484 | flags); |
1485 | return skb->len; | ||
1486 | } | ||
1478 | } | 1487 | } |
1479 | 1488 | ||
1480 | if (ieee80211_is_data_qos(fc)) { | 1489 | if (ieee80211_is_data_qos(fc)) { |
@@ -1494,17 +1503,20 @@ static int rtl_pci_tx(struct ieee80211_hw *hw, | |||
1494 | rtlpriv->cfg->ops->led_control(hw, LED_CTL_TX); | 1503 | rtlpriv->cfg->ops->led_control(hw, LED_CTL_TX); |
1495 | 1504 | ||
1496 | rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *)pdesc, | 1505 | rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *)pdesc, |
1497 | info, sta, skb, hw_queue, ptcb_desc); | 1506 | (u8 *)ptx_bd_desc, info, sta, skb, hw_queue, ptcb_desc); |
1498 | 1507 | ||
1499 | __skb_queue_tail(&ring->queue, skb); | 1508 | __skb_queue_tail(&ring->queue, skb); |
1500 | 1509 | ||
1501 | rtlpriv->cfg->ops->set_desc((u8 *)pdesc, true, | 1510 | if (rtlpriv->use_new_trx_flow) { |
1502 | HW_DESC_OWN, &temp_one); | 1511 | rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, true, |
1503 | 1512 | HW_DESC_OWN, (u8 *)&hw_queue); | |
1513 | } else { | ||
1514 | rtlpriv->cfg->ops->set_desc(hw, (u8 *)pdesc, true, | ||
1515 | HW_DESC_OWN, (u8 *)&temp_one); | ||
1516 | } | ||
1504 | 1517 | ||
1505 | if ((ring->entries - skb_queue_len(&ring->queue)) < 2 && | 1518 | if ((ring->entries - skb_queue_len(&ring->queue)) < 2 && |
1506 | hw_queue != BEACON_QUEUE) { | 1519 | hw_queue != BEACON_QUEUE) { |
1507 | |||
1508 | RT_TRACE(rtlpriv, COMP_ERR, DBG_LOUD, | 1520 | RT_TRACE(rtlpriv, COMP_ERR, DBG_LOUD, |
1509 | "less desc left, stop skb_queue@%d, ring->idx = %d, idx = %d, skb_queue_len = 0x%d\n", | 1521 | "less desc left, stop skb_queue@%d, ring->idx = %d, idx = %d, skb_queue_len = 0x%d\n", |
1510 | hw_queue, ring->idx, idx, | 1522 | hw_queue, ring->idx, idx, |
diff --git a/drivers/net/wireless/rtlwifi/pci.h b/drivers/net/wireless/rtlwifi/pci.h index 2a3333523ac4..90174a814a6d 100644 --- a/drivers/net/wireless/rtlwifi/pci.h +++ b/drivers/net/wireless/rtlwifi/pci.h | |||
@@ -137,12 +137,22 @@ struct rtl_tx_cmd_desc { | |||
137 | u32 dword[16]; | 137 | u32 dword[16]; |
138 | } __packed; | 138 | } __packed; |
139 | 139 | ||
140 | /* In new TRX flow, Buffer_desc is new concept | ||
141 | * But TX wifi info == TX descriptor in old flow | ||
142 | * RX wifi info == RX descriptor in old flow | ||
143 | */ | ||
144 | struct rtl_tx_buffer_desc { | ||
145 | u32 dword[8]; /*seg = 4*/ | ||
146 | } __packed; | ||
147 | |||
140 | struct rtl8192_tx_ring { | 148 | struct rtl8192_tx_ring { |
141 | struct rtl_tx_desc *desc; | 149 | struct rtl_tx_desc *desc; |
142 | dma_addr_t dma; | 150 | dma_addr_t dma; |
143 | unsigned int idx; | 151 | unsigned int idx; |
144 | unsigned int entries; | 152 | unsigned int entries; |
145 | struct sk_buff_head queue; | 153 | struct sk_buff_head queue; |
154 | /*add for new trx flow*/ | ||
155 | struct rtl_tx_buffer_desc *buffer_desc; /*tx buffer descriptor*/ | ||
146 | }; | 156 | }; |
147 | 157 | ||
148 | struct rtl8192_rx_ring { | 158 | struct rtl8192_rx_ring { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c b/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c index 27ace3054d56..2ba6f510d884 100644 --- a/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c | |||
@@ -489,9 +489,8 @@ bool rtl88ee_rx_query_desc(struct ieee80211_hw *hw, | |||
489 | 489 | ||
490 | void rtl88ee_tx_fill_desc(struct ieee80211_hw *hw, | 490 | void rtl88ee_tx_fill_desc(struct ieee80211_hw *hw, |
491 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, | 491 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, |
492 | struct ieee80211_tx_info *info, | 492 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
493 | struct ieee80211_sta *sta, | 493 | struct ieee80211_sta *sta, struct sk_buff *skb, |
494 | struct sk_buff *skb, | ||
495 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc) | 494 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc) |
496 | { | 495 | { |
497 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 496 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
@@ -734,7 +733,8 @@ void rtl88ee_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
734 | pdesc, TX_DESC_SIZE); | 733 | pdesc, TX_DESC_SIZE); |
735 | } | 734 | } |
736 | 735 | ||
737 | void rtl88ee_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val) | 736 | void rtl88ee_set_desc(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
737 | u8 desc_name, u8 *val) | ||
738 | { | 738 | { |
739 | if (istx == true) { | 739 | if (istx == true) { |
740 | switch (desc_name) { | 740 | switch (desc_name) { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8188ee/trx.h b/drivers/net/wireless/rtlwifi/rtl8188ee/trx.h index 21ca33a7c770..8c2609412d2c 100644 --- a/drivers/net/wireless/rtlwifi/rtl8188ee/trx.h +++ b/drivers/net/wireless/rtlwifi/rtl8188ee/trx.h | |||
@@ -777,15 +777,15 @@ struct rx_desc_88e { | |||
777 | 777 | ||
778 | void rtl88ee_tx_fill_desc(struct ieee80211_hw *hw, | 778 | void rtl88ee_tx_fill_desc(struct ieee80211_hw *hw, |
779 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, | 779 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, |
780 | struct ieee80211_tx_info *info, | 780 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
781 | struct ieee80211_sta *sta, | 781 | struct ieee80211_sta *sta, struct sk_buff *skb, |
782 | struct sk_buff *skb, | ||
783 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc); | 782 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc); |
784 | bool rtl88ee_rx_query_desc(struct ieee80211_hw *hw, | 783 | bool rtl88ee_rx_query_desc(struct ieee80211_hw *hw, |
785 | struct rtl_stats *status, | 784 | struct rtl_stats *status, |
786 | struct ieee80211_rx_status *rx_status, | 785 | struct ieee80211_rx_status *rx_status, |
787 | u8 *pdesc, struct sk_buff *skb); | 786 | u8 *pdesc, struct sk_buff *skb); |
788 | void rtl88ee_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val); | 787 | void rtl88ee_set_desc(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
788 | u8 desc_name, u8 *val); | ||
789 | u32 rtl88ee_get_desc(u8 *pdesc, bool istx, u8 desc_name); | 789 | u32 rtl88ee_get_desc(u8 *pdesc, bool istx, u8 desc_name); |
790 | void rtl88ee_tx_polling(struct ieee80211_hw *hw, u8 hw_queue); | 790 | void rtl88ee_tx_polling(struct ieee80211_hw *hw, u8 hw_queue); |
791 | void rtl88ee_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, | 791 | void rtl88ee_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c index 114858d46158..8f04817cb7ec 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | |||
@@ -426,7 +426,7 @@ bool rtl92ce_rx_query_desc(struct ieee80211_hw *hw, | |||
426 | 426 | ||
427 | void rtl92ce_tx_fill_desc(struct ieee80211_hw *hw, | 427 | void rtl92ce_tx_fill_desc(struct ieee80211_hw *hw, |
428 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, | 428 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, |
429 | struct ieee80211_tx_info *info, | 429 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
430 | struct ieee80211_sta *sta, | 430 | struct ieee80211_sta *sta, |
431 | struct sk_buff *skb, | 431 | struct sk_buff *skb, |
432 | u8 hw_queue, struct rtl_tcb_desc *tcb_desc) | 432 | u8 hw_queue, struct rtl_tcb_desc *tcb_desc) |
@@ -666,7 +666,8 @@ void rtl92ce_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
666 | "H2C Tx Cmd Content", pdesc, TX_DESC_SIZE); | 666 | "H2C Tx Cmd Content", pdesc, TX_DESC_SIZE); |
667 | } | 667 | } |
668 | 668 | ||
669 | void rtl92ce_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val) | 669 | void rtl92ce_set_desc(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
670 | u8 desc_name, u8 *val) | ||
670 | { | 671 | { |
671 | if (istx) { | 672 | if (istx) { |
672 | switch (desc_name) { | 673 | switch (desc_name) { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.h b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.h index a7cdd514cb2e..9a39ec4204dd 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.h +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.h | |||
@@ -711,8 +711,8 @@ struct rx_desc_92c { | |||
711 | } __packed; | 711 | } __packed; |
712 | 712 | ||
713 | void rtl92ce_tx_fill_desc(struct ieee80211_hw *hw, | 713 | void rtl92ce_tx_fill_desc(struct ieee80211_hw *hw, |
714 | struct ieee80211_hdr *hdr, | 714 | struct ieee80211_hdr *hdr, u8 *pdesc, |
715 | u8 *pdesc, struct ieee80211_tx_info *info, | 715 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
716 | struct ieee80211_sta *sta, | 716 | struct ieee80211_sta *sta, |
717 | struct sk_buff *skb, u8 hw_queue, | 717 | struct sk_buff *skb, u8 hw_queue, |
718 | struct rtl_tcb_desc *ptcb_desc); | 718 | struct rtl_tcb_desc *ptcb_desc); |
@@ -720,7 +720,8 @@ bool rtl92ce_rx_query_desc(struct ieee80211_hw *hw, | |||
720 | struct rtl_stats *stats, | 720 | struct rtl_stats *stats, |
721 | struct ieee80211_rx_status *rx_status, | 721 | struct ieee80211_rx_status *rx_status, |
722 | u8 *pdesc, struct sk_buff *skb); | 722 | u8 *pdesc, struct sk_buff *skb); |
723 | void rtl92ce_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val); | 723 | void rtl92ce_set_desc(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
724 | u8 desc_name, u8 *val); | ||
724 | u32 rtl92ce_get_desc(u8 *pdesc, bool istx, u8 desc_name); | 725 | u32 rtl92ce_get_desc(u8 *pdesc, bool istx, u8 desc_name); |
725 | void rtl92ce_tx_polling(struct ieee80211_hw *hw, u8 hw_queue); | 726 | void rtl92ce_tx_polling(struct ieee80211_hw *hw, u8 hw_queue); |
726 | void rtl92ce_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, | 727 | void rtl92ce_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c b/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c index 1bc21ccfa71b..035e0dc3922c 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c | |||
@@ -495,7 +495,7 @@ static void _rtl_tx_desc_checksum(u8 *txdesc) | |||
495 | 495 | ||
496 | void rtl92cu_tx_fill_desc(struct ieee80211_hw *hw, | 496 | void rtl92cu_tx_fill_desc(struct ieee80211_hw *hw, |
497 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, | 497 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, |
498 | struct ieee80211_tx_info *info, | 498 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
499 | struct ieee80211_sta *sta, | 499 | struct ieee80211_sta *sta, |
500 | struct sk_buff *skb, | 500 | struct sk_buff *skb, |
501 | u8 queue_index, | 501 | u8 queue_index, |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/trx.h b/drivers/net/wireless/rtlwifi/rtl8192cu/trx.h index 725c53accc58..fd8051dcd98a 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/trx.h +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/trx.h | |||
@@ -420,7 +420,7 @@ struct sk_buff *rtl8192c_tx_aggregate_hdl(struct ieee80211_hw *, | |||
420 | struct sk_buff_head *); | 420 | struct sk_buff_head *); |
421 | void rtl92cu_tx_fill_desc(struct ieee80211_hw *hw, | 421 | void rtl92cu_tx_fill_desc(struct ieee80211_hw *hw, |
422 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, | 422 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, |
423 | struct ieee80211_tx_info *info, | 423 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
424 | struct ieee80211_sta *sta, | 424 | struct ieee80211_sta *sta, |
425 | struct sk_buff *skb, | 425 | struct sk_buff *skb, |
426 | u8 queue_index, | 426 | u8 queue_index, |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/trx.c b/drivers/net/wireless/rtlwifi/rtl8192de/trx.c index 0eb0f4ae5920..99c2ab5dfceb 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192de/trx.c | |||
@@ -545,7 +545,7 @@ static void _rtl92de_insert_emcontent(struct rtl_tcb_desc *ptcb_desc, | |||
545 | 545 | ||
546 | void rtl92de_tx_fill_desc(struct ieee80211_hw *hw, | 546 | void rtl92de_tx_fill_desc(struct ieee80211_hw *hw, |
547 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, | 547 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, |
548 | struct ieee80211_tx_info *info, | 548 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
549 | struct ieee80211_sta *sta, | 549 | struct ieee80211_sta *sta, |
550 | struct sk_buff *skb, | 550 | struct sk_buff *skb, |
551 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc) | 551 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc) |
@@ -786,7 +786,8 @@ void rtl92de_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
786 | SET_TX_DESC_OWN(pdesc, 1); | 786 | SET_TX_DESC_OWN(pdesc, 1); |
787 | } | 787 | } |
788 | 788 | ||
789 | void rtl92de_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val) | 789 | void rtl92de_set_desc(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
790 | u8 desc_name, u8 *val) | ||
790 | { | 791 | { |
791 | if (istx) { | 792 | if (istx) { |
792 | switch (desc_name) { | 793 | switch (desc_name) { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/trx.h b/drivers/net/wireless/rtlwifi/rtl8192de/trx.h index c1b5dfb79d53..fb5cf0634e8d 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/trx.h +++ b/drivers/net/wireless/rtlwifi/rtl8192de/trx.h | |||
@@ -728,8 +728,8 @@ struct rx_desc_92d { | |||
728 | } __packed; | 728 | } __packed; |
729 | 729 | ||
730 | void rtl92de_tx_fill_desc(struct ieee80211_hw *hw, | 730 | void rtl92de_tx_fill_desc(struct ieee80211_hw *hw, |
731 | struct ieee80211_hdr *hdr, | 731 | struct ieee80211_hdr *hdr, u8 *pdesc, |
732 | u8 *pdesc, struct ieee80211_tx_info *info, | 732 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
733 | struct ieee80211_sta *sta, | 733 | struct ieee80211_sta *sta, |
734 | struct sk_buff *skb, u8 hw_queue, | 734 | struct sk_buff *skb, u8 hw_queue, |
735 | struct rtl_tcb_desc *ptcb_desc); | 735 | struct rtl_tcb_desc *ptcb_desc); |
@@ -737,7 +737,8 @@ bool rtl92de_rx_query_desc(struct ieee80211_hw *hw, | |||
737 | struct rtl_stats *stats, | 737 | struct rtl_stats *stats, |
738 | struct ieee80211_rx_status *rx_status, | 738 | struct ieee80211_rx_status *rx_status, |
739 | u8 *pdesc, struct sk_buff *skb); | 739 | u8 *pdesc, struct sk_buff *skb); |
740 | void rtl92de_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val); | 740 | void rtl92de_set_desc(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
741 | u8 desc_name, u8 *val); | ||
741 | u32 rtl92de_get_desc(u8 *pdesc, bool istx, u8 desc_name); | 742 | u32 rtl92de_get_desc(u8 *pdesc, bool istx, u8 desc_name); |
742 | void rtl92de_tx_polling(struct ieee80211_hw *hw, u8 hw_queue); | 743 | void rtl92de_tx_polling(struct ieee80211_hw *hw, u8 hw_queue); |
743 | void rtl92de_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, | 744 | void rtl92de_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c index 163a681962c6..36b48be8329c 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c | |||
@@ -336,7 +336,7 @@ bool rtl92se_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats, | |||
336 | 336 | ||
337 | void rtl92se_tx_fill_desc(struct ieee80211_hw *hw, | 337 | void rtl92se_tx_fill_desc(struct ieee80211_hw *hw, |
338 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, | 338 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, |
339 | struct ieee80211_tx_info *info, | 339 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
340 | struct ieee80211_sta *sta, | 340 | struct ieee80211_sta *sta, |
341 | struct sk_buff *skb, | 341 | struct sk_buff *skb, |
342 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc) | 342 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc) |
@@ -573,7 +573,8 @@ void rtl92se_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, | |||
573 | } | 573 | } |
574 | } | 574 | } |
575 | 575 | ||
576 | void rtl92se_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val) | 576 | void rtl92se_set_desc(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
577 | u8 desc_name, u8 *val) | ||
577 | { | 578 | { |
578 | if (istx) { | 579 | if (istx) { |
579 | switch (desc_name) { | 580 | switch (desc_name) { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/trx.h b/drivers/net/wireless/rtlwifi/rtl8192se/trx.h index 64dd66f287c1..5a13f17e3b41 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/trx.h +++ b/drivers/net/wireless/rtlwifi/rtl8192se/trx.h | |||
@@ -29,8 +29,9 @@ | |||
29 | #ifndef __REALTEK_PCI92SE_TRX_H__ | 29 | #ifndef __REALTEK_PCI92SE_TRX_H__ |
30 | #define __REALTEK_PCI92SE_TRX_H__ | 30 | #define __REALTEK_PCI92SE_TRX_H__ |
31 | 31 | ||
32 | void rtl92se_tx_fill_desc(struct ieee80211_hw *hw, struct ieee80211_hdr *hdr, | 32 | void rtl92se_tx_fill_desc(struct ieee80211_hw *hw, |
33 | u8 *pdesc, struct ieee80211_tx_info *info, | 33 | struct ieee80211_hdr *hdr, u8 *pdesc, |
34 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, | ||
34 | struct ieee80211_sta *sta, | 35 | struct ieee80211_sta *sta, |
35 | struct sk_buff *skb, u8 hw_queue, | 36 | struct sk_buff *skb, u8 hw_queue, |
36 | struct rtl_tcb_desc *ptcb_desc); | 37 | struct rtl_tcb_desc *ptcb_desc); |
@@ -39,7 +40,8 @@ void rtl92se_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, bool firstseg, | |||
39 | bool rtl92se_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats, | 40 | bool rtl92se_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats, |
40 | struct ieee80211_rx_status *rx_status, u8 *pdesc, | 41 | struct ieee80211_rx_status *rx_status, u8 *pdesc, |
41 | struct sk_buff *skb); | 42 | struct sk_buff *skb); |
42 | void rtl92se_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val); | 43 | void rtl92se_set_desc(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
44 | u8 desc_name, u8 *val); | ||
43 | u32 rtl92se_get_desc(u8 *pdesc, bool istx, u8 desc_name); | 45 | u32 rtl92se_get_desc(u8 *pdesc, bool istx, u8 desc_name); |
44 | void rtl92se_tx_polling(struct ieee80211_hw *hw, u8 hw_queue); | 46 | void rtl92se_tx_polling(struct ieee80211_hw *hw, u8 hw_queue); |
45 | 47 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c b/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c index 721162cacc3a..29adf55c6fd3 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c | |||
@@ -365,7 +365,7 @@ bool rtl8723ae_rx_query_desc(struct ieee80211_hw *hw, | |||
365 | 365 | ||
366 | void rtl8723ae_tx_fill_desc(struct ieee80211_hw *hw, | 366 | void rtl8723ae_tx_fill_desc(struct ieee80211_hw *hw, |
367 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, | 367 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, |
368 | struct ieee80211_tx_info *info, | 368 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
369 | struct ieee80211_sta *sta, | 369 | struct ieee80211_sta *sta, |
370 | struct sk_buff *skb, u8 hw_queue, | 370 | struct sk_buff *skb, u8 hw_queue, |
371 | struct rtl_tcb_desc *ptcdesc) | 371 | struct rtl_tcb_desc *ptcdesc) |
@@ -597,7 +597,8 @@ void rtl8723ae_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
597 | pdesc, TX_DESC_SIZE); | 597 | pdesc, TX_DESC_SIZE); |
598 | } | 598 | } |
599 | 599 | ||
600 | void rtl8723ae_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val) | 600 | void rtl8723ae_set_desc(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
601 | u8 desc_name, u8 *val) | ||
601 | { | 602 | { |
602 | if (istx == true) { | 603 | if (istx == true) { |
603 | switch (desc_name) { | 604 | switch (desc_name) { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8723ae/trx.h b/drivers/net/wireless/rtlwifi/rtl8723ae/trx.h index c75bfe8d570c..4380b7d3a91a 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723ae/trx.h +++ b/drivers/net/wireless/rtlwifi/rtl8723ae/trx.h | |||
@@ -700,8 +700,8 @@ struct rx_desc_8723e { | |||
700 | } __packed; | 700 | } __packed; |
701 | 701 | ||
702 | void rtl8723ae_tx_fill_desc(struct ieee80211_hw *hw, | 702 | void rtl8723ae_tx_fill_desc(struct ieee80211_hw *hw, |
703 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, | 703 | struct ieee80211_hdr *hdr, u8 *pdesc, |
704 | struct ieee80211_tx_info *info, | 704 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
705 | struct ieee80211_sta *sta, | 705 | struct ieee80211_sta *sta, |
706 | struct sk_buff *skb, u8 hw_queue, | 706 | struct sk_buff *skb, u8 hw_queue, |
707 | struct rtl_tcb_desc *ptcb_desc); | 707 | struct rtl_tcb_desc *ptcb_desc); |
@@ -709,7 +709,8 @@ bool rtl8723ae_rx_query_desc(struct ieee80211_hw *hw, | |||
709 | struct rtl_stats *status, | 709 | struct rtl_stats *status, |
710 | struct ieee80211_rx_status *rx_status, | 710 | struct ieee80211_rx_status *rx_status, |
711 | u8 *pdesc, struct sk_buff *skb); | 711 | u8 *pdesc, struct sk_buff *skb); |
712 | void rtl8723ae_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val); | 712 | void rtl8723ae_set_desc(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
713 | u8 desc_name, u8 *val); | ||
713 | u32 rtl8723ae_get_desc(u8 *pdesc, bool istx, u8 desc_name); | 714 | u32 rtl8723ae_get_desc(u8 *pdesc, bool istx, u8 desc_name); |
714 | void rtl8723ae_tx_polling(struct ieee80211_hw *hw, u8 hw_queue); | 715 | void rtl8723ae_tx_polling(struct ieee80211_hw *hw, u8 hw_queue); |
715 | void rtl8723ae_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, | 716 | void rtl8723ae_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, |
diff --git a/drivers/net/wireless/rtlwifi/rtl8723be/trx.c b/drivers/net/wireless/rtlwifi/rtl8723be/trx.c index 7779531919fb..74a75dceab08 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723be/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8723be/trx.c | |||
@@ -639,7 +639,7 @@ bool rtl8723be_rx_query_desc(struct ieee80211_hw *hw, | |||
639 | 639 | ||
640 | void rtl8723be_tx_fill_desc(struct ieee80211_hw *hw, | 640 | void rtl8723be_tx_fill_desc(struct ieee80211_hw *hw, |
641 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, | 641 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, |
642 | struct ieee80211_tx_info *info, | 642 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
643 | struct ieee80211_sta *sta, struct sk_buff *skb, | 643 | struct ieee80211_sta *sta, struct sk_buff *skb, |
644 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc) | 644 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc) |
645 | { | 645 | { |
@@ -858,7 +858,8 @@ void rtl8723be_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, | |||
858 | SET_TX_DESC_USE_RATE(pdesc, 1); | 858 | SET_TX_DESC_USE_RATE(pdesc, 1); |
859 | } | 859 | } |
860 | 860 | ||
861 | void rtl8723be_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val) | 861 | void rtl8723be_set_desc(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
862 | u8 desc_name, u8 *val) | ||
862 | { | 863 | { |
863 | if (istx) { | 864 | if (istx) { |
864 | switch (desc_name) { | 865 | switch (desc_name) { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8723be/trx.h b/drivers/net/wireless/rtlwifi/rtl8723be/trx.h index d375cf01c3dc..102f33dcc988 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723be/trx.h +++ b/drivers/net/wireless/rtlwifi/rtl8723be/trx.h | |||
@@ -597,15 +597,16 @@ struct rx_desc_8723be { | |||
597 | } __packed; | 597 | } __packed; |
598 | 598 | ||
599 | void rtl8723be_tx_fill_desc(struct ieee80211_hw *hw, | 599 | void rtl8723be_tx_fill_desc(struct ieee80211_hw *hw, |
600 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, | 600 | struct ieee80211_hdr *hdr, u8 *pdesc, |
601 | struct ieee80211_tx_info *info, | 601 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
602 | struct ieee80211_sta *sta, struct sk_buff *skb, | 602 | struct ieee80211_sta *sta, struct sk_buff *skb, |
603 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc); | 603 | u8 hw_queue, struct rtl_tcb_desc *ptcb_desc); |
604 | bool rtl8723be_rx_query_desc(struct ieee80211_hw *hw, | 604 | bool rtl8723be_rx_query_desc(struct ieee80211_hw *hw, |
605 | struct rtl_stats *status, | 605 | struct rtl_stats *status, |
606 | struct ieee80211_rx_status *rx_status, | 606 | struct ieee80211_rx_status *rx_status, |
607 | u8 *pdesc, struct sk_buff *skb); | 607 | u8 *pdesc, struct sk_buff *skb); |
608 | void rtl8723be_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val); | 608 | void rtl8723be_set_desc(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
609 | u8 desc_name, u8 *val); | ||
609 | u32 rtl8723be_get_desc(u8 *pdesc, bool istx, u8 desc_name); | 610 | u32 rtl8723be_get_desc(u8 *pdesc, bool istx, u8 desc_name); |
610 | bool rtl8723be_is_tx_desc_closed(struct ieee80211_hw *hw, | 611 | bool rtl8723be_is_tx_desc_closed(struct ieee80211_hw *hw, |
611 | u8 hw_queue, u16 index); | 612 | u8 hw_queue, u16 index); |
diff --git a/drivers/net/wireless/rtlwifi/usb.c b/drivers/net/wireless/rtlwifi/usb.c index 4e2a726cdb16..0398d3ea15b0 100644 --- a/drivers/net/wireless/rtlwifi/usb.c +++ b/drivers/net/wireless/rtlwifi/usb.c | |||
@@ -994,7 +994,7 @@ static void _rtl_usb_tx_preprocess(struct ieee80211_hw *hw, | |||
994 | seq_number += 1; | 994 | seq_number += 1; |
995 | seq_number <<= 4; | 995 | seq_number <<= 4; |
996 | } | 996 | } |
997 | rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *)pdesc, info, sta, skb, | 997 | rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *)pdesc, NULL, info, sta, skb, |
998 | hw_queue, &tcb_desc); | 998 | hw_queue, &tcb_desc); |
999 | if (!ieee80211_has_morefrags(hdr->frame_control)) { | 999 | if (!ieee80211_has_morefrags(hdr->frame_control)) { |
1000 | if (qc) | 1000 | if (qc) |
diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h index 2304c7f23361..5cb799e6bd08 100644 --- a/drivers/net/wireless/rtlwifi/wifi.h +++ b/drivers/net/wireless/rtlwifi/wifi.h | |||
@@ -41,6 +41,22 @@ | |||
41 | #include <linux/completion.h> | 41 | #include <linux/completion.h> |
42 | #include "debug.h" | 42 | #include "debug.h" |
43 | 43 | ||
44 | #define MASKBYTE0 0xff | ||
45 | #define MASKBYTE1 0xff00 | ||
46 | #define MASKBYTE2 0xff0000 | ||
47 | #define MASKBYTE3 0xff000000 | ||
48 | #define MASKHWORD 0xffff0000 | ||
49 | #define MASKLWORD 0x0000ffff | ||
50 | #define MASKDWORD 0xffffffff | ||
51 | #define MASK12BITS 0xfff | ||
52 | #define MASKH4BITS 0xf0000000 | ||
53 | #define MASKOFDM_D 0xffc00000 | ||
54 | #define MASKCCK 0x3f3f3f3f | ||
55 | |||
56 | #define MASK4BITS 0x0f | ||
57 | #define MASK20BITS 0xfffff | ||
58 | #define RFREG_OFFSET_MASK 0xfffff | ||
59 | |||
44 | #define RF_CHANGE_BY_INIT 0 | 60 | #define RF_CHANGE_BY_INIT 0 |
45 | #define RF_CHANGE_BY_IPS BIT(28) | 61 | #define RF_CHANGE_BY_IPS BIT(28) |
46 | #define RF_CHANGE_BY_PS BIT(29) | 62 | #define RF_CHANGE_BY_PS BIT(29) |
@@ -87,7 +103,18 @@ | |||
87 | #define MAC80211_4ADDR_LEN 30 | 103 | #define MAC80211_4ADDR_LEN 30 |
88 | 104 | ||
89 | #define CHANNEL_MAX_NUMBER (14 + 24 + 21) /* 14 is the max channel no */ | 105 | #define CHANNEL_MAX_NUMBER (14 + 24 + 21) /* 14 is the max channel no */ |
106 | #define CHANNEL_MAX_NUMBER_2G 14 | ||
107 | #define CHANNEL_MAX_NUMBER_5G 54 /* Please refer to | ||
108 | *"phy_GetChnlGroup8812A" and | ||
109 | * "Hal_ReadTxPowerInfo8812A" | ||
110 | */ | ||
111 | #define CHANNEL_MAX_NUMBER_5G_80M 7 | ||
90 | #define CHANNEL_GROUP_MAX (3 + 9) /* ch1~3, 4~9, 10~14 = three groups */ | 112 | #define CHANNEL_GROUP_MAX (3 + 9) /* ch1~3, 4~9, 10~14 = three groups */ |
113 | #define CHANNEL_MAX_NUMBER_5G 54 /* Please refer to | ||
114 | *"phy_GetChnlGroup8812A" and | ||
115 | * "Hal_ReadTxPowerInfo8812A" | ||
116 | */ | ||
117 | #define CHANNEL_MAX_NUMBER_5G_80M 7 | ||
91 | #define MAX_PG_GROUP 13 | 118 | #define MAX_PG_GROUP 13 |
92 | #define CHANNEL_GROUP_MAX_2G 3 | 119 | #define CHANNEL_GROUP_MAX_2G 3 |
93 | #define CHANNEL_GROUP_IDX_5GL 3 | 120 | #define CHANNEL_GROUP_IDX_5GL 3 |
@@ -115,6 +142,11 @@ | |||
115 | #define MAX_BASE_NUM_IN_PHY_REG_PG_24G 6 | 142 | #define MAX_BASE_NUM_IN_PHY_REG_PG_24G 6 |
116 | #define MAX_BASE_NUM_IN_PHY_REG_PG_5G 5 | 143 | #define MAX_BASE_NUM_IN_PHY_REG_PG_5G 5 |
117 | 144 | ||
145 | #define RTL8192EE_SEG_NUM 1 /* 0:2 seg, 1: 4 seg, 2: 8 seg */ | ||
146 | |||
147 | #define DEL_SW_IDX_SZ 30 | ||
148 | #define BAND_NUM 3 | ||
149 | |||
118 | enum rf_tx_num { | 150 | enum rf_tx_num { |
119 | RF_1TX = 0, | 151 | RF_1TX = 0, |
120 | RF_2TX, | 152 | RF_2TX, |
@@ -140,6 +172,8 @@ struct txpower_info_5g { | |||
140 | u8 ofdm_diff[MAX_RF_PATH][MAX_TX_COUNT]; | 172 | u8 ofdm_diff[MAX_RF_PATH][MAX_TX_COUNT]; |
141 | u8 bw20_diff[MAX_RF_PATH][MAX_TX_COUNT]; | 173 | u8 bw20_diff[MAX_RF_PATH][MAX_TX_COUNT]; |
142 | u8 bw40_diff[MAX_RF_PATH][MAX_TX_COUNT]; | 174 | u8 bw40_diff[MAX_RF_PATH][MAX_TX_COUNT]; |
175 | u8 bw80_diff[MAX_RF_PATH][MAX_TX_COUNT]; | ||
176 | u8 bw160_diff[MAX_RF_PATH][MAX_TX_COUNT]; | ||
143 | }; | 177 | }; |
144 | 178 | ||
145 | enum rate_section { | 179 | enum rate_section { |
@@ -186,6 +220,8 @@ enum hardware_type { | |||
186 | HARDWARE_TYPE_RTL8723U, | 220 | HARDWARE_TYPE_RTL8723U, |
187 | HARDWARE_TYPE_RTL8723BE, | 221 | HARDWARE_TYPE_RTL8723BE, |
188 | HARDWARE_TYPE_RTL8188EE, | 222 | HARDWARE_TYPE_RTL8188EE, |
223 | HARDWARE_TYPE_RTL8821AE, | ||
224 | HARDWARE_TYPE_RTL8812AE, | ||
189 | 225 | ||
190 | /* keep it last */ | 226 | /* keep it last */ |
191 | HARDWARE_TYPE_NUM | 227 | HARDWARE_TYPE_NUM |
@@ -230,6 +266,8 @@ enum hardware_type { | |||
230 | 266 | ||
231 | enum scan_operation_backup_opt { | 267 | enum scan_operation_backup_opt { |
232 | SCAN_OPT_BACKUP = 0, | 268 | SCAN_OPT_BACKUP = 0, |
269 | SCAN_OPT_BACKUP_BAND0 = 0, | ||
270 | SCAN_OPT_BACKUP_BAND1, | ||
233 | SCAN_OPT_RESTORE, | 271 | SCAN_OPT_RESTORE, |
234 | SCAN_OPT_MAX | 272 | SCAN_OPT_MAX |
235 | }; | 273 | }; |
@@ -264,7 +302,9 @@ struct bb_reg_def { | |||
264 | 302 | ||
265 | enum io_type { | 303 | enum io_type { |
266 | IO_CMD_PAUSE_DM_BY_SCAN = 0, | 304 | IO_CMD_PAUSE_DM_BY_SCAN = 0, |
267 | IO_CMD_RESUME_DM_BY_SCAN = 1, | 305 | IO_CMD_PAUSE_BAND0_DM_BY_SCAN = 0, |
306 | IO_CMD_PAUSE_BAND1_DM_BY_SCAN = 1, | ||
307 | IO_CMD_RESUME_DM_BY_SCAN = 2, | ||
268 | }; | 308 | }; |
269 | 309 | ||
270 | enum hw_variables { | 310 | enum hw_variables { |
@@ -331,6 +371,7 @@ enum hw_variables { | |||
331 | HW_VAR_SET_RPWM, | 371 | HW_VAR_SET_RPWM, |
332 | HW_VAR_H2C_FW_PWRMODE, | 372 | HW_VAR_H2C_FW_PWRMODE, |
333 | HW_VAR_H2C_FW_JOINBSSRPT, | 373 | HW_VAR_H2C_FW_JOINBSSRPT, |
374 | HW_VAR_H2C_FW_MEDIASTATUSRPT, | ||
334 | HW_VAR_H2C_FW_P2P_PS_OFFLOAD, | 375 | HW_VAR_H2C_FW_P2P_PS_OFFLOAD, |
335 | HW_VAR_FW_PSMODE_STATUS, | 376 | HW_VAR_FW_PSMODE_STATUS, |
336 | HW_VAR_RESUME_CLK_ON, | 377 | HW_VAR_RESUME_CLK_ON, |
@@ -364,6 +405,7 @@ enum hw_variables { | |||
364 | HAL_DEF_WOWLAN, | 405 | HAL_DEF_WOWLAN, |
365 | HW_VAR_MRC, | 406 | HW_VAR_MRC, |
366 | HW_VAR_KEEP_ALIVE, | 407 | HW_VAR_KEEP_ALIVE, |
408 | HW_VAR_NAV_UPPER, | ||
367 | 409 | ||
368 | HW_VAR_MGT_FILTER, | 410 | HW_VAR_MGT_FILTER, |
369 | HW_VAR_CTRL_FILTER, | 411 | HW_VAR_CTRL_FILTER, |
@@ -423,6 +465,7 @@ enum hw_descs { | |||
423 | HW_DESC_RXBUFF_ADDR, | 465 | HW_DESC_RXBUFF_ADDR, |
424 | HW_DESC_RXPKT_LEN, | 466 | HW_DESC_RXPKT_LEN, |
425 | HW_DESC_RXERO, | 467 | HW_DESC_RXERO, |
468 | HW_DESC_RX_PREPARE, | ||
426 | }; | 469 | }; |
427 | 470 | ||
428 | enum prime_sc { | 471 | enum prime_sc { |
@@ -441,6 +484,7 @@ enum rf_type { | |||
441 | enum ht_channel_width { | 484 | enum ht_channel_width { |
442 | HT_CHANNEL_WIDTH_20 = 0, | 485 | HT_CHANNEL_WIDTH_20 = 0, |
443 | HT_CHANNEL_WIDTH_20_40 = 1, | 486 | HT_CHANNEL_WIDTH_20_40 = 1, |
487 | HT_CHANNEL_WIDTH_80 = 2, | ||
444 | }; | 488 | }; |
445 | 489 | ||
446 | /* Ref: 802.11i sepc D10.0 7.3.2.25.1 | 490 | /* Ref: 802.11i sepc D10.0 7.3.2.25.1 |
@@ -505,6 +549,9 @@ enum rtl_var_map { | |||
505 | MAC_RCR_ACRC32, | 549 | MAC_RCR_ACRC32, |
506 | MAC_RCR_ACF, | 550 | MAC_RCR_ACF, |
507 | MAC_RCR_AAP, | 551 | MAC_RCR_AAP, |
552 | MAC_HIMR, | ||
553 | MAC_HIMRE, | ||
554 | MAC_HSISR, | ||
508 | 555 | ||
509 | /*efuse map */ | 556 | /*efuse map */ |
510 | EFUSE_TEST, | 557 | EFUSE_TEST, |
@@ -679,7 +726,9 @@ enum wireless_mode { | |||
679 | WIRELESS_MODE_G = 0x04, | 726 | WIRELESS_MODE_G = 0x04, |
680 | WIRELESS_MODE_AUTO = 0x08, | 727 | WIRELESS_MODE_AUTO = 0x08, |
681 | WIRELESS_MODE_N_24G = 0x10, | 728 | WIRELESS_MODE_N_24G = 0x10, |
682 | WIRELESS_MODE_N_5G = 0x20 | 729 | WIRELESS_MODE_N_5G = 0x20, |
730 | WIRELESS_MODE_AC_5G = 0x40, | ||
731 | WIRELESS_MODE_AC_24G = 0x80 | ||
683 | }; | 732 | }; |
684 | 733 | ||
685 | #define IS_WIRELESS_MODE_A(wirelessmode) \ | 734 | #define IS_WIRELESS_MODE_A(wirelessmode) \ |
@@ -703,6 +752,8 @@ enum ratr_table_mode { | |||
703 | RATR_INX_WIRELESS_B = 6, | 752 | RATR_INX_WIRELESS_B = 6, |
704 | RATR_INX_WIRELESS_MC = 7, | 753 | RATR_INX_WIRELESS_MC = 7, |
705 | RATR_INX_WIRELESS_A = 8, | 754 | RATR_INX_WIRELESS_A = 8, |
755 | RATR_INX_WIRELESS_AC_5N = 8, | ||
756 | RATR_INX_WIRELESS_AC_24N = 9, | ||
706 | }; | 757 | }; |
707 | 758 | ||
708 | enum rtl_link_state { | 759 | enum rtl_link_state { |
@@ -837,8 +888,12 @@ struct wireless_stats { | |||
837 | long signal_strength; | 888 | long signal_strength; |
838 | 889 | ||
839 | u8 rx_rssi_percentage[4]; | 890 | u8 rx_rssi_percentage[4]; |
891 | u8 rx_evm_dbm[4]; | ||
840 | u8 rx_evm_percentage[2]; | 892 | u8 rx_evm_percentage[2]; |
841 | 893 | ||
894 | u16 rx_cfo_short[4]; | ||
895 | u16 rx_cfo_tail[4]; | ||
896 | |||
842 | struct rt_smooth_data ui_rssi; | 897 | struct rt_smooth_data ui_rssi; |
843 | struct rt_smooth_data ui_link_quality; | 898 | struct rt_smooth_data ui_link_quality; |
844 | }; | 899 | }; |
@@ -867,6 +922,10 @@ struct rate_adaptive { | |||
867 | u32 ping_rssi_thresh_for_ra; | 922 | u32 ping_rssi_thresh_for_ra; |
868 | u32 last_ratr; | 923 | u32 last_ratr; |
869 | u8 pre_ratr_state; | 924 | u8 pre_ratr_state; |
925 | u8 ldpc_thres; | ||
926 | bool use_ldpc; | ||
927 | bool lower_rts_rate; | ||
928 | bool is_special_data; | ||
870 | }; | 929 | }; |
871 | 930 | ||
872 | struct regd_pair_mapping { | 931 | struct regd_pair_mapping { |
@@ -875,6 +934,16 @@ struct regd_pair_mapping { | |||
875 | u16 reg_2ghz_ctl; | 934 | u16 reg_2ghz_ctl; |
876 | }; | 935 | }; |
877 | 936 | ||
937 | struct dynamic_primary_cca { | ||
938 | u8 pricca_flag; | ||
939 | u8 intf_flag; | ||
940 | u8 intf_type; | ||
941 | u8 dup_rts_flag; | ||
942 | u8 monitor_flag; | ||
943 | u8 ch_offset; | ||
944 | u8 mf_state; | ||
945 | }; | ||
946 | |||
878 | struct rtl_regulatory { | 947 | struct rtl_regulatory { |
879 | char alpha2[2]; | 948 | char alpha2[2]; |
880 | u16 country_code; | 949 | u16 country_code; |
@@ -1010,11 +1079,14 @@ struct rtl_phy { | |||
1010 | u32 iqk_bb_backup[10]; | 1079 | u32 iqk_bb_backup[10]; |
1011 | bool iqk_initialized; | 1080 | bool iqk_initialized; |
1012 | 1081 | ||
1082 | bool rfpath_rx_enable[MAX_RF_PATH]; | ||
1083 | u8 reg_837; | ||
1013 | /* Dual mac */ | 1084 | /* Dual mac */ |
1014 | bool need_iqk; | 1085 | bool need_iqk; |
1015 | struct iqk_matrix_regs iqk_matrix[IQK_MATRIX_SETTINGS_NUM]; | 1086 | struct iqk_matrix_regs iqk_matrix[IQK_MATRIX_SETTINGS_NUM]; |
1016 | 1087 | ||
1017 | bool rfpi_enable; | 1088 | bool rfpi_enable; |
1089 | bool iqk_in_progress; | ||
1018 | 1090 | ||
1019 | u8 pwrgroup_cnt; | 1091 | u8 pwrgroup_cnt; |
1020 | u8 cck_high_power; | 1092 | u8 cck_high_power; |
@@ -1027,6 +1099,9 @@ struct rtl_phy { | |||
1027 | u8 txpwr_by_rate_base_24g[TX_PWR_BY_RATE_NUM_RF] | 1099 | u8 txpwr_by_rate_base_24g[TX_PWR_BY_RATE_NUM_RF] |
1028 | [TX_PWR_BY_RATE_NUM_RF] | 1100 | [TX_PWR_BY_RATE_NUM_RF] |
1029 | [MAX_BASE_NUM_IN_PHY_REG_PG_24G]; | 1101 | [MAX_BASE_NUM_IN_PHY_REG_PG_24G]; |
1102 | u8 txpwr_by_rate_base_5g[TX_PWR_BY_RATE_NUM_RF] | ||
1103 | [TX_PWR_BY_RATE_NUM_RF] | ||
1104 | [MAX_BASE_NUM_IN_PHY_REG_PG_5G]; | ||
1030 | u8 default_initialgain[4]; | 1105 | u8 default_initialgain[4]; |
1031 | 1106 | ||
1032 | /* the current Tx power level */ | 1107 | /* the current Tx power level */ |
@@ -1039,6 +1114,7 @@ struct rtl_phy { | |||
1039 | bool apk_done; | 1114 | bool apk_done; |
1040 | u32 reg_rf3c[2]; /* pathA / pathB */ | 1115 | u32 reg_rf3c[2]; /* pathA / pathB */ |
1041 | 1116 | ||
1117 | u32 backup_rf_0x1a;/*92ee*/ | ||
1042 | /* bfsync */ | 1118 | /* bfsync */ |
1043 | u8 framesync; | 1119 | u8 framesync; |
1044 | u32 framesync_c34; | 1120 | u32 framesync_c34; |
@@ -1047,6 +1123,7 @@ struct rtl_phy { | |||
1047 | struct phy_parameters hwparam_tables[MAX_TAB]; | 1123 | struct phy_parameters hwparam_tables[MAX_TAB]; |
1048 | u16 rf_pathmap; | 1124 | u16 rf_pathmap; |
1049 | 1125 | ||
1126 | u8 hw_rof_enable; /*Enable GPIO[9] as WL RF HW PDn source*/ | ||
1050 | enum rt_polarity_ctl polarity_ctl; | 1127 | enum rt_polarity_ctl polarity_ctl; |
1051 | }; | 1128 | }; |
1052 | 1129 | ||
@@ -1174,6 +1251,7 @@ struct rtl_mac { | |||
1174 | u8 use_cts_protect; | 1251 | u8 use_cts_protect; |
1175 | u8 cur_40_prime_sc; | 1252 | u8 cur_40_prime_sc; |
1176 | u8 cur_40_prime_sc_bk; | 1253 | u8 cur_40_prime_sc_bk; |
1254 | u8 cur_80_prime_sc; | ||
1177 | u64 tsf; | 1255 | u64 tsf; |
1178 | u8 retry_short; | 1256 | u8 retry_short; |
1179 | u8 retry_long; | 1257 | u8 retry_long; |
@@ -1276,6 +1354,7 @@ struct rtl_hal { | |||
1276 | /*Reserve page start offset except beacon in TxQ. */ | 1354 | /*Reserve page start offset except beacon in TxQ. */ |
1277 | u8 fw_rsvdpage_startoffset; | 1355 | u8 fw_rsvdpage_startoffset; |
1278 | u8 h2c_txcmd_seq; | 1356 | u8 h2c_txcmd_seq; |
1357 | u8 current_ra_rate; | ||
1279 | 1358 | ||
1280 | /* FW Cmd IO related */ | 1359 | /* FW Cmd IO related */ |
1281 | u16 fwcmd_iomap; | 1360 | u16 fwcmd_iomap; |
@@ -1315,6 +1394,9 @@ struct rtl_hal { | |||
1315 | bool disable_amsdu_8k; | 1394 | bool disable_amsdu_8k; |
1316 | bool master_of_dmsp; | 1395 | bool master_of_dmsp; |
1317 | bool slave_of_dmsp; | 1396 | bool slave_of_dmsp; |
1397 | |||
1398 | u16 rx_tag;/*for 92ee*/ | ||
1399 | u8 rts_en; | ||
1318 | }; | 1400 | }; |
1319 | 1401 | ||
1320 | struct rtl_security { | 1402 | struct rtl_security { |
@@ -1412,11 +1494,18 @@ struct rtl_dm { | |||
1412 | u8 txpower_track_control; | 1494 | u8 txpower_track_control; |
1413 | bool interrupt_migration; | 1495 | bool interrupt_migration; |
1414 | bool disable_tx_int; | 1496 | bool disable_tx_int; |
1415 | char ofdm_index[2]; | 1497 | char ofdm_index[MAX_RF_PATH]; |
1498 | u8 default_ofdm_index; | ||
1499 | u8 default_cck_index; | ||
1416 | char cck_index; | 1500 | char cck_index; |
1417 | char delta_power_index[MAX_RF_PATH]; | 1501 | char delta_power_index[MAX_RF_PATH]; |
1418 | char delta_power_index_last[MAX_RF_PATH]; | 1502 | char delta_power_index_last[MAX_RF_PATH]; |
1419 | char power_index_offset[MAX_RF_PATH]; | 1503 | char power_index_offset[MAX_RF_PATH]; |
1504 | char absolute_ofdm_swing_idx[MAX_RF_PATH]; | ||
1505 | char remnant_ofdm_swing_idx[MAX_RF_PATH]; | ||
1506 | char remnant_cck_idx; | ||
1507 | bool modify_txagc_flag_path_a; | ||
1508 | bool modify_txagc_flag_path_b; | ||
1420 | 1509 | ||
1421 | bool one_entry_only; | 1510 | bool one_entry_only; |
1422 | struct dm_phy_dbg_info dbginfo; | 1511 | struct dm_phy_dbg_info dbginfo; |
@@ -1431,9 +1520,10 @@ struct rtl_dm { | |||
1431 | u8 cfo_threshold; | 1520 | u8 cfo_threshold; |
1432 | u32 packet_count; | 1521 | u32 packet_count; |
1433 | u32 packet_count_pre; | 1522 | u32 packet_count_pre; |
1523 | u8 tx_rate; | ||
1434 | 1524 | ||
1435 | /*88e tx power tracking*/ | 1525 | /*88e tx power tracking*/ |
1436 | u8 swing_idx_ofdm[2]; | 1526 | u8 swing_idx_ofdm[MAX_RF_PATH]; |
1437 | u8 swing_idx_ofdm_cur; | 1527 | u8 swing_idx_ofdm_cur; |
1438 | u8 swing_idx_ofdm_base[MAX_RF_PATH]; | 1528 | u8 swing_idx_ofdm_base[MAX_RF_PATH]; |
1439 | bool swing_flag_ofdm; | 1529 | bool swing_flag_ofdm; |
@@ -1442,10 +1532,43 @@ struct rtl_dm { | |||
1442 | u8 swing_idx_cck_base; | 1532 | u8 swing_idx_cck_base; |
1443 | bool swing_flag_cck; | 1533 | bool swing_flag_cck; |
1444 | 1534 | ||
1535 | char swing_diff_2g; | ||
1536 | char swing_diff_5g; | ||
1537 | |||
1538 | u8 delta_swing_table_idx_24gccka_p[DEL_SW_IDX_SZ]; | ||
1539 | u8 delta_swing_table_idx_24gccka_n[DEL_SW_IDX_SZ]; | ||
1540 | u8 delta_swing_table_idx_24gcckb_p[DEL_SW_IDX_SZ]; | ||
1541 | u8 delta_swing_table_idx_24gcckb_n[DEL_SW_IDX_SZ]; | ||
1542 | u8 delta_swing_table_idx_24ga_p[DEL_SW_IDX_SZ]; | ||
1543 | u8 delta_swing_table_idx_24ga_n[DEL_SW_IDX_SZ]; | ||
1544 | u8 delta_swing_table_idx_24gb_p[DEL_SW_IDX_SZ]; | ||
1545 | u8 delta_swing_table_idx_24gb_n[DEL_SW_IDX_SZ]; | ||
1546 | u8 delta_swing_table_idx_5ga_p[BAND_NUM][DEL_SW_IDX_SZ]; | ||
1547 | u8 delta_swing_table_idx_5ga_n[BAND_NUM][DEL_SW_IDX_SZ]; | ||
1548 | u8 delta_swing_table_idx_5gb_p[BAND_NUM][DEL_SW_IDX_SZ]; | ||
1549 | u8 delta_swing_table_idx_5gb_n[BAND_NUM][DEL_SW_IDX_SZ]; | ||
1550 | u8 delta_swing_table_idx_24ga_p_8188e[DEL_SW_IDX_SZ]; | ||
1551 | u8 delta_swing_table_idx_24ga_n_8188e[DEL_SW_IDX_SZ]; | ||
1552 | |||
1445 | /* DMSP */ | 1553 | /* DMSP */ |
1446 | bool supp_phymode_switch; | 1554 | bool supp_phymode_switch; |
1447 | 1555 | ||
1556 | /* DulMac */ | ||
1448 | struct fast_ant_training fat_table; | 1557 | struct fast_ant_training fat_table; |
1558 | |||
1559 | u8 resp_tx_path; | ||
1560 | u8 path_sel; | ||
1561 | u32 patha_sum; | ||
1562 | u32 pathb_sum; | ||
1563 | u32 patha_cnt; | ||
1564 | u32 pathb_cnt; | ||
1565 | |||
1566 | u8 pre_channel; | ||
1567 | u8 *p_channel; | ||
1568 | u8 linked_interval; | ||
1569 | |||
1570 | u64 last_tx_ok_cnt; | ||
1571 | u64 last_rx_ok_cnt; | ||
1449 | }; | 1572 | }; |
1450 | 1573 | ||
1451 | #define EFUSE_MAX_LOGICAL_SIZE 256 | 1574 | #define EFUSE_MAX_LOGICAL_SIZE 256 |
@@ -1491,11 +1614,6 @@ struct rtl_efuse { | |||
1491 | u8 eeprom_chnlarea_txpwr_cck[MAX_RF_PATH][CHANNEL_GROUP_MAX_2G]; | 1614 | u8 eeprom_chnlarea_txpwr_cck[MAX_RF_PATH][CHANNEL_GROUP_MAX_2G]; |
1492 | u8 eeprom_chnlarea_txpwr_ht40_1s[MAX_RF_PATH][CHANNEL_GROUP_MAX]; | 1615 | u8 eeprom_chnlarea_txpwr_ht40_1s[MAX_RF_PATH][CHANNEL_GROUP_MAX]; |
1493 | u8 eprom_chnl_txpwr_ht40_2sdf[MAX_RF_PATH][CHANNEL_GROUP_MAX]; | 1616 | u8 eprom_chnl_txpwr_ht40_2sdf[MAX_RF_PATH][CHANNEL_GROUP_MAX]; |
1494 | u8 txpwrlevel_cck[2][CHANNEL_MAX_NUMBER_2G]; | ||
1495 | /* For HT 40MHZ pwr */ | ||
1496 | u8 txpwrlevel_ht40_1s[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; | ||
1497 | u8 txpwrlevel_ht40_2s[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; | ||
1498 | u8 txpwr_ht40diff[MAX_RF_PATH][MAX_TX_COUNT];/*BW40_24G_Diff*/ | ||
1499 | 1617 | ||
1500 | u8 internal_pa_5g[2]; /* pathA / pathB */ | 1618 | u8 internal_pa_5g[2]; /* pathA / pathB */ |
1501 | u8 eeprom_c9; | 1619 | u8 eeprom_c9; |
@@ -1506,9 +1624,38 @@ struct rtl_efuse { | |||
1506 | u8 pwrgroup_ht20[2][CHANNEL_MAX_NUMBER]; | 1624 | u8 pwrgroup_ht20[2][CHANNEL_MAX_NUMBER]; |
1507 | u8 pwrgroup_ht40[2][CHANNEL_MAX_NUMBER]; | 1625 | u8 pwrgroup_ht40[2][CHANNEL_MAX_NUMBER]; |
1508 | 1626 | ||
1509 | char txpwr_ht20diff[2][CHANNEL_MAX_NUMBER]; /*HT 20<->40 Pwr diff */ | 1627 | u8 txpwrlevel_cck[MAX_RF_PATH][CHANNEL_MAX_NUMBER_2G]; |
1510 | /*For HT<->legacy pwr diff*/ | 1628 | /*For HT 40MHZ pwr */ |
1511 | u8 txpwr_legacyhtdiff[2][CHANNEL_MAX_NUMBER]; | 1629 | u8 txpwrlevel_ht40_1s[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; |
1630 | /*For HT 40MHZ pwr */ | ||
1631 | u8 txpwrlevel_ht40_2s[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; | ||
1632 | |||
1633 | /*--------------------------------------------------------* | ||
1634 | * 8192CE\8192SE\8192DE\8723AE use the following 4 arrays, | ||
1635 | * other ICs (8188EE\8723BE\8192EE\8812AE...) | ||
1636 | * define new arrays in Windows code. | ||
1637 | * BUT, in linux code, we use the same array for all ICs. | ||
1638 | * | ||
1639 | * The Correspondance relation between two arrays is: | ||
1640 | * txpwr_cckdiff[][] == CCK_24G_Diff[][] | ||
1641 | * txpwr_ht20diff[][] == BW20_24G_Diff[][] | ||
1642 | * txpwr_ht40diff[][] == BW40_24G_Diff[][] | ||
1643 | * txpwr_legacyhtdiff[][] == OFDM_24G_Diff[][] | ||
1644 | * | ||
1645 | * Sizes of these arrays are decided by the larger ones. | ||
1646 | */ | ||
1647 | char txpwr_cckdiff[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; | ||
1648 | char txpwr_ht20diff[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; | ||
1649 | char txpwr_ht40diff[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; | ||
1650 | char txpwr_legacyhtdiff[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; | ||
1651 | |||
1652 | u8 txpwr_5g_bw40base[MAX_RF_PATH][CHANNEL_MAX_NUMBER]; | ||
1653 | u8 txpwr_5g_bw80base[MAX_RF_PATH][CHANNEL_MAX_NUMBER_5G_80M]; | ||
1654 | char txpwr_5g_ofdmdiff[MAX_RF_PATH][MAX_TX_COUNT]; | ||
1655 | char txpwr_5g_bw20diff[MAX_RF_PATH][MAX_TX_COUNT]; | ||
1656 | char txpwr_5g_bw40diff[MAX_RF_PATH][MAX_TX_COUNT]; | ||
1657 | char txpwr_5g_bw80diff[MAX_RF_PATH][MAX_TX_COUNT]; | ||
1658 | |||
1512 | u8 txpwr_safetyflag; /* Band edge enable flag */ | 1659 | u8 txpwr_safetyflag; /* Band edge enable flag */ |
1513 | u16 eeprom_txpowerdiff; | 1660 | u16 eeprom_txpowerdiff; |
1514 | u8 legacy_httxpowerdiff; /* Legacy to HT rate power diff */ | 1661 | u8 legacy_httxpowerdiff; /* Legacy to HT rate power diff */ |
@@ -1639,7 +1786,9 @@ struct rtl_stats { | |||
1639 | bool rx_is40Mhzpacket; | 1786 | bool rx_is40Mhzpacket; |
1640 | u32 rx_pwdb_all; | 1787 | u32 rx_pwdb_all; |
1641 | u8 rx_mimo_signalstrength[4]; /*in 0~100 index */ | 1788 | u8 rx_mimo_signalstrength[4]; /*in 0~100 index */ |
1642 | s8 rx_mimo_sig_qual[2]; | 1789 | s8 rx_mimo_sig_qual[4]; |
1790 | u8 rx_pwr[4]; /* per-path's pwdb */ | ||
1791 | u8 rx_snr[4]; /* per-path's SNR */ | ||
1643 | bool packet_matchbssid; | 1792 | bool packet_matchbssid; |
1644 | bool is_cck; | 1793 | bool is_cck; |
1645 | bool is_ht; | 1794 | bool is_ht; |
@@ -1743,9 +1892,17 @@ struct rtl_hal_ops { | |||
1743 | void (*set_hw_reg) (struct ieee80211_hw *hw, u8 variable, u8 *val); | 1892 | void (*set_hw_reg) (struct ieee80211_hw *hw, u8 variable, u8 *val); |
1744 | void (*update_rate_tbl) (struct ieee80211_hw *hw, | 1893 | void (*update_rate_tbl) (struct ieee80211_hw *hw, |
1745 | struct ieee80211_sta *sta, u8 rssi_level); | 1894 | struct ieee80211_sta *sta, u8 rssi_level); |
1895 | void (*pre_fill_tx_bd_desc)(struct ieee80211_hw *hw, u8 *tx_bd_desc, | ||
1896 | u8 *desc, u8 queue_index, | ||
1897 | struct sk_buff *skb, dma_addr_t addr); | ||
1746 | void (*update_rate_mask) (struct ieee80211_hw *hw, u8 rssi_level); | 1898 | void (*update_rate_mask) (struct ieee80211_hw *hw, u8 rssi_level); |
1899 | u16 (*rx_desc_buff_remained_cnt)(struct ieee80211_hw *hw, | ||
1900 | u8 queue_index); | ||
1901 | void (*rx_check_dma_ok)(struct ieee80211_hw *hw, u8 *header_desc, | ||
1902 | u8 queue_index); | ||
1747 | void (*fill_tx_desc) (struct ieee80211_hw *hw, | 1903 | void (*fill_tx_desc) (struct ieee80211_hw *hw, |
1748 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, | 1904 | struct ieee80211_hdr *hdr, u8 *pdesc_tx, |
1905 | u8 *pbd_desc_tx, | ||
1749 | struct ieee80211_tx_info *info, | 1906 | struct ieee80211_tx_info *info, |
1750 | struct ieee80211_sta *sta, | 1907 | struct ieee80211_sta *sta, |
1751 | struct sk_buff *skb, u8 hw_queue, | 1908 | struct sk_buff *skb, u8 hw_queue, |
@@ -1768,7 +1925,8 @@ struct rtl_hal_ops { | |||
1768 | enum rf_pwrstate rfpwr_state); | 1925 | enum rf_pwrstate rfpwr_state); |
1769 | void (*led_control) (struct ieee80211_hw *hw, | 1926 | void (*led_control) (struct ieee80211_hw *hw, |
1770 | enum led_ctl_mode ledaction); | 1927 | enum led_ctl_mode ledaction); |
1771 | void (*set_desc) (u8 *pdesc, bool istx, u8 desc_name, u8 *val); | 1928 | void (*set_desc)(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
1929 | u8 desc_name, u8 *val); | ||
1772 | u32 (*get_desc) (u8 *pdesc, bool istx, u8 desc_name); | 1930 | u32 (*get_desc) (u8 *pdesc, bool istx, u8 desc_name); |
1773 | bool (*is_tx_desc_closed) (struct ieee80211_hw *hw, | 1931 | bool (*is_tx_desc_closed) (struct ieee80211_hw *hw, |
1774 | u8 hw_queue, u16 index); | 1932 | u8 hw_queue, u16 index); |
@@ -1812,6 +1970,8 @@ struct rtl_hal_ops { | |||
1812 | u32 cmd_len, u8 *p_cmdbuffer); | 1970 | u32 cmd_len, u8 *p_cmdbuffer); |
1813 | bool (*get_btc_status) (void); | 1971 | bool (*get_btc_status) (void); |
1814 | bool (*is_fw_header) (struct rtl92c_firmware_header *hdr); | 1972 | bool (*is_fw_header) (struct rtl92c_firmware_header *hdr); |
1973 | u32 (*rx_command_packet)(struct ieee80211_hw *hw, | ||
1974 | struct rtl_stats status, struct sk_buff *skb); | ||
1815 | }; | 1975 | }; |
1816 | 1976 | ||
1817 | struct rtl_intf_ops { | 1977 | struct rtl_intf_ops { |
@@ -1921,6 +2081,8 @@ struct rtl_locks { | |||
1921 | 2081 | ||
1922 | /*Easy concurrent*/ | 2082 | /*Easy concurrent*/ |
1923 | spinlock_t check_sendpkt_lock; | 2083 | spinlock_t check_sendpkt_lock; |
2084 | |||
2085 | spinlock_t iqk_lock; | ||
1924 | }; | 2086 | }; |
1925 | 2087 | ||
1926 | struct rtl_works { | 2088 | struct rtl_works { |
@@ -2014,6 +2176,7 @@ struct dig_t { | |||
2014 | u8 cursta_cstate; | 2176 | u8 cursta_cstate; |
2015 | u8 presta_cstate; | 2177 | u8 presta_cstate; |
2016 | u8 curmultista_cstate; | 2178 | u8 curmultista_cstate; |
2179 | u8 stop_dig; | ||
2017 | char back_val; | 2180 | char back_val; |
2018 | char back_range_max; | 2181 | char back_range_max; |
2019 | char back_range_min; | 2182 | char back_range_min; |
@@ -2031,6 +2194,7 @@ struct dig_t { | |||
2031 | u8 cur_ccasate; | 2194 | u8 cur_ccasate; |
2032 | u8 large_fa_hit; | 2195 | u8 large_fa_hit; |
2033 | u8 dig_dynamic_min; | 2196 | u8 dig_dynamic_min; |
2197 | u8 dig_dynamic_min_1; | ||
2034 | u8 forbidden_igi; | 2198 | u8 forbidden_igi; |
2035 | u8 dig_state; | 2199 | u8 dig_state; |
2036 | u8 dig_highpwrstate; | 2200 | u8 dig_highpwrstate; |
@@ -2174,6 +2338,7 @@ struct rtl_priv { | |||
2174 | 2338 | ||
2175 | struct rtl_ps_ctl psc; | 2339 | struct rtl_ps_ctl psc; |
2176 | struct rate_adaptive ra; | 2340 | struct rate_adaptive ra; |
2341 | struct dynamic_primary_cca primarycca; | ||
2177 | struct wireless_stats stats; | 2342 | struct wireless_stats stats; |
2178 | struct rt_link_detect link_info; | 2343 | struct rt_link_detect link_info; |
2179 | struct false_alarm_statistics falsealm_cnt; | 2344 | struct false_alarm_statistics falsealm_cnt; |
@@ -2259,9 +2424,15 @@ enum bt_co_type { | |||
2259 | BT_CSR_BC8 = 4, | 2424 | BT_CSR_BC8 = 4, |
2260 | BT_RTL8756 = 5, | 2425 | BT_RTL8756 = 5, |
2261 | BT_RTL8723A = 6, | 2426 | BT_RTL8723A = 6, |
2262 | BT_RTL8821 = 7, | 2427 | BT_RTL8821A = 7, |
2263 | BT_RTL8723B = 8, | 2428 | BT_RTL8723B = 8, |
2264 | BT_RTL8192E = 9, | 2429 | BT_RTL8192E = 9, |
2430 | BT_RTL8812A = 11, | ||
2431 | }; | ||
2432 | |||
2433 | enum bt_total_ant_num { | ||
2434 | ANT_TOTAL_X2 = 0, | ||
2435 | ANT_TOTAL_X1 = 1 | ||
2265 | }; | 2436 | }; |
2266 | 2437 | ||
2267 | enum bt_cur_state { | 2438 | enum bt_cur_state { |