aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAmir Vadai <amirv@mellanox.com>2012-04-04 17:33:27 -0400
committerDavid S. Miller <davem@davemloft.net>2012-04-05 05:08:04 -0400
commit897d7846b483da58d0b46bf806cf362a71501c56 (patch)
tree0406bcfa4cda44736297c3dc43696f6589c42338 /drivers
parent564c274c3df07d727fbe23684dc3077a9dd30607 (diff)
net/mlx4_en: sk_prio <=> UP for untagged traffic
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 <amirv@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_netdev.c18
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_tx.c2
2 files changed, 19 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
index 107f00553bd3..35003ada04ec 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
@@ -45,6 +45,14 @@
45#include "mlx4_en.h" 45#include "mlx4_en.h"
46#include "en_port.h" 46#include "en_port.h"
47 47
48static int mlx4_en_setup_tc(struct net_device *dev, u8 up)
49{
50 if (up != MLX4_EN_NUM_UP)
51 return -EINVAL;
52
53 return 0;
54}
55
48static int mlx4_en_vlan_rx_add_vid(struct net_device *dev, unsigned short vid) 56static int mlx4_en_vlan_rx_add_vid(struct net_device *dev, unsigned short vid)
49{ 57{
50 struct mlx4_en_priv *priv = netdev_priv(dev); 58 struct mlx4_en_priv *priv = netdev_priv(dev);
@@ -1038,6 +1046,7 @@ static const struct net_device_ops mlx4_netdev_ops = {
1038 .ndo_poll_controller = mlx4_en_netpoll, 1046 .ndo_poll_controller = mlx4_en_netpoll,
1039#endif 1047#endif
1040 .ndo_set_features = mlx4_en_set_features, 1048 .ndo_set_features = mlx4_en_set_features,
1049 .ndo_setup_tc = mlx4_en_setup_tc,
1041}; 1050};
1042 1051
1043int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, 1052int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
@@ -1119,6 +1128,15 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
1119 netif_set_real_num_tx_queues(dev, priv->tx_ring_num); 1128 netif_set_real_num_tx_queues(dev, priv->tx_ring_num);
1120 netif_set_real_num_rx_queues(dev, priv->rx_ring_num); 1129 netif_set_real_num_rx_queues(dev, priv->rx_ring_num);
1121 1130
1131 netdev_set_num_tc(dev, MLX4_EN_NUM_UP);
1132
1133 /* First 9 rings are for UP 0 */
1134 netdev_set_tc_queue(dev, 0, MLX4_EN_NUM_TX_RINGS + 1, 0);
1135
1136 /* Partition Tx queues evenly amongst UP's 1-7 */
1137 for (i = 1; i < MLX4_EN_NUM_UP; i++)
1138 netdev_set_tc_queue(dev, i, 1, MLX4_EN_NUM_TX_RINGS + i);
1139
1122 SET_ETHTOOL_OPS(dev, &mlx4_en_ethtool_ops); 1140 SET_ETHTOOL_OPS(dev, &mlx4_en_ethtool_ops);
1123 1141
1124 /* Set defualt MAC */ 1142 /* Set defualt MAC */
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
index 94a605a7cd24..d9bab5338c2f 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
@@ -577,7 +577,7 @@ u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb)
577 return MLX4_EN_NUM_TX_RINGS + (vlan_tag >> 13); 577 return MLX4_EN_NUM_TX_RINGS + (vlan_tag >> 13);
578 } 578 }
579 579
580 return __skb_tx_hash(dev, skb, MLX4_EN_NUM_TX_RINGS); 580 return skb_tx_hash(dev, skb);
581} 581}
582 582
583static void mlx4_bf_copy(void __iomem *dst, unsigned long *src, unsigned bytecnt) 583static void mlx4_bf_copy(void __iomem *dst, unsigned long *src, unsigned bytecnt)