Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

staging: rtl8723bs: remove unused code blocks conditioned by never set CONFIG_AP_WOWLAN

remove conditional code blocks checked by unused CONFIG_AP_WOWLAN

cleaning required in TODO file:

find and remove code blocks guarded by never set CONFIG_FOO defines

Changes in v2:
rebase of conflicting code with public tree

Signed-off-by: Fabio Aiuto <fabioaiuto83@gmail.com>
Link: https://lore.kernel.org/r/20210316140359.GA2858@agape.jhs
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Fabio Aiuto and committed by
Greg Kroah-Hartman
dc365d2c 8b2a95ee

+1 -782
-35
drivers/staging/rtl8723bs/core/rtw_pwrctrl.c
··· 350 350 struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); 351 351 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); 352 352 353 - #ifdef CONFIG_AP_WOWLAN 354 - if (pwrpriv->bInSuspend && pwrpriv->wowlan_mode) 355 - return true; 356 - else if (pwrpriv->bInSuspend && pwrpriv->wowlan_ap_mode) 357 - return true; 358 - else if (pwrpriv->bInSuspend) 359 - return false; 360 - #else 361 353 if (pwrpriv->bInSuspend) 362 354 return false; 363 - #endif 364 355 365 356 curr_time = jiffies; 366 357 ··· 382 391 void rtw_set_ps_mode(struct adapter *padapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode, const char *msg) 383 392 { 384 393 struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); 385 - #ifdef CONFIG_AP_WOWLAN 386 - struct debug_priv *pdbgpriv = &padapter->dvobj->drv_dbg; 387 - #endif 388 394 389 395 RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, 390 396 ("%s: PowerMode =%d Smart_PS =%d\n", ··· 410 422 pwrpriv->pwr_mode = ps_mode; 411 423 rtw_set_rpwm(padapter, PS_STATE_S4); 412 424 413 - #ifdef CONFIG_AP_WOWLAN 414 - if (pwrpriv->wowlan_mode || pwrpriv->wowlan_ap_mode) { 415 - unsigned long start_time; 416 - u32 delay_ms; 417 - u8 val8; 418 - delay_ms = 20; 419 - start_time = jiffies; 420 - do { 421 - rtw_hal_get_hwreg(padapter, HW_VAR_SYS_CLKR, &val8); 422 - if (!(val8 & BIT(4))) { /* 0x08 bit4 = 1 --> in 32k, bit4 = 0 --> leave 32k */ 423 - pwrpriv->cpwm = PS_STATE_S4; 424 - break; 425 - } 426 - if (jiffies_to_msecs(jiffies - start_time) > delay_ms) { 427 - DBG_871X("%s: Wait for FW 32K leave more than %u ms!!!\n", 428 - __func__, delay_ms); 429 - pdbgpriv->dbg_wow_leave_ps_fail_cnt++; 430 - break; 431 - } 432 - msleep(1); 433 - } while (1); 434 - } 435 - #endif 436 425 rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode)); 437 426 pwrpriv->bFwCurrentInPSMode = false; 438 427
-31
drivers/staging/rtl8723bs/core/rtw_wlan_util.c
··· 10 10 #include <rtw_debug.h> 11 11 #include <hal_com_h2c.h> 12 12 13 - #ifdef CONFIG_AP_WOWLAN 14 - #include <linux/inetdevice.h> 15 - #endif 16 - 17 13 static unsigned char ARTHEROS_OUI1[] = {0x00, 0x03, 0x7f}; 18 14 static unsigned char ARTHEROS_OUI2[] = {0x00, 0x13, 0x74}; 19 15 ··· 2107 2111 return 0; 2108 2112 } 2109 2113 EXPORT_SYMBOL(rtw_config_gpio); 2110 - #endif 2111 - 2112 - #ifdef CONFIG_AP_WOWLAN 2113 - void rtw_get_current_ip_address(struct adapter *padapter, u8 *pcurrentip) 2114 - { 2115 - struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; 2116 - struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); 2117 - struct in_device *my_ip_ptr = padapter->pnetdev->ip_ptr; 2118 - u8 ipaddress[4]; 2119 - 2120 - if ((pmlmeinfo->state & WIFI_FW_LINKING_STATE) || 2121 - pmlmeinfo->state & WIFI_FW_AP_STATE) { 2122 - if (my_ip_ptr) { 2123 - struct in_ifaddr *my_ifa_list = my_ip_ptr->ifa_list; 2124 - 2125 - if (my_ifa_list) { 2126 - ipaddress[0] = my_ifa_list->ifa_address & 0xFF; 2127 - ipaddress[1] = (my_ifa_list->ifa_address >> 8) & 0xFF; 2128 - ipaddress[2] = (my_ifa_list->ifa_address >> 16) & 0xFF; 2129 - ipaddress[3] = my_ifa_list->ifa_address >> 24; 2130 - DBG_871X("%s: %d.%d.%d.%d ==========\n", __func__, 2131 - ipaddress[0], ipaddress[1], ipaddress[2], ipaddress[3]); 2132 - memcpy(pcurrentip, ipaddress, 4); 2133 - } 2134 - } 2135 - } 2136 - } 2137 2114 #endif 2138 2115
-339
drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c
··· 312 312 *pLength = pktlen; 313 313 } 314 314 315 - #ifdef CONFIG_AP_WOWLAN 316 - static void ConstructProbeRsp(struct adapter *padapter, u8 *pframe, u32 *pLength, u8 *StaAddr, bool bHideSSID) 317 - { 318 - struct ieee80211_hdr *pwlanhdr; 319 - u16 *fctrl; 320 - u8 *mac, *bssid; 321 - u32 pktlen; 322 - struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); 323 - struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); 324 - struct wlan_bssid_ex *cur_network = &(pmlmeinfo->network); 325 - u8 *pwps_ie; 326 - uint wps_ielen; 327 - struct mlme_priv *pmlmepriv = &padapter->mlmepriv; 328 - 329 - /* DBG_871X("%s\n", __func__); */ 330 - 331 - pwlanhdr = (struct ieee80211_hdr *)pframe; 332 - 333 - mac = myid(&(padapter->eeprompriv)); 334 - bssid = cur_network->MacAddress; 335 - 336 - fctrl = &(pwlanhdr->frame_control); 337 - *(fctrl) = 0; 338 - memcpy(pwlanhdr->addr1, StaAddr, ETH_ALEN); 339 - memcpy(pwlanhdr->addr2, mac, ETH_ALEN); 340 - memcpy(pwlanhdr->addr3, bssid, ETH_ALEN); 341 - 342 - DBG_871X("%s FW Mac Addr:%pM\n", __func__, MAC_ARG(mac)); 343 - DBG_871X("%s FW IP Addr:%pI4\n", __func__, IP_ARG(StaAddr)); 344 - 345 - SetSeqNum(pwlanhdr, 0); 346 - SetFrameSubType(fctrl, WIFI_PROBERSP); 347 - 348 - pktlen = sizeof(struct ieee80211_hdr_3addr); 349 - pframe += pktlen; 350 - 351 - if (cur_network->IELength > MAX_IE_SZ) 352 - return; 353 - 354 - pwps_ie = rtw_get_wps_ie(cur_network->IEs+_FIXED_IE_LENGTH_, 355 - cur_network->IELength-_FIXED_IE_LENGTH_, NULL, &wps_ielen); 356 - 357 - /* inerset & update wps_probe_resp_ie */ 358 - if (pmlmepriv->wps_probe_resp_ie && pwps_ie && (wps_ielen > 0)) { 359 - uint wps_offset, remainder_ielen; 360 - u8 *premainder_ie; 361 - 362 - wps_offset = (uint)(pwps_ie - cur_network->IEs); 363 - 364 - premainder_ie = pwps_ie + wps_ielen; 365 - 366 - remainder_ielen = cur_network->IELength - wps_offset - wps_ielen; 367 - 368 - memcpy(pframe, cur_network->IEs, wps_offset); 369 - pframe += wps_offset; 370 - pktlen += wps_offset; 371 - 372 - wps_ielen = (uint)pmlmepriv->wps_probe_resp_ie[1];/* to get ie data len */ 373 - if ((wps_offset+wps_ielen+2) <= MAX_IE_SZ) { 374 - memcpy(pframe, pmlmepriv->wps_probe_resp_ie, wps_ielen+2); 375 - pframe += wps_ielen+2; 376 - pktlen += wps_ielen+2; 377 - } 378 - 379 - if ((wps_offset+wps_ielen+2+remainder_ielen) <= MAX_IE_SZ) { 380 - memcpy(pframe, premainder_ie, remainder_ielen); 381 - pframe += remainder_ielen; 382 - pktlen += remainder_ielen; 383 - } 384 - } else { 385 - memcpy(pframe, cur_network->IEs, cur_network->IELength); 386 - pframe += cur_network->IELength; 387 - pktlen += cur_network->IELength; 388 - } 389 - 390 - /* retrieve SSID IE from cur_network->Ssid */ 391 - { 392 - u8 *ssid_ie; 393 - signed int ssid_ielen; 394 - signed int ssid_ielen_diff; 395 - u8 buf[MAX_IE_SZ]; 396 - u8 *ies = pframe + sizeof(struct ieee80211_hdr_3addr); 397 - 398 - ssid_ie = rtw_get_ie(ies+_FIXED_IE_LENGTH_, WLAN_EID_SSID, &ssid_ielen, 399 - (pframe-ies)-_FIXED_IE_LENGTH_); 400 - 401 - ssid_ielen_diff = cur_network->Ssid.SsidLength - ssid_ielen; 402 - 403 - if (ssid_ie && cur_network->Ssid.SsidLength) { 404 - uint remainder_ielen; 405 - u8 *remainder_ie; 406 - remainder_ie = ssid_ie+2; 407 - remainder_ielen = (pframe-remainder_ie); 408 - 409 - if (remainder_ielen > MAX_IE_SZ) { 410 - DBG_871X_LEVEL(_drv_warning_, FUNC_ADPT_FMT" remainder_ielen > MAX_IE_SZ\n", FUNC_ADPT_ARG(padapter)); 411 - remainder_ielen = MAX_IE_SZ; 412 - } 413 - 414 - memcpy(buf, remainder_ie, remainder_ielen); 415 - memcpy(remainder_ie+ssid_ielen_diff, buf, remainder_ielen); 416 - *(ssid_ie+1) = cur_network->Ssid.SsidLength; 417 - memcpy(ssid_ie+2, cur_network->Ssid.Ssid, cur_network->Ssid.SsidLength); 418 - pframe += ssid_ielen_diff; 419 - pktlen += ssid_ielen_diff; 420 - } 421 - } 422 - 423 - *pLength = pktlen; 424 - 425 - } 426 - #endif /* CONFIG_AP_WOWLAN */ 427 - 428 315 /* 429 316 * To check if reserved page content is destroyed by beacon because beacon 430 317 * is too large. ··· 343 456 static void rtl8723b_set_FwAoacRsvdPage_cmd(struct adapter *padapter, struct rsvdpage_loc *rsvdpageloc) 344 457 { 345 458 } 346 - 347 - #ifdef CONFIG_AP_WOWLAN 348 - static void rtl8723b_set_ap_wow_rsvdpage_cmd( 349 - struct adapter *padapter, struct RSVDPAGE_LOC *rsvdpageloc 350 - ) 351 - { 352 - u8 header; 353 - u8 rsvdparm[H2C_AOAC_RSVDPAGE_LOC_LEN] = {0}; 354 - 355 - header = rtw_read8(padapter, REG_BCNQ_BDNY); 356 - 357 - DBG_871X("%s: beacon: %d, probeRsp: %d, header:0x%02x\n", __func__, 358 - rsvdpageloc->LocApOffloadBCN, 359 - rsvdpageloc->LocProbeRsp, 360 - header); 361 - 362 - SET_H2CCMD_AP_WOWLAN_RSVDPAGE_LOC_BCN(rsvdparm, 363 - rsvdpageloc->LocApOffloadBCN + header); 364 - 365 - FillH2CCmd8723B(padapter, H2C_8723B_BCN_RSVDPAGE, 366 - H2C_BCN_RSVDPAGE_LEN, rsvdparm); 367 - 368 - msleep(10); 369 - 370 - memset(&rsvdparm, 0, sizeof(rsvdparm)); 371 - 372 - SET_H2CCMD_AP_WOWLAN_RSVDPAGE_LOC_ProbeRsp( 373 - rsvdparm, 374 - rsvdpageloc->LocProbeRsp + header); 375 - 376 - FillH2CCmd8723B(padapter, H2C_8723B_PROBERSP_RSVDPAGE, 377 - H2C_PROBERSP_RSVDPAGE_LEN, rsvdparm); 378 - 379 - msleep(10); 380 - } 381 - #endif /* CONFIG_AP_WOWLAN */ 382 459 383 460 void rtl8723b_set_FwMediaStatusRpt_cmd(struct adapter *padapter, u8 mstatus, u8 macid) 384 461 { ··· 549 698 FillH2CCmd8723B(padapter, H2C_8723B_FWLPS_IN_IPS_, 1, &cmd_param); 550 699 } 551 700 552 - #ifdef CONFIG_AP_WOWLAN 553 - static void rtl8723b_set_FwAPWoWlanCtrl_Cmd(struct adapter *padapter, u8 bFuncEn) 554 - { 555 - u8 u1H2CAPWoWlanCtrlParm[H2C_WOWLAN_LEN] = {0}; 556 - u8 gpionum = 0, gpio_dur = 0; 557 - u8 gpio_high_active = 1; /* 0: low active, 1: high active */ 558 - u8 gpio_pulse = bFuncEn; 559 - 560 - DBG_871X("%s(): bFuncEn =%d\n", __func__, bFuncEn); 561 - 562 - if (bFuncEn) 563 - gpio_dur = 16; 564 - else 565 - gpio_dur = 0; 566 - 567 - SET_H2CCMD_AP_WOW_GPIO_CTRL_INDEX(u1H2CAPWoWlanCtrlParm, 568 - gpionum); 569 - SET_H2CCMD_AP_WOW_GPIO_CTRL_PLUS(u1H2CAPWoWlanCtrlParm, 570 - gpio_pulse); 571 - SET_H2CCMD_AP_WOW_GPIO_CTRL_HIGH_ACTIVE(u1H2CAPWoWlanCtrlParm, 572 - gpio_high_active); 573 - SET_H2CCMD_AP_WOW_GPIO_CTRL_EN(u1H2CAPWoWlanCtrlParm, 574 - bFuncEn); 575 - SET_H2CCMD_AP_WOW_GPIO_CTRL_DURATION(u1H2CAPWoWlanCtrlParm, 576 - gpio_dur); 577 - 578 - FillH2CCmd8723B(padapter, H2C_8723B_AP_WOW_GPIO_CTRL, 579 - H2C_AP_WOW_GPIO_CTRL_LEN, u1H2CAPWoWlanCtrlParm); 580 - } 581 - 582 - static void rtl8723b_set_Fw_AP_Offload_Cmd(struct adapter *padapter, u8 bFuncEn) 583 - { 584 - u8 u1H2CAPOffloadCtrlParm[H2C_WOWLAN_LEN] = {0}; 585 - 586 - DBG_871X("%s(): bFuncEn =%d\n", __func__, bFuncEn); 587 - 588 - SET_H2CCMD_AP_WOWLAN_EN(u1H2CAPOffloadCtrlParm, bFuncEn); 589 - 590 - FillH2CCmd8723B(padapter, H2C_8723B_AP_OFFLOAD, 591 - H2C_AP_OFFLOAD_LEN, u1H2CAPOffloadCtrlParm); 592 - } 593 - 594 - void rtl8723b_set_ap_wowlan_cmd(struct adapter *padapter, u8 enable) 595 - { 596 - DBG_871X_LEVEL(_drv_always_, "+%s()+: enable =%d\n", __func__, enable); 597 - if (enable) { 598 - rtl8723b_set_FwJoinBssRpt_cmd(padapter, RT_MEDIA_CONNECT); 599 - issue_beacon(padapter, 0); 600 - } 601 - 602 - rtl8723b_set_FwAPWoWlanCtrl_Cmd(padapter, enable); 603 - msleep(10); 604 - rtl8723b_set_Fw_AP_Offload_Cmd(padapter, enable); 605 - msleep(10); 606 - DBG_871X_LEVEL(_drv_always_, "-%s()-\n", __func__); 607 - } 608 - #endif /* CONFIG_AP_WOWLAN */ 609 - 610 701 /* 611 702 * Description: Fill the reserved packets that FW will use to RSVD page. 612 703 * Now we just send 4 types packet to rsvd page. ··· 721 928 rtw_free_xmitframe(pxmitpriv, pcmdframe); 722 929 } 723 930 724 - #ifdef CONFIG_AP_WOWLAN 725 - /* 726 - * Description: Fill the reserved packets that FW will use to RSVD page. 727 - * Now we just send 2 types packet to rsvd page. (1)Beacon, (2)ProbeRsp. 728 - * 729 - * Input: bDLFinished 730 - * 731 - * false: At the first time we will send all the packets as a large packet to 732 - * Hw, so we need to set the packet length to total length. 733 - * 734 - * true: At the second time, we should send the first packet (default:beacon) 735 - * to Hw again and set the length in descriptor to the real beacon length. 736 - */ 737 - /* 2009.10.15 by tynli. */ 738 - static void rtl8723b_set_AP_FwRsvdPagePkt( 739 - struct adapter *padapter, bool bDLFinished 740 - ) 741 - { 742 - struct hal_com_data *pHalData; 743 - struct xmit_frame *pcmdframe; 744 - struct pkt_attrib *pattrib; 745 - struct xmit_priv *pxmitpriv; 746 - struct mlme_ext_priv *pmlmeext; 747 - struct mlme_ext_info *pmlmeinfo; 748 - struct pwrctrl_priv *pwrctl; 749 - u32 BeaconLength = 0, ProbeRspLength = 0; 750 - u8 *ReservedPagePacket; 751 - u8 TxDescLen = TXDESC_SIZE, TxDescOffset = TXDESC_OFFSET; 752 - u8 TotalPageNum = 0, CurtPktPageNum = 0, RsvdPageNum = 0; 753 - u8 currentip[4]; 754 - u16 BufIndex, PageSize = 128; 755 - u32 TotalPacketLen = 0, MaxRsvdPageBufSize = 0; 756 - struct RSVDPAGE_LOC RsvdPageLoc; 757 - 758 - /* DBG_871X("%s---->\n", __func__); */ 759 - DBG_8192C("+" FUNC_ADPT_FMT ": iface_type =%d\n", 760 - FUNC_ADPT_ARG(padapter), get_iface_type(padapter)); 761 - 762 - pHalData = GET_HAL_DATA(padapter); 763 - pxmitpriv = &padapter->xmitpriv; 764 - pmlmeext = &padapter->mlmeextpriv; 765 - pmlmeinfo = &pmlmeext->mlmext_info; 766 - pwrctl = adapter_to_pwrctl(padapter); 767 - 768 - RsvdPageNum = BCNQ_PAGE_NUM_8723B + AP_WOWLAN_PAGE_NUM_8723B; 769 - MaxRsvdPageBufSize = RsvdPageNum*PageSize; 770 - 771 - pcmdframe = rtw_alloc_cmdxmitframe(pxmitpriv); 772 - if (!pcmdframe) { 773 - DBG_871X("%s: alloc ReservedPagePacket fail!\n", __func__); 774 - return; 775 - } 776 - 777 - ReservedPagePacket = pcmdframe->buf_addr; 778 - memset(&RsvdPageLoc, 0, sizeof(struct RSVDPAGE_LOC)); 779 - 780 - /* 3 (1) beacon */ 781 - BufIndex = TxDescOffset; 782 - ConstructBeacon(padapter, &ReservedPagePacket[BufIndex], &BeaconLength); 783 - 784 - /* When we count the first page size, we need to reserve description size for the RSVD */ 785 - /* packet, it will be filled in front of the packet in TXPKTBUF. */ 786 - CurtPktPageNum = (u8)PageNum_128(TxDescLen + BeaconLength); 787 - /* If we don't add 1 more page, the WOWLAN function has a problem. Baron thinks it's a bug of firmware */ 788 - if (CurtPktPageNum == 1) 789 - CurtPktPageNum += 1; 790 - TotalPageNum += CurtPktPageNum; 791 - 792 - BufIndex += (CurtPktPageNum*PageSize); 793 - 794 - /* 2 (4) probe response */ 795 - RsvdPageLoc.LocProbeRsp = TotalPageNum; 796 - 797 - rtw_get_current_ip_address(padapter, currentip); 798 - 799 - ConstructProbeRsp( 800 - padapter, 801 - &ReservedPagePacket[BufIndex], 802 - &ProbeRspLength, 803 - currentip, 804 - false); 805 - rtl8723b_fill_fake_txdesc(padapter, 806 - &ReservedPagePacket[BufIndex-TxDescLen], 807 - ProbeRspLength, 808 - false, false, false); 809 - 810 - DBG_871X("%s(): HW_VAR_SET_TX_CMD: PROBE RSP %p %d\n", 811 - __func__, &ReservedPagePacket[BufIndex-TxDescLen], 812 - (ProbeRspLength+TxDescLen)); 813 - 814 - CurtPktPageNum = (u8)PageNum_128(TxDescLen + ProbeRspLength); 815 - 816 - TotalPageNum += CurtPktPageNum; 817 - 818 - BufIndex += (CurtPktPageNum*PageSize); 819 - 820 - TotalPacketLen = BufIndex + ProbeRspLength; 821 - 822 - if (TotalPacketLen > MaxRsvdPageBufSize) { 823 - DBG_871X("%s(): ERROR: The rsvd page size is not enough \ 824 - !!TotalPacketLen %d, MaxRsvdPageBufSize %d\n", 825 - __func__, TotalPacketLen, MaxRsvdPageBufSize); 826 - goto error; 827 - } else { 828 - /* update attribute */ 829 - pattrib = &pcmdframe->attrib; 830 - update_mgntframe_attrib(padapter, pattrib); 831 - pattrib->qsel = 0x10; 832 - pattrib->pktlen = TotalPacketLen - TxDescOffset; 833 - pattrib->last_txcmdsz = TotalPacketLen - TxDescOffset; 834 - dump_mgntframe_and_wait(padapter, pcmdframe, 100); 835 - } 836 - 837 - DBG_871X("%s: Set RSVD page location to Fw , TotalPacketLen(%d), TotalPageNum(%d)\n", __func__, TotalPacketLen, TotalPageNum); 838 - rtl8723b_set_ap_wow_rsvdpage_cmd(padapter, &RsvdPageLoc); 839 - 840 - return; 841 - error: 842 - rtw_free_xmitframe(pxmitpriv, pcmdframe); 843 - } 844 - #endif /* CONFIG_AP_WOWLAN */ 845 - 846 931 void rtl8723b_download_rsvd_page(struct adapter *padapter, u8 mstatus) 847 932 { 848 933 struct hal_com_data *pHalData = GET_HAL_DATA(padapter); 849 - #ifdef CONFIG_AP_WOWLAN 850 - struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); 851 - #endif 852 934 struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); 853 935 struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); 854 936 bool bcn_valid = false; ··· 770 1102 DLBcnCount = 0; 771 1103 poll = 0; 772 1104 do { 773 - #ifdef CONFIG_AP_WOWLAN 774 - if (pwrpriv->wowlan_ap_mode) 775 - rtl8723b_set_AP_FwRsvdPagePkt(padapter, 0); 776 - else 777 - rtl8723b_set_FwRsvdPagePkt(padapter, 0); 778 - #else 779 1105 /* download rsvd page. */ 780 1106 rtl8723b_set_FwRsvdPagePkt(padapter, 0); 781 - #endif 782 1107 DLBcnCount++; 783 1108 do { 784 1109 yield();
-33
drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c
··· 527 527 /* pHalData->H2CStopInsertQueue = false; */ 528 528 } 529 529 530 - #ifdef CONFIG_AP_WOWLAN 531 - /* */ 532 - 533 - /* */ 534 - /* Description: Prepare some information to Fw for WoWLAN. */ 535 - /* (1) Download wowlan Fw. */ 536 - /* (2) Download RSVD page packets. */ 537 - /* (3) Enable AP offload if needed. */ 538 - /* */ 539 - /* 2011.04.12 by tynli. */ 540 - /* */ 541 - void SetFwRelatedForWoWLAN8723b( 542 - struct adapter *padapter, u8 bHostIsGoingtoSleep 543 - ) 544 - { 545 - int status = _FAIL; 546 - /* */ 547 - /* 1. Before WoWLAN we need to re-download WoWLAN Fw. */ 548 - /* */ 549 - status = rtl8723b_FirmwareDownload(padapter, bHostIsGoingtoSleep); 550 - if (status != _SUCCESS) { 551 - DBG_871X("SetFwRelatedForWoWLAN8723b(): Re-Download Firmware failed!!\n"); 552 - return; 553 - } else { 554 - DBG_871X("SetFwRelatedForWoWLAN8723b(): Re-Download Firmware Success !!\n"); 555 - } 556 - /* */ 557 - /* 2. Re-Init the variables about Fw related setting. */ 558 - /* */ 559 - rtl8723b_InitializeFirmwareVars(padapter); 560 - } 561 - #endif /* CONFIG_AP_WOWLAN */ 562 - 563 530 static void rtl8723b_free_hal_data(struct adapter *padapter) 564 531 { 565 532 }
-105
drivers/staging/rtl8723bs/hal/sdio_halinit.c
··· 1280 1280 { 1281 1281 u8 val8; 1282 1282 1283 - #ifdef CONFIG_AP_WOWLAN 1284 - struct wowlan_ioctl_param *poidparam; 1285 - struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); 1286 - int res; 1287 - u32 tmp; 1288 - u16 len = 0; 1289 - u8 trycnt = 100; 1290 - u32 himr = 0; 1291 - #endif 1292 - 1293 1283 switch (variable) { 1294 1284 case HW_VAR_SET_RPWM: 1295 1285 /* rpwm value only use BIT0(clock bit) , BIT6(Ack bit), and BIT7(Toggle bit) */ ··· 1304 1314 val8 = *val; 1305 1315 break; 1306 1316 1307 - #ifdef CONFIG_AP_WOWLAN 1308 - case HW_VAR_AP_WOWLAN: 1309 - { 1310 - poidparam = (struct wowlan_ioctl_param *)val; 1311 - switch (poidparam->subcode) { 1312 - case WOWLAN_AP_ENABLE: 1313 - DBG_871X("%s, WOWLAN_AP_ENABLE\n", __func__); 1314 - /* 1. Download WOWLAN FW */ 1315 - DBG_871X_LEVEL(_drv_always_, "Re-download WoWlan FW!\n"); 1316 - SetFwRelatedForWoWLAN8723b(padapter, true); 1317 - 1318 - /* 2. RX DMA stop */ 1319 - DBG_871X_LEVEL(_drv_always_, "Pause DMA\n"); 1320 - rtw_write32(padapter, REG_RXPKT_NUM, 1321 - (rtw_read32(padapter, REG_RXPKT_NUM) | RW_RELEASE_EN)); 1322 - do { 1323 - if ((rtw_read32(padapter, REG_RXPKT_NUM) & RXDMA_IDLE)) { 1324 - DBG_871X_LEVEL(_drv_always_, "RX_DMA_IDLE is true\n"); 1325 - break; 1326 - } else { 1327 - /* If RX_DMA is not idle, receive one pkt from DMA */ 1328 - res = sdio_local_read(padapter, SDIO_REG_RX0_REQ_LEN, 4, (u8 *)&tmp); 1329 - len = le16_to_cpu(tmp); 1330 - 1331 - DBG_871X_LEVEL(_drv_always_, "RX len:%d\n", len); 1332 - if (len > 0) 1333 - res = RecvOnePkt(padapter, len); 1334 - else 1335 - DBG_871X_LEVEL(_drv_always_, "read length fail %d\n", len); 1336 - 1337 - DBG_871X_LEVEL(_drv_always_, "RecvOnePkt Result: %d\n", res); 1338 - } 1339 - } while (trycnt--); 1340 - 1341 - if (trycnt == 0) 1342 - DBG_871X_LEVEL(_drv_always_, "Stop RX DMA failed......\n"); 1343 - 1344 - /* 3. Clear IMR and ISR */ 1345 - DBG_871X_LEVEL(_drv_always_, "Clear IMR and ISR\n"); 1346 - tmp = 0; 1347 - sdio_local_write(padapter, SDIO_REG_HIMR_ON, 4, (u8 *)&tmp); 1348 - sdio_local_write(padapter, SDIO_REG_HIMR, 4, (u8 *)&tmp); 1349 - sdio_local_read(padapter, SDIO_REG_HISR, 4, (u8 *)&tmp); 1350 - sdio_local_write(padapter, SDIO_REG_HISR, 4, (u8 *)&tmp); 1351 - 1352 - /* 4. Enable CPWM2 only */ 1353 - DBG_871X_LEVEL(_drv_always_, "Enable only CPWM2\n"); 1354 - sdio_local_read(padapter, SDIO_REG_HIMR, 4, (u8 *)&tmp); 1355 - DBG_871X("DisableInterruptButCpwm28723BSdio(): Read SDIO_REG_HIMR: 0x%08x\n", tmp); 1356 - 1357 - himr = cpu_to_le32(SDIO_HIMR_DISABLED) | SDIO_HIMR_CPWM2_MSK; 1358 - sdio_local_write(padapter, SDIO_REG_HIMR, 4, (u8 *)&himr); 1359 - 1360 - sdio_local_read(padapter, SDIO_REG_HIMR, 4, (u8 *)&tmp); 1361 - DBG_871X("DisableInterruptButCpwm28723BSdio(): Read again SDIO_REG_HIMR: 0x%08x\n", tmp); 1362 - 1363 - /* 5. Set Enable WOWLAN H2C command. */ 1364 - DBG_871X_LEVEL(_drv_always_, "Set Enable AP WOWLan cmd\n"); 1365 - rtl8723b_set_ap_wowlan_cmd(padapter, 1); 1366 - /* 6. add some delay for H2C cmd ready */ 1367 - msleep(10); 1368 - 1369 - rtw_write8(padapter, REG_WOWLAN_WAKE_REASON, 0); 1370 - break; 1371 - case WOWLAN_AP_DISABLE: 1372 - DBG_871X("%s, WOWLAN_AP_DISABLE\n", __func__); 1373 - /* 1. Read wakeup reason */ 1374 - pwrctl->wowlan_wake_reason = 1375 - rtw_read8(padapter, REG_WOWLAN_WAKE_REASON); 1376 - 1377 - DBG_871X_LEVEL(_drv_always_, "wakeup_reason: 0x%02x\n", 1378 - pwrctl->wowlan_wake_reason); 1379 - 1380 - /* 2. Set Disable WOWLAN H2C command. */ 1381 - DBG_871X_LEVEL(_drv_always_, "Set Disable WOWLan cmd\n"); 1382 - rtl8723b_set_ap_wowlan_cmd(padapter, 0); 1383 - /* 6. add some delay for H2C cmd ready */ 1384 - msleep(2); 1385 - 1386 - DBG_871X_LEVEL(_drv_always_, "Release RXDMA\n"); 1387 - 1388 - rtw_write32(padapter, REG_RXPKT_NUM, 1389 - (rtw_read32(padapter, REG_RXPKT_NUM) & (~RW_RELEASE_EN))); 1390 - 1391 - SetFwRelatedForWoWLAN8723b(padapter, false); 1392 - 1393 - rtl8723b_set_FwJoinBssRpt_cmd(padapter, RT_MEDIA_CONNECT); 1394 - issue_beacon(padapter, 0); 1395 - break; 1396 - default: 1397 - break; 1398 - } 1399 - } 1400 - break; 1401 - #endif /* CONFIG_AP_WOWLAN */ 1402 1317 case HW_VAR_DM_IN_LPS: 1403 1318 rtl8723b_hal_dm_in_lps(padapter); 1404 1319 break;
-35
drivers/staging/rtl8723bs/hal/sdio_ops.c
··· 1112 1112 haldata->SdioTxOQTFreeSpace = SdioLocalCmd52Read1Byte(adapter, SDIO_REG_OQT_FREE_PG); 1113 1113 } 1114 1114 1115 - #ifdef CONFIG_AP_WOWLAN 1116 - u8 RecvOnePkt(struct adapter *adapter, u32 size) 1117 - { 1118 - struct recv_buf *recvbuf; 1119 - struct dvobj_priv *sddev; 1120 - struct sdio_func *func; 1121 1115 1122 - u8 res = false; 1123 - 1124 - DBG_871X("+%s: size: %d+\n", __func__, size); 1125 - 1126 - if (!adapter) { 1127 - DBG_871X(KERN_ERR "%s: adapter is NULL!\n", __func__); 1128 - return false; 1129 - } 1130 - 1131 - sddev = adapter_to_dvobj(adapter); 1132 - psdio_data = &sddev->intf_data; 1133 - func = psdio_data->func; 1134 - 1135 - if (size) { 1136 - sdio_claim_host(func); 1137 - recvbuf = sd_recv_rxfifo(adapter, size); 1138 - 1139 - if (recvbuf) { 1140 - sd_rxhandler(adapter, recvbuf); 1141 - res = true; 1142 - } else { 1143 - res = false; 1144 - } 1145 - sdio_release_host(func); 1146 - } 1147 - DBG_871X("-%s-\n", __func__); 1148 - return res; 1149 - } 1150 - #endif /* CONFIG_AP_WOWLAN */
-5
drivers/staging/rtl8723bs/include/drv_types_sdio.h
··· 11 11 #include <linux/mmc/sdio_func.h> 12 12 #include <linux/mmc/sdio_ids.h> 13 13 14 - #ifdef CONFIG_AP_WOWLAN 15 - #include <linux/mmc/host.h> 16 - #include <linux/mmc/card.h> 17 - #endif 18 - 19 14 struct sdio_data { 20 15 u8 func_number; 21 16
-30
drivers/staging/rtl8723bs/include/hal_com_h2c.h
··· 120 120 #define SET_H2CCMD_DISCONDECISION_PARM_CHECK_PERIOD(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd+1, 0, 8, __Value) 121 121 #define SET_H2CCMD_DISCONDECISION_PARM_TRY_PKT_NUM(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd+2, 0, 8, __Value) 122 122 123 - #ifdef CONFIG_AP_WOWLAN 124 - /* _AP_Offload 0x08 */ 125 - #define SET_H2CCMD_AP_WOWLAN_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd, 0, 8, __Value) 126 - /* _BCN_RsvdPage 0x09 */ 127 - #define SET_H2CCMD_AP_WOWLAN_RSVDPAGE_LOC_BCN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd, 0, 8, __Value) 128 - /* _Probersp_RsvdPage 0x0a */ 129 - #define SET_H2CCMD_AP_WOWLAN_RSVDPAGE_LOC_ProbeRsp(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT(__pH2CCmd, 0, 8, __Value) 130 - /* _Probersp_RsvdPage 0x13 */ 131 - #define SET_H2CCMD_AP_WOW_GPIO_CTRL_INDEX(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 4, __Value) 132 - #define SET_H2CCMD_AP_WOW_GPIO_CTRL_C2H_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 4, 1, __Value) 133 - #define SET_H2CCMD_AP_WOW_GPIO_CTRL_PLUS(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 5, 1, __Value) 134 - #define SET_H2CCMD_AP_WOW_GPIO_CTRL_HIGH_ACTIVE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 6, 1, __Value) 135 - #define SET_H2CCMD_AP_WOW_GPIO_CTRL_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 7, 1, __Value) 136 - #define SET_H2CCMD_AP_WOW_GPIO_CTRL_DURATION(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+1, 0, 8, __Value) 137 - #define SET_H2CCMD_AP_WOW_GPIO_CTRL_C2H_DURATION(__pH2CCmd, __Value)SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+2, 0, 8, __Value) 138 - /* _AP_PS 0x26 */ 139 - #define SET_H2CCMD_AP_WOW_PS_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value) 140 - #define SET_H2CCMD_AP_WOW_PS_32K_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value) 141 - #define SET_H2CCMD_AP_WOW_PS_RF(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value) 142 - #define SET_H2CCMD_AP_WOW_PS_DURATION(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE_8BIT((__pH2CCmd)+1, 0, 8, __Value) 143 - #endif 144 - 145 123 /* _WoWLAN PARAM_CMD_0x80 */ 146 124 #define SET_H2CCMD_WOWLAN_FUNC_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value) 147 125 #define SET_H2CCMD_WOWLAN_PATTERN_MATCH_ENABLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value) ··· 164 186 u8 LocNullData; 165 187 u8 LocQosNull; 166 188 u8 LocBTQosNull; 167 - #ifdef CONFIG_AP_WOWLAN 168 - u8 LocApOffloadBCN; 169 - #endif /* CONFIG_AP_WOWLAN */ 170 189 }; 171 190 172 - #endif 173 - #ifdef CONFIG_AP_WOWLAN 174 - void rtw_get_current_ip_address(struct adapter *padapter, u8 *pcurrentip); 175 - void rtw_get_sec_iv(struct adapter *padapter, u8 *pcur_dot11txpn, u8 *StaAddr); 176 - void rtw_set_sec_pn(struct adapter *padapter); 177 191 #endif
-3
drivers/staging/rtl8723bs/include/hal_intf.h
··· 85 85 HW_VAR_APFM_ON_MAC, /* Auto FSM to Turn On, include clock, isolation, power control for MAC only */ 86 86 /* The valid upper nav range for the HW updating, if the true value is larger than the upper range, the HW won't update it. */ 87 87 /* Unit in microsecond. 0 means disable this function. */ 88 - #ifdef CONFIG_AP_WOWLAN 89 - HW_VAR_AP_WOWLAN, 90 - #endif 91 88 HW_VAR_SYS_CLKR, 92 89 HW_VAR_NAV_UPPER, 93 90 HW_VAR_C2H_HANDLE,
+1 -8
drivers/staging/rtl8723bs/include/osdep_service.h
··· 136 136 #define MAC_ARG(x) (x) 137 137 #endif 138 138 139 - 140 - #ifdef CONFIG_AP_WOWLAN 141 - extern void rtw_softap_lock_suspend(void); 142 - extern void rtw_softap_unlock_suspend(void); 143 - #endif 144 - 145 - extern void rtw_free_netdev(struct net_device *netdev); 146 - 139 + extern void rtw_free_netdev(struct net_device * netdev); 147 140 148 141 /* Macros for handling unaligned memory accesses */ 149 142
-6
drivers/staging/rtl8723bs/include/rtl8723b_cmd.h
··· 177 177 178 178 void CheckFwRsvdPageContent(struct adapter *padapter); 179 179 180 - #ifdef CONFIG_AP_WOWLAN 181 - void rtl8723b_set_wowlan_cmd(struct adapter *padapter, u8 enable); 182 - void rtl8723b_set_ap_wowlan_cmd(struct adapter *padapter, u8 enable); 183 - void SetFwRelatedForWoWLAN8723b(struct adapter *padapter, u8 bHostIsGoingtoSleep); 184 - #endif 185 - 186 180 void rtl8723b_set_FwPwrModeInIPS_cmd(struct adapter *padapter, u8 cmd_param); 187 181 188 182 s32 FillH2CCmd8723B(struct adapter *padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer);
-4
drivers/staging/rtl8723bs/include/rtl8723b_hal.h
··· 98 98 /* ARP Rsp:1, RWC:1, GTK Info:1, GTK RSP:2, GTK EXT MEM:2, PNO: 6 */ 99 99 #define WOWLAN_PAGE_NUM_8723B 0x00 100 100 101 - #ifdef CONFIG_AP_WOWLAN 102 - #define AP_WOWLAN_PAGE_NUM_8723B 0x02 103 - #endif 104 - 105 101 #define TX_TOTAL_PAGE_NUMBER_8723B \ 106 102 (0xFF - BCNQ_PAGE_NUM_8723B - \ 107 103 BCNQ1_PAGE_NUM_8723B - \
-3
drivers/staging/rtl8723bs/include/rtw_mp.h
··· 189 189 CTA_TEST, 190 190 MP_DISABLE_BT_COEXIST, 191 191 MP_PwrCtlDM, 192 - #ifdef CONFIG_AP_WOWLAN 193 - MP_AP_WOW_ENABLE, 194 - #endif 195 192 MP_NULL, 196 193 MP_GET_TXPOWER_INX, 197 194 };
-7
drivers/staging/rtl8723bs/include/sdio_ops.h
··· 25 25 extern void sd_int_hdl(struct adapter *padapter); 26 26 extern u8 CheckIPSStatus(struct adapter *padapter); 27 27 28 - #ifdef CONFIG_AP_WOWLAN 29 - extern u8 RecvOnePkt(struct adapter *padapter, u32 size); 30 - #endif 31 28 extern void InitInterrupt8723BSdio(struct adapter *padapter); 32 29 extern void InitSysInterrupt8723BSdio(struct adapter *padapter); 33 30 extern void EnableInterrupt8723BSdio(struct adapter *padapter); 34 31 extern void DisableInterrupt8723BSdio(struct adapter *padapter); 35 32 extern u8 HalQueryTxBufferStatus8723BSdio(struct adapter *padapter); 36 33 extern void HalQueryTxOQTBufferStatus8723BSdio(struct adapter *padapter); 37 - #ifdef CONFIG_AP_WOWLAN 38 - extern void ClearInterrupt8723BSdio(struct adapter *padapter); 39 - #endif 40 - 41 34 #endif /* !__SDIO_OPS_H__ */
-4
drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
··· 4621 4621 SIOCIWFIRSTPRIV + 0x1D, 4622 4622 IW_PRIV_TYPE_CHAR | 40, IW_PRIV_TYPE_CHAR | 0x7FF, "test" 4623 4623 }, 4624 - 4625 - #ifdef CONFIG_AP_WOWLAN 4626 - { MP_AP_WOW_ENABLE, IW_PRIV_TYPE_CHAR | 1024, 0, "ap_wow_mode" }, /* set */ 4627 - #endif 4628 4624 }; 4629 4625 4630 4626 static iw_handler rtw_private_handler[] = {
-134
drivers/staging/rtl8723bs/os_dep/os_intfs.c
··· 1227 1227 return _SUCCESS; 1228 1228 } 1229 1229 1230 - #ifdef CONFIG_AP_WOWLAN 1231 - void rtw_suspend_ap_wow(struct adapter *padapter) 1232 - { 1233 - u8 ch, bw, offset; 1234 - struct net_device *pnetdev = padapter->pnetdev; 1235 - struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); 1236 - struct wowlan_ioctl_param poidparam; 1237 - 1238 - DBG_871X("==> " FUNC_ADPT_FMT " entry....\n", FUNC_ADPT_ARG(padapter)); 1239 - 1240 - pwrpriv->wowlan_ap_mode = true; 1241 - 1242 - DBG_871X("wowlan_ap_mode: %d\n", pwrpriv->wowlan_ap_mode); 1243 - 1244 - if (pnetdev) 1245 - rtw_netif_stop_queue(pnetdev); 1246 - /* 1. stop thread */ 1247 - padapter->bDriverStopped = true; /* for stop thread */ 1248 - rtw_stop_drv_threads(padapter); 1249 - padapter->bDriverStopped = false; /* for 32k command */ 1250 - 1251 - /* 2. disable interrupt */ 1252 - rtw_hal_disable_interrupt(padapter); /* It need wait for leaving 32K. */ 1253 - 1254 - /* 2.1 clean interrupt */ 1255 - if (padapter->HalFunc.clear_interrupt) 1256 - padapter->HalFunc.clear_interrupt(padapter); 1257 - 1258 - /* 2.2 free irq */ 1259 - /* sdio_free_irq(adapter_to_dvobj(padapter)); */ 1260 - if (padapter->intf_free_irq) 1261 - padapter->intf_free_irq(adapter_to_dvobj(padapter)); 1262 - 1263 - poidparam.subcode = WOWLAN_AP_ENABLE; 1264 - padapter->HalFunc.SetHwRegHandler(padapter, 1265 - HW_VAR_AP_WOWLAN, (u8 *)&poidparam); 1266 - 1267 - DBG_871X_LEVEL(_drv_always_, "%s: wowmode suspending\n", __func__); 1268 - 1269 - if (rtw_get_ch_setting_union(padapter, &ch, &bw, &offset) != 0) { 1270 - DBG_871X(FUNC_ADPT_FMT " back to linked/linking union - ch:%u, bw:%u, offset:%u\n", 1271 - FUNC_ADPT_ARG(padapter), ch, bw, offset); 1272 - set_channel_bwmode(padapter, ch, offset, bw); 1273 - } 1274 - 1275 - rtw_set_ps_mode(padapter, PS_MODE_MIN, 0, 0, "AP-WOWLAN"); 1276 - 1277 - DBG_871X("<== " FUNC_ADPT_FMT " exit....\n", FUNC_ADPT_ARG(padapter)); 1278 - } 1279 - #endif /* ifdef CONFIG_AP_WOWLAN */ 1280 - 1281 - 1282 1230 static void rtw_suspend_normal(struct adapter *padapter) 1283 1231 { 1284 1232 struct net_device *pnetdev = padapter->pnetdev; ··· 1298 1350 if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { 1299 1351 rtw_suspend_normal(padapter); 1300 1352 } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { 1301 - #ifdef CONFIG_AP_WOWLAN 1302 - rtw_suspend_ap_wow(padapter); 1303 - #else 1304 1353 rtw_suspend_normal(padapter); 1305 - #endif /* CONFIG_AP_WOWLAN */ 1306 1354 } else { 1307 1355 rtw_suspend_normal(padapter); 1308 1356 } ··· 1312 1368 1313 1369 return ret; 1314 1370 } 1315 - 1316 - #ifdef CONFIG_AP_WOWLAN 1317 - int rtw_resume_process_ap_wow(struct adapter *padapter) 1318 - { 1319 - struct net_device *pnetdev = padapter->pnetdev; 1320 - struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); 1321 - struct dvobj_priv *psdpriv = padapter->dvobj; 1322 - struct debug_priv *pdbgpriv = &psdpriv->drv_dbg; 1323 - struct wowlan_ioctl_param poidparam; 1324 - int ret = _SUCCESS; 1325 - 1326 - DBG_871X("==> " FUNC_ADPT_FMT " entry....\n", FUNC_ADPT_ARG(padapter)); 1327 - 1328 - if (padapter) { 1329 - pnetdev = padapter->pnetdev; 1330 - pwrpriv = adapter_to_pwrctl(padapter); 1331 - } else { 1332 - pdbgpriv->dbg_resume_error_cnt++; 1333 - ret = -1; 1334 - goto exit; 1335 - } 1336 - 1337 - rtw_set_ps_mode(padapter, PS_MODE_ACTIVE, 0, 0, "AP-WOWLAN"); 1338 - 1339 - pwrpriv->bFwCurrentInPSMode = false; 1340 - 1341 - rtw_hal_disable_interrupt(padapter); 1342 - 1343 - if (padapter->HalFunc.clear_interrupt) 1344 - padapter->HalFunc.clear_interrupt(padapter); 1345 - 1346 - /* if (sdio_alloc_irq(adapter_to_dvobj(padapter)) != _SUCCESS) { */ 1347 - if ((padapter->intf_alloc_irq) && (padapter->intf_alloc_irq(adapter_to_dvobj(padapter)) != _SUCCESS)) { 1348 - ret = -1; 1349 - RT_TRACE(_module_hci_intfs_c_, _drv_err_, ("%s: sdio_alloc_irq Failed!!\n", __func__)); 1350 - goto exit; 1351 - } 1352 - 1353 - /* Disable WOW, set H2C command */ 1354 - poidparam.subcode = WOWLAN_AP_DISABLE; 1355 - padapter->HalFunc.SetHwRegHandler(padapter, 1356 - HW_VAR_AP_WOWLAN, (u8 *)&poidparam); 1357 - pwrpriv->wowlan_ap_mode = false; 1358 - 1359 - padapter->bDriverStopped = false; 1360 - DBG_871X("%s: wowmode resuming, DriverStopped:%d\n", __func__, padapter->bDriverStopped); 1361 - rtw_start_drv_threads(padapter); 1362 - 1363 - if (padapter->intf_start) 1364 - padapter->intf_start(padapter); 1365 - 1366 - /* start netif queue */ 1367 - if (pnetdev) { 1368 - if (!rtw_netif_queue_stopped(pnetdev)) 1369 - rtw_netif_start_queue(pnetdev); 1370 - else 1371 - rtw_netif_wake_queue(pnetdev); 1372 - } 1373 - 1374 - if (padapter->pid[1] != 0) { 1375 - DBG_871X("pid[1]:%d\n", padapter->pid[1]); 1376 - rtw_signal_process(padapter->pid[1], SIGUSR2); 1377 - } 1378 - 1379 - pwrpriv->bips_processing = false; 1380 - _set_timer(&padapter->mlmepriv.dynamic_chk_timer, 2000); 1381 - 1382 - /* clean driver side wake up reason. */ 1383 - pwrpriv->wowlan_wake_reason = 0; 1384 - exit: 1385 - DBG_871X("<== " FUNC_ADPT_FMT " exit....\n", FUNC_ADPT_ARG(padapter)); 1386 - return ret; 1387 - } 1388 - #endif /* ifdef CONFIG_APWOWLAN */ 1389 1371 1390 1372 static int rtw_resume_process_normal(struct adapter *padapter) 1391 1373 { ··· 1402 1532 if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { 1403 1533 rtw_resume_process_normal(padapter); 1404 1534 } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { 1405 - #ifdef CONFIG_AP_WOWLAN 1406 - rtw_resume_process_ap_wow(padapter); 1407 - #else 1408 1535 rtw_resume_process_normal(padapter); 1409 - #endif /* CONFIG_AP_WOWLAN */ 1410 1536 } else { 1411 1537 rtw_resume_process_normal(padapter); 1412 1538 }