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