skb->mac_header为什么一直为0?向高手求救

我是在hard->start->xmit之前插入一个函数,查询skb->mac_header指针的值,发现它一直为0,这是为什么呢?

static  int         our_xmit(struct sk_buff *skb,
                                            struct net_device *dev)
{
        printk("hello ,wait a while to send~~~~~~~~~~~\n");
        unsigned char *a;
        printk("head=%x,head_mac=%x, head_ip=%x,tail=%x\n",skb->head, skb_mac_header(skb), skb_network_header(skb), skb->tail);
       
        for(a=skb->head; a<skb->tail; a++)
        {
                printk("%02X  ",*a);
        }

        p(skb, dev);
}

int init_module(void)
{
       
        printk("Im in the module *******************************");
       
       
        dev=dev_get_by_name("eth0");
       
        struct sk_buff        *skb;
        skb=dev->gso_skb;


        p=dev->hard_start_xmit;

        dev->hard_start_xmit=&our_xmit;
       
        return 0;
}



运行结果如下: head=c8b1ba00,head_mac=0, head_ip=c8b1ba10,tail=c8b1ba64
其他都有值,就mac的指针一直为0



求助!!!!

作者: wenzi138   发布时间: 2011-01-10

各位帮帮忙啊,实在不知道哪里出问题了

作者: wenzi138   发布时间: 2011-01-12