The IP::tos command has been around since the v4 days, and there has been some confusion on IP tos versus DSCP. The command takes the supplied value (or returns a value) and applies to the tos field overall, which is eight bits. So if you take express forwarding, which is DSCP 46 and use IP::tos 46, you'll notice on the wire that something is amiss:
What gives? Well, the DSCP markings are in the first 6 bits of the tos field, so you need to bit-shift to the left a couple places. That results in 46 * 22 = 184. So 184 is the value you would use with the IP::tos command.
00101110 = 46
10111000 = 184
By setting IP::tos 184, you can see on the wire that all is now well in the world:
The below table maps the DSCP values in decimal to the value you'll need to use with the IP::tos command to get expected results.