Interesting DSCP behaviour

I’m attempted to do some traffic shaping based on DSCP in an effort to get Dante working smoothly. The problem I’m running into is that I can mark packets based on DSCP fields in the pre routing chain and the counters go up, however most of the packet marks don’t appear to be in place by they hit the queue tree. Mangling to apply the marks in the forward and post routing chains doesn’t seem to work.

Here are my mangle rules:

3    ;;; dscp.0
      chain=prerouting action=mark-packet new-packet-mark=dscp.0 passthrough=no dscp=0 

 4    ;;; dscp.8
      chain=prerouting action=mark-packet new-packet-mark=dscp.8 passthrough=no dscp=8 

 5    ;;; dscp.46
      chain=prerouting action=mark-packet new-packet-mark=dscp.46 passthrough=no dscp=46 

 6    ;;; dscp.56
      chain=prerouting action=mark-packet new-packet-mark=dscp.56 passthrough=no dscp=56

The counts on those rules:

3    ;;; dscp.0
      prerouting                                                                                                                       mark-packet                 238 872 900         391 374
 4    ;;; dscp.8
      prerouting                                                                                                                       mark-packet                           0               0
 5    ;;; dscp.46
      prerouting                                                                                                                       mark-packet               2 278 699 215      17 156 637
 6    ;;; dscp.56
      prerouting                                                                                                                       mark-packet                   5 544 962          36 468

And the stats on the queue tree:

0   name="danteHigh" parent=bridge packet-mark=dscp.56 rate=0 packet-rate=0 queued-bytes=0 queued-packets=0 bytes=0 packets=0 dropped=0 

 1   name="danteMedium" parent=bridge packet-mark=dscp.46 rate=0 packet-rate=0 queued-bytes=0 queued-packets=0 bytes=0 packets=0 dropped=0 

 2   name="danteLow" parent=bridge packet-mark=dscp.8 rate=0 packet-rate=0 queued-bytes=0 queued-packets=0 bytes=0 packets=0 dropped=0 

 3   name="danteOther" parent=bridge packet-mark=dscp.0 rate=1360 packet-rate=1 queued-bytes=0 queued-packets=0 bytes=4435496 packets=25704 dropped=0 

 4   name="rest" parent=bridge packet-mark=no-mark rate=4648 packet-rate=3 queued-bytes=0 queued-packets=0 bytes=48485873 packets=69044 dropped=0

Any hints would be very much appreciated.

As the parent interface of the queues is bridge, is bridge also the out-interface for those packets which get packet-marked but bypass the queues?