On Wed, Dec 10, 2014 at 12:31:27PM +0100, Sachin Sharma wrote:
Hi Bruce,
In my use case, I want to have three NIC TX queues per port, and want to
fill one NIC TX queue and want to empty the other queue. Is it possible
this through tx_burst or do I need to implement these queues in
applications as you suggested before. However, in this case, I would have
then one NIC TX queues and three queues in an application which actually
transmits packets to this NIC TX queue. Am I right?
For the suggestion I made, yes, you would have three software queues in your
application, and a single TX on the NIC - though you could also have a 1:1 mapping
of software to HW queues if you wanted.
However, I'm not entirely clear on what you mean by filling one queue and emptying
another. Is this just a form of buffering you are trying to implement?
Thanks,
Sachin.
On Wed, Dec 10, 2014 at 12:22 PM, Bruce Richardson <
bruce.richardson-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> wrote:
quoted
On Wed, Dec 10, 2014 at 12:03:41PM +0100, Sachin Sharma wrote:
quoted
Dear all,
In my algorithm, I am interested to perform two activities - (1)
transmitting packets to a tx_queue and (2) transmitting packets from
tx_queue to a wire - separately. I have gone through the code by putting
logs in the dpdk code and found that there is a function rte_eth_tx_burst
which transmits packets to a specific queue. However, when I debugged
more
quoted
then I found that this function just calls eth_igb_xmit_pkts
from librte_pmd_e1000, and this function just directly write the packets
to
quoted
the wire by writing all packets into registers. Could you please suggest
how to implement these two functions if these are not implemented already
in dpdk?
Thanks & Regards,
Sachin.
Hi Sachin,
anything written to the NIC TX queue is automatically put onto the wire
unless
the NIC port is down or the wire is unplugged etc. What is your use-case
that you
need to do this? I would suggest doing internal buffering in your
application,
as many DPDK example applications do, and then call tx_burst to put your
packets
on the wire when you want this capability.
Regards,
/Bruce
Hi Bruce,
quoted
quoted
I'm not entirely clear on what you mean by filling one queue and
emptying another. Is this just a form of buffering you are trying to
implement?
Yes, you are right! I am implementing a buffering mechanism in which a node
will have three queues and it fills one queue with packets and when the
queue is full then transmit the packets from the queue to the wire and
while filling one queue, it can transmit packets to a wire through another
queue that is already full.
Thanks & Regards,
Sachin.
On Wed, Dec 10, 2014 at 12:45 PM, Bruce Richardson <
bruce.richardson-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> wrote:
On Wed, Dec 10, 2014 at 12:31:27PM +0100, Sachin Sharma wrote:
quoted
Hi Bruce,
In my use case, I want to have three NIC TX queues per port, and want to
fill one NIC TX queue and want to empty the other queue. Is it possible
this through tx_burst or do I need to implement these queues in
applications as you suggested before. However, in this case, I would have
then one NIC TX queues and three queues in an application which actually
transmits packets to this NIC TX queue. Am I right?
For the suggestion I made, yes, you would have three software queues in
your
application, and a single TX on the NIC - though you could also have a 1:1
mapping
of software to HW queues if you wanted.
However, I'm not entirely clear on what you mean by filling one queue and
emptying
another. Is this just a form of buffering you are trying to implement?
quoted
Thanks,
Sachin.
On Wed, Dec 10, 2014 at 12:22 PM, Bruce Richardson <
bruce.richardson-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> wrote:
quoted
On Wed, Dec 10, 2014 at 12:03:41PM +0100, Sachin Sharma wrote:
quoted
Dear all,
In my algorithm, I am interested to perform two activities - (1)
transmitting packets to a tx_queue and (2) transmitting packets from
tx_queue to a wire - separately. I have gone through the code by
putting
quoted
quoted
quoted
logs in the dpdk code and found that there is a function
rte_eth_tx_burst
quoted
quoted
quoted
which transmits packets to a specific queue. However, when I debugged
more
quoted
then I found that this function just calls eth_igb_xmit_pkts
from librte_pmd_e1000, and this function just directly write the
packets
quoted
quoted
to
quoted
the wire by writing all packets into registers. Could you please
suggest
quoted
quoted
quoted
how to implement these two functions if these are not implemented
already
quoted
quoted
quoted
in dpdk?
Thanks & Regards,
Sachin.
Hi Sachin,
anything written to the NIC TX queue is automatically put onto the wire
unless
the NIC port is down or the wire is unplugged etc. What is your
use-case
quoted
quoted
that you
need to do this? I would suggest doing internal buffering in your
application,
as many DPDK example applications do, and then call tx_burst to put
your
quoted
quoted
packets
on the wire when you want this capability.
Regards,
/Bruce