Tc-ets(8) utility not behaving as expected

I am trying to test the tc-ets(8) utility with connectx5 NIC and I see the behaviour is unexpected, I configure TC0 to have strict priority, as per my expectations TC0 should starve the other TC1 but that is not the case and it is equally divided between the two of them. I used iperf3 to send packets with different TOS field.

Configuration I did is this :

Add ETS qdisc with 2 bands (TCs)

tc qdisc add dev enp4s0f1 root handle 1: ets bands 2 strict 1

Assign traffic with ToS 0x10 to TC 0 (high-priority)

tc filter add dev enp4s0f1 parent 1: protocol ip prio 1 u32 match ip tos 0x10 0xff flowid 1:1

Assign traffic with ToS 0x08 to TC 1 (low-priority)

tc filter add dev enp4s0f1 parent 1: protocol ip prio 2 u32 match ip tos 0x08 0xff flowid 1:2

Can anybody tell what could be the reason, is this the driver not supporting this utility?

To configure QOS (Quality of service) with our Nvidia driver (MLNX), refer to our tested/qualified configuration tool mlnx_qos.
Ref: https://docs.nvidia.com/networking/display/nvidia-mlnx-ofed-documentation-v24-10-0-7-0-0.0.pdf
Section Quality of Service (QOS)