Re: [PATCH V1 5/6] net/mlx4_en: sk_prio <=> UP for untagged traffic
flat view
From: John Fastabend <hidden>
Date: 2012-03-21 14:20:30
On 3/21/2012 2:25 AM, Amir Vadai wrote:
From: Amir Vadai <redacted> Since vlan egress map is only good for tagged traffic, need to have other mapping to be used by untagged traffic. For that, the driver uses sch_mqprio mapping. This mapping could be set by using tc tool from iproute2 package. Mapped UP will be used by the HW for QoS purposes, but won't go out on the wire. Signed-off-by: Amir Vadai <redacted> ---
[...]
quoted hunk ↗ jump to hunk
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c index 445a771..f228728 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c@@ -570,15 +570,15 @@ static void build_inline_wqe(struct mlx4_en_tx_desc *tx_desc, struct sk_buff *sk u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb) { - u16 vlan_tag = 0; + int up = -1; - /* If we support per priority flow control and the packet contains - * a vlan tag, send the packet to the TX ring assigned to that priority - */ - if (vlan_tx_tag_present(skb)) { - vlan_tag = vlan_tx_tag_get(skb); - return MLX4_EN_NUM_TX_RINGS + (vlan_tag >> 13); - } + if (vlan_tx_tag_present(skb)) + up = (vlan_tx_tag_get(skb) >> 13); + else if (dev->num_tc) + up = netdev_get_prio_tc_map(dev, skb->priority); + + if (up >= 0) + return MLX4_EN_NUM_TX_RINGS + up;
I expected the else case covered by the netdev_set_tc_queue() setup above? Did I miss something.
return __skb_tx_hash(dev, skb, MLX4_EN_NUM_TX_RINGS); }