| .. | .. |
|---|
| 1 | | -/****************************************************************************** |
|---|
| 2 | | - * |
|---|
| 3 | | - * Copyright(c) 2009-2012 Realtek Corporation. |
|---|
| 4 | | - * |
|---|
| 5 | | - * This program is free software; you can redistribute it and/or modify it |
|---|
| 6 | | - * under the terms of version 2 of the GNU General Public License as |
|---|
| 7 | | - * published by the Free Software Foundation. |
|---|
| 8 | | - * |
|---|
| 9 | | - * This program is distributed in the hope that it will be useful, but WITHOUT |
|---|
| 10 | | - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|---|
| 11 | | - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
|---|
| 12 | | - * more details. |
|---|
| 13 | | - * |
|---|
| 14 | | - * The full GNU General Public License is included in this distribution in the |
|---|
| 15 | | - * file called LICENSE. |
|---|
| 16 | | - * |
|---|
| 17 | | - * Contact Information: |
|---|
| 18 | | - * wlanfae <wlanfae@realtek.com> |
|---|
| 19 | | - * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, |
|---|
| 20 | | - * Hsinchu 300, Taiwan. |
|---|
| 21 | | - * |
|---|
| 22 | | - * Larry Finger <Larry.Finger@lwfinger.net> |
|---|
| 23 | | - * |
|---|
| 24 | | - *****************************************************************************/ |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0 |
|---|
| 2 | +/* Copyright(c) 2009-2012 Realtek Corporation.*/ |
|---|
| 25 | 3 | |
|---|
| 26 | 4 | #include "../wifi.h" |
|---|
| 27 | 5 | #include "../pci.h" |
|---|
| .. | .. |
|---|
| 55 | 33 | } |
|---|
| 56 | 34 | |
|---|
| 57 | 35 | static void _rtl92se_query_rxphystatus(struct ieee80211_hw *hw, |
|---|
| 58 | | - struct rtl_stats *pstats, u8 *pdesc, |
|---|
| 36 | + struct rtl_stats *pstats, __le32 *pdesc, |
|---|
| 59 | 37 | struct rx_fwinfo *p_drvinfo, |
|---|
| 60 | 38 | bool packet_match_bssid, |
|---|
| 61 | 39 | bool packet_toself, |
|---|
| .. | .. |
|---|
| 215 | 193 | |
|---|
| 216 | 194 | static void _rtl92se_translate_rx_signal_stuff(struct ieee80211_hw *hw, |
|---|
| 217 | 195 | struct sk_buff *skb, struct rtl_stats *pstats, |
|---|
| 218 | | - u8 *pdesc, struct rx_fwinfo *p_drvinfo) |
|---|
| 196 | + __le32 *pdesc, struct rx_fwinfo *p_drvinfo) |
|---|
| 219 | 197 | { |
|---|
| 220 | 198 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); |
|---|
| 221 | 199 | struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); |
|---|
| 222 | | - |
|---|
| 223 | 200 | struct ieee80211_hdr *hdr; |
|---|
| 224 | 201 | u8 *tmp_buf; |
|---|
| 225 | 202 | u8 *praddr; |
|---|
| .. | .. |
|---|
| 254 | 231 | } |
|---|
| 255 | 232 | |
|---|
| 256 | 233 | bool rtl92se_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats, |
|---|
| 257 | | - struct ieee80211_rx_status *rx_status, u8 *pdesc, |
|---|
| 234 | + struct ieee80211_rx_status *rx_status, u8 *pdesc8, |
|---|
| 258 | 235 | struct sk_buff *skb) |
|---|
| 259 | 236 | { |
|---|
| 260 | 237 | struct rx_fwinfo *p_drvinfo; |
|---|
| 261 | | - u32 phystatus = (u32)GET_RX_STATUS_DESC_PHY_STATUS(pdesc); |
|---|
| 238 | + __le32 *pdesc = (__le32 *)pdesc8; |
|---|
| 239 | + u32 phystatus = (u32)get_rx_status_desc_phy_status(pdesc); |
|---|
| 262 | 240 | struct ieee80211_hdr *hdr; |
|---|
| 263 | 241 | |
|---|
| 264 | | - stats->length = (u16)GET_RX_STATUS_DESC_PKT_LEN(pdesc); |
|---|
| 265 | | - stats->rx_drvinfo_size = (u8)GET_RX_STATUS_DESC_DRVINFO_SIZE(pdesc) * 8; |
|---|
| 266 | | - stats->rx_bufshift = (u8)(GET_RX_STATUS_DESC_SHIFT(pdesc) & 0x03); |
|---|
| 267 | | - stats->icv = (u16)GET_RX_STATUS_DESC_ICV(pdesc); |
|---|
| 268 | | - stats->crc = (u16)GET_RX_STATUS_DESC_CRC32(pdesc); |
|---|
| 242 | + stats->length = (u16)get_rx_status_desc_pkt_len(pdesc); |
|---|
| 243 | + stats->rx_drvinfo_size = (u8)get_rx_status_desc_drvinfo_size(pdesc) * 8; |
|---|
| 244 | + stats->rx_bufshift = (u8)(get_rx_status_desc_shift(pdesc) & 0x03); |
|---|
| 245 | + stats->icv = (u16)get_rx_status_desc_icv(pdesc); |
|---|
| 246 | + stats->crc = (u16)get_rx_status_desc_crc32(pdesc); |
|---|
| 269 | 247 | stats->hwerror = (u16)(stats->crc | stats->icv); |
|---|
| 270 | | - stats->decrypted = !GET_RX_STATUS_DESC_SWDEC(pdesc); |
|---|
| 248 | + stats->decrypted = !get_rx_status_desc_swdec(pdesc); |
|---|
| 271 | 249 | |
|---|
| 272 | | - stats->rate = (u8)GET_RX_STATUS_DESC_RX_MCS(pdesc); |
|---|
| 273 | | - stats->shortpreamble = (u16)GET_RX_STATUS_DESC_SPLCP(pdesc); |
|---|
| 274 | | - stats->isampdu = (bool)(GET_RX_STATUS_DESC_PAGGR(pdesc) == 1); |
|---|
| 275 | | - stats->isfirst_ampdu = (bool) ((GET_RX_STATUS_DESC_PAGGR(pdesc) == 1) |
|---|
| 276 | | - && (GET_RX_STATUS_DESC_FAGGR(pdesc) == 1)); |
|---|
| 277 | | - stats->timestamp_low = GET_RX_STATUS_DESC_TSFL(pdesc); |
|---|
| 278 | | - stats->rx_is40Mhzpacket = (bool)GET_RX_STATUS_DESC_BW(pdesc); |
|---|
| 279 | | - stats->is_ht = (bool)GET_RX_STATUS_DESC_RX_HT(pdesc); |
|---|
| 250 | + stats->rate = (u8)get_rx_status_desc_rx_mcs(pdesc); |
|---|
| 251 | + stats->shortpreamble = (u16)get_rx_status_desc_splcp(pdesc); |
|---|
| 252 | + stats->isampdu = (bool)(get_rx_status_desc_paggr(pdesc) == 1); |
|---|
| 253 | + stats->isfirst_ampdu = (bool)((get_rx_status_desc_paggr(pdesc) == 1) && |
|---|
| 254 | + (get_rx_status_desc_faggr(pdesc) == 1)); |
|---|
| 255 | + stats->timestamp_low = get_rx_status_desc_tsfl(pdesc); |
|---|
| 256 | + stats->rx_is40mhzpacket = (bool)get_rx_status_desc_bw(pdesc); |
|---|
| 257 | + stats->is_ht = (bool)get_rx_status_desc_rx_ht(pdesc); |
|---|
| 280 | 258 | stats->is_cck = SE_RX_HAL_IS_CCK_RATE(pdesc); |
|---|
| 281 | 259 | |
|---|
| 282 | 260 | if (stats->hwerror) |
|---|
| .. | .. |
|---|
| 288 | 266 | if (stats->crc) |
|---|
| 289 | 267 | rx_status->flag |= RX_FLAG_FAILED_FCS_CRC; |
|---|
| 290 | 268 | |
|---|
| 291 | | - if (stats->rx_is40Mhzpacket) |
|---|
| 269 | + if (stats->rx_is40mhzpacket) |
|---|
| 292 | 270 | rx_status->bw = RATE_INFO_BW_40; |
|---|
| 293 | 271 | |
|---|
| 294 | 272 | if (stats->is_ht) |
|---|
| .. | .. |
|---|
| 332 | 310 | } |
|---|
| 333 | 311 | |
|---|
| 334 | 312 | void rtl92se_tx_fill_desc(struct ieee80211_hw *hw, |
|---|
| 335 | | - struct ieee80211_hdr *hdr, u8 *pdesc_tx, |
|---|
| 313 | + struct ieee80211_hdr *hdr, u8 *pdesc8, |
|---|
| 336 | 314 | u8 *pbd_desc_tx, struct ieee80211_tx_info *info, |
|---|
| 337 | 315 | struct ieee80211_sta *sta, |
|---|
| 338 | 316 | struct sk_buff *skb, |
|---|
| .. | .. |
|---|
| 342 | 320 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); |
|---|
| 343 | 321 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); |
|---|
| 344 | 322 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); |
|---|
| 345 | | - u8 *pdesc = pdesc_tx; |
|---|
| 323 | + __le32 *pdesc = (__le32 *)pdesc8; |
|---|
| 346 | 324 | u16 seq_number; |
|---|
| 347 | 325 | __le16 fc = hdr->frame_control; |
|---|
| 348 | 326 | u8 reserved_macid = 0; |
|---|
| .. | .. |
|---|
| 350 | 328 | bool firstseg = (!(hdr->seq_ctrl & cpu_to_le16(IEEE80211_SCTL_FRAG))); |
|---|
| 351 | 329 | bool lastseg = (!(hdr->frame_control & |
|---|
| 352 | 330 | cpu_to_le16(IEEE80211_FCTL_MOREFRAGS))); |
|---|
| 353 | | - dma_addr_t mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len, |
|---|
| 354 | | - PCI_DMA_TODEVICE); |
|---|
| 331 | + dma_addr_t mapping = dma_map_single(&rtlpci->pdev->dev, skb->data, |
|---|
| 332 | + skb->len, DMA_TO_DEVICE); |
|---|
| 355 | 333 | u8 bw_40 = 0; |
|---|
| 356 | 334 | |
|---|
| 357 | | - if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { |
|---|
| 358 | | - RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, |
|---|
| 359 | | - "DMA mapping error\n"); |
|---|
| 335 | + if (dma_mapping_error(&rtlpci->pdev->dev, mapping)) { |
|---|
| 336 | + rtl_dbg(rtlpriv, COMP_SEND, DBG_TRACE, |
|---|
| 337 | + "DMA mapping error\n"); |
|---|
| 360 | 338 | return; |
|---|
| 361 | 339 | } |
|---|
| 362 | 340 | if (mac->opmode == NL80211_IFTYPE_STATION) { |
|---|
| .. | .. |
|---|
| 382 | 360 | if (rtlpriv->dm.useramask) { |
|---|
| 383 | 361 | /* set txdesc macId */ |
|---|
| 384 | 362 | if (ptcb_desc->mac_id < 32) { |
|---|
| 385 | | - SET_TX_DESC_MACID(pdesc, ptcb_desc->mac_id); |
|---|
| 363 | + set_tx_desc_macid(pdesc, ptcb_desc->mac_id); |
|---|
| 386 | 364 | reserved_macid |= ptcb_desc->mac_id; |
|---|
| 387 | 365 | } |
|---|
| 388 | 366 | } |
|---|
| 389 | | - SET_TX_DESC_RSVD_MACID(pdesc, reserved_macid); |
|---|
| 367 | + set_tx_desc_rsvd_macid(pdesc, reserved_macid); |
|---|
| 390 | 368 | |
|---|
| 391 | | - SET_TX_DESC_TXHT(pdesc, ((ptcb_desc->hw_rate >= |
|---|
| 369 | + set_tx_desc_txht(pdesc, ((ptcb_desc->hw_rate >= |
|---|
| 392 | 370 | DESC_RATEMCS0) ? 1 : 0)); |
|---|
| 393 | 371 | |
|---|
| 394 | 372 | if (rtlhal->version == VERSION_8192S_ACUT) { |
|---|
| .. | .. |
|---|
| 400 | 378 | } |
|---|
| 401 | 379 | } |
|---|
| 402 | 380 | |
|---|
| 403 | | - SET_TX_DESC_TX_RATE(pdesc, ptcb_desc->hw_rate); |
|---|
| 381 | + set_tx_desc_tx_rate(pdesc, ptcb_desc->hw_rate); |
|---|
| 404 | 382 | |
|---|
| 405 | 383 | if (ptcb_desc->use_shortgi || ptcb_desc->use_shortpreamble) |
|---|
| 406 | | - SET_TX_DESC_TX_SHORT(pdesc, 0); |
|---|
| 384 | + set_tx_desc_tx_short(pdesc, 0); |
|---|
| 407 | 385 | |
|---|
| 408 | 386 | /* Aggregation related */ |
|---|
| 409 | 387 | if (info->flags & IEEE80211_TX_CTL_AMPDU) |
|---|
| 410 | | - SET_TX_DESC_AGG_ENABLE(pdesc, 1); |
|---|
| 388 | + set_tx_desc_agg_enable(pdesc, 1); |
|---|
| 411 | 389 | |
|---|
| 412 | 390 | /* For AMPDU, we must insert SSN into TX_DESC */ |
|---|
| 413 | | - SET_TX_DESC_SEQ(pdesc, seq_number); |
|---|
| 391 | + set_tx_desc_seq(pdesc, seq_number); |
|---|
| 414 | 392 | |
|---|
| 415 | 393 | /* Protection mode related */ |
|---|
| 416 | 394 | /* For 92S, if RTS/CTS are set, HW will execute RTS. */ |
|---|
| 417 | 395 | /* We choose only one protection mode to execute */ |
|---|
| 418 | | - SET_TX_DESC_RTS_ENABLE(pdesc, ((ptcb_desc->rts_enable && |
|---|
| 419 | | - !ptcb_desc->cts_enable) ? 1 : 0)); |
|---|
| 420 | | - SET_TX_DESC_CTS_ENABLE(pdesc, ((ptcb_desc->cts_enable) ? |
|---|
| 396 | + set_tx_desc_rts_enable(pdesc, ((ptcb_desc->rts_enable && |
|---|
| 397 | + !ptcb_desc->cts_enable) ? |
|---|
| 398 | + 1 : 0)); |
|---|
| 399 | + set_tx_desc_cts_enable(pdesc, ((ptcb_desc->cts_enable) ? |
|---|
| 421 | 400 | 1 : 0)); |
|---|
| 422 | | - SET_TX_DESC_RTS_STBC(pdesc, ((ptcb_desc->rts_stbc) ? 1 : 0)); |
|---|
| 401 | + set_tx_desc_rts_stbc(pdesc, ((ptcb_desc->rts_stbc) ? 1 : 0)); |
|---|
| 423 | 402 | |
|---|
| 424 | | - SET_TX_DESC_RTS_RATE(pdesc, ptcb_desc->rts_rate); |
|---|
| 425 | | - SET_TX_DESC_RTS_BANDWIDTH(pdesc, 0); |
|---|
| 426 | | - SET_TX_DESC_RTS_SUB_CARRIER(pdesc, ptcb_desc->rts_sc); |
|---|
| 427 | | - SET_TX_DESC_RTS_SHORT(pdesc, ((ptcb_desc->rts_rate <= |
|---|
| 403 | + set_tx_desc_rts_rate(pdesc, ptcb_desc->rts_rate); |
|---|
| 404 | + set_tx_desc_rts_bandwidth(pdesc, 0); |
|---|
| 405 | + set_tx_desc_rts_sub_carrier(pdesc, ptcb_desc->rts_sc); |
|---|
| 406 | + set_tx_desc_rts_short(pdesc, ((ptcb_desc->rts_rate <= |
|---|
| 428 | 407 | DESC_RATE54M) ? |
|---|
| 429 | 408 | (ptcb_desc->rts_use_shortpreamble ? 1 : 0) |
|---|
| 430 | 409 | : (ptcb_desc->rts_use_shortgi ? 1 : 0))); |
|---|
| .. | .. |
|---|
| 433 | 412 | /* Set Bandwidth and sub-channel settings. */ |
|---|
| 434 | 413 | if (bw_40) { |
|---|
| 435 | 414 | if (ptcb_desc->packet_bw) { |
|---|
| 436 | | - SET_TX_DESC_TX_BANDWIDTH(pdesc, 1); |
|---|
| 415 | + set_tx_desc_tx_bandwidth(pdesc, 1); |
|---|
| 437 | 416 | /* use duplicated mode */ |
|---|
| 438 | | - SET_TX_DESC_TX_SUB_CARRIER(pdesc, 0); |
|---|
| 417 | + set_tx_desc_tx_sub_carrier(pdesc, 0); |
|---|
| 439 | 418 | } else { |
|---|
| 440 | | - SET_TX_DESC_TX_BANDWIDTH(pdesc, 0); |
|---|
| 441 | | - SET_TX_DESC_TX_SUB_CARRIER(pdesc, |
|---|
| 419 | + set_tx_desc_tx_bandwidth(pdesc, 0); |
|---|
| 420 | + set_tx_desc_tx_sub_carrier(pdesc, |
|---|
| 442 | 421 | mac->cur_40_prime_sc); |
|---|
| 443 | 422 | } |
|---|
| 444 | 423 | } else { |
|---|
| 445 | | - SET_TX_DESC_TX_BANDWIDTH(pdesc, 0); |
|---|
| 446 | | - SET_TX_DESC_TX_SUB_CARRIER(pdesc, 0); |
|---|
| 424 | + set_tx_desc_tx_bandwidth(pdesc, 0); |
|---|
| 425 | + set_tx_desc_tx_sub_carrier(pdesc, 0); |
|---|
| 447 | 426 | } |
|---|
| 448 | 427 | |
|---|
| 449 | 428 | /* 3 Fill necessary field in First Descriptor */ |
|---|
| 450 | 429 | /*DWORD 0*/ |
|---|
| 451 | | - SET_TX_DESC_LINIP(pdesc, 0); |
|---|
| 452 | | - SET_TX_DESC_OFFSET(pdesc, 32); |
|---|
| 453 | | - SET_TX_DESC_PKT_SIZE(pdesc, (u16) skb->len); |
|---|
| 430 | + set_tx_desc_linip(pdesc, 0); |
|---|
| 431 | + set_tx_desc_offset(pdesc, 32); |
|---|
| 432 | + set_tx_desc_pkt_size(pdesc, (u16)skb->len); |
|---|
| 454 | 433 | |
|---|
| 455 | 434 | /*DWORD 1*/ |
|---|
| 456 | | - SET_TX_DESC_RA_BRSR_ID(pdesc, ptcb_desc->ratr_index); |
|---|
| 435 | + set_tx_desc_ra_brsr_id(pdesc, ptcb_desc->ratr_index); |
|---|
| 457 | 436 | |
|---|
| 458 | 437 | /* Fill security related */ |
|---|
| 459 | 438 | if (info->control.hw_key) { |
|---|
| .. | .. |
|---|
| 463 | 442 | switch (keyconf->cipher) { |
|---|
| 464 | 443 | case WLAN_CIPHER_SUITE_WEP40: |
|---|
| 465 | 444 | case WLAN_CIPHER_SUITE_WEP104: |
|---|
| 466 | | - SET_TX_DESC_SEC_TYPE(pdesc, 0x1); |
|---|
| 445 | + set_tx_desc_sec_type(pdesc, 0x1); |
|---|
| 467 | 446 | break; |
|---|
| 468 | 447 | case WLAN_CIPHER_SUITE_TKIP: |
|---|
| 469 | | - SET_TX_DESC_SEC_TYPE(pdesc, 0x2); |
|---|
| 448 | + set_tx_desc_sec_type(pdesc, 0x2); |
|---|
| 470 | 449 | break; |
|---|
| 471 | 450 | case WLAN_CIPHER_SUITE_CCMP: |
|---|
| 472 | | - SET_TX_DESC_SEC_TYPE(pdesc, 0x3); |
|---|
| 451 | + set_tx_desc_sec_type(pdesc, 0x3); |
|---|
| 473 | 452 | break; |
|---|
| 474 | 453 | default: |
|---|
| 475 | | - SET_TX_DESC_SEC_TYPE(pdesc, 0x0); |
|---|
| 454 | + set_tx_desc_sec_type(pdesc, 0x0); |
|---|
| 476 | 455 | break; |
|---|
| 477 | 456 | |
|---|
| 478 | 457 | } |
|---|
| 479 | 458 | } |
|---|
| 480 | 459 | |
|---|
| 481 | 460 | /* Set Packet ID */ |
|---|
| 482 | | - SET_TX_DESC_PACKET_ID(pdesc, 0); |
|---|
| 461 | + set_tx_desc_packet_id(pdesc, 0); |
|---|
| 483 | 462 | |
|---|
| 484 | 463 | /* We will assign magement queue to BK. */ |
|---|
| 485 | | - SET_TX_DESC_QUEUE_SEL(pdesc, fw_qsel); |
|---|
| 464 | + set_tx_desc_queue_sel(pdesc, fw_qsel); |
|---|
| 486 | 465 | |
|---|
| 487 | 466 | /* Alwasy enable all rate fallback range */ |
|---|
| 488 | | - SET_TX_DESC_DATA_RATE_FB_LIMIT(pdesc, 0x1F); |
|---|
| 467 | + set_tx_desc_data_rate_fb_limit(pdesc, 0x1F); |
|---|
| 489 | 468 | |
|---|
| 490 | 469 | /* Fix: I don't kown why hw use 6.5M to tx when set it */ |
|---|
| 491 | | - SET_TX_DESC_USER_RATE(pdesc, |
|---|
| 470 | + set_tx_desc_user_rate(pdesc, |
|---|
| 492 | 471 | ptcb_desc->use_driver_rate ? 1 : 0); |
|---|
| 493 | 472 | |
|---|
| 494 | 473 | /* Set NON_QOS bit. */ |
|---|
| 495 | 474 | if (!ieee80211_is_data_qos(fc)) |
|---|
| 496 | | - SET_TX_DESC_NON_QOS(pdesc, 1); |
|---|
| 475 | + set_tx_desc_non_qos(pdesc, 1); |
|---|
| 497 | 476 | |
|---|
| 498 | 477 | } |
|---|
| 499 | 478 | |
|---|
| 500 | 479 | /* Fill fields that are required to be initialized |
|---|
| 501 | 480 | * in all of the descriptors */ |
|---|
| 502 | 481 | /*DWORD 0 */ |
|---|
| 503 | | - SET_TX_DESC_FIRST_SEG(pdesc, (firstseg ? 1 : 0)); |
|---|
| 504 | | - SET_TX_DESC_LAST_SEG(pdesc, (lastseg ? 1 : 0)); |
|---|
| 482 | + set_tx_desc_first_seg(pdesc, (firstseg ? 1 : 0)); |
|---|
| 483 | + set_tx_desc_last_seg(pdesc, (lastseg ? 1 : 0)); |
|---|
| 505 | 484 | |
|---|
| 506 | 485 | /* DWORD 7 */ |
|---|
| 507 | | - SET_TX_DESC_TX_BUFFER_SIZE(pdesc, (u16) skb->len); |
|---|
| 486 | + set_tx_desc_tx_buffer_size(pdesc, (u16)skb->len); |
|---|
| 508 | 487 | |
|---|
| 509 | 488 | /* DOWRD 8 */ |
|---|
| 510 | | - SET_TX_DESC_TX_BUFFER_ADDRESS(pdesc, mapping); |
|---|
| 489 | + set_tx_desc_tx_buffer_address(pdesc, mapping); |
|---|
| 511 | 490 | |
|---|
| 512 | | - RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, "\n"); |
|---|
| 491 | + rtl_dbg(rtlpriv, COMP_SEND, DBG_TRACE, "\n"); |
|---|
| 513 | 492 | } |
|---|
| 514 | 493 | |
|---|
| 515 | | -void rtl92se_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, |
|---|
| 516 | | - bool firstseg, bool lastseg, struct sk_buff *skb) |
|---|
| 494 | +void rtl92se_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc8, |
|---|
| 495 | + bool firstseg, bool lastseg, struct sk_buff *skb) |
|---|
| 517 | 496 | { |
|---|
| 518 | 497 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
|---|
| 519 | 498 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); |
|---|
| 520 | 499 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); |
|---|
| 521 | 500 | struct rtl_tcb_desc *tcb_desc = (struct rtl_tcb_desc *)(skb->cb); |
|---|
| 501 | + __le32 *pdesc = (__le32 *)pdesc8; |
|---|
| 522 | 502 | |
|---|
| 523 | | - dma_addr_t mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len, |
|---|
| 524 | | - PCI_DMA_TODEVICE); |
|---|
| 503 | + dma_addr_t mapping = dma_map_single(&rtlpci->pdev->dev, skb->data, |
|---|
| 504 | + skb->len, DMA_TO_DEVICE); |
|---|
| 525 | 505 | |
|---|
| 526 | | - if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { |
|---|
| 527 | | - RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, |
|---|
| 528 | | - "DMA mapping error\n"); |
|---|
| 506 | + if (dma_mapping_error(&rtlpci->pdev->dev, mapping)) { |
|---|
| 507 | + rtl_dbg(rtlpriv, COMP_SEND, DBG_TRACE, |
|---|
| 508 | + "DMA mapping error\n"); |
|---|
| 529 | 509 | return; |
|---|
| 530 | 510 | } |
|---|
| 531 | 511 | /* Clear all status */ |
|---|
| .. | .. |
|---|
| 534 | 514 | /* This bit indicate this packet is used for FW download. */ |
|---|
| 535 | 515 | if (tcb_desc->cmd_or_init == DESC_PACKET_TYPE_INIT) { |
|---|
| 536 | 516 | /* For firmware downlaod we only need to set LINIP */ |
|---|
| 537 | | - SET_TX_DESC_LINIP(pdesc, tcb_desc->last_inipkt); |
|---|
| 517 | + set_tx_desc_linip(pdesc, tcb_desc->last_inipkt); |
|---|
| 538 | 518 | |
|---|
| 539 | 519 | /* 92SE must set as 1 for firmware download HW DMA error */ |
|---|
| 540 | | - SET_TX_DESC_FIRST_SEG(pdesc, 1); |
|---|
| 541 | | - SET_TX_DESC_LAST_SEG(pdesc, 1); |
|---|
| 520 | + set_tx_desc_first_seg(pdesc, 1); |
|---|
| 521 | + set_tx_desc_last_seg(pdesc, 1); |
|---|
| 542 | 522 | |
|---|
| 543 | 523 | /* 92SE need not to set TX packet size when firmware download */ |
|---|
| 544 | | - SET_TX_DESC_PKT_SIZE(pdesc, (u16)(skb->len)); |
|---|
| 545 | | - SET_TX_DESC_TX_BUFFER_SIZE(pdesc, (u16)(skb->len)); |
|---|
| 546 | | - SET_TX_DESC_TX_BUFFER_ADDRESS(pdesc, mapping); |
|---|
| 524 | + set_tx_desc_pkt_size(pdesc, (u16)(skb->len)); |
|---|
| 525 | + set_tx_desc_tx_buffer_size(pdesc, (u16)(skb->len)); |
|---|
| 526 | + set_tx_desc_tx_buffer_address(pdesc, mapping); |
|---|
| 547 | 527 | |
|---|
| 548 | 528 | wmb(); |
|---|
| 549 | | - SET_TX_DESC_OWN(pdesc, 1); |
|---|
| 529 | + set_tx_desc_own(pdesc, 1); |
|---|
| 550 | 530 | } else { /* H2C Command Desc format (Host TXCMD) */ |
|---|
| 551 | 531 | /* 92SE must set as 1 for firmware download HW DMA error */ |
|---|
| 552 | | - SET_TX_DESC_FIRST_SEG(pdesc, 1); |
|---|
| 553 | | - SET_TX_DESC_LAST_SEG(pdesc, 1); |
|---|
| 532 | + set_tx_desc_first_seg(pdesc, 1); |
|---|
| 533 | + set_tx_desc_last_seg(pdesc, 1); |
|---|
| 554 | 534 | |
|---|
| 555 | | - SET_TX_DESC_OFFSET(pdesc, 0x20); |
|---|
| 535 | + set_tx_desc_offset(pdesc, 0x20); |
|---|
| 556 | 536 | |
|---|
| 557 | 537 | /* Buffer size + command header */ |
|---|
| 558 | | - SET_TX_DESC_PKT_SIZE(pdesc, (u16)(skb->len)); |
|---|
| 538 | + set_tx_desc_pkt_size(pdesc, (u16)(skb->len)); |
|---|
| 559 | 539 | /* Fixed queue of H2C command */ |
|---|
| 560 | | - SET_TX_DESC_QUEUE_SEL(pdesc, 0x13); |
|---|
| 540 | + set_tx_desc_queue_sel(pdesc, 0x13); |
|---|
| 561 | 541 | |
|---|
| 562 | | - SET_BITS_TO_LE_4BYTE(skb->data, 24, 7, rtlhal->h2c_txcmd_seq); |
|---|
| 563 | | - |
|---|
| 564 | | - SET_TX_DESC_TX_BUFFER_SIZE(pdesc, (u16)(skb->len)); |
|---|
| 565 | | - SET_TX_DESC_TX_BUFFER_ADDRESS(pdesc, mapping); |
|---|
| 542 | + le32p_replace_bits((__le32 *)skb->data, rtlhal->h2c_txcmd_seq, |
|---|
| 543 | + GENMASK(30, 24)); |
|---|
| 544 | + set_tx_desc_tx_buffer_size(pdesc, (u16)(skb->len)); |
|---|
| 545 | + set_tx_desc_tx_buffer_address(pdesc, mapping); |
|---|
| 566 | 546 | |
|---|
| 567 | 547 | wmb(); |
|---|
| 568 | | - SET_TX_DESC_OWN(pdesc, 1); |
|---|
| 548 | + set_tx_desc_own(pdesc, 1); |
|---|
| 569 | 549 | |
|---|
| 570 | 550 | } |
|---|
| 571 | 551 | } |
|---|
| 572 | 552 | |
|---|
| 573 | | -void rtl92se_set_desc(struct ieee80211_hw *hw, u8 *pdesc, bool istx, |
|---|
| 553 | +void rtl92se_set_desc(struct ieee80211_hw *hw, u8 *pdesc8, bool istx, |
|---|
| 574 | 554 | u8 desc_name, u8 *val) |
|---|
| 575 | 555 | { |
|---|
| 556 | + __le32 *pdesc = (__le32 *)pdesc8; |
|---|
| 557 | + |
|---|
| 576 | 558 | if (istx) { |
|---|
| 577 | 559 | switch (desc_name) { |
|---|
| 578 | 560 | case HW_DESC_OWN: |
|---|
| 579 | 561 | wmb(); |
|---|
| 580 | | - SET_TX_DESC_OWN(pdesc, 1); |
|---|
| 562 | + set_tx_desc_own(pdesc, 1); |
|---|
| 581 | 563 | break; |
|---|
| 582 | 564 | case HW_DESC_TX_NEXTDESC_ADDR: |
|---|
| 583 | | - SET_TX_DESC_NEXT_DESC_ADDRESS(pdesc, *(u32 *) val); |
|---|
| 565 | + set_tx_desc_next_desc_address(pdesc, *(u32 *)val); |
|---|
| 584 | 566 | break; |
|---|
| 585 | 567 | default: |
|---|
| 586 | 568 | WARN_ONCE(true, "rtl8192se: ERR txdesc :%d not processed\n", |
|---|
| .. | .. |
|---|
| 591 | 573 | switch (desc_name) { |
|---|
| 592 | 574 | case HW_DESC_RXOWN: |
|---|
| 593 | 575 | wmb(); |
|---|
| 594 | | - SET_RX_STATUS_DESC_OWN(pdesc, 1); |
|---|
| 576 | + set_rx_status_desc_own(pdesc, 1); |
|---|
| 595 | 577 | break; |
|---|
| 596 | 578 | case HW_DESC_RXBUFF_ADDR: |
|---|
| 597 | | - SET_RX_STATUS__DESC_BUFF_ADDR(pdesc, *(u32 *) val); |
|---|
| 579 | + set_rx_status__desc_buff_addr(pdesc, *(u32 *)val); |
|---|
| 598 | 580 | break; |
|---|
| 599 | 581 | case HW_DESC_RXPKT_LEN: |
|---|
| 600 | | - SET_RX_STATUS_DESC_PKT_LEN(pdesc, *(u32 *) val); |
|---|
| 582 | + set_rx_status_desc_pkt_len(pdesc, *(u32 *)val); |
|---|
| 601 | 583 | break; |
|---|
| 602 | 584 | case HW_DESC_RXERO: |
|---|
| 603 | | - SET_RX_STATUS_DESC_EOR(pdesc, 1); |
|---|
| 585 | + set_rx_status_desc_eor(pdesc, 1); |
|---|
| 604 | 586 | break; |
|---|
| 605 | 587 | default: |
|---|
| 606 | 588 | WARN_ONCE(true, "rtl8192se: ERR rxdesc :%d not processed\n", |
|---|
| .. | .. |
|---|
| 611 | 593 | } |
|---|
| 612 | 594 | |
|---|
| 613 | 595 | u64 rtl92se_get_desc(struct ieee80211_hw *hw, |
|---|
| 614 | | - u8 *desc, bool istx, u8 desc_name) |
|---|
| 596 | + u8 *desc8, bool istx, u8 desc_name) |
|---|
| 615 | 597 | { |
|---|
| 616 | 598 | u32 ret = 0; |
|---|
| 599 | + __le32 *desc = (__le32 *)desc8; |
|---|
| 617 | 600 | |
|---|
| 618 | 601 | if (istx) { |
|---|
| 619 | 602 | switch (desc_name) { |
|---|
| 620 | 603 | case HW_DESC_OWN: |
|---|
| 621 | | - ret = GET_TX_DESC_OWN(desc); |
|---|
| 604 | + ret = get_tx_desc_own(desc); |
|---|
| 622 | 605 | break; |
|---|
| 623 | 606 | case HW_DESC_TXBUFF_ADDR: |
|---|
| 624 | | - ret = GET_TX_DESC_TX_BUFFER_ADDRESS(desc); |
|---|
| 607 | + ret = get_tx_desc_tx_buffer_address(desc); |
|---|
| 625 | 608 | break; |
|---|
| 626 | 609 | default: |
|---|
| 627 | 610 | WARN_ONCE(true, "rtl8192se: ERR txdesc :%d not processed\n", |
|---|
| .. | .. |
|---|
| 631 | 614 | } else { |
|---|
| 632 | 615 | switch (desc_name) { |
|---|
| 633 | 616 | case HW_DESC_OWN: |
|---|
| 634 | | - ret = GET_RX_STATUS_DESC_OWN(desc); |
|---|
| 617 | + ret = get_rx_status_desc_own(desc); |
|---|
| 635 | 618 | break; |
|---|
| 636 | 619 | case HW_DESC_RXPKT_LEN: |
|---|
| 637 | | - ret = GET_RX_STATUS_DESC_PKT_LEN(desc); |
|---|
| 620 | + ret = get_rx_status_desc_pkt_len(desc); |
|---|
| 638 | 621 | break; |
|---|
| 639 | 622 | case HW_DESC_RXBUFF_ADDR: |
|---|
| 640 | | - ret = GET_RX_STATUS_DESC_BUFF_ADDR(desc); |
|---|
| 623 | + ret = get_rx_status_desc_buff_addr(desc); |
|---|
| 641 | 624 | break; |
|---|
| 642 | 625 | default: |
|---|
| 643 | 626 | WARN_ONCE(true, "rtl8192se: ERR rxdesc :%d not processed\n", |
|---|