With HW-offloaded bonding interfaces, the built-in switch chip will always use Layer2+Layer3+Layer4 for a transmit hash policy, changing the transmit hash policy manually will have no effect
On Linux, I can only select: layer2, layer2+3 or layer3+4.
What value of xmit_hash_policy should be set from the side of the bond in Linux?
For MikroTik devices that support bridge hardware offloading e.g. CRS3xx, the document means that any transmit-hash-policy value can be selected and have no effect because the switch chip does not take that value into account. The switch chip has predefined value i.e. layer 2+3+4 for the transmit-hash-policy.
For my testing, MikroTik devices that use CPU to process the bonding take a transmit-hash-policy that is specified manually via WinBox/WebFig. The testing result is that the 802.3ad mode provides traffic into only one bonding member regardless of layer 2, layer 2+3. Note that the layer 3+4 is not fully complatible for the 802.3ad mode by its standard. However MikroTik devices with switch chip supported balance outgoing traffic at all bonding members for the 802.3ad mode. It means that no matter what layer number is set, the switch chip has it own way to do the transmit-hash-policy but the MikroTik document shows the layer 2+3+4.
I still wonder the layer 2+3+4. How the transmit-hash-policy works? I tried to think about sources and destinations (MAC+IP+Port) but it seems that it should work only one bonding members instead of balancing all bonding members. Note that I used the Bandwidth Test tool to see the traffic flowing through the bonding member interfaces. My hardware is CRS326 (ethernet switch) and hap ac2 (router) with RouterOS 7.6rc3. Hopefully it helps.