On Wed, Mar 30, 2011 at 10:42 PM, sk.syed2 <[email protected]> wrote:
> > struct page *page = virt_to_page(skb->data); > > int offset = (unsigned long) skb->data - (unsigned long) > page_address(page); > > skb_add_rx_frag(master_skb, skb_shinfo(master_skb)->nr_frags, page, > offset, > > skb->len) > > . > > . > > is this the right way to do ? > This will work if skb->len < PAGE_SIZE, otherwise it means it spans > more than a page and you need to do skb_add_rx_frag for each PAGE_SIZE > data present. Refer to Understanding Linux network internals By > Christian Benvenuti p 488/489. > Thanks Syed, skb->len is always smaller then PAGE_SIZE because i have set the mtu size as 1500 from my network driver. But am facing kernel panic, if i just the moment the driver call dev_queue_xmit, so i guess this may not be right way to get the page. Anyways thanks for the support.
_______________________________________________ Kernelnewbies mailing list [email protected] http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
