After a second look at the netmap_open code, I believe the NETMAP_HW_RING is the choice.

My next trouble to to receive packets.

The program spins off 8 threads, each thread try to bind to one of the queue on an igb card. (queue 0-7).
depending on how I call the netmap_open().
if I call
    netmap_open(&me, id /*| NETMAP_HW_RING */, 1);

The program will able to receive packets, but of course each thread receives packet from all 8 queues.

If I call
    netmap_open(&me, id | NETMAP_HW_RING , 1)
none of the thread was able to receive packet.

come across the following line of code in nm_util.c
    } else if (ringid & NETMAP_HW_RING) {
        D("XXX check multiple threads");
What does it suggest? any special requirement for multi-threaded program?

Regards,
Ming


On 10/17/2012 12:41 PM, Ming Fu wrote:
Hi,

What is the difference between NETMAP_SW_RING and NETMAP_HW_RING.
When using netmap_open() in the example code to create a netmap fdesc, one of these two need to be ORed to the queue ID, in order to bind only one RX queue.

netmap code updated from FreeBSD RELENG_9.

Regards,
Ming


_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to