2013年4月23日

Broadcom fullmac WLAN 驱动解析(2)

摘要: 现在我们来看看scan是怎么处理的。一、先来看看如何发送scan command给WLAN firmware以Android平台为例,我们从Android framework的code开始看起。1. 在WifiStateMachine.java中有如下函数 public void startScan(boolean forceActive) { sendMessage(obtainMessage(CMD_START_SCAN, forceActive ? SCAN_ACTIVE : SCAN_PASSIVE, 0)); }2. proce... 阅读全文

posted @ 2013-04-23 16:58 hellolwl 阅读(4715) 评论(0) 推荐(1) 编辑

2013年4月14日

Broadcom fullmac WLAN 驱动解析(1)

摘要: 在https://wiki.archlinux.org/index.php/Broadcom_wireless里面关于broadcom的wireless驱动有这样的说明The brcm80211 drivers are included in the kernel. They are named brcmsmac for PCI cards and brcmfmac for SDIO devices.这里我们分析针对SDIO设备的brcmfmac驱动。1. 驱动主入口void brcmf_sdio_init(void){ int ret; brcmf_dbg(TRACE, "Ent. 阅读全文

posted @ 2013-04-14 22:14 hellolwl 阅读(6013) 评论(1) 推荐(1) 编辑

2013年4月11日

Broadcom softmac WLAN 驱动解析(3)

摘要: Linux kernel发送数据的接口函数是packet_sendmsg,本质上对应了users pace的sendmsg实现。比如在wpa_supplicant中,wpa_driver_nl80211_send_frame()就是用sendmsg发送数据的:static int wpa_driver_nl80211_send_frame(struct wpa_driver_nl80211_data *drv, const void *data, size_t len, int encrypt){ ... ... 阅读全文

posted @ 2013-04-11 15:10 hellolwl 阅读(1622) 评论(0) 推荐(0) 编辑

2013年4月10日

Broadcom softmac WLAN 驱动解析(2)

摘要: 现在我们来看看driver是如何从WLAN chipset那里接收数据的在上一篇文章中提到,数据过来时会产生中断,而在brcms_attach()函数体中,注册的interrupt handler是brcms_isr(),所以数据过来触发的第一个函数就是brcms_isr()。1. 触发brcms_isr()static irqreturn_t brcms_isr(int irq, void *dev_id){ struct brcms_info *wl; irqreturn_t ret = IRQ_NONE; wl = (struct brcms_info *) dev_i... 阅读全文

posted @ 2013-04-10 22:10 hellolwl 阅读(1419) 评论(0) 推荐(0) 编辑

Broadcom softmac WLAN 驱动解析(1)

摘要: 1. 驱动的主入口如下:/** * This is the main entry point for the brcmsmac driver. * * This function is scheduled upon module initialization and * does the driver registration, which result in brcms_bcma_probe() * call resulting in the driver bringup. */static void brcms_driver_init(struct work_struct *work){ 阅读全文

posted @ 2013-04-10 17:02 hellolwl 阅读(2815) 评论(0) 推荐(0) 编辑

导航