主题 : linux2.6.29中rt73 wifi卡驱动程序问题请教 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 113
精华: 0
发帖: 26
金钱: 210 两
威望: 97 点
综合积分: 52 分
注册时间: 2008-02-18
最后登录: 2010-08-03
楼主  发表于: 2010-01-16 15:52

 linux2.6.29中rt73 wifi卡驱动程序问题请教

我的qq2440 v3可以运行友善之臂linux2.6.29. 我正在用rt73 wifi卡和研究其驱动程序. 有个问题想请教友善之臂移植这个rt73 wifi驱动的大侠.
我现在对如何封装成sk_buff包及对应的数据包并通过usb host接口发送给rt73卡流程已经了解. 但rt73的wifi驱动代码中接收数据全部在
void ieee80211_tasklet_handler(unsigned long data)//打开wifi卡后.长期循环执行以下程序
{
    struct ieee80211_local *local = (struct ieee80211_local *) data;
    struct sk_buff *skb;
    struct ieee80211_rx_status rx_status;
    struct ieee80211_ra_tid *ra_tid;

    while ((skb = skb_dequeue(&local->skb_queue)) || (skb = skb_dequeue(&local->skb_queue_unreliable)))  //从一个sk_buff链表里取出第一个元素
    {
        switch (skb->pkt_type) {
        case IEEE80211_RX_MSG:    //linux调试一打开wifi卡后.就循环收到IEEE80211_RX_MSG消息
            // status is in skb->cb
            memcpy(&rx_status, skb->cb, sizeof(rx_status));
            // Clear skb->pkt_type in order to not confuse kernel
            // netstack.
            skb->pkt_type = 0;
            __ieee80211_rx(local_to_hw(local), skb, &rx_status);
            break;
        case IEEE80211_TX_STATUS_MSG:
            skb->pkt_type = 0;
            ieee80211_tx_status(local_to_hw(local), skb);
            break;
        case IEEE80211_DELBA_MSG:
            ra_tid = (struct ieee80211_ra_tid *) &skb->cb;
            ieee80211_stop_tx_ba_cb(local_to_hw(local),    ra_tid->ra, ra_tid->tid);
            dev_kfree_skb(skb);
            break;
        case IEEE80211_ADDBA_MSG:
            ra_tid = (struct ieee80211_ra_tid *) &skb->cb;
            ieee80211_start_tx_ba_cb(local_to_hw(local),ra_tid->ra, ra_tid->tid);
            dev_kfree_skb(skb);
            break ;
        default:
            Uart_Printf("mac80211: Packet is of unknown type %d\n",skb->pkt_type);    
            dev_kfree_skb(skb);
            break;
        }
    }
}
该任务函数得到的就是一个完整的sk_buff包和对应的数据缓冲区. 用户可以直接通过该sk_buff及对应的数据区数据来得到当前信息及数据.
我的问题是. 从usb host接收到数据后.是如何根据ieee80211及rt73卡特性来封装sk_buff包并递交给void ieee80211_tasklet_handler的?  这部分代码在哪个文件里面? 我找了很久也没找到.
级别: 新手上路
UID: 113
精华: 0
发帖: 26
金钱: 210 两
威望: 97 点
综合积分: 52 分
注册时间: 2008-02-18
最后登录: 2010-08-03
1楼  发表于: 2010-01-16 15:55
rt73卡即为USB 无线网卡驱动(型号:TL-WN321G+)