diff --git a/Makefile b/Makefile index f887cc3..52f3892 100755 --- a/Makefile +++ b/Makefile @@ -93,7 +93,7 @@ CONFIG_AP_WOWLAN = n ######### Notify SDIO Host Keep Power During Syspend ########## CONFIG_RTW_SDIO_PM_KEEP_POWER = y ###################### MP HW TX MODE FOR VHT ####################### -CONFIG_MP_VHT_HW_TX_MODE = y +CONFIG_MP_VHT_HW_TX_MODE = n ###################### Platform Related ####################### CONFIG_PLATFORM_I386_PC = y CONFIG_PLATFORM_ANDROID_X86 = n diff --git a/core/rtw_mlme_ext.c b/core/rtw_mlme_ext.c index 028d39a..6311233 100644 --- a/core/rtw_mlme_ext.c +++ b/core/rtw_mlme_ext.c @@ -12554,7 +12554,7 @@ static void rtw_mlmeext_disconnect(_adapter *padapter) self_action = MLME_ACTION_NONE; else { RTW_INFO("state:0x%x\n", MLME_STATE(padapter)); - rtw_warn_on(1); + //rtw_warn_on(1); } /* set_opmode_cmd(padapter, infra_client_with_mlme); */ diff --git a/core/rtw_wlan_util.c b/core/rtw_wlan_util.c index 26f75a9..f4bab02 100644 --- a/core/rtw_wlan_util.c +++ b/core/rtw_wlan_util.c @@ -596,7 +596,7 @@ void set_channel_bwmode(_adapter *padapter, unsigned char channel, unsigned char #endif if (padapter->bNotifyChannelChange) - RTW_INFO("[%s] ch = %d, offset = %d, bwmode = %d\n", __FUNCTION__, channel, channel_offset, bwmode); + RTW_INFO("[%s] ch = %d, offset = %d, bwmode = %d\n", __func__, channel, channel_offset, bwmode); center_ch = rtw_get_center_ch(channel, bwmode, channel_offset); @@ -1985,7 +1985,7 @@ void HTOnAssocRsp(_adapter *padapter) struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - RTW_INFO("%s\n", __FUNCTION__); + RTW_INFO("%s\n", __func__); if ((pmlmeinfo->HT_info_enable) && (pmlmeinfo->HT_caps_enable)) pmlmeinfo->HT_enable = 1; @@ -2044,7 +2044,7 @@ void HTOnAssocRsp(_adapter *padapter) for (i = 0; i < 16; i++) pmlmeinfo->HT_caps.HT_cap_element.MCS_rate[i] &= MCS_rate_1R[i]; #endif - RTW_INFO("%s(): WLAN_HT_CAP_SM_PS_STATIC\n", __FUNCTION__); + RTW_INFO("%s(): WLAN_HT_CAP_SM_PS_STATIC\n", __func__); } /* */ @@ -3686,7 +3686,7 @@ void rtw_release_macid(_adapter *padapter, struct sta_info *psta) RTW_WARN(FUNC_ADPT_FMT" if%u, mac_addr:"MAC_FMT" macid:%u not valid\n" , FUNC_ADPT_ARG(padapter), padapter->iface_id + 1 , MAC_ARG(psta->cmn.mac_addr), psta->cmn.mac_id); - rtw_warn_on(1); + //rtw_warn_on(1); goto exit; } diff --git a/dkms.conf b/dkms.conf index 2d86863..3510a97 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.3.4~20181114" +PACKAGE_VERSION="5.3.4~20190216" CLEAN="'make' clean" BUILT_MODULE_NAME[0]=88XXau PROCS_NUM=`nproc` diff --git a/hal/rtl8812a/usb/rtl8812au_xmit.c b/hal/rtl8812a/usb/rtl8812au_xmit.c index 4104105..36b3d1e 100644 --- a/hal/rtl8812a/usb/rtl8812au_xmit.c +++ b/hal/rtl8812a/usb/rtl8812au_xmit.c @@ -104,7 +104,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz , u8 ba /* RTW_INFO("%s, pkt_offset=0x%02x\n",__FUNCTION__,pxmitframe->pkt_offset); */ /* pkt_offset, unit:8 bytes padding */ if (pxmitframe->pkt_offset > 0) - SET_TX_DESC_PKT_OFFSET_8812(ptxdesc, pxmitframe->pkt_offset); + SET_TX_DESC_PKT_OFFSET_8812(ptxdesc, pxmitframe->pkt_offset); SET_TX_DESC_MACID_8812(ptxdesc, pattrib->mac_id); SET_TX_DESC_RATE_ID_8812(ptxdesc, pattrib->raid); @@ -115,13 +115,41 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz , u8 ba if (!pattrib->qos_en) { SET_TX_DESC_HWSEQ_EN_8812(ptxdesc, 1); /* Hw set sequence number */ - } else + } else { SET_TX_DESC_SEQ_8812(ptxdesc, pattrib->seqnum); + } + /* injected frame */ + if (pattrib->inject == 0xa5) { + SET_TX_DESC_RETRY_LIMIT_ENABLE_8812(ptxdesc, 1); + if (pattrib->retry_ctrl == _TRUE) { + SET_TX_DESC_DATA_RETRY_LIMIT_8812(ptxdesc, 6); + } else { + SET_TX_DESC_DATA_RETRY_LIMIT_8812(ptxdesc, 0); + } + if (pattrib->sgi == _TRUE) { + SET_TX_DESC_DATA_SHORT_8812(ptxdesc, 1); + } else { + SET_TX_DESC_DATA_SHORT_8812(ptxdesc, 0); + } - if ((pxmitframe->frame_tag & 0x0f) == DATA_FRAMETAG) { - /* RTW_INFO("pxmitframe->frame_tag == DATA_FRAMETAG\n"); */ + SET_TX_DESC_DISABLE_FB_8812(ptxdesc, 1); // svpcom: ? + SET_TX_DESC_USE_RATE_8812(ptxdesc, 1); + SET_TX_DESC_TX_RATE_8812(ptxdesc, MRateToHwRate(pattrib->rate)); - rtl8812a_fill_txdesc_sectype(pattrib, ptxdesc); + if (pattrib->ldpc) + SET_TX_DESC_DATA_LDPC_8812(ptxdesc, 1); + SET_TX_DESC_DATA_STBC_8812(ptxdesc, pattrib->stbc & 3); + //SET_TX_DESC_GF_8812(ptxdesc, 1); // no MCS rates if sets, GreenField? + //SET_TX_DESC_LSIG_TXOP_EN_8812(ptxdesc, 1); + //SET_TX_DESC_HTC_8812(ptxdesc, 1); + //SET_TX_DESC_NO_ACM_8812(ptxdesc, 1); + SET_TX_DESC_DATA_BW_8812(ptxdesc, pattrib->bwmode); // 0 - 20 MHz, 1 - 40 MHz, 2 - 80 MHz + } + + if ((pxmitframe->frame_tag & 0x0f) == DATA_FRAMETAG) { + /* RTW_INFO("pxmitframe->frame_tag == DATA_FRAMETAG\n"); */ + + rtl8812a_fill_txdesc_sectype(pattrib, ptxdesc); #if defined(CONFIG_CONCURRENT_MODE) if (bmcst) fill_txdesc_force_bmc_camid(pattrib, ptxdesc); @@ -1102,7 +1130,7 @@ s32 rtl8812au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) ptxdesc->txdw3 |= cpu_to_le32((8 << 28)); /* set bit3 to 1. Suugested by TimChen. 2009.12.29. */ - rtl8188eu_cal_txdesc_chksum(ptxdesc); + rtl8812eu_cal_txdesc_chksum(ptxdesc); /* ----- end of fill tx desc ----- */ /* */ @@ -1120,7 +1148,7 @@ s32 rtl8812au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) pipe = usb_sndbulkpipe(pdvobj->pusbdev, pHalData->Queue2EPNum[(u8)MGT_QUEUE_INX] & 0x0f); usb_fill_bulk_urb(urb, pdvobj->pusbdev, pipe, - pxmit_skb->data, pxmit_skb->len, rtl8192cu_hostap_mgnt_xmit_cb, pxmit_skb); + pxmit_skb->data, pxmit_skb->len, rtl8192cu_hostap_mgnt_xmit_cb, pxmit_skb); urb->transfer_flags |= URB_ZERO_PACKET; usb_anchor_urb(urb, &phostapdpriv->anchored); diff --git a/hal/rtl8814a/usb/rtl8814au_xmit.c b/hal/rtl8814a/usb/rtl8814au_xmit.c index ca4c52d..a41db56 100644 --- a/hal/rtl8814a/usb/rtl8814au_xmit.c +++ b/hal/rtl8814a/usb/rtl8814au_xmit.c @@ -94,12 +94,12 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag #ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX if (padapter->registrypriv.mp_mode == 0) { - if((PACKET_OFFSET_SZ != 0) && (!bagg_pkt)){ - if((pull) && (pxmitframe->pkt_offset>0)) { + if ((PACKET_OFFSET_SZ != 0) && (!bagg_pkt)) { + if ((pull) && (pxmitframe->pkt_offset>0)) { pxmitframe->pkt_offset = pxmitframe->pkt_offset -1; } } - } + } #endif //RTW_INFO("%s, pkt_offset=0x%02x\n",__FUNCTION__,pxmitframe->pkt_offset); @@ -125,13 +125,37 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_SEQ_8814A(ptxdesc, pattrib->seqnum); } - if((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) - { - //RTW_INFO("pxmitframe->frame_tag == DATA_FRAMETAG\n"); + /* injected frame */ + if (pattrib->inject == 0xa5) { + SET_TX_DESC_RETRY_LIMIT_ENABLE_8814A(ptxdesc, 1); + if (pattrib->retry_ctrl == _TRUE) { + SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 6); + } else { + SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 0); + } + if (pattrib->sgi == _TRUE) { + SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 1); + } else { + SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 0); + } + SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); + SET_TX_DESC_TX_RATE_8814A(ptxdesc, MRateToHwRate(pattrib->rate)); + if (pattrib->ldpc) { + SET_TX_DESC_DATA_LDPC_8814A(ptxdesc, 1); + } else { + SET_TX_DESC_DATA_LDPC_8814A(ptxdesc, 0); + } + SET_TX_DESC_DATA_STBC_8814A(ptxdesc, pattrib->stbc & 3); + SET_TX_DESC_DATA_BW_8814A(ptxdesc, pattrib->bwmode); // 0 - 20 MHz, 1 - 40 MHz, 2 - 80 MHz + } + + else if ((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) { + //RTW_INFO("pxmitframe->frame_tag == DATA_FRAMETAG\n"); rtl8814a_fill_txdesc_sectype(pattrib, ptxdesc); //offset 20 + } #ifdef CONFIG_USB_TX_AGGREGATION if (pxmitframe->agg_num > 1){ //RTW_INFO("%s agg_num:%d\n",__FUNCTION__,pxmitframe->agg_num ); @@ -223,17 +247,15 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_TX_RATE_8814A(ptxdesc, MRateToHwRate(pmlmeext->tx_rate)); } - } - else if((pxmitframe->frame_tag&0x0f)== MGNT_FRAMETAG) - { - //RTW_INFO("pxmitframe->frame_tag == MGNT_FRAMETAG\n"); + if ((pxmitframe->frame_tag&0x0f)== MGNT_FRAMETAG) { + //RTW_INFO("pxmitframe->frame_tag == MGNT_FRAMETAG\n"); SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); DriverFixedRate = 0x01; #ifdef CONFIG_INTEL_PROXIM - if((padapter->proximity.proxim_on==_TRUE)&&(pattrib->intel_proxim==_TRUE)){ - RTW_INFO("\n %s pattrib->rate=%d\n",__FUNCTION__,pattrib->rate); + if ((padapter->proximity.proxim_on==_TRUE)&&(pattrib->intel_proxim==_TRUE)){ + RTW_INFO("\n %s pattrib->rate=%d\n", __func__,pattrib->rate); SET_TX_DESC_TX_RATE_8814A(ptxdesc, pattrib->rate); } else @@ -243,7 +265,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag } // VHT NDPA or HT NDPA Packet for Beamformer. - if((pattrib->subtype == WIFI_NDPA) || + if ((pattrib->subtype == WIFI_NDPA) || ((pattrib->subtype == WIFI_ACTION_NOACK) && (pattrib->order == 1))) { SET_TX_DESC_NAV_USE_HDR_8814A(ptxdesc, 1); @@ -258,7 +280,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag //if(pattrib->rts_cca) //{ // SET_TX_DESC_NDPA_8812(ptxdesc, 2); - //} + //} //else { SET_TX_DESC_NDPA_8814A(ptxdesc, 1); @@ -308,34 +330,10 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_SW_DEFINE_8814A(ptxdesc, SWDefineContent); SET_TX_DESC_GID_8814A(ptxdesc, pattrib->txbf_g_id); - SET_TX_DESC_PAID_8814A(ptxdesc, pattrib->txbf_p_aid); -#if 0 -/* injected frame */ - if(pattrib->inject == 0xa5) { - SET_TX_DESC_RETRY_LIMIT_ENABLE_8814A(ptxdesc, 1); - if (pattrib->retry_ctrl == _TRUE) { - SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 6); - } else { - SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 0); - } - if(pattrib->sgi == _TRUE) { - SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 1); - } else { - SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 0); - } - SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); - SET_TX_DESC_TX_RATE_8814A(ptxdesc, MRateToHwRate(pattrib->rate)); - if (pattrib->ldpc) { - SET_TX_DESC_DATA_LDPC_8814A(ptxdesc, 1); - } else { - SET_TX_DESC_DATA_LDPC_8814A(ptxdesc, 0); - } - SET_TX_DESC_DATA_STBC_8814A(ptxdesc, pattrib->stbc & 3); - SET_TX_DESC_DATA_BW_8814A(ptxdesc, pattrib->bwmode); // 0 - 20 MHz, 1 - 40 MHz, 2 - 80 MHz - } -#endif + SET_TX_DESC_PAID_8814A(ptxdesc, pattrib->txbf_p_aid); + rtl8814a_cal_txdesc_chksum(ptxdesc); - _dbg_dump_tx_info(padapter,pxmitframe->frame_tag,ptxdesc); + _dbg_dump_tx_info(padapter,pxmitframe->frame_tag,ptxdesc); return pull; } @@ -428,12 +426,12 @@ static s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe) mem_addr = pxmitframe->buf_addr; //RTW_INFO("rtw_dump_xframe()\n"); - + for (t = 0; t < pattrib->nr_frags; t++) { if (inner_ret != _SUCCESS && ret == _SUCCESS) ret = _FAIL; - + if (t != (pattrib->nr_frags - 1)) { RTW_DBG("pattrib->nr_frags=%d\n", pattrib->nr_frags); @@ -447,12 +445,11 @@ static s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe) } pull = update_txdesc(pxmitframe, mem_addr, sz, _FALSE); - - if(pull) - { + + if (pull) { mem_addr += PACKET_OFFSET_SZ; //pull txdesc head - - //pxmitbuf ->pbuf = mem_addr; + + //pxmitbuf ->pbuf = mem_addr; pxmitframe->buf_addr = mem_addr; w_sz = sz + TXDESC_SIZE; @@ -460,7 +457,7 @@ static s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe) else { w_sz = sz + TXDESC_SIZE + PACKET_OFFSET_SZ; - } + } ff_hwaddr = rtw_get_ff_hwaddr(pxmitframe); @@ -481,12 +478,12 @@ static s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe) mem_addr = (u8 *)RND4(((SIZE_PTR)(mem_addr))); } - + rtw_free_xmitframe(pxmitpriv, pxmitframe); - + if (ret != _SUCCESS) rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_UNKNOWN); - + return ret; } @@ -558,7 +555,7 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv //3 1. pick up first frame do { rtw_free_xmitframe(pxmitpriv, pxmitframe); - + pxmitframe = rtw_dequeue_xframe(pxmitpriv, pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry); if (pxmitframe == NULL) { // no more xmit frame, release xmit buffer @@ -666,31 +663,30 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv xmitframe_phead = get_list_head(&ptxservq->sta_pending); xmitframe_plist = get_next(xmitframe_phead); - - while (rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist) == _FALSE) - { + + while (rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist) == _FALSE) { pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); xmitframe_plist = get_next(xmitframe_plist); if(_FAIL == rtw_hal_busagg_qsel_check(padapter,pfirstframe->attrib.qsel,pxmitframe->attrib.qsel)) break; - - pxmitframe->agg_num = 0; // not first frame of aggregation + + pxmitframe->agg_num = 0; // not first frame of aggregation #ifdef CONFIG_TX_EARLY_MODE pxmitframe->pkt_offset = 1;// not first frame of aggregation,reserve offset for EM Info #else pxmitframe->pkt_offset = 0; // not first frame of aggregation, no need to reserve offset - #endif + #endif len = xmitframe_need_length(pxmitframe) + TXDESC_SIZE +(pxmitframe->pkt_offset*PACKET_OFFSET_SZ); - + if (_RND8(pbuf + len) > MAX_XMITBUF_SZ) //if (_RND8(pbuf + len) > (MAX_XMITBUF_SZ/2))//to do : for TX TP finial tune , Georgia 2012-0323 { //RTW_INFO("%s....len> MAX_XMITBUF_SZ\n",__FUNCTION__); pxmitframe->agg_num = 1; - pxmitframe->pkt_offset = 1; - break; + pxmitframe->pkt_offset = 1; + break; } rtw_list_delete(&pxmitframe->list); ptxservq->qcnt--; @@ -719,7 +715,7 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv // pxmitframe->pxmitbuf = pxmitbuf; pxmitframe->buf_addr = pxmitbuf->pbuf + pbuf; - + if (rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe) == _FALSE) { RTW_INFO("%s coalesce failed \n",__FUNCTION__); rtw_free_xmitframe(pxmitpriv, pxmitframe); @@ -732,7 +728,7 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv // (len - TXDESC_SIZE) == pxmitframe->attrib.last_txcmdsz update_txdesc(pxmitframe, pxmitframe->buf_addr, pxmitframe->attrib.last_txcmdsz,_TRUE); - + // don't need xmitframe any more rtw_free_xmitframe(pxmitpriv, pxmitframe); @@ -742,9 +738,9 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv pfirstframe->agg_num++; -#ifdef CONFIG_TX_EARLY_MODE - pxmitpriv->agg_pkt[pfirstframe->agg_num-1].offset = _RND8(len); - pxmitpriv->agg_pkt[pfirstframe->agg_num-1].pkt_len = pxmitframe->attrib.last_txcmdsz; +#ifdef CONFIG_TX_EARLY_MODE + pxmitpriv->agg_pkt[pfirstframe->agg_num-1].offset = _RND8(len); + pxmitpriv->agg_pkt[pfirstframe->agg_num-1].pkt_len = pxmitframe->attrib.last_txcmdsz; #endif if (MAX_TX_AGG_PACKET_NUMBER == pfirstframe->agg_num) break; @@ -789,15 +785,15 @@ agg_end: #endif // CONFIG_USE_USB_BUFFER_ALLOC_TX update_txdesc(pfirstframe, pfirstframe->buf_addr, pfirstframe->attrib.last_txcmdsz,_TRUE); - + #ifdef CONFIG_TX_EARLY_MODE //prepare EM info for first frame, agg_num value start from 1 pxmitpriv->agg_pkt[0].offset = _RND8(pfirstframe->attrib.last_txcmdsz +TXDESC_SIZE +(pfirstframe->pkt_offset*PACKET_OFFSET_SZ)); - pxmitpriv->agg_pkt[0].pkt_len = pfirstframe->attrib.last_txcmdsz;//get from rtw_xmitframe_coalesce + pxmitpriv->agg_pkt[0].pkt_len = pfirstframe->attrib.last_txcmdsz;//get from rtw_xmitframe_coalesce UpdateEarlyModeInfo8812(pxmitpriv,pxmitbuf ); #endif - + //3 4. write xmit buffer to USB FIFO ff_hwaddr = rtw_get_ff_hwaddr(pfirstframe); //RTW_INFO("%s ===================================== write port,buf_size(%d) \n",__FUNCTION__,pbuf_tail); @@ -808,8 +804,8 @@ agg_end: //3 5. update statisitc pbuf_tail -= (pfirstframe->agg_num * TXDESC_SIZE); pbuf_tail -= (pfirstframe->pkt_offset * PACKET_OFFSET_SZ); - - + + rtw_count_tx_stats(padapter, pfirstframe, pbuf_tail); rtw_free_xmitframe(pxmitpriv, pfirstframe); @@ -820,11 +816,11 @@ agg_end: #else //CONFIG_USB_TX_AGGREGATION s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf) -{ +{ struct hw_xmit *phwxmits; sint hwentry; - struct xmit_frame *pxmitframe=NULL; + struct xmit_frame *pxmitframe=NULL; int res=_SUCCESS, xcnt = 0; phwxmits = pxmitpriv->hwxmits; @@ -834,40 +830,40 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv if(pxmitbuf==NULL) { - pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); + pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); if(!pxmitbuf) { return _FALSE; - } - } + } + } do - { + { pxmitframe = rtw_dequeue_xframe(pxmitpriv, phwxmits, hwentry); - + if(pxmitframe) { - pxmitframe->pxmitbuf = pxmitbuf; + pxmitframe->pxmitbuf = pxmitbuf; pxmitframe->buf_addr = pxmitbuf->pbuf; - pxmitbuf->priv_data = pxmitframe; + pxmitbuf->priv_data = pxmitframe; if((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) - { + { if(pxmitframe->attrib.priority<=15)//TID0~15 { res = rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe); - } + } //RTW_INFO("==> pxmitframe->attrib.priority:%d\n",pxmitframe->attrib.priority); rtw_os_xmit_complete(padapter, pxmitframe);//always return ndis_packet after rtw_xmitframe_coalesce } - + RTW_DBG("xmitframe_complete(): rtw_dump_xframe\n"); - + if(res == _SUCCESS) { rtw_dump_xframe(padapter, pxmitframe); diff --git a/include/rtw_xmit.h b/include/rtw_xmit.h index f612888..dbf9e5e 100644 --- a/include/rtw_xmit.h +++ b/include/rtw_xmit.h @@ -495,6 +495,8 @@ struct pkt_attrib { u8 bf_pkt_type; #endif + u8 inject; /* == a5 if injected */ + }; #endif diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index cfb2ed0..1027e5d 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -5569,6 +5569,16 @@ static int cfg80211_rtw_get_channel(struct wiphy *wiphy, struct wireless_dev *wd //DBG_871X("%s dvobj null\n", __func__); } switch(pHalData->current_channel_bw){ + case CHANNEL_WIDTH_5: + //DBG_871X("%s width 5\n", __func__); + width = NL80211_CHAN_WIDTH_5; + center_freq = control_freq; + break; + case CHANNEL_WIDTH_10: + //DBG_871X("%s width 5\n", __func__); + width = NL80211_CHAN_WIDTH_10; + center_freq = control_freq; + break; case CHANNEL_WIDTH_20: //DBG_871X("%s width 20\n", __func__); width = NL80211_CHAN_WIDTH_20; diff --git a/os_dep/linux/rtw_android.c b/os_dep/linux/rtw_android.c index b8b4377..8cde93c 100644 --- a/os_dep/linux/rtw_android.c +++ b/os_dep/linux/rtw_android.c @@ -657,7 +657,11 @@ int rtw_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) goto exit; } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)) + if (!access_ok(priv_cmd.buf, priv_cmd.total_len)) { +#else if (!access_ok(VERIFY_READ, priv_cmd.buf, priv_cmd.total_len)) { +#endif RTW_INFO("%s: failed to access memory\n", __FUNCTION__); ret = -EFAULT; goto exit;