G,day
we are writing traffic shaping application on top of dpdk hierarchical QoS
application. Each subscriber is assigned with a distinct pipe where its
downstream traffic is shaped using pipes's 13 priority traffic classes.
in app_rx_thread we classify the traffic and determine its pipe,
traffic_class and queue and path write into pkt descriptor by
rte_sched_port_pkt_write() api.
in app_worker_thread we enqueue and dequeue into/from qos scheduler where
our custom code calculates the bits/sec stats on each of the pipe tc right
after dequeue from scheduler.
rte_sched_port_pkt_read_tree_path() is used on dequeue mbufs to see its
association with port, subport, traffic class  and queue. our expectations
are to see the same values of traffic class and queue that we assigned at
app_rx_thread() but its behavior is unexpected. below is our program output
by app_rx_thread and app_worker_thread for different runs.
other than traffic class = 0 and queue 0 assignment not other queue and
traffic class reads back correctly in worker thread. for example when we
classify and write traffic class = 1 and queue = 1 for a packet, it will be
read back after dequeue from scheduler as traffic class = 2 and queue = 0.
can any one explain this behavior?
i hope i made my question clear. thanks for reading and waiting for your
valuable comments. BR
rx_thread write:          traffic class = 0, queue = 0
worker_thread reads: traffic class = 0,  queue = 0

rx_thread write:          traffic class = 1, queue = 1
worker_thread reads: traffic class = 2,  queue = 0

rx_thread write:          traffic class = 2, queue = 2
worker_thread reads: traffic class = 4,  queue = 0

rx_thread write:          traffic class = 3, queue = 3
worker_thread reads: traffic class = 6,  queue = 0

rx_thread write:          traffic class = 4, queue = 4
worker_thread reads: traffic class = 8,  queue = 0

rx_thread write:          traffic class = 5, queue = 5
worker_thread reads: traffic class = 10,  queue = 0

rx_thread write:          traffic class = 6, queue = 6
worker_thread reads: traffic class = 12,  queue = 0

rx_thread write:          traffic class = 7, queue = 7
worker_thread reads: traffic class = 12,  queue = 2

rx_thread write:          traffic class = 8, queue = 8
worker_thread reads: traffic class = 0,  queue = 0

rx_thread write:          traffic class = 9, queue = 9
worker_thread reads: traffic class = 2,  queue = 0

rx_thread write:          traffic class = 10, queue = 10
worker_thread reads: traffic class = 4,  queue = 0

rx_thread write:          traffic class = 11, queue = 11
worker_thread reads: traffic class = 6,  queue = 0

rx_thread write:          traffic class = 12, queue = 12
worker_thread reads: traffic class = 8,  queue = 0

Reply via email to