Good Morning:
Running quite a few VoIP sites myself, and trust-dscp is correct. That said, you will want to ensure the phones are actually setting EF, which in a packet capture may appear as 46. All this does is mark the actual layer-3 packets, so the telco recognizes them as being real-time traffic.
Now each provider is different, but may expect a layer-2 priority be set as well. You would need to talk to your provider to check if this is the case.
As for the provider, we generally order the network circuit with the provider taking care of the QoS for inbound traffic; since, you have no control over that.
****
Now for outbound, you probably are going to be quite limited on an ICX what you can do. I am pretty sure there are other Ruckus switches that have the full QoS capabilities. This is one of the very few things I still prefer doing on Cisco. The vast majority of things are more straight-forward on the FastIronOS platforms.
Generally what you will do for QoS is make a class-map that matches the DSCP. Often I actually match an ACL, and use the ACL to match the DSCP particularly if I want counters.
From there, I make a policy-map, and add that class-map then take an action on outbound traffic. Generally, the action you want is priority; since, it not only guarantees bandwidth, but it also provides low-latency queuing. The gist of QoS is that each class in a policy-map matches a class-map, and each class in a policy-map is a queue.
Now, it gets pretty weird because there is also a default-class, and it is fairly common to nest policy-maps.
At any rate, you ultimately add the policy-map as an outbound service-policy on the interface that connects to your WAN/telco.