没有合适的资源?快使用搜索试试~ 我知道了~
Ralink_WIFI_TX_RX流程分析
5星 · 超过95%的资源 需积分: 50 177 下载量 144 浏览量
2015-09-30
16:40:05
上传
评论 1
收藏 512KB PDF 举报
温馨提示
试读
37页
分析Ralink WIFI driver源码中Tx/Rx的流程,定位问题时可以参考一下。
资源推荐
资源详情
资源评论
Ralink WIFI Tx Rx
380939960@qq.com
1. Rx .............................................................................................................................................................. 2
1.1 APHandleRxDataFrame ...................................................................................................................................... 14
1.2 APHandleRxMgmtFrame ................................................................................................................................... 17
1.3 APHandleRxControlFrame ................................................................................................................................. 20
2. Tx ............................................................................................................................................................. 23
2.1 rt28xx_send_packets ............................................................................................................ 23
2.2 APHardTransmit Ringbuffer .......................................................................................... 36
1. Rx
Rx
1
2
3 rt2860_interrupt
4 Rx rx_done_workq rx_done_workq
APRxDoneInterruptHandle
RX
ifconfig ra0 up RtmpNetTaskInit RTMP_OS_TASKLET_INIT(pAd, &pObj->rx_done_work,
rx_done_workq) rx_done_workq
ifconfig ra0 down RtmpNetTaskExit RTMP_OS_TASKLET_KILL(&pObj->rx_done_task)
RTMPHandleInterrupt RX
RTMP_OS_TASKLET_SCHE(&pObj->rx_done_work); rx_done_workq
rx_done_workq APRxDoneInterruptHandle
BOOLEAN APRxDoneInterruptHandle(
IN PRTMP_ADAPTER pAd)
{
……
#ifdef VENDOR_FEATURE1_SUPPORT
/*
Note:
Can not take off the NICUpdateFifoStaCounters(); Or the
FIFO overflow rate will be high, i.e. > 3%
(see the rate by "iwpriv ra0 show stainfo")
Based on different platform, try to find the best value to
replace '4' here (overflow rate target is about 0%).
*/
if (++pAd->FifoUpdateDone >= 4)
{
NICUpdateFifoStaCounters(pAd);
pAd->FifoUpdateDone = 0;
}
#else
NICUpdateFifoStaCounters(pAd);
#endif /* VENDOR_FEATURE1_SUPPORT */
BOOLEAN RTMPFreeTXDUponTxDmaDone(
IN PRTMP_ADAPTER pAd,
IN UCHAR QueIdx)
{
……
#ifdef VENDOR_FEATURE1_SUPPORT
/*
Note:
Can not take off the NICUpdateFifoStaCounters(); Or the
FIFO overflow rate will be high, i.e. > 3%
(see the rate by "iwpriv ra0 show stainfo")
Based on different platform, try to find the best value to
replace '4' here (overflow rate target is about 0%).
*/
if (++pAd->FifoUpdateRx >= 4)
{
NICUpdateFifoStaCounters(pAd);
pAd->FifoUpdateRx = 0;
}
#else
NICUpdateFifoStaCounters(pAd);
#endif /* VENDOR_FEATURE1_SUPPORT */
wifi RX
#ifdef WORKQUEUE_BH
static void rx_done_workq(struct work_struct *work)
#else
static void rx_done_tasklet(unsigned long data)
#endif /* WORKQUEUE_BH */
{
……
#ifdef P2P_SUPPORT
bReschedule = RxDoneInterruptHandle(pAd);
#else
#ifdef CONFIG_AP_SUPPORT
IF_DEV_CONFIG_OPMODE_ON_AP(pAd)
bReschedule = APRxDoneInterruptHandle(pAd);
#endif /* CONFIG_AP_SUPPORT */
#ifdef CONFIG_STA_SUPPORT
IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
bReschedule = STARxDoneInterruptHandle(pAd, 0);
#endif /* CONFIG_STA_SUPPORT */
#endif /* P2P_SUPPORT */
rt28xx_open
rt28xx_init
RtmpNetTaskInit
RTMP_OS_TASKLET_INIT(pAd, &pObj->rx_done_task, rx_done_tasklet, (unsigned long)pAd);
RTMPHandleInterrupt
WIFI RTMPHandleInterrupt rt2860_interrupt
#ifdef WORKQUEUE_BH
RTMP_OS_TASKLET_SCHE(&pObj->rx_done_work);
#else
RTMP_OS_TASKLET_SCHE(&pObj->rx_done_task);
#endif /* WORKQUEUE_BH */
/***************************************************************************
*
* interrupt handler related procedures.
*
**************************************************************************/
/*int print_int_count; */
IRQ_HANDLE_TYPE
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
rt2860_interrupt(int irq, void *dev_instance)
#else
rt2860_interrupt(int irq, void *dev_instance, struct pt_regs *regs)
#endif
{
struct net_device *net_dev = (struct net_device *) dev_instance;
VOID *pAd = NULL;
/* INT_SOURCE_CSR_STRUC IntSource; */
/* POS_COOKIE pObj; */
#ifdef MULTI_CORE_SUPPORT
unsigned long flags=0;
#endif // MULTI_CORE_SUPPORT //
GET_PAD_FROM_NET_DEV(pAd, net_dev);
RTMPHandleInterrupt(pAd);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
return IRQ_HANDLED;
#endif
}
Ralink wifi driver RBus PCIRBus MT7620 2.4G wifi PCI PCI
MT7620 PCI ralink 5G WIFI
WIFI driver MAX_RX_PROCESS_CNT
CPU
/*========================================================================
Routine Description:
Process RxDone interrupt, running in DPC level
Arguments:
pAd Pointer to our adapter
Return Value:
None
Note:
This routine has to maintain Rx ring read pointer.
========================================================================*/
#undef MAX_RX_PROCESS_CNT
#define MAX_RX_PROCESS_CNT (32)
BOOLEAN APRxDoneInterruptHandle(
IN PRTMP_ADAPTER pAd)
{
UINT32 RxProcessed, RxPending;
BOOLEAN bReschedule = FALSE;
RT28XX_RXD_STRUC *pRxD;
UCHAR *pData;
PRXWI_STRUC pRxWI;
PNDIS_PACKET pRxPacket;
PHEADER_802_11 pHeader;
RX_BLK RxCell, *pRxCell;
MULTISSID_STRUCT *pMbss;
UINT8 RXWISize = pAd->chipCap.RXWISize;
#ifdef WDS_SUPPORT
MAC_TABLE_ENTRY *pEntry = NULL;
#endif
#ifdef LINUX
#ifdef RTMP_RBUS_SUPPORT
if (pAd->infType == RTMP_DEV_INF_RBUS)
{
#if defined(CONFIG_RA_CLASSIFIER)||defined(CONFIG_RA_CLASSIFIER_MODULE)
#if defined(CONFIG_RALINK_EXTERNAL_TIMER)
classifier_cur_cycle = (*((volatile u32 *)(0xB0000D08))&0x0FFFF);
#else
classifier_cur_cycle = read_c0_count();
#endif /* CONFIG_RALINK_EXTERNAL_TIMER */
#endif /* CONFIG_RA_CLASSIFIER */
}
#endif /* RTMP_RBUS_SUPPORT */
剩余36页未读,继续阅读
资源评论
- wangchangqiao2016-02-16分析大致数据包流程
- hnldww2015-10-05还可以,就是感觉有点乱
- fallowmen2017-08-30又遇到大坑,如何处理,有人帮忙吗?
飞越丛林
- 粉丝: 113
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 机器学习和数据挖掘课程设计-米其林餐厅数据挖掘管理系统源码+使用文档说明.zip
- html html html展示我与ai的对化
- 数据结构课程设计-全国交通出行咨询模拟系统C语言实现源码.zip
- cef-binary-109.0.1+gcd5e37a+chromium-109.0.5414.8-windows32
- 基于C语言的全国交通咨询系统模拟源码.zip
- 正点原子HAL库 STM32F4 DMA(学习自用附源码)
- 炫酷代码雨,超级炫酷哦!!!
- 基于物联网MQTT协议的智能停车场管理系统
- POETIZE个人博客系统源码 - 最美博客
- 基于深度学习的行人检测系统源码+项目说明(YoloV3+Tensorflow).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功