mirror of
https://github.com/lwfinger/rtl8188eu.git
synced 2024-11-25 05:53:41 +00:00
rtl8188eu: Remove dead code for CONFIG_USE_USB_BUFFER_ALLOC_RX and remove CONFIG_TX_MCAST2UNI lines
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
This commit is contained in:
parent
6583d55cd1
commit
7df5fff724
13 changed files with 1 additions and 445 deletions
|
@ -360,15 +360,12 @@ void expire_timeout_chk(_adapter *padapter)
|
||||||
if (chk_sta_is_alive(psta) || !psta->expire_to) {
|
if (chk_sta_is_alive(psta) || !psta->expire_to) {
|
||||||
psta->expire_to = pstapriv->expire_to;
|
psta->expire_to = pstapriv->expire_to;
|
||||||
psta->keep_alive_trycnt = 0;
|
psta->keep_alive_trycnt = 0;
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
|
||||||
psta->under_exist_checking = 0;
|
psta->under_exist_checking = 0;
|
||||||
#endif /* CONFIG_TX_MCAST2UNI */
|
|
||||||
} else {
|
} else {
|
||||||
psta->expire_to--;
|
psta->expire_to--;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_ACTIVE_KEEP_ALIVE_CHECK
|
#ifndef CONFIG_ACTIVE_KEEP_ALIVE_CHECK
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
|
||||||
#ifdef CONFIG_80211N_HT
|
#ifdef CONFIG_80211N_HT
|
||||||
if ( (psta->flags & WLAN_STA_HT) && (psta->htpriv.agg_enable_bitmap || psta->under_exist_checking) ) {
|
if ( (psta->flags & WLAN_STA_HT) && (psta->htpriv.agg_enable_bitmap || psta->under_exist_checking) ) {
|
||||||
/* check sta by delba(addba) for 11n STA */
|
/* check sta by delba(addba) for 11n STA */
|
||||||
|
@ -387,7 +384,6 @@ void expire_timeout_chk(_adapter *padapter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_80211N_HT */
|
#endif /* CONFIG_80211N_HT */
|
||||||
#endif /* CONFIG_TX_MCAST2UNI */
|
|
||||||
#endif /* CONFIG_ACTIVE_KEEP_ALIVE_CHECK */
|
#endif /* CONFIG_ACTIVE_KEEP_ALIVE_CHECK */
|
||||||
|
|
||||||
if (psta->expire_to <= 0) {
|
if (psta->expire_to <= 0) {
|
||||||
|
|
|
@ -117,10 +117,8 @@ exit:
|
||||||
_func_exit_;
|
_func_exit_;
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rtw_mfree_recv_priv_lock(struct recv_priv *precvpriv);
|
|
||||||
void rtw_mfree_recv_priv_lock(struct recv_priv *precvpriv)
|
void rtw_mfree_recv_priv_lock(struct recv_priv *precvpriv)
|
||||||
{
|
{
|
||||||
_rtw_spinlock_free(&precvpriv->lock);
|
_rtw_spinlock_free(&precvpriv->lock);
|
||||||
|
@ -133,10 +131,6 @@ void rtw_mfree_recv_priv_lock(struct recv_priv *precvpriv)
|
||||||
_rtw_spinlock_free(&precvpriv->recv_pending_queue.lock);
|
_rtw_spinlock_free(&precvpriv->recv_pending_queue.lock);
|
||||||
|
|
||||||
_rtw_spinlock_free(&precvpriv->free_recv_buf_queue.lock);
|
_rtw_spinlock_free(&precvpriv->free_recv_buf_queue.lock);
|
||||||
|
|
||||||
#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX
|
|
||||||
_rtw_spinlock_free(&precvpriv->recv_buf_pending_queue.lock);
|
|
||||||
#endif /* CONFIG_USE_USB_BUFFER_ALLOC_RX */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _rtw_free_recv_priv (struct recv_priv *precvpriv)
|
void _rtw_free_recv_priv (struct recv_priv *precvpriv)
|
||||||
|
|
|
@ -67,9 +67,7 @@ _func_enter_;
|
||||||
psta->ht_20mhz_set = 0;
|
psta->ht_20mhz_set = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
|
||||||
psta->under_exist_checking = 0;
|
psta->under_exist_checking = 0;
|
||||||
#endif /* CONFIG_TX_MCAST2UNI */
|
|
||||||
|
|
||||||
psta->keep_alive_trycnt = 0;
|
psta->keep_alive_trycnt = 0;
|
||||||
|
|
||||||
|
@ -563,9 +561,7 @@ _func_enter_;
|
||||||
|
|
||||||
#endif /* CONFIG_NATIVEAP_MLME */
|
#endif /* CONFIG_NATIVEAP_MLME */
|
||||||
|
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
|
||||||
psta->under_exist_checking = 0;
|
psta->under_exist_checking = 0;
|
||||||
#endif /* CONFIG_TX_MCAST2UNI */
|
|
||||||
|
|
||||||
#endif /* CONFIG_AP_MODE */
|
#endif /* CONFIG_AP_MODE */
|
||||||
|
|
||||||
|
|
|
@ -84,10 +84,6 @@ int rtl8188eu_init_recv_priv(_adapter *padapter)
|
||||||
/* init recv_buf */
|
/* init recv_buf */
|
||||||
_rtw_init_queue(&precvpriv->free_recv_buf_queue);
|
_rtw_init_queue(&precvpriv->free_recv_buf_queue);
|
||||||
|
|
||||||
#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX
|
|
||||||
_rtw_init_queue(&precvpriv->recv_buf_pending_queue);
|
|
||||||
#endif /* CONFIG_USE_USB_BUFFER_ALLOC_RX */
|
|
||||||
|
|
||||||
precvpriv->pallocated_recv_buf = rtw_zmalloc(NR_RECVBUFF *sizeof(struct recv_buf) + 4);
|
precvpriv->pallocated_recv_buf = rtw_zmalloc(NR_RECVBUFF *sizeof(struct recv_buf) + 4);
|
||||||
if (precvpriv->pallocated_recv_buf==NULL){
|
if (precvpriv->pallocated_recv_buf==NULL){
|
||||||
res= _FAIL;
|
res= _FAIL;
|
||||||
|
|
|
@ -1479,22 +1479,13 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC02);
|
||||||
rtw_write8(Adapter, REG_EARLY_MODE_CONTROL, 0);
|
rtw_write8(Adapter, REG_EARLY_MODE_CONTROL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_TX_MCAST2UNI)
|
|
||||||
|
|
||||||
#ifdef CONFIG_CHECK_AC_LIFETIME
|
#ifdef CONFIG_CHECK_AC_LIFETIME
|
||||||
/* Enable lifetime check for the four ACs */
|
/* Enable lifetime check for the four ACs */
|
||||||
rtw_write8(Adapter, REG_LIFETIME_EN, 0x0F);
|
rtw_write8(Adapter, REG_LIFETIME_EN, 0x0F);
|
||||||
#endif /* CONFIG_CHECK_AC_LIFETIME */
|
#endif /* CONFIG_CHECK_AC_LIFETIME */
|
||||||
|
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
|
||||||
rtw_write16(Adapter, REG_PKT_VO_VI_LIFE_TIME, 0x0400); /* unit: 256us. 256ms */
|
rtw_write16(Adapter, REG_PKT_VO_VI_LIFE_TIME, 0x0400); /* unit: 256us. 256ms */
|
||||||
rtw_write16(Adapter, REG_PKT_BE_BK_LIFE_TIME, 0x0400); /* unit: 256us. 256ms */
|
rtw_write16(Adapter, REG_PKT_BE_BK_LIFE_TIME, 0x0400); /* unit: 256us. 256ms */
|
||||||
#else /* CONFIG_TX_MCAST2UNI */
|
|
||||||
rtw_write16(Adapter, REG_PKT_VO_VI_LIFE_TIME, 0x3000); /* unit: 256us. 3s */
|
|
||||||
rtw_write16(Adapter, REG_PKT_BE_BK_LIFE_TIME, 0x3000); /* unit: 256us. 3s */
|
|
||||||
#endif /* CONFIG_TX_MCAST2UNI */
|
|
||||||
#endif /* CONFIG_TX_MCAST2UNI */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_LED
|
#ifdef CONFIG_LED
|
||||||
_InitHWLed(Adapter);
|
_InitHWLed(Adapter);
|
||||||
|
|
|
@ -513,376 +513,6 @@ static s32 pre_recv_entry(union recv_frame *precvframe, struct recv_stat *prxsta
|
||||||
return _SUCCESS;
|
return _SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX
|
|
||||||
static int recvbuf2recvframe(_adapter *padapter, struct recv_buf *precvbuf)
|
|
||||||
{
|
|
||||||
u8 *pbuf;
|
|
||||||
u8 shift_sz = 0;
|
|
||||||
u16 pkt_cnt, drvinfo_sz;
|
|
||||||
u32 pkt_offset, skb_len, alloc_sz;
|
|
||||||
s32 transfer_len;
|
|
||||||
struct recv_stat *prxstat;
|
|
||||||
struct phy_stat *pphy_status = NULL;
|
|
||||||
_pkt *pkt_copy = NULL;
|
|
||||||
union recv_frame *precvframe = NULL;
|
|
||||||
struct rx_pkt_attrib *pattrib = NULL;
|
|
||||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
|
||||||
struct recv_priv *precvpriv = &padapter->recvpriv;
|
|
||||||
_queue *pfree_recv_queue = &precvpriv->free_recv_queue;
|
|
||||||
|
|
||||||
|
|
||||||
transfer_len = (s32)precvbuf->transfer_len;
|
|
||||||
pbuf = precvbuf->pbuf;
|
|
||||||
|
|
||||||
prxstat = (struct recv_stat *)pbuf;
|
|
||||||
pkt_cnt = (le32_to_cpu(prxstat->rxdw2)>>16) & 0xff;
|
|
||||||
|
|
||||||
do{
|
|
||||||
RT_TRACE(_module_rtl871x_recv_c_, _drv_info_,
|
|
||||||
("recvbuf2recvframe: rxdesc=offsset 0:0x%08x, 4:0x%08x, 8:0x%08x, C:0x%08x\n",
|
|
||||||
prxstat->rxdw0, prxstat->rxdw1, prxstat->rxdw2, prxstat->rxdw4));
|
|
||||||
|
|
||||||
prxstat = (struct recv_stat *)pbuf;
|
|
||||||
|
|
||||||
precvframe = rtw_alloc_recvframe(pfree_recv_queue);
|
|
||||||
if (precvframe==NULL)
|
|
||||||
{
|
|
||||||
RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recvbuf2recvframe: precvframe==NULL\n"));
|
|
||||||
DBG_88E("%s()-%d: rtw_alloc_recvframe() failed! RX Drop!\n", __func__, __LINE__);
|
|
||||||
goto _exit_recvbuf2recvframe;
|
|
||||||
}
|
|
||||||
|
|
||||||
_rtw_init_listhead(&precvframe->u.hdr.list);
|
|
||||||
precvframe->u.hdr.precvbuf = NULL; /* can't access the precvbuf for new arch. */
|
|
||||||
precvframe->u.hdr.len=0;
|
|
||||||
|
|
||||||
update_recvframe_attrib_88e(precvframe, prxstat);
|
|
||||||
|
|
||||||
pattrib = &precvframe->u.hdr.attrib;
|
|
||||||
|
|
||||||
if ((pattrib->crc_err) || (pattrib->icv_err))
|
|
||||||
{
|
|
||||||
if (pattrib->pkt_len>2000){
|
|
||||||
DBG_88E("%s: RX Warning! crc_err=%d icv_err=%d, skip!\n", __func__, pattrib->crc_err, pattrib->icv_err);
|
|
||||||
#ifdef CONFIG_SPECIAL_SETTING_FOR_FUNAI_TV
|
|
||||||
printk("%s: RX Warning!pkt_len= %d, data rate=0x%02x\n", __func__,pattrib->pkt_len,pattrib->mcs_rate);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
rtw_free_recvframe(precvframe, pfree_recv_queue);
|
|
||||||
goto _exit_recvbuf2recvframe;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if ( (pattrib->physt) && (pattrib->pkt_rpt_type == NORMAL_RX))
|
|
||||||
{
|
|
||||||
pphy_status = (struct phy_stat *)(pbuf + RXDESC_OFFSET);
|
|
||||||
}
|
|
||||||
|
|
||||||
pkt_offset = RXDESC_SIZE + pattrib->drvinfo_sz + pattrib->shift_sz + pattrib->pkt_len;
|
|
||||||
|
|
||||||
if ((pattrib->pkt_len<=0) || (pkt_offset>transfer_len))
|
|
||||||
{
|
|
||||||
RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("recvbuf2recvframe: pkt_len<=0\n"));
|
|
||||||
DBG_88E("%s()-%d: RX Warning!\n", __func__, __LINE__);
|
|
||||||
rtw_free_recvframe(precvframe, pfree_recv_queue);
|
|
||||||
goto _exit_recvbuf2recvframe;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Modified by Albert 20101213 */
|
|
||||||
/* For 8 bytes IP header alignment. */
|
|
||||||
if (pattrib->qos) /* Qos data, wireless lan header length is 26 */
|
|
||||||
{
|
|
||||||
shift_sz = 6;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
shift_sz = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
skb_len = pattrib->pkt_len;
|
|
||||||
|
|
||||||
/* for first fragment packet, driver need allocate 1536+drvinfo_sz+RXDESC_SIZE to defrag packet. */
|
|
||||||
/* modify alloc_sz for recvive crc error packet by thomas 2011-06-02 */
|
|
||||||
if ((pattrib->mfrag == 1)&&(pattrib->frag_num == 0)){
|
|
||||||
if (skb_len <= 1650)
|
|
||||||
alloc_sz = 1664;
|
|
||||||
else
|
|
||||||
alloc_sz = skb_len + 14;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
alloc_sz = skb_len;
|
|
||||||
/* 6 is for IP header 8 bytes alignment in QoS packet case. */
|
|
||||||
/* 8 is for skb->data 4 bytes alignment. */
|
|
||||||
alloc_sz += 14;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)) /* www.mail-archive.com/netdev@vger.kernel.org/msg17214.html */
|
|
||||||
pkt_copy = dev_alloc_skb(alloc_sz);
|
|
||||||
#else
|
|
||||||
pkt_copy = netdev_alloc_skb(padapter->pnetdev, alloc_sz);
|
|
||||||
#endif
|
|
||||||
if (pkt_copy)
|
|
||||||
{
|
|
||||||
pkt_copy->dev = padapter->pnetdev;
|
|
||||||
precvframe->u.hdr.pkt = pkt_copy;
|
|
||||||
precvframe->u.hdr.rx_head = pkt_copy->data;
|
|
||||||
precvframe->u.hdr.rx_end = pkt_copy->data + alloc_sz;
|
|
||||||
skb_reserve( pkt_copy, 8 - ((SIZE_PTR)( pkt_copy->data ) & 7 ));/* force pkt_copy->data at 8-byte alignment address */
|
|
||||||
skb_reserve( pkt_copy, shift_sz );/* force ip_hdr at 8-byte alignment address according to shift_sz. */
|
|
||||||
_rtw_memcpy(pkt_copy->data, (pbuf + pattrib->drvinfo_sz + RXDESC_SIZE), skb_len);
|
|
||||||
precvframe->u.hdr.rx_data = precvframe->u.hdr.rx_tail = pkt_copy->data;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DBG_88E("recvbuf2recvframe:can not allocate memory for skb copy\n");
|
|
||||||
|
|
||||||
precvframe->u.hdr.pkt = NULL;
|
|
||||||
rtw_free_recvframe(precvframe, pfree_recv_queue);
|
|
||||||
|
|
||||||
goto _exit_recvbuf2recvframe;
|
|
||||||
}
|
|
||||||
|
|
||||||
recvframe_put(precvframe, skb_len);
|
|
||||||
|
|
||||||
#ifdef CONFIG_USB_RX_AGGREGATION
|
|
||||||
switch (pHalData->UsbRxAggMode)
|
|
||||||
{
|
|
||||||
case USB_RX_AGG_DMA:
|
|
||||||
case USB_RX_AGG_MIX:
|
|
||||||
pkt_offset = (u16)_RND128(pkt_offset);
|
|
||||||
break;
|
|
||||||
case USB_RX_AGG_USB:
|
|
||||||
pkt_offset = (u16)_RND4(pkt_offset);
|
|
||||||
break;
|
|
||||||
case USB_RX_AGG_DISABLE:
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (pattrib->pkt_rpt_type == NORMAL_RX)/* Normal rx packet */
|
|
||||||
{
|
|
||||||
if (pattrib->physt)
|
|
||||||
update_recvframe_phyinfo_88e(precvframe, (struct phy_stat*)pphy_status);
|
|
||||||
if (rtw_recv_entry(precvframe) != _SUCCESS) {
|
|
||||||
RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,
|
|
||||||
("recvbuf2recvframe: rtw_recv_entry(precvframe) != _SUCCESS\n"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{ /* pkt_rpt_type == TX_REPORT1-CCX, TX_REPORT2-TX RTP,HIS_REPORT-USB HISR RTP */
|
|
||||||
|
|
||||||
/* enqueue recvframe to txrtp queue */
|
|
||||||
if (pattrib->pkt_rpt_type == TX_REPORT1){
|
|
||||||
/* CCX-TXRPT ack for xmit mgmt frames. */
|
|
||||||
handle_txrpt_ccx_88e(padapter, precvframe->u.hdr.rx_data);
|
|
||||||
|
|
||||||
}
|
|
||||||
else if (pattrib->pkt_rpt_type == TX_REPORT2){
|
|
||||||
ODM_RA_TxRPT2Handle_8188E(
|
|
||||||
&pHalData->odmpriv,
|
|
||||||
precvframe->u.hdr.rx_data,
|
|
||||||
pattrib->pkt_len,
|
|
||||||
pattrib->MacIDValidEntry[0],
|
|
||||||
pattrib->MacIDValidEntry[1]
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
|
||||||
else if (pattrib->pkt_rpt_type == HIS_REPORT)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_SUPPORT_USB_INT
|
|
||||||
interrupt_handler_8188eu(padapter,pattrib->pkt_len,precvframe->u.hdr.rx_data);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
rtw_free_recvframe(precvframe, pfree_recv_queue);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
pkt_cnt--;
|
|
||||||
transfer_len -= pkt_offset;
|
|
||||||
pbuf += pkt_offset;
|
|
||||||
precvframe = NULL;
|
|
||||||
pkt_copy = NULL;
|
|
||||||
|
|
||||||
if (transfer_len>0 && pkt_cnt==0)
|
|
||||||
pkt_cnt = (le32_to_cpu(prxstat->rxdw2)>>16) & 0xff;
|
|
||||||
|
|
||||||
}while ((transfer_len>0) && (pkt_cnt>0));
|
|
||||||
|
|
||||||
_exit_recvbuf2recvframe:
|
|
||||||
|
|
||||||
return _SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
void rtl8188eu_recv_tasklet(void *priv)
|
|
||||||
{
|
|
||||||
struct recv_buf *precvbuf = NULL;
|
|
||||||
_adapter *padapter = (_adapter*)priv;
|
|
||||||
struct recv_priv *precvpriv = &padapter->recvpriv;
|
|
||||||
|
|
||||||
while (NULL != (precvbuf = rtw_dequeue_recvbuf(&precvpriv->recv_buf_pending_queue)))
|
|
||||||
{
|
|
||||||
if ((padapter->bDriverStopped == true)||(padapter->bSurpriseRemoved== true))
|
|
||||||
{
|
|
||||||
DBG_88E("recv_tasklet => bDriverStopped or bSurpriseRemoved\n");
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
recvbuf2recvframe(padapter, precvbuf);
|
|
||||||
|
|
||||||
rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static void usb_read_port_complete(struct urb *purb, struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
struct recv_buf *precvbuf = (struct recv_buf *)purb->context;
|
|
||||||
_adapter *padapter =(_adapter *)precvbuf->adapter;
|
|
||||||
struct recv_priv *precvpriv = &padapter->recvpriv;
|
|
||||||
|
|
||||||
RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete!!!\n"));
|
|
||||||
|
|
||||||
precvpriv->rx_pending_cnt --;
|
|
||||||
|
|
||||||
if (padapter->bSurpriseRemoved || padapter->bDriverStopped||padapter->bReadPortCancel)
|
|
||||||
{
|
|
||||||
RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete:bDriverStopped(%d) OR bSurpriseRemoved(%d)\n", padapter->bDriverStopped, padapter->bSurpriseRemoved));
|
|
||||||
DBG_88E("%s() RX Warning! bDriverStopped(%d) OR bSurpriseRemoved(%d) bReadPortCancel(%d)\n",
|
|
||||||
__func__,padapter->bDriverStopped, padapter->bSurpriseRemoved,padapter->bReadPortCancel);
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (purb->status==0)/* SUCCESS */
|
|
||||||
{
|
|
||||||
if ((purb->actual_length > MAX_RECVBUF_SZ) || (purb->actual_length < RXDESC_SIZE))
|
|
||||||
{
|
|
||||||
RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete: (purb->actual_length > MAX_RECVBUF_SZ) || (purb->actual_length < RXDESC_SIZE)\n"));
|
|
||||||
|
|
||||||
rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rtw_reset_continual_urb_error(adapter_to_dvobj(padapter));
|
|
||||||
|
|
||||||
precvbuf->transfer_len = purb->actual_length;
|
|
||||||
|
|
||||||
rtw_enqueue_recvbuf(precvbuf, &precvpriv->recv_buf_pending_queue);
|
|
||||||
|
|
||||||
tasklet_schedule(&precvpriv->recv_tasklet);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete : purb->status(%d) != 0\n", purb->status));
|
|
||||||
|
|
||||||
DBG_88E("###=> usb_read_port_complete => urb status(%d)\n", purb->status);
|
|
||||||
|
|
||||||
if (rtw_inc_and_chk_continual_urb_error(adapter_to_dvobj(padapter)) == true ){
|
|
||||||
padapter->bSurpriseRemoved = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (purb->status) {
|
|
||||||
case -EINVAL:
|
|
||||||
case -EPIPE:
|
|
||||||
case -ENODEV:
|
|
||||||
case -ESHUTDOWN:
|
|
||||||
RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete:bSurpriseRemoved=true\n"));
|
|
||||||
/* fall through here */
|
|
||||||
case -ENOENT:
|
|
||||||
padapter->bDriverStopped=true;
|
|
||||||
RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete:bDriverStopped=true\n"));
|
|
||||||
break;
|
|
||||||
case -EPROTO:
|
|
||||||
case -EOVERFLOW:
|
|
||||||
#ifdef DBG_CONFIG_ERROR_DETECT
|
|
||||||
{
|
|
||||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
|
||||||
pHalData->srestpriv.Wifi_Error_Status = USB_READ_PORT_FAIL;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf);
|
|
||||||
break;
|
|
||||||
case -EINPROGRESS:
|
|
||||||
DBG_88E("ERROR: URB IS IN PROGRESS!/n");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
exit:
|
|
||||||
|
|
||||||
_func_exit_;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static u32 usb_read_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *rmem)
|
|
||||||
{
|
|
||||||
int err;
|
|
||||||
unsigned int pipe;
|
|
||||||
u32 ret = _SUCCESS;
|
|
||||||
PURB purb = NULL;
|
|
||||||
struct recv_buf *precvbuf = (struct recv_buf *)rmem;
|
|
||||||
_adapter *adapter = pintfhdl->padapter;
|
|
||||||
struct dvobj_priv *pdvobj = adapter_to_dvobj(adapter);
|
|
||||||
struct recv_priv *precvpriv = &adapter->recvpriv;
|
|
||||||
struct usb_device *pusbd = pdvobj->pusbdev;
|
|
||||||
|
|
||||||
_func_enter_;
|
|
||||||
|
|
||||||
if (adapter->bDriverStopped || adapter->bSurpriseRemoved ||adapter->pwrctrlpriv.pnp_bstop_trx)
|
|
||||||
{
|
|
||||||
RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port:( padapter->bDriverStopped ||padapter->bSurpriseRemoved ||adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n"));
|
|
||||||
return _FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (precvbuf !=NULL)
|
|
||||||
{
|
|
||||||
rtl8188eu_init_recvbuf(adapter, precvbuf);
|
|
||||||
|
|
||||||
if (precvbuf->pbuf)
|
|
||||||
{
|
|
||||||
precvpriv->rx_pending_cnt++;
|
|
||||||
|
|
||||||
purb = precvbuf->purb;
|
|
||||||
|
|
||||||
/* translate DMA FIFO addr to pipehandle */
|
|
||||||
pipe = ffaddr2pipehdl(pdvobj, addr);
|
|
||||||
|
|
||||||
usb_fill_bulk_urb(purb, pusbd, pipe,
|
|
||||||
precvbuf->pbuf,
|
|
||||||
MAX_RECVBUF_SZ,
|
|
||||||
usb_read_port_complete,
|
|
||||||
precvbuf);/* context is precvbuf */
|
|
||||||
|
|
||||||
purb->transfer_dma = precvbuf->dma_transfer_addr;
|
|
||||||
purb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
|
|
||||||
|
|
||||||
err = usb_submit_urb(purb, GFP_ATOMIC);
|
|
||||||
if ((err) && (err != (-EPERM)))
|
|
||||||
{
|
|
||||||
RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("cannot submit rx in-token(err=0x%.8x), URB_STATUS =0x%.8x", err, purb->status));
|
|
||||||
DBG_88E("cannot submit rx in-token(err = 0x%08x),urb_status = %d\n",err,purb->status);
|
|
||||||
ret = _FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port:precvbuf ==NULL\n"));
|
|
||||||
ret = _FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
_func_exit_;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
#else /* CONFIG_USE_USB_BUFFER_ALLOC_RX */
|
|
||||||
static int recvbuf2recvframe(_adapter *padapter, _pkt *pskb)
|
static int recvbuf2recvframe(_adapter *padapter, _pkt *pskb)
|
||||||
{
|
{
|
||||||
u8 *pbuf;
|
u8 *pbuf;
|
||||||
|
@ -1332,7 +962,6 @@ _func_exit_;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_USE_USB_BUFFER_ALLOC_RX */
|
|
||||||
|
|
||||||
void rtl8188eu_xmit_tasklet(void *priv)
|
void rtl8188eu_xmit_tasklet(void *priv)
|
||||||
{
|
{
|
||||||
|
|
|
@ -166,10 +166,6 @@
|
||||||
#define CONFIG_BR_EXT_BRNAME "br0"
|
#define CONFIG_BR_EXT_BRNAME "br0"
|
||||||
#endif // CONFIG_BR_EXT
|
#endif // CONFIG_BR_EXT
|
||||||
|
|
||||||
#define CONFIG_TX_MCAST2UNI // Support IP multicast->unicast
|
|
||||||
//#define CONFIG_CHECK_AC_LIFETIME // Check packet lifetime of 4 ACs.
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interface Related Config
|
* Interface Related Config
|
||||||
*/
|
*/
|
||||||
|
@ -185,7 +181,6 @@
|
||||||
* USB VENDOR REQ BUFFER ALLOCATION METHOD
|
* USB VENDOR REQ BUFFER ALLOCATION METHOD
|
||||||
* if not set we'll use function local variable (stack memory)
|
* if not set we'll use function local variable (stack memory)
|
||||||
*/
|
*/
|
||||||
//#define CONFIG_USB_VENDOR_REQ_BUFFER_DYNAMIC_ALLOCATE
|
|
||||||
#define CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC
|
#define CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC
|
||||||
|
|
||||||
#define CONFIG_USB_VENDOR_REQ_MUTEX
|
#define CONFIG_USB_VENDOR_REQ_MUTEX
|
||||||
|
|
|
@ -248,10 +248,6 @@ struct recv_priv
|
||||||
struct ifqueue rx_indicate_queue;
|
struct ifqueue rx_indicate_queue;
|
||||||
#endif // CONFIG_RX_INDICATE_QUEUE
|
#endif // CONFIG_RX_INDICATE_QUEUE
|
||||||
|
|
||||||
#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX
|
|
||||||
_queue recv_buf_pending_queue;
|
|
||||||
#endif // CONFIG_USE_USB_BUFFER_ALLOC_RX
|
|
||||||
|
|
||||||
u8 *pallocated_recv_buf;
|
u8 *pallocated_recv_buf;
|
||||||
u8 *precv_buf; // 4 alignment
|
u8 *precv_buf; // 4 alignment
|
||||||
_queue free_recv_buf_queue;
|
_queue free_recv_buf_queue;
|
||||||
|
|
|
@ -215,10 +215,7 @@ struct sta_info {
|
||||||
u8 dev_name[32];
|
u8 dev_name[32];
|
||||||
#endif //CONFIG_P2P
|
#endif //CONFIG_P2P
|
||||||
|
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
|
||||||
u8 under_exist_checking;
|
u8 under_exist_checking;
|
||||||
#endif // CONFIG_TX_MCAST2UNI
|
|
||||||
|
|
||||||
u8 keep_alive_trycnt;
|
u8 keep_alive_trycnt;
|
||||||
|
|
||||||
#endif // CONFIG_AP_MODE
|
#endif // CONFIG_AP_MODE
|
||||||
|
|
|
@ -1138,9 +1138,7 @@ enum P2P_PS_MODE
|
||||||
#define WFD_DEVINFO_PC_TDLS 0x0080
|
#define WFD_DEVINFO_PC_TDLS 0x0080
|
||||||
#define WFD_DEVINFO_HDCP_SUPPORT 0x0100
|
#define WFD_DEVINFO_HDCP_SUPPORT 0x0100
|
||||||
|
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
|
||||||
#define IP_MCAST_MAC(mac) ((mac[0]==0x01)&&(mac[1]==0x00)&&(mac[2]==0x5e))
|
#define IP_MCAST_MAC(mac) ((mac[0]==0x01)&&(mac[1]==0x00)&&(mac[2]==0x5e))
|
||||||
#define ICMPV6_MCAST_MAC(mac) ((mac[0]==0x33)&&(mac[1]==0x33)&&(mac[2]!=0xff))
|
#define ICMPV6_MCAST_MAC(mac) ((mac[0]==0x33)&&(mac[1]==0x33)&&(mac[2]!=0xff))
|
||||||
#endif // CONFIG_TX_MCAST2UNI
|
|
||||||
|
|
||||||
#endif // _WIFI_H_
|
#endif // _WIFI_H_
|
||||||
|
|
|
@ -152,9 +152,7 @@ static int rtw_hwpwrp_detect = 0; //HW power ping detect 0:disable , 1:enable
|
||||||
|
|
||||||
static int rtw_hw_wps_pbc = 1;
|
static int rtw_hw_wps_pbc = 1;
|
||||||
|
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
|
||||||
int rtw_mc2u_disable = 0;
|
int rtw_mc2u_disable = 0;
|
||||||
#endif // CONFIG_TX_MCAST2UNI
|
|
||||||
|
|
||||||
#ifdef CONFIG_80211D
|
#ifdef CONFIG_80211D
|
||||||
static int rtw_80211d = 0;
|
static int rtw_80211d = 0;
|
||||||
|
@ -236,9 +234,7 @@ module_param(rtw_fw_file_path, charp, 0644);
|
||||||
MODULE_PARM_DESC(rtw_fw_file_path, "The path of fw image");
|
MODULE_PARM_DESC(rtw_fw_file_path, "The path of fw image");
|
||||||
#endif //CONFIG_FILE_FWIMG
|
#endif //CONFIG_FILE_FWIMG
|
||||||
|
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
|
||||||
module_param(rtw_mc2u_disable, int, 0644);
|
module_param(rtw_mc2u_disable, int, 0644);
|
||||||
#endif // CONFIG_TX_MCAST2UNI
|
|
||||||
|
|
||||||
#ifdef CONFIG_80211D
|
#ifdef CONFIG_80211D
|
||||||
module_param(rtw_80211d, int, 0644);
|
module_param(rtw_80211d, int, 0644);
|
||||||
|
|
|
@ -81,38 +81,19 @@ int rtw_os_recvbuf_resource_alloc(_adapter *padapter, struct recv_buf *precvbuf)
|
||||||
|
|
||||||
precvbuf->len = 0;
|
precvbuf->len = 0;
|
||||||
|
|
||||||
#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX
|
|
||||||
precvbuf->pallocated_buf = rtw_usb_buffer_alloc(pusbd, (size_t)precvbuf->alloc_sz, &precvbuf->dma_transfer_addr);
|
|
||||||
precvbuf->pbuf = precvbuf->pallocated_buf;
|
|
||||||
if (precvbuf->pallocated_buf == NULL)
|
|
||||||
return _FAIL;
|
|
||||||
#endif //CONFIG_USE_USB_BUFFER_ALLOC_RX
|
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
//free os related resource in struct recv_buf
|
//free os related resource in struct recv_buf
|
||||||
int rtw_os_recvbuf_resource_free(_adapter *padapter, struct recv_buf *precvbuf)
|
int rtw_os_recvbuf_resource_free(_adapter *padapter, struct recv_buf *precvbuf)
|
||||||
{
|
{
|
||||||
int ret = _SUCCESS;
|
|
||||||
|
|
||||||
#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX
|
|
||||||
struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
|
|
||||||
struct usb_device *pusbd = pdvobjpriv->pusbdev;
|
|
||||||
|
|
||||||
rtw_usb_buffer_free(pusbd, (size_t)precvbuf->alloc_sz, precvbuf->pallocated_buf, precvbuf->dma_transfer_addr);
|
|
||||||
precvbuf->pallocated_buf = NULL;
|
|
||||||
precvbuf->dma_transfer_addr = 0;
|
|
||||||
|
|
||||||
#endif //CONFIG_USE_USB_BUFFER_ALLOC_RX
|
|
||||||
|
|
||||||
if (precvbuf->purb)
|
if (precvbuf->purb)
|
||||||
usb_free_urb(precvbuf->purb);
|
usb_free_urb(precvbuf->purb);
|
||||||
|
|
||||||
if (precvbuf->pskb)
|
if (precvbuf->pskb)
|
||||||
dev_kfree_skb_any(precvbuf->pskb);
|
dev_kfree_skb_any(precvbuf->pskb);
|
||||||
|
|
||||||
return ret;
|
return _SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
void rtw_handle_tkip_mic_err(_adapter *padapter,u8 bgroup)
|
void rtw_handle_tkip_mic_err(_adapter *padapter,u8 bgroup)
|
||||||
|
|
|
@ -275,7 +275,6 @@ static void rtw_check_xmit_resource(_adapter *padapter, _pkt *pkt)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
|
||||||
static int rtw_mlcst2unicst(_adapter *padapter, struct sk_buff *skb)
|
static int rtw_mlcst2unicst(_adapter *padapter, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
struct sta_priv *pstapriv = &padapter->stapriv;
|
struct sta_priv *pstapriv = &padapter->stapriv;
|
||||||
|
@ -326,16 +325,13 @@ static int rtw_mlcst2unicst(_adapter *padapter, struct sk_buff *skb)
|
||||||
dev_kfree_skb_any(skb);
|
dev_kfree_skb_any(skb);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#endif // CONFIG_TX_MCAST2UNI
|
|
||||||
|
|
||||||
|
|
||||||
int rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev)
|
int rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev)
|
||||||
{
|
{
|
||||||
_adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev);
|
_adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev);
|
||||||
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
|
||||||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||||
#endif // CONFIG_TX_MCAST2UNI
|
|
||||||
s32 res = 0;
|
s32 res = 0;
|
||||||
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35))
|
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35))
|
||||||
u16 queue;
|
u16 queue;
|
||||||
|
@ -355,7 +351,6 @@ _func_enter_;
|
||||||
|
|
||||||
rtw_check_xmit_resource(padapter, pkt);
|
rtw_check_xmit_resource(padapter, pkt);
|
||||||
|
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
|
||||||
if ( !rtw_mc2u_disable
|
if ( !rtw_mc2u_disable
|
||||||
&& check_fwstate(pmlmepriv, WIFI_AP_STATE) == true
|
&& check_fwstate(pmlmepriv, WIFI_AP_STATE) == true
|
||||||
&& ( IP_MCAST_MAC(pkt->data)
|
&& ( IP_MCAST_MAC(pkt->data)
|
||||||
|
@ -368,12 +363,8 @@ _func_enter_;
|
||||||
if (res == true) {
|
if (res == true) {
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
//DBG_88E("Stop M2U(%d, %d)! ", pxmitpriv->free_xmitframe_cnt, pxmitpriv->free_xmitbuf_cnt);
|
|
||||||
//DBG_88E("!m2u );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // CONFIG_TX_MCAST2UNI
|
|
||||||
|
|
||||||
res = rtw_xmit(padapter, &pkt);
|
res = rtw_xmit(padapter, &pkt);
|
||||||
if (res < 0) {
|
if (res < 0) {
|
||||||
|
|
Loading…
Reference in a new issue