npkt iovs fragments?

Hi!

could anybody explain me
– in which circumstances does my io-net filter
(above arp) could receive fragmented npkt

i told here not about IP fragmentation !!!
but about some number of iovecs in npkt

thanks!


Respectfully Yours
vasa

Hi,

<quoted from QNX6 NDDK network/introduction.html>
The Ethernet driver receives data from its hardware, and allocates one or
more packets into which it places the data.

plz, one more – in which cases net-driver
could allocate more than one packets ?

could anybody explain me
– in which circumstances does my io-net filter
(above arp) could receive fragmented npkt

i told here not about IP fragmentation !!!
but about some number of iovecs in npkt

thanks!

Respectfully Yours
vasa

vasa <vv40in@rambler.ru> wrote:

Hi,

quoted from QNX6 NDDK network/introduction.html
The Ethernet driver receives data from its hardware, and allocates one or
more packets into which it places the data.
/quoted

plz, one more – in which cases net-driver
could allocate more than one packets ?

It depends on the hardware. The driver could decided to receive
more than one packet (put in several npkt) and decided pass THESE
npkt(s) up. That’s the above lines mean.

To answer your question, yes, these npkt(s), usually only have
1 iov.

However, a driver could decided to put data into multipule iovs
if they want (to reuse the memory, or hardware have on card ram
or for whatever reason).

Also, there could be other filters between the driver and arp,
so before your filter got a packet, these filters could check
packet, and decided to rewrite the packet, and maybe break the
packet into multipul iovs.

Same could happen on tx_down direction.

That’s why you should NEVER assume a packet have only one iov.
The best you can do, is have a “fast path” in your code, that
if it is one iov (npkt->tot_iov == 1), then do it “fast way”,
otherwise, do it “slow way”.

-xtang

could anybody explain me
– in which circumstances does my io-net filter
(above arp) could receive fragmented npkt

i told here not about IP fragmentation !!!
but about some number of iovecs in npkt



thanks!

Respectfully Yours
vasa

Thanks a lot!
And one more question:

Can I assume that npkt is continued at least including TCP header ?

Respectfully Yours
vasa


“Xiaodan Tang” <xtang@qnx.com> wrote in message
news:a8cf94$gr8$3@nntp.qnx.com

vasa <> vv40in@rambler.ru> > wrote:
Hi,

quoted from QNX6 NDDK network/introduction.html
The Ethernet driver receives data from its hardware, and allocates one
or
more packets into which it places the data.
/quoted

plz, one more – in which cases net-driver
could allocate more than one packets ?

It depends on the hardware. The driver could decided to receive
more than one packet (put in several npkt) and decided pass THESE
npkt(s) up. That’s the above lines mean.

To answer your question, yes, these npkt(s), usually only have
1 iov.

However, a driver could decided to put data into multipule iovs
if they want (to reuse the memory, or hardware have on card ram
or for whatever reason).

Also, there could be other filters between the driver and arp,
so before your filter got a packet, these filters could check
packet, and decided to rewrite the packet, and maybe break the
packet into multipul iovs.

Same could happen on tx_down direction.

That’s why you should NEVER assume a packet have only one iov.
The best you can do, is have a “fast path” in your code, that
if it is one iov (npkt->tot_iov == 1), then do it “fast way”,
otherwise, do it “slow way”.

-xtang

could anybody explain me
– in which circumstances does my io-net filter
(above arp) could receive fragmented npkt

i told here not about IP fragmentation !!!
but about some number of iovecs in npkt


thanks!

Respectfully Yours
vasa