net: mlx4: convert to hw_features
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
569e146396
commit
c8c64cff2c
|
@ -57,37 +57,6 @@ mlx4_en_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *drvinfo)
|
||||||
drvinfo->eedump_len = 0;
|
drvinfo->eedump_len = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 mlx4_en_get_tso(struct net_device *dev)
|
|
||||||
{
|
|
||||||
return (dev->features & NETIF_F_TSO) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int mlx4_en_set_tso(struct net_device *dev, u32 data)
|
|
||||||
{
|
|
||||||
struct mlx4_en_priv *priv = netdev_priv(dev);
|
|
||||||
|
|
||||||
if (data) {
|
|
||||||
if (!priv->mdev->LSO_support)
|
|
||||||
return -EPERM;
|
|
||||||
dev->features |= (NETIF_F_TSO | NETIF_F_TSO6);
|
|
||||||
} else
|
|
||||||
dev->features &= ~(NETIF_F_TSO | NETIF_F_TSO6);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static u32 mlx4_en_get_rx_csum(struct net_device *dev)
|
|
||||||
{
|
|
||||||
struct mlx4_en_priv *priv = netdev_priv(dev);
|
|
||||||
return priv->rx_csum;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int mlx4_en_set_rx_csum(struct net_device *dev, u32 data)
|
|
||||||
{
|
|
||||||
struct mlx4_en_priv *priv = netdev_priv(dev);
|
|
||||||
priv->rx_csum = (data != 0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char main_strings[][ETH_GSTRING_LEN] = {
|
static const char main_strings[][ETH_GSTRING_LEN] = {
|
||||||
"rx_packets", "tx_packets", "rx_bytes", "tx_bytes", "rx_errors",
|
"rx_packets", "tx_packets", "rx_bytes", "tx_bytes", "rx_errors",
|
||||||
"tx_errors", "rx_dropped", "tx_dropped", "multicast", "collisions",
|
"tx_errors", "rx_dropped", "tx_dropped", "multicast", "collisions",
|
||||||
|
@ -483,17 +452,7 @@ const struct ethtool_ops mlx4_en_ethtool_ops = {
|
||||||
.get_drvinfo = mlx4_en_get_drvinfo,
|
.get_drvinfo = mlx4_en_get_drvinfo,
|
||||||
.get_settings = mlx4_en_get_settings,
|
.get_settings = mlx4_en_get_settings,
|
||||||
.set_settings = mlx4_en_set_settings,
|
.set_settings = mlx4_en_set_settings,
|
||||||
#ifdef NETIF_F_TSO
|
|
||||||
.get_tso = mlx4_en_get_tso,
|
|
||||||
.set_tso = mlx4_en_set_tso,
|
|
||||||
#endif
|
|
||||||
.get_sg = ethtool_op_get_sg,
|
|
||||||
.set_sg = ethtool_op_set_sg,
|
|
||||||
.get_link = ethtool_op_get_link,
|
.get_link = ethtool_op_get_link,
|
||||||
.get_rx_csum = mlx4_en_get_rx_csum,
|
|
||||||
.set_rx_csum = mlx4_en_set_rx_csum,
|
|
||||||
.get_tx_csum = ethtool_op_get_tx_csum,
|
|
||||||
.set_tx_csum = ethtool_op_set_tx_ipv6_csum,
|
|
||||||
.get_strings = mlx4_en_get_strings,
|
.get_strings = mlx4_en_get_strings,
|
||||||
.get_sset_count = mlx4_en_get_sset_count,
|
.get_sset_count = mlx4_en_get_sset_count,
|
||||||
.get_ethtool_stats = mlx4_en_get_ethtool_stats,
|
.get_ethtool_stats = mlx4_en_get_ethtool_stats,
|
||||||
|
@ -508,7 +467,6 @@ const struct ethtool_ops mlx4_en_ethtool_ops = {
|
||||||
.set_pauseparam = mlx4_en_set_pauseparam,
|
.set_pauseparam = mlx4_en_set_pauseparam,
|
||||||
.get_ringparam = mlx4_en_get_ringparam,
|
.get_ringparam = mlx4_en_get_ringparam,
|
||||||
.set_ringparam = mlx4_en_set_ringparam,
|
.set_ringparam = mlx4_en_set_ringparam,
|
||||||
.get_flags = ethtool_op_get_flags,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1083,7 +1083,6 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
|
||||||
priv->prof = prof;
|
priv->prof = prof;
|
||||||
priv->port = port;
|
priv->port = port;
|
||||||
priv->port_up = false;
|
priv->port_up = false;
|
||||||
priv->rx_csum = 1;
|
|
||||||
priv->flags = prof->flags;
|
priv->flags = prof->flags;
|
||||||
priv->tx_ring_num = prof->tx_ring_num;
|
priv->tx_ring_num = prof->tx_ring_num;
|
||||||
priv->rx_ring_num = prof->rx_ring_num;
|
priv->rx_ring_num = prof->rx_ring_num;
|
||||||
|
@ -1141,21 +1140,16 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
|
||||||
/*
|
/*
|
||||||
* Set driver features
|
* Set driver features
|
||||||
*/
|
*/
|
||||||
dev->features |= NETIF_F_SG;
|
dev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
|
||||||
dev->vlan_features |= NETIF_F_SG;
|
if (mdev->LSO_support)
|
||||||
dev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
|
dev->hw_features |= NETIF_F_TSO | NETIF_F_TSO6;
|
||||||
dev->vlan_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
|
|
||||||
dev->features |= NETIF_F_HIGHDMA;
|
dev->vlan_features = dev->hw_features;
|
||||||
dev->features |= NETIF_F_HW_VLAN_TX |
|
|
||||||
NETIF_F_HW_VLAN_RX |
|
dev->hw_features |= NETIF_F_RXCSUM;
|
||||||
|
dev->features = dev->hw_features | NETIF_F_HIGHDMA |
|
||||||
|
NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX |
|
||||||
NETIF_F_HW_VLAN_FILTER;
|
NETIF_F_HW_VLAN_FILTER;
|
||||||
dev->features |= NETIF_F_GRO;
|
|
||||||
if (mdev->LSO_support) {
|
|
||||||
dev->features |= NETIF_F_TSO;
|
|
||||||
dev->features |= NETIF_F_TSO6;
|
|
||||||
dev->vlan_features |= NETIF_F_TSO;
|
|
||||||
dev->vlan_features |= NETIF_F_TSO6;
|
|
||||||
}
|
|
||||||
|
|
||||||
mdev->pndev[port] = dev;
|
mdev->pndev[port] = dev;
|
||||||
|
|
||||||
|
|
|
@ -584,7 +584,7 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int bud
|
||||||
ring->bytes += length;
|
ring->bytes += length;
|
||||||
ring->packets++;
|
ring->packets++;
|
||||||
|
|
||||||
if (likely(priv->rx_csum)) {
|
if (likely(dev->features & NETIF_F_RXCSUM)) {
|
||||||
if ((cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPOK)) &&
|
if ((cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPOK)) &&
|
||||||
(cqe->checksum == cpu_to_be16(0xffff))) {
|
(cqe->checksum == cpu_to_be16(0xffff))) {
|
||||||
priv->port_stats.rx_chksum_good++;
|
priv->port_stats.rx_chksum_good++;
|
||||||
|
|
|
@ -451,7 +451,6 @@ struct mlx4_en_priv {
|
||||||
int registered;
|
int registered;
|
||||||
int allocated;
|
int allocated;
|
||||||
int stride;
|
int stride;
|
||||||
int rx_csum;
|
|
||||||
u64 mac;
|
u64 mac;
|
||||||
int mac_index;
|
int mac_index;
|
||||||
unsigned max_mtu;
|
unsigned max_mtu;
|
||||||
|
|
Loading…
Reference in a new issue