diff --git a/.travis.yml b/.travis.yml index e756aaa..bfe1dec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ language: c compiler: gcc sudo: required +dist: xenial before_install: - sudo apt-get clean @@ -14,24 +15,50 @@ before_install: script: - make CC=$COMPILER KVER=$KVER_BUILD-generic - env: global: - KERNEL_URL=http://kernel.ubuntu.com/~kernel-ppa/mainline/ matrix: include: + - compiler: gcc + addons: + apt: + sources: + - sourceline: 'ppa:ondrej/nginx-mainline' + packages: + - libssl1.1 + env: COMPILER=gcc-5 KVER=5.2-rc1 - compiler: gcc addons: apt: sources: - ubuntu-toolchain-r-test - sourceline: 'ppa:ondrej/nginx-mainline' + packages: + - gcc-6 + - libssl1.1 + env: COMPILER=gcc-6 KVER=5.2-rc1 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + - sourceline: 'ppa:ondrej/nginx-mainline' + packages: + - gcc-7 + - libssl1.1 + env: COMPILER=gcc-7 KVER=5.2-rc1 + - compiler: gcc + addons: + apt: + sources: + - sourceline: 'ppa:ondrej/nginx-mainline' packages: - gcc-5 - libelf-dev - libssl1.1 - env: COMPILER=gcc-5 KVER=5.0 + env: COMPILER=gcc-5 KVER=4.19.45 - compiler: gcc addons: apt: @@ -41,51 +68,22 @@ matrix: packages: - gcc-6 - libelf-dev + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-7 + - libelf-dev - libssl1.1 - env: COMPILER=gcc-6 KVER=5.0 + env: COMPILER=gcc-6 KVER=4.19.45 - compiler: gcc addons: apt: sources: - ubuntu-toolchain-r-test - sourceline: 'ppa:ondrej/nginx-mainline' - packages: - - gcc-7 - - libelf-dev - - libssl1.1 - env: COMPILER=gcc-7 KVER=5.0 - - compiler: gcc - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gcc-5 - - libelf-dev - env: COMPILER=gcc-5 KVER=4.15 - - compiler: gcc - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gcc-6 - - libelf-dev - env: COMPILER=gcc-6 KVER=4.15 - - compiler: gcc - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gcc-7 - - libelf-dev - env: COMPILER=gcc-7 KVER=4.15 - - compiler: gcc - addons: - apt: - sources: - - ubuntu-toolchain-r-test packages: - gcc-5 - libelf-dev @@ -124,3 +122,8 @@ matrix: packages: - gcc-4.9 env: COMPILER=gcc-4.9 KVER=3.16.48 + - gcc-7 + - libssl1.1 + env: COMPILER=gcc-7 KVER=4.19.45 + - compiler: gcc + env: COMPILER=gcc-5 KVER=3.14.79 diff --git a/Makefile b/Makefile index 8bb98b4..ac2dd73 100755 --- a/Makefile +++ b/Makefile @@ -10,6 +10,7 @@ EXTRA_CFLAGS += -Wextra #EXTRA_CFLAGS += -Wno-tautological-compare #EXTRA_CFLAGS += -Wno-incompatible-pointer-types #EXTRA_CFLAGS += -Wno-switch +#EXTRA_CFLAGS += -Wmissing-field-initializers EXTRA_CFLAGS += -Wno-cast-function-type EXTRA_CFLAGS += -Wno-unused-variable EXTRA_CFLAGS += -Wno-unused-value @@ -43,8 +44,12 @@ CONFIG_RTL8821A = y CONFIG_RTL8814A = y ######################### Interface ########################### CONFIG_USB_HCI = y +######################### LED ########################### +CONFIG_LED_CONTROL = y +CONFIG_LED_ENABLE = y ########################## Features ########################### CONFIG_NET_NS = n +CONFIG_IPV6_DISABLE = n CONFIG_MP_INCLUDED = y CONFIG_CONCURRENT_MODE = n CONFIG_POWER_SAVING = n @@ -151,6 +156,7 @@ CONFIG_PLATFORM_ARM_SPREADTRUM_6820 = n CONFIG_PLATFORM_ARM_SPREADTRUM_8810 = n CONFIG_PLATFORM_ARM_WMT = n CONFIG_PLATFORM_ARM_RPI = n +CONFIG_PLATFORM_ARM64_RPI = n CONFIG_PLATFORM_ARM_ODROIDC2 = n CONFIG_PLATFORM_TI_DM365 = n CONFIG_PLATFORM_MOZART = n @@ -1451,6 +1457,17 @@ MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ INSTALL_PREFIX := endif +ifeq ($(CONFIG_PLATFORM_ARM64_RPI), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +EXTRA_CFLAGS += -DRTW_USE_CFG80211_STA_EVENT +ARCH ?= arm64 +CROSS_COMPILE ?= +KVER ?= $(shell uname -r) +KSRC := /lib/modules/$(KVER)/build +MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ +INSTALL_PREFIX := +endif + ifeq ($(CONFIG_PLATFORM_ARM_ODROIDC2), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT @@ -1713,7 +1730,7 @@ install: /sbin/depmod -a ${KVER} uninstall: - rm -f $(MODDESTDIR)/$(MODULE_NAME).ko + rm -f $(MODDESTDIR)$(MODULE_NAME).ko /sbin/depmod -a ${KVER} backup_rtlwifi: diff --git a/core/rtw_recv.c b/core/rtw_recv.c index ee51ced..4d8dea2 100644 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -23,7 +23,6 @@ #endif - #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS static void rtw_signal_stat_timer_hdl(void *ctx); @@ -47,8 +46,6 @@ u8 signal_stat_calc_profile[SIGNAL_STAT_CALC_PROFILE_MAX][2] = { void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv) { - - _rtw_memset((u8 *)psta_recvpriv, 0, sizeof(struct sta_recv_priv)); _rtw_spinlock_init(&psta_recvpriv->lock); @@ -58,7 +55,6 @@ void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv) _rtw_init_queue(&psta_recvpriv->defrag_q); - } sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) @@ -68,7 +64,6 @@ sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) union recv_frame *precvframe; sint res = _SUCCESS; - /* We don't need to memset padapter->XXX to zero, because adapter is allocated by rtw_zvmalloc(). */ /* _rtw_memset((unsigned char *)precvpriv, 0, sizeof (struct recv_priv)); */ @@ -149,7 +144,6 @@ sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) exit: - return res; } @@ -188,7 +182,6 @@ void _rtw_free_recv_priv(struct recv_priv *precvpriv) rtw_hal_free_recv_priv(padapter); - } bool rtw_rframe_del_wfd_ie(union recv_frame *rframe, u8 ies_offset) @@ -230,7 +223,6 @@ union recv_frame *_rtw_alloc_recvframe(_queue *pfree_recv_queue) } } - return precvframe; } @@ -263,7 +255,6 @@ int rtw_free_recvframe(union recv_frame *precvframe, _queue *pfree_recv_queue) _adapter *padapter = precvframe->u.hdr.adapter; struct recv_priv *precvpriv = &padapter->recvpriv; - #ifdef CONFIG_CONCURRENT_MODE padapter = GET_PRIMARY_ADAPTER(padapter); precvpriv = &padapter->recvpriv; @@ -271,10 +262,8 @@ int rtw_free_recvframe(union recv_frame *precvframe, _queue *pfree_recv_queue) precvframe->u.hdr.adapter = padapter; #endif - rtw_os_free_recvframe(precvframe); - _enter_critical_bh(&pfree_recv_queue->lock, &irqL); rtw_list_delete(&(precvframe->u.hdr.list)); @@ -295,16 +284,12 @@ int rtw_free_recvframe(union recv_frame *precvframe, _queue *pfree_recv_queue) } - - - sint _rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue) { _adapter *padapter = precvframe->u.hdr.adapter; struct recv_priv *precvpriv = &padapter->recvpriv; - /* _rtw_init_listhead(&(precvframe->u.hdr.list)); */ rtw_list_delete(&(precvframe->u.hdr.list)); @@ -316,7 +301,6 @@ sint _rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue) precvpriv->free_recvframe_cnt++; } - return _SUCCESS; } @@ -341,9 +325,6 @@ sint rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue) } */ - - - /* caller : defrag ; recvframe_chk_defrag in recv_thread (passive) pframequeue: defrag_queue : will be accessed in recv_thread (passive) @@ -374,7 +355,6 @@ void rtw_free_recvframe_queue(_queue *pframequeue, _queue *pfree_recv_queue) _rtw_spinunlock(&pframequeue->lock); - } u32 rtw_free_uc_swdec_pending_queue(_adapter *adapter) @@ -392,7 +372,6 @@ u32 rtw_free_uc_swdec_pending_queue(_adapter *adapter) return cnt; } - sint rtw_enqueue_recvbuf_to_head(struct recv_buf *precvbuf, _queue *queue) { _irqL irqL; @@ -509,7 +488,6 @@ sint recvframe_chkmic(_adapter *adapter, union recv_frame *precvframe) pframe = precvframe->u.hdr.rx_data; payload = pframe + prxattrib->hdrlen + prxattrib->iv_len; - /* rtw_seccalctkipmic(&stainfo->dot11tkiprxmickey.skey[0],pframe,payload, datalen ,&miccode[0],(unsigned char)prxattrib->priority); */ /* care the length of the data */ rtw_seccalctkipmic(mickey, pframe, payload, datalen , &miccode[0], (unsigned char)prxattrib->priority); /* care the length of the data */ @@ -524,11 +502,8 @@ sint recvframe_chkmic(_adapter *adapter, union recv_frame *precvframe) } } - if (bmic_err == _TRUE) { - - /* double check key_index for some timing issue , */ /* cannot compare with psecuritypriv->dot118021XGrpKeyid also cause timing issue */ if ((IS_MCAST(prxattrib->ra) == _TRUE) && (prxattrib->key_index != pmlmeinfo->key_index)) @@ -558,7 +533,6 @@ sint recvframe_chkmic(_adapter *adapter, union recv_frame *precvframe) exit: - return res; } @@ -575,7 +549,6 @@ union recv_frame *decryptor(_adapter *padapter, union recv_frame *precv_frame) union recv_frame *return_packet = precv_frame; u32 res = _SUCCESS; - DBG_COUNTER(padapter->rx_logs.core_rx_post_decrypt); @@ -700,7 +673,6 @@ union recv_frame *decryptor(_adapter *padapter, union recv_frame *precv_frame) prxattrib->bdecrypted = _TRUE; /* recvframe_chkmic(adapter, precv_frame); */ /* move to recvframme_defrag function */ - return return_packet; } @@ -719,7 +691,6 @@ union recv_frame *portctrl(_adapter *adapter, union recv_frame *precv_frame) u16 eapol_type = 0x888e;/* for Funia BD's WPA issue */ struct rx_pkt_attrib *pattrib; - pstapriv = &adapter->stapriv; auth_alg = adapter->securitypriv.dot11AuthAlgrthm; @@ -733,7 +704,6 @@ union recv_frame *portctrl(_adapter *adapter, union recv_frame *precv_frame) psta = rtw_get_stainfo(pstapriv, psta_addr); - if (auth_alg == dot11AuthAlgrthm_8021X) { if ((psta != NULL) && (psta->ieee8021x_blocked)) { /* blocked */ @@ -757,7 +727,6 @@ union recv_frame *portctrl(_adapter *adapter, union recv_frame *precv_frame) /* allowed */ /* check decryption status, and decrypt the frame if needed */ - prtnframe = precv_frame; /* check is the EAPOL frame or not (Rekey) */ /* if(ether_type == eapol_type){ */ @@ -769,7 +738,6 @@ union recv_frame *portctrl(_adapter *adapter, union recv_frame *precv_frame) } else prtnframe = precv_frame; - return prtnframe; } @@ -963,7 +931,6 @@ void process_wmmps_data(_adapter *padapter, union recv_frame *precv_frame, struc } - #endif } @@ -1163,7 +1130,6 @@ sint sta2sta_data_frame( u8 *pframe_body = psnap_type + 2 + 1; #endif - /* RTW_INFO("[%s] %d, seqnum:%d\n", __FUNCTION__, __LINE__, pattrib->seq_num); */ if ((check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE) || @@ -1355,7 +1321,6 @@ sint ap2sta_data_frame( goto exit; } - /* check BSSID */ if (_rtw_memcmp(pattrib->bssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || _rtw_memcmp(mybssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || @@ -1414,7 +1379,6 @@ sint ap2sta_data_frame( goto exit; } - } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) { /* Special case */ ret = RTW_RX_HANDLED; @@ -1448,7 +1412,6 @@ sint ap2sta_data_frame( exit: - return ret; } @@ -1465,7 +1428,6 @@ sint sta2ap_data_frame( unsigned char *mybssid = get_bssid(pmlmepriv); sint ret = _SUCCESS; - if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) { /* For AP mode, RA=BSSID, TX=STA(SRC_ADDR), A3=DST_ADDR */ if (!_rtw_memcmp(pattrib->bssid, mybssid, ETH_ALEN)) { @@ -1514,7 +1476,6 @@ bypass_deauth7: _rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN); _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); - *psta = rtw_get_stainfo(pstapriv, pattrib->bssid); /* get sta_info */ if (*psta == NULL) { #ifdef DBG_RX_DROP_FRAME @@ -1539,7 +1500,6 @@ bypass_deauth7: exit: - return ret; } @@ -1978,7 +1938,6 @@ sint validate_recv_mgnt_frame(PADAPTER padapter, union recv_frame *precv_frame) psa = get_sa(ptr); pbssid = get_hdr_bssid(ptr); - _rtw_memcpy(pattrib->dst, pda, ETH_ALEN); _rtw_memcpy(pattrib->src, psa, ETH_ALEN); @@ -2121,7 +2080,6 @@ pre_validate_status_chk: pattrib->hdrlen = WLAN_HDR_A3_LEN + a4_shift; } - if (pattrib->order) /* HT-CTRL 11n */ pattrib->hdrlen += 4; @@ -2233,7 +2191,6 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame) u8 external_len = 0; #endif - #ifdef CONFIG_FIND_BEST_CHANNEL if (pmlmeext->sitesurvey_res.state == SCAN_PROCESS) { int ch_set_idx = rtw_chset_search_ch(rfctl->channel_set, rtw_get_oper_ch(adapter)); @@ -2383,11 +2340,9 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame) exit: - return retval; } - /* remove the wlanhdr and add the eth_hdr */ #if 1 sint wlanhdr_to_ethhdr(union recv_frame *precvframe) @@ -2405,7 +2360,6 @@ sint wlanhdr_to_ethhdr(union recv_frame *precvframe) u8 *ptr = get_recvframe_data(precvframe) ; /* point to frame_ctrl field */ struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib; - if (pattrib->encrypt) recvframe_pull_tail(precvframe, pattrib->icv_len); @@ -2428,12 +2382,10 @@ sint wlanhdr_to_ethhdr(union recv_frame *precvframe) rmv_len = pattrib->hdrlen + pattrib->iv_len + RATTRIB_GET_MCTRL_LEN(pattrib) + (bsnaphdr ? SNAP_SIZE : 0); len = precvframe->u.hdr.len - rmv_len; - _rtw_memcpy(ð_type, ptr + rmv_len, 2); eth_type = ntohs((unsigned short)eth_type); /* pattrib->ether_type */ pattrib->eth_type = eth_type; - if ((check_fwstate(pmlmepriv, WIFI_MP_STATE) == _TRUE)) { ptr += rmv_len ; *ptr = 0x87; @@ -2491,7 +2443,6 @@ sint wlanhdr_to_ethhdr(union recv_frame *precvframe) struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib; struct _vlan *pvlan = NULL; - psnap = (struct ieee80211_snap_hdr *)(ptr + pattrib->hdrlen + pattrib->iv_len); psnap_type = ptr + pattrib->hdrlen + pattrib->iv_len + SNAP_SIZE; if (psnap->dsap == 0xaa && psnap->ssap == 0xaa && psnap->ctrl == 0x03) { @@ -2581,12 +2532,10 @@ sint wlanhdr_to_ethhdr(union recv_frame *precvframe) exit: - return ret; } #endif - #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) #ifdef PLATFORM_LINUX static void recvframe_expand_pkt( @@ -2599,7 +2548,6 @@ static void recvframe_expand_pkt( u32 alloc_sz; u8 *ptr; - pfhdr = &prframe->u.hdr; /* 6 is for IP header 8 bytes alignment in QoS packet case. */ @@ -2657,7 +2605,6 @@ union recv_frame *recvframe_defrag(_adapter *adapter, _queue *defrag_q) union recv_frame *prframe, *pnextrframe; _queue *pfree_recv_queue; - curfragnum = 0; pfree_recv_queue = &adapter->recvpriv.free_recv_queue; @@ -2694,7 +2641,6 @@ union recv_frame *recvframe_defrag(_adapter *adapter, _queue *defrag_q) pnextrframe = LIST_CONTAINOR(plist, union recv_frame , u); pnfhdr = &pnextrframe->u.hdr; - /* check the fragment sequence (2nd ~n fragment frame) */ if (curfragnum != pnfhdr->attrib.frag_num) { @@ -2730,8 +2676,6 @@ union recv_frame *recvframe_defrag(_adapter *adapter, _queue *defrag_q) /* free the defrag_q queue and return the prframe */ rtw_free_recvframe_queue(defrag_q, pfree_recv_queue); - - return prframe; } @@ -2748,7 +2692,6 @@ union recv_frame *recvframe_chk_defrag(PADAPTER padapter, union recv_frame *prec union recv_frame *prtnframe = NULL; _queue *pfree_recv_queue, *pdefrag_q; - pstapriv = &padapter->stapriv; pfhdr = &precv_frame->u.hdr; @@ -2787,7 +2730,6 @@ union recv_frame *recvframe_chk_defrag(PADAPTER padapter, union recv_frame *prec } } - /* Then enqueue the 0~(n-1) fragment into the defrag_q */ /* _rtw_spinlock(&pdefrag_q->lock); */ @@ -2795,7 +2737,6 @@ union recv_frame *recvframe_chk_defrag(PADAPTER padapter, union recv_frame *prec rtw_list_insert_tail(&pfhdr->list, phead); /* _rtw_spinunlock(&pdefrag_q->lock); */ - prtnframe = NULL; } else { @@ -2827,7 +2768,6 @@ union recv_frame *recvframe_chk_defrag(PADAPTER padapter, union recv_frame *prec } - if ((prtnframe != NULL) && (prtnframe->u.hdr.attrib.privacy)) { /* after defrag we must check tkip mic code */ if (recvframe_chkmic(padapter, prtnframe) == _FAIL) { @@ -2836,7 +2776,6 @@ union recv_frame *recvframe_chk_defrag(PADAPTER padapter, union recv_frame *prec } } - return prtnframe; } @@ -3279,7 +3218,6 @@ static int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, un /* _enter_critical_ex(&ppending_recvframe_queue->lock, &irql); */ /* _rtw_spinlock_ex(&ppending_recvframe_queue->lock); */ - phead = get_list_head(ppending_recvframe_queue); plist = get_next(phead); @@ -3302,7 +3240,6 @@ static int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, un } - /* _enter_critical_ex(&ppending_recvframe_queue->lock, &irql); */ /* _rtw_spinlock_ex(&ppending_recvframe_queue->lock); */ @@ -3313,7 +3250,6 @@ static int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, un /* _rtw_spinunlock_ex(&ppending_recvframe_queue->lock); */ /* _exit_critical_ex(&ppending_recvframe_queue->lock, &irql); */ - return _TRUE; } @@ -3504,7 +3440,6 @@ static int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prfram #endif } - /* s3. Insert all packet into Reorder Queue to maintain its ordering. */ if (!enqueue_reorder_recvframe(preorder_ctrl, prframe)) { /* DbgPrint("recv_indicatepkt_reorder, enqueue_reorder_recvframe fail!\n"); */ @@ -3517,7 +3452,6 @@ static int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prfram goto _err_exit; } - /* s4. */ /* Indication process. */ /* After Packet dropping and Sliding Window shifting as above, we can now just indicate the packets */ @@ -3554,7 +3488,6 @@ _err_exit: return _FAIL; } - void rtw_reordering_ctrl_timeout_handler(void *pcontext) { _irqL irql; @@ -3692,7 +3625,6 @@ static sint MPwlanhdr_to_ethhdr(union recv_frame *precvframe) u8 *ptr = get_recvframe_data(precvframe) ; /* point to frame_ctrl field */ struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib; - if (pattrib->encrypt) recvframe_pull_tail(precvframe, pattrib->icv_len); @@ -3732,7 +3664,6 @@ static sint MPwlanhdr_to_ethhdr(union recv_frame *precvframe) _rtw_memcpy(ptr + 12, &len, 2); } - len = htons(pattrib->seq_num); /* RTW_INFO("wlan seq = %d ,seq_num =%x\n",len,pattrib->seq_num); */ _rtw_memcpy(ptr + 12, &len, 2); @@ -3745,12 +3676,10 @@ static sint MPwlanhdr_to_ethhdr(union recv_frame *precvframe) } - return ret; } - int mp_recv_frame(_adapter *padapter, union recv_frame *rframe) { int ret = _SUCCESS; @@ -3964,6 +3893,12 @@ static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *precvframe, rtap_hdr = (struct ieee80211_radiotap_header *)&hdr_buf[0]; rtap_hdr->it_version = PKTHDR_RADIOTAP_VERSION; +#ifdef CONFIG_RTL8814A + /* RTL8814AU rx descriptor has no bandwidth, ldpc, stbc and sgi info */ + /* fixup bandwidth */ + pattrib->bw = pattrib->phy_info.band_width & 0x03; +#endif + /* tsft */ if (pattrib->tsfl) { u64 tmp_64bit; @@ -4093,11 +4028,15 @@ static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *precvframe, #endif /* guard interval */ +#ifndef CONFIG_RTL8814A hdr_buf[rt_len] |= BIT2; hdr_buf[rt_len + 1] |= (pattrib->sgi & 0x01) << 2; +#endif /* STBC */ +#ifndef CONFIG_RTL8814A hdr_buf[rt_len] |= BIT5; +#endif hdr_buf[rt_len + 1] |= (pattrib->stbc & 0x03) << 5; rt_len += 2; @@ -4132,7 +4071,9 @@ static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *precvframe, hdr_buf[rt_len + 2] |= (pattrib->sgi & 0x01) << 2; /* LDPC extra OFDM symbol */ +#ifndef CONFIG_RTL8814A tmp_16bit |= BIT4; +#endif hdr_buf[rt_len + 2] |= (pattrib->ldpc & 0x01) << 4; memcpy(&hdr_buf[rt_len], &tmp_16bit, 2); @@ -4419,7 +4360,7 @@ int recv_func(_adapter *padapter, union recv_frame *rframe) if (cnt) RTW_INFO(FUNC_ADPT_FMT" dequeue %d from uc_swdec_pending_queue\n", - FUNC_ADPT_ARG(padapter), cnt); + FUNC_ADPT_ARG(padapter), cnt); } } @@ -4463,8 +4404,6 @@ s32 rtw_recv_entry(union recv_frame *precvframe) struct recv_priv *precvpriv; s32 ret = _SUCCESS; - - padapter = precvframe->u.hdr.adapter; precvpriv = &padapter->recvpriv; @@ -4475,10 +4414,8 @@ s32 rtw_recv_entry(union recv_frame *precvframe) goto _recv_entry_drop; } - precvpriv->rx_pkts++; - return ret; _recv_entry_drop: @@ -4488,8 +4425,6 @@ _recv_entry_drop: padapter->mppriv.rx_pktloss = precvpriv->rx_drop; #endif - - return ret; } diff --git a/dkms-install.sh b/dkms-install.sh index b4c4379..547a6f4 100755 --- a/dkms-install.sh +++ b/dkms-install.sh @@ -7,11 +7,11 @@ else echo "About to run dkms install steps..." fi -DRV_DIR=rtl8812au +DRV_DIR="$(pwd)" DRV_NAME=rtl8812au DRV_VERSION=5.3.4 -cp -r $(pwd) /usr/src/${DRV_NAME}-${DRV_VERSION} +cp -r ${DRV_DIR} /usr/src/${DRV_NAME}-${DRV_VERSION} dkms add -m ${DRV_NAME} -v ${DRV_VERSION} dkms build -m ${DRV_NAME} -v ${DRV_VERSION} @@ -20,7 +20,7 @@ RESULT=$? echo "Finished running dkms install steps." - +if grep -q -e "^CONFIG_DISABLE_IPV6 = y$" "$DRV_DIR/Makefile" ; then if echo "net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf; then @@ -29,6 +29,6 @@ echo "Finished running dkms install steps." else echo "Could not disable IPv6" fi - +fi exit $RESULT diff --git a/dkms-remove.sh b/dkms-remove.sh index 96d9b20..40c69b1 100755 --- a/dkms-remove.sh +++ b/dkms-remove.sh @@ -7,7 +7,7 @@ else echo "About to run dkms removal steps..." fi -DRV_DIR=rtl8812au +DRV_DIR="$(pwd)" DRV_NAME=rtl8812au DRV_VERSION=5.3.4 diff --git a/dkms.conf b/dkms.conf index 5e62558..1f862a2 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.3.4~20190407" +PACKAGE_VERSION="5.3.4~20190522" CLEAN="'make' clean" BUILT_MODULE_NAME[0]=88XXau PROCS_NUM=`nproc` diff --git a/hal/rtl8814a/rtl8814a_dm.c b/hal/rtl8814a/rtl8814a_dm.c index 61a77d1..aef425e 100644 --- a/hal/rtl8814a/rtl8814a_dm.c +++ b/hal/rtl8814a/rtl8814a_dm.c @@ -334,7 +334,7 @@ void rtl8814_init_dm_priv(IN PADAPTER Adapter) #endif Init_ODM_ComInfo_8814(Adapter); - odm_init_all_timers(podmpriv ); + odm_init_all_timers(podmpriv ); //PHYDM_InitDebugSetting(podmpriv); pHalData->CurrentTxPwrIdx = 18; diff --git a/hal/rtl8814a/rtl8814a_phycfg.c b/hal/rtl8814a/rtl8814a_phycfg.c index fa1cd06..30d096a 100644 --- a/hal/rtl8814a/rtl8814a_phycfg.c +++ b/hal/rtl8814a/rtl8814a_phycfg.c @@ -1094,7 +1094,7 @@ PHY_SetRFPowerState8814A( #elif (DEV_BUS_TYPE == RT_SDIO_INTERFACE) bResult = phy_SetRFPowerState_8814Sdio(Adapter, eRFPowerState); #endif - + RT_TRACE(COMP_RF, DBG_LOUD, ("<--------- PHY_SetRFPowerState8814(): bResult(%d)\n", bResult)); return bResult; @@ -1230,17 +1230,18 @@ PHY_GetTxPowerIndex8814A( tic->ebias = 0; } + phy_TxPwrAdjInPercentage(pAdapter, (u8 *)&txPower); if(txPower > MAX_POWER_INDEX) txPower = MAX_POWER_INDEX; - //if (Adapter->registrypriv.mp_mode==0 && + //if (Adapter->registrypriv.mp_mode==0 && //(pHalData->bautoload_fail_flag || pHalData->EfuseMap[EFUSE_INIT_MAP][EEPROM_TX_PWR_INX_JAGUAR] == 0xFF)) //txPower = 0x12; /*RTW_INFO("Final Tx Power(RF-%c, Channel: %d) = %d(0x%X)\n", ((RFPath==0)?'A':(RFPath==1)?'B':(RFPath==2)?'C':'D'), Channel, txPower, txPower);*/ - return (u8) txPower; + return (u8) txPower; } @@ -1248,7 +1249,7 @@ VOID PHY_SetTxPowerIndex_8814A( IN PADAPTER Adapter, IN u32 PowerIndex, - IN enum rf_path RFPath, + IN enum rf_path RFPath, IN u8 Rate ) { diff --git a/os_dep/linux/ioctl_linux.c b/os_dep/linux/ioctl_linux.c index 3ff1564..d824dc5 100644 --- a/os_dep/linux/ioctl_linux.c +++ b/os_dep/linux/ioctl_linux.c @@ -863,7 +863,7 @@ static int wpa_set_auth_algs(struct net_device *dev, u32 value) static int wpa_set_encryption(struct net_device *dev, struct ieee_param *param, u32 param_len) { int ret = 0; - u32 wep_key_idx, wep_key_len, wep_total_len; + u32 wep_key_idx, wep_key_len, wep_total_len = 0; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct security_priv *psecuritypriv = &padapter->securitypriv; diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c index 36e282d..d4b32dc 100644 --- a/os_dep/linux/os_intfs.c +++ b/os_dep/linux/os_intfs.c @@ -1273,20 +1273,18 @@ unsigned int rtw_classify8021d(struct sk_buff *skb) return dscp >> 5; } -#if (LINUX_VERSION_CODE>=KERNEL_VERSION(4,19,0)) -static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb, - struct net_device *sb_dev, - select_queue_fallback_t fallback) -#else static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0) + #if (LINUX_VERSION_CODE < KERNEL_VERSION(4,19,0)) , void *accel_priv - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + #else + , struct net_device *sb_dev + #endif + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)) , select_queue_fallback_t fallback #endif #endif ) -#endif { _adapter *padapter = rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv = &padapter->mlmepriv; diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index cbe5c12..708b3e9 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -218,6 +218,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x056E, 0x4007), .driver_info = RTL8821}, /* Elecom - WDC-433DU2HBK */ {USB_DEVICE(0x0BDA, 0xA811), .driver_info = RTL8821}, /* GMYLE - AC450 */ {USB_DEVICE(0x3823, 0x6249), .driver_info = RTL8821}, /* Obihai - OBiWiFi */ + {USB_DEVICE(0x2357, 0x0122), .driver_info = RTL8821}, /* TP Link - T2U Nano */ #endif #ifdef CONFIG_RTL8192E