aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/mlx4/en_ethtool.c42
-rw-r--r--drivers/net/mlx4/en_netdev.c26
-rw-r--r--drivers/net/mlx4/en_rx.c2
-rw-r--r--drivers/net/mlx4/mlx4_en.h1
4 files changed, 11 insertions, 60 deletions
diff --git a/drivers/net/mlx4/en_ethtool.c b/drivers/net/mlx4/en_ethtool.c
index d54b7abf0225..da1b64d68607 100644
--- a/drivers/net/mlx4/en_ethtool.c
+++ b/drivers/net/mlx4/en_ethtool.c
@@ -57,37 +57,6 @@ mlx4_en_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *drvinfo)
57 drvinfo->eedump_len = 0; 57 drvinfo->eedump_len = 0;
58} 58}
59 59
60static u32 mlx4_en_get_tso(struct net_device *dev)
61{
62 return (dev->features & NETIF_F_TSO) != 0;
63}
64
65static int mlx4_en_set_tso(struct net_device *dev, u32 data)
66{
67 struct mlx4_en_priv *priv = netdev_priv(dev);
68
69 if (data) {
70 if (!priv->mdev->LSO_support)
71 return -EPERM;
72 dev->features |= (NETIF_F_TSO | NETIF_F_TSO6);
73 } else
74 dev->features &= ~(NETIF_F_TSO | NETIF_F_TSO6);
75 return 0;
76}
77
78static u32 mlx4_en_get_rx_csum(struct net_device *dev)
79{
80 struct mlx4_en_priv *priv = netdev_priv(dev);
81 return priv->rx_csum;
82}
83
84static int mlx4_en_set_rx_csum(struct net_device *dev, u32 data)
85{
86 struct mlx4_en_priv *priv = netdev_priv(dev);
87 priv->rx_csum = (data != 0);
88 return 0;
89}
90
91static const char main_strings[][ETH_GSTRING_LEN] = { 60static const char main_strings[][ETH_GSTRING_LEN] = {
92 "rx_packets", "tx_packets", "rx_bytes", "tx_bytes", "rx_errors", 61 "rx_packets", "tx_packets", "rx_bytes", "tx_bytes", "rx_errors",
93 "tx_errors", "rx_dropped", "tx_dropped", "multicast", "collisions", 62 "tx_errors", "rx_dropped", "tx_dropped", "multicast", "collisions",
@@ -483,17 +452,7 @@ const struct ethtool_ops mlx4_en_ethtool_ops = {
483 .get_drvinfo = mlx4_en_get_drvinfo, 452 .get_drvinfo = mlx4_en_get_drvinfo,
484 .get_settings = mlx4_en_get_settings, 453 .get_settings = mlx4_en_get_settings,
485 .set_settings = mlx4_en_set_settings, 454 .set_settings = mlx4_en_set_settings,
486#ifdef NETIF_F_TSO
487 .get_tso = mlx4_en_get_tso,
488 .set_tso = mlx4_en_set_tso,
489#endif
490 .get_sg = ethtool_op_get_sg,
491 .set_sg = ethtool_op_set_sg,
492 .get_link = ethtool_op_get_link, 455 .get_link = ethtool_op_get_link,
493 .get_rx_csum = mlx4_en_get_rx_csum,
494 .set_rx_csum = mlx4_en_set_rx_csum,
495 .get_tx_csum = ethtool_op_get_tx_csum,
496 .set_tx_csum = ethtool_op_set_tx_ipv6_csum,
497 .get_strings = mlx4_en_get_strings, 456 .get_strings = mlx4_en_get_strings,
498 .get_sset_count = mlx4_en_get_sset_count, 457 .get_sset_count = mlx4_en_get_sset_count,
499 .get_ethtool_stats = mlx4_en_get_ethtool_stats, 458 .get_ethtool_stats = mlx4_en_get_ethtool_stats,
@@ -508,7 +467,6 @@ const struct ethtool_ops mlx4_en_ethtool_ops = {
508 .set_pauseparam = mlx4_en_set_pauseparam, 467 .set_pauseparam = mlx4_en_set_pauseparam,
509 .get_ringparam = mlx4_en_get_ringparam, 468 .get_ringparam = mlx4_en_get_ringparam,
510 .set_ringparam = mlx4_en_set_ringparam, 469 .set_ringparam = mlx4_en_set_ringparam,
511 .get_flags = ethtool_op_get_flags,
512}; 470};
513 471
514 472
diff --git a/drivers/net/mlx4/en_netdev.c b/drivers/net/mlx4/en_netdev.c
index 77063f91c564..61850adae6f7 100644
--- a/drivers/net/mlx4/en_netdev.c
+++ b/drivers/net/mlx4/en_netdev.c
@@ -1083,7 +1083,6 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
1083 priv->prof = prof; 1083 priv->prof = prof;
1084 priv->port = port; 1084 priv->port = port;
1085 priv->port_up = false; 1085 priv->port_up = false;
1086 priv->rx_csum = 1;
1087 priv->flags = prof->flags; 1086 priv->flags = prof->flags;
1088 priv->tx_ring_num = prof->tx_ring_num; 1087 priv->tx_ring_num = prof->tx_ring_num;
1089 priv->rx_ring_num = prof->rx_ring_num; 1088 priv->rx_ring_num = prof->rx_ring_num;
@@ -1141,21 +1140,16 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
1141 /* 1140 /*
1142 * Set driver features 1141 * Set driver features
1143 */ 1142 */
1144 dev->features |= NETIF_F_SG; 1143 dev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
1145 dev->vlan_features |= NETIF_F_SG; 1144 if (mdev->LSO_support)
1146 dev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; 1145 dev->hw_features |= NETIF_F_TSO | NETIF_F_TSO6;
1147 dev->vlan_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; 1146
1148 dev->features |= NETIF_F_HIGHDMA; 1147 dev->vlan_features = dev->hw_features;
1149 dev->features |= NETIF_F_HW_VLAN_TX | 1148
1150 NETIF_F_HW_VLAN_RX | 1149 dev->hw_features |= NETIF_F_RXCSUM;
1151 NETIF_F_HW_VLAN_FILTER; 1150 dev->features = dev->hw_features | NETIF_F_HIGHDMA |
1152 dev->features |= NETIF_F_GRO; 1151 NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX |
1153 if (mdev->LSO_support) { 1152 NETIF_F_HW_VLAN_FILTER;
1154 dev->features |= NETIF_F_TSO;
1155 dev->features |= NETIF_F_TSO6;
1156 dev->vlan_features |= NETIF_F_TSO;
1157 dev->vlan_features |= NETIF_F_TSO6;
1158 }
1159 1153
1160 mdev->pndev[port] = dev; 1154 mdev->pndev[port] = dev;
1161 1155
diff --git a/drivers/net/mlx4/en_rx.c b/drivers/net/mlx4/en_rx.c
index 62dd21b06df4..277215fb9d72 100644
--- a/drivers/net/mlx4/en_rx.c
+++ b/drivers/net/mlx4/en_rx.c
@@ -584,7 +584,7 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int bud
584 ring->bytes += length; 584 ring->bytes += length;
585 ring->packets++; 585 ring->packets++;
586 586
587 if (likely(priv->rx_csum)) { 587 if (likely(dev->features & NETIF_F_RXCSUM)) {
588 if ((cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPOK)) && 588 if ((cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPOK)) &&
589 (cqe->checksum == cpu_to_be16(0xffff))) { 589 (cqe->checksum == cpu_to_be16(0xffff))) {
590 priv->port_stats.rx_chksum_good++; 590 priv->port_stats.rx_chksum_good++;
diff --git a/drivers/net/mlx4/mlx4_en.h b/drivers/net/mlx4/mlx4_en.h
index e30f6099c0de..0b5150df0585 100644
--- a/drivers/net/mlx4/mlx4_en.h
+++ b/drivers/net/mlx4/mlx4_en.h
@@ -451,7 +451,6 @@ struct mlx4_en_priv {
451 int registered; 451 int registered;
452 int allocated; 452 int allocated;
453 int stride; 453 int stride;
454 int rx_csum;
455 u64 mac; 454 u64 mac;
456 int mac_index; 455 int mac_index;
457 unsigned max_mtu; 456 unsigned max_mtu;