rt28xx_open分析
上一节我们分析到,当驱动唤醒,调用函数resume,函数中调用接口rt28xx_open来进行相关初始化。
1. 清除power save节电状态
RTMP_DRIVER_MCU_SLEEP_CLEAR()
调用函数RTMP_COM_IoctlHandle设置mcu sleep 状态
2. 初始化ioctl结构
net_dev->wireless_handlers = (struct iw_handler_def *) &rt28xx_ap_iw_handler_def;
rt28xx_ap_iw_handler_def结构定义了相关ioctl接口, 定义了iw支持的命令参数
3. 注册中断处理针对PCI
RtmpOSIRQRequest ->rt2860_interrupt
4. 注册网络设备中断处理
RTMP_DRIVER_IRQ_INIT->rtmp_irq_init(pAd);
通过ioctl进行中断初始化工作
5. 芯片和其它相关初始化,内存分配等
rt28xx_init(pAd, mac, hostname)
函数中调用接口:
a.初始化 任务\数据结构\状态机\定时器
MlmeInit()->WpaStateMachineInit wpa状态机初始化
b.网络任务初始化
RtmpNetTaskInit->RTMP_OS_TASKLET_INIT(pAd, &pObj->rx_done_task, rx_done_tasklet, (unsigned long)pAd)->rx_done_tasklet->rtmp_rx_done_handle->提供无线数据、管理、控制报文、处理接口:
c.读取用户配置文件/etc/Wireless/RT2860/RT2860.dat
RTMPReadParametersHook(pAd);
d. 启动AP
APStartUp(pAd);