Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 896a7cf8 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

pktgen: Fix multiqueue handling



It is not currently possible to instruct pktgen to use one selected tx queue.

When Robert added multiqueue support in commit 45b270f8, he added
an interval (queue_map_min, queue_map_max), and his code doesnt take
into account the case of min = max, to select one tx queue exactly.

I suspect a high performance setup on a eight txqueue device wants
to use exactly eight cpus, and assign one tx queue to each sender.

This patchs makes pktgen select the right tx queue, not the first one.

Also updates Documentation to reflect Robert changes.

Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarRobert Olsson <robert.olsson@its.uu.se>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a825e00c
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -90,6 +90,11 @@ Examples:
 pgset "dstmac 00:00:00:00:00:00"    sets MAC destination address
 pgset "srcmac 00:00:00:00:00:00"    sets MAC source address

 pgset "queue_map_min 0" Sets the min value of tx queue interval
 pgset "queue_map_max 7" Sets the max value of tx queue interval, for multiqueue devices
                         To select queue 1 of a given device,
                         use queue_map_min=1 and queue_map_max=1

 pgset "src_mac_count 1" Sets the number of MACs we'll range through.  
                         The 'minimum' MAC is what you set with srcmac.

@@ -101,6 +106,9 @@ Examples:
                              IPDST_RND, UDPSRC_RND,
                              UDPDST_RND, MACSRC_RND, MACDST_RND 
                              MPLS_RND, VID_RND, SVID_RND
                              QUEUE_MAP_RND # queue map random
                              QUEUE_MAP_CPU # queue map mirrors smp_processor_id()


 pgset "udp_src_min 9"   set UDP source port min, If < udp_src_max, then
                         cycle through the port range.
+1 −1
Original line number Diff line number Diff line
@@ -2212,7 +2212,7 @@ static void set_cur_queue_map(struct pktgen_dev *pkt_dev)
	if (pkt_dev->flags & F_QUEUE_MAP_CPU)
		pkt_dev->cur_queue_map = smp_processor_id();

	else if (pkt_dev->queue_map_min < pkt_dev->queue_map_max) {
	else if (pkt_dev->queue_map_min <= pkt_dev->queue_map_max) {
		__u16 t;
		if (pkt_dev->flags & F_QUEUE_MAP_RND) {
			t = random32() %