* [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11
@ 2018-01-12 0:37 Saeed Mahameed
2018-01-12 0:37 ` [net 01/11] {net,ib}/mlx5: Don't disable local loopback multicast traffic when needed Saeed Mahameed
` (11 more replies)
0 siblings, 12 replies; 14+ messages in thread
From: Saeed Mahameed @ 2018-01-12 0:37 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Saeed Mahameed
Hi Dave,
The following series includes fixes to mlx5 core and netdev driver.
To highlight we have two critical fixes in this series:
1st patch from Eran to address a fix for Host2BMC Breakage.
2nd patch from Saeed to address the RDMA IRQ vector affinity settings query
issue, the patch provides the correct mlx5_core implementation for RDMA to
correctly query vector affinity.
I sent this patch privately to Sagi a week a go, so he could to test it
but I didn't hear from him.
All other patches are trivial misc fixes.
Please pull and let me know if there's any problem.
for -stable v4.14-y and later:
("net/mlx5: Fix get vector affinity helper function")
("{net,ib}/mlx5: Don't disable local loopback multicast traffic when needed")
Note: Merging this series with net-next will produce the following conflict:
<<<<<<< HEAD
u8 disable_local_lb[0x1];
u8 reserved_at_3e2[0x1];
u8 log_min_hairpin_wq_data_sz[0x5];
u8 reserved_at_3e8[0x3];
=======
u8 disable_local_lb_uc[0x1];
u8 disable_local_lb_mc[0x1];
u8 reserved_at_3e3[0x8];
>>>>>>> 359c96447ac2297fabe15ef30b60f3b4b71e7fd0
To resolve, use the following hunk:
i.e:
<<<<<<
u8 disable_local_lb_uc[0x1];
u8 disable_local_lb_mc[0x1];
u8 log_min_hairpin_wq_data_sz[0x5];
u8 reserved_at_3e8[0x3];
>>>>>>
Thanks,
Saeed.
---
The following changes since commit ccc12b11c5332c84442ef120dcd631523be75089:
ipv6: sr: fix TLVs not being copied using setsockopt (2018-01-10 16:03:55 -0500)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux.git tags/mlx5-fixes-2018-01-11
for you to fetch changes up to 237f258c42c905f71c694670fe4d9773d85c36ed:
net/mlx5e: Remove timestamp set from netdevice open flow (2018-01-12 02:01:50 +0200)
----------------------------------------------------------------
mlx5-fixes-2018-01-11
----------------------------------------------------------------
Alaa Hleihel (1):
net/mlx5: Fix memory leak in bad flow of mlx5_alloc_irq_vectors
Eran Ben Elisha (2):
{net,ib}/mlx5: Don't disable local loopback multicast traffic when needed
net/mlx5: Fix mlx5_get_uars_page to return error code
Feras Daoud (2):
net/mlx5: Update ptp_clock_event foreach PPS event
net/mlx5e: Remove timestamp set from netdevice open flow
Gal Pressman (2):
net/mlx5e: Keep updating ethtool statistics when the interface is down
net/mlx5e: Don't override netdev features field unless in error flow
Maor Gottlieb (1):
net/mlx5: Fix error handling in load one
Saeed Mahameed (1):
net/mlx5: Fix get vector affinity helper function
Tariq Toukan (2):
net/mlx5e: Add error print in ETS init
net/mlx5e: Check support before TC swap in ETS init
drivers/infiniband/hw/mlx5/main.c | 11 +++--
drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c | 16 +++++---
.../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 3 +-
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 48 +++++++++++++---------
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 2 +
.../net/ethernet/mellanox/mlx5/core/en_selftest.c | 27 ++++++++----
.../net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 3 +-
.../net/ethernet/mellanox/mlx5/core/lib/clock.c | 6 ++-
drivers/net/ethernet/mellanox/mlx5/core/main.c | 28 ++++++++-----
drivers/net/ethernet/mellanox/mlx5/core/uar.c | 14 +++----
drivers/net/ethernet/mellanox/mlx5/core/vport.c | 22 +++++++---
include/linux/mlx5/driver.h | 19 ++++++++-
include/linux/mlx5/mlx5_ifc.h | 5 ++-
14 files changed, 135 insertions(+), 71 deletions(-)
^ permalink raw reply [flat|nested] 14+ messages in thread
* [net 01/11] {net,ib}/mlx5: Don't disable local loopback multicast traffic when needed
2018-01-12 0:37 [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 Saeed Mahameed
@ 2018-01-12 0:37 ` Saeed Mahameed
2018-01-12 0:37 ` [net 02/11] net/mlx5: Fix get vector affinity helper function Saeed Mahameed
` (10 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2018-01-12 0:37 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Eran Ben Elisha, kernel-team, Saeed Mahameed
From: Eran Ben Elisha <eranbe@mellanox.com>
There are systems platform information management interfaces (such as
HOST2BMC) for which we cannot disable local loopback multicast traffic.
Separate disable_local_lb_mc and disable_local_lb_uc capability bits so
driver will not disable multicast loopback traffic if not supported.
(It is expected that Firmware will not set disable_local_lb_mc if
HOST2BMC is running for example.)
Function mlx5_nic_vport_update_local_lb will do best effort to
disable/enable UC/MC loopback traffic and return success only in case it
succeeded to changed all allowed by Firmware.
Adapt mlx5_ib and mlx5e to support the new cap bits.
Fixes: 2c43c5a036be ("net/mlx5e: Enable local loopback in loopback selftest")
Fixes: c85023e153e3 ("IB/mlx5: Add raw ethernet local loopback support")
Fixes: bded747bb432 ("net/mlx5: Add raw ethernet local loopback firmware command")
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Cc: kernel-team@fb.com
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/infiniband/hw/mlx5/main.c | 9 +++++---
.../net/ethernet/mellanox/mlx5/core/en_selftest.c | 27 ++++++++++++++--------
drivers/net/ethernet/mellanox/mlx5/core/main.c | 3 +--
drivers/net/ethernet/mellanox/mlx5/core/vport.c | 22 +++++++++++++-----
include/linux/mlx5/mlx5_ifc.h | 5 ++--
5 files changed, 44 insertions(+), 22 deletions(-)
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
index 8ac50de2b242..00cb184fa027 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -1324,7 +1324,8 @@ static int mlx5_ib_alloc_transport_domain(struct mlx5_ib_dev *dev, u32 *tdn)
return err;
if ((MLX5_CAP_GEN(dev->mdev, port_type) != MLX5_CAP_PORT_TYPE_ETH) ||
- !MLX5_CAP_GEN(dev->mdev, disable_local_lb))
+ (!MLX5_CAP_GEN(dev->mdev, disable_local_lb_uc) &&
+ !MLX5_CAP_GEN(dev->mdev, disable_local_lb_mc)))
return err;
mutex_lock(&dev->lb_mutex);
@@ -1342,7 +1343,8 @@ static void mlx5_ib_dealloc_transport_domain(struct mlx5_ib_dev *dev, u32 tdn)
mlx5_core_dealloc_transport_domain(dev->mdev, tdn);
if ((MLX5_CAP_GEN(dev->mdev, port_type) != MLX5_CAP_PORT_TYPE_ETH) ||
- !MLX5_CAP_GEN(dev->mdev, disable_local_lb))
+ (!MLX5_CAP_GEN(dev->mdev, disable_local_lb_uc) &&
+ !MLX5_CAP_GEN(dev->mdev, disable_local_lb_mc)))
return;
mutex_lock(&dev->lb_mutex);
@@ -4187,7 +4189,8 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
}
if ((MLX5_CAP_GEN(mdev, port_type) == MLX5_CAP_PORT_TYPE_ETH) &&
- MLX5_CAP_GEN(mdev, disable_local_lb))
+ (MLX5_CAP_GEN(mdev, disable_local_lb_uc) ||
+ MLX5_CAP_GEN(mdev, disable_local_lb_mc)))
mutex_init(&dev->lb_mutex);
dev->ib_active = true;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c b/drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c
index 1f1f8af87d4d..5a4608281f38 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c
@@ -238,15 +238,19 @@ static int mlx5e_test_loopback_setup(struct mlx5e_priv *priv,
int err = 0;
/* Temporarily enable local_lb */
- if (MLX5_CAP_GEN(priv->mdev, disable_local_lb)) {
- mlx5_nic_vport_query_local_lb(priv->mdev, &lbtp->local_lb);
- if (!lbtp->local_lb)
- mlx5_nic_vport_update_local_lb(priv->mdev, true);
+ err = mlx5_nic_vport_query_local_lb(priv->mdev, &lbtp->local_lb);
+ if (err)
+ return err;
+
+ if (!lbtp->local_lb) {
+ err = mlx5_nic_vport_update_local_lb(priv->mdev, true);
+ if (err)
+ return err;
}
err = mlx5e_refresh_tirs(priv, true);
if (err)
- return err;
+ goto out;
lbtp->loopback_ok = false;
init_completion(&lbtp->comp);
@@ -256,16 +260,21 @@ static int mlx5e_test_loopback_setup(struct mlx5e_priv *priv,
lbtp->pt.dev = priv->netdev;
lbtp->pt.af_packet_priv = lbtp;
dev_add_pack(&lbtp->pt);
+
+ return 0;
+
+out:
+ if (!lbtp->local_lb)
+ mlx5_nic_vport_update_local_lb(priv->mdev, false);
+
return err;
}
static void mlx5e_test_loopback_cleanup(struct mlx5e_priv *priv,
struct mlx5e_lbt_priv *lbtp)
{
- if (MLX5_CAP_GEN(priv->mdev, disable_local_lb)) {
- if (!lbtp->local_lb)
- mlx5_nic_vport_update_local_lb(priv->mdev, false);
- }
+ if (!lbtp->local_lb)
+ mlx5_nic_vport_update_local_lb(priv->mdev, false);
dev_remove_pack(&lbtp->pt);
mlx5e_refresh_tirs(priv, false);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
index 8a89c7e8cd63..95e188d0883e 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
@@ -578,8 +578,7 @@ static int mlx5_core_set_hca_defaults(struct mlx5_core_dev *dev)
int ret = 0;
/* Disable local_lb by default */
- if ((MLX5_CAP_GEN(dev, port_type) == MLX5_CAP_PORT_TYPE_ETH) &&
- MLX5_CAP_GEN(dev, disable_local_lb))
+ if (MLX5_CAP_GEN(dev, port_type) == MLX5_CAP_PORT_TYPE_ETH)
ret = mlx5_nic_vport_update_local_lb(dev, false);
return ret;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/vport.c b/drivers/net/ethernet/mellanox/mlx5/core/vport.c
index d653b0025b13..a1296a62497d 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/vport.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/vport.c
@@ -908,23 +908,33 @@ int mlx5_nic_vport_update_local_lb(struct mlx5_core_dev *mdev, bool enable)
void *in;
int err;
- mlx5_core_dbg(mdev, "%s local_lb\n", enable ? "enable" : "disable");
+ if (!MLX5_CAP_GEN(mdev, disable_local_lb_mc) &&
+ !MLX5_CAP_GEN(mdev, disable_local_lb_uc))
+ return 0;
+
in = kvzalloc(inlen, GFP_KERNEL);
if (!in)
return -ENOMEM;
MLX5_SET(modify_nic_vport_context_in, in,
- field_select.disable_mc_local_lb, 1);
- MLX5_SET(modify_nic_vport_context_in, in,
nic_vport_context.disable_mc_local_lb, !enable);
-
- MLX5_SET(modify_nic_vport_context_in, in,
- field_select.disable_uc_local_lb, 1);
MLX5_SET(modify_nic_vport_context_in, in,
nic_vport_context.disable_uc_local_lb, !enable);
+ if (MLX5_CAP_GEN(mdev, disable_local_lb_mc))
+ MLX5_SET(modify_nic_vport_context_in, in,
+ field_select.disable_mc_local_lb, 1);
+
+ if (MLX5_CAP_GEN(mdev, disable_local_lb_uc))
+ MLX5_SET(modify_nic_vport_context_in, in,
+ field_select.disable_uc_local_lb, 1);
+
err = mlx5_modify_nic_vport_context(mdev, in, inlen);
+ if (!err)
+ mlx5_core_dbg(mdev, "%s local_lb\n",
+ enable ? "enable" : "disable");
+
kvfree(in);
return err;
}
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h
index d44ec5f41d4a..1391a82da98e 100644
--- a/include/linux/mlx5/mlx5_ifc.h
+++ b/include/linux/mlx5/mlx5_ifc.h
@@ -1027,8 +1027,9 @@ struct mlx5_ifc_cmd_hca_cap_bits {
u8 log_max_wq_sz[0x5];
u8 nic_vport_change_event[0x1];
- u8 disable_local_lb[0x1];
- u8 reserved_at_3e2[0x9];
+ u8 disable_local_lb_uc[0x1];
+ u8 disable_local_lb_mc[0x1];
+ u8 reserved_at_3e3[0x8];
u8 log_max_vlan_list[0x5];
u8 reserved_at_3f0[0x3];
u8 log_max_current_mc_list[0x5];
--
2.13.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [net 02/11] net/mlx5: Fix get vector affinity helper function
2018-01-12 0:37 [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 Saeed Mahameed
2018-01-12 0:37 ` [net 01/11] {net,ib}/mlx5: Don't disable local loopback multicast traffic when needed Saeed Mahameed
@ 2018-01-12 0:37 ` Saeed Mahameed
2018-01-14 9:29 ` Sagi Grimberg
2018-01-12 0:37 ` [net 03/11] net/mlx5: Fix memory leak in bad flow of mlx5_alloc_irq_vectors Saeed Mahameed
` (9 subsequent siblings)
11 siblings, 1 reply; 14+ messages in thread
From: Saeed Mahameed @ 2018-01-12 0:37 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Saeed Mahameed, Sagi Grimberg, Qing Huang
mlx5_get_vector_affinity used to call pci_irq_get_affinity and after
reverting the patch that sets the device affinity via PCI_IRQ_AFFINITY
API, calling pci_irq_get_affinity becomes useless and it breaks RDMA
mlx5 users. To fix this, this patch provides an alternative way to
retrieve IRQ vector affinity using legacy IRQ API, following
smp_affinity read procfs implementation.
Fixes: 231243c82793 ("Revert mlx5: move affinity hints assignments to generic code")
Fixes: a435393acafb ("mlx5: move affinity hints assignments to generic code")
Cc: Sagi Grimberg <sagi@grimberg.me>
Cc: Qing Huang <qing.huang@oracle.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
include/linux/mlx5/driver.h | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h
index 1f509d072026..a0610427e168 100644
--- a/include/linux/mlx5/driver.h
+++ b/include/linux/mlx5/driver.h
@@ -36,6 +36,7 @@
#include <linux/kernel.h>
#include <linux/completion.h>
#include <linux/pci.h>
+#include <linux/irq.h>
#include <linux/spinlock_types.h>
#include <linux/semaphore.h>
#include <linux/slab.h>
@@ -1231,7 +1232,23 @@ enum {
static inline const struct cpumask *
mlx5_get_vector_affinity(struct mlx5_core_dev *dev, int vector)
{
- return pci_irq_get_affinity(dev->pdev, MLX5_EQ_VEC_COMP_BASE + vector);
+ const struct cpumask *mask;
+ struct irq_desc *desc;
+ unsigned int irq;
+ int eqn;
+ int err;
+
+ err = mlx5_vector2eqn(dev, vector, &eqn, &irq);
+ if (err)
+ return NULL;
+
+ desc = irq_to_desc(irq);
+#ifdef CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK
+ mask = irq_data_get_effective_affinity_mask(&desc->irq_data);
+#else
+ mask = desc->irq_common_data.affinity;
+#endif
+ return mask;
}
#endif /* MLX5_DRIVER_H */
--
2.13.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [net 03/11] net/mlx5: Fix memory leak in bad flow of mlx5_alloc_irq_vectors
2018-01-12 0:37 [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 Saeed Mahameed
2018-01-12 0:37 ` [net 01/11] {net,ib}/mlx5: Don't disable local loopback multicast traffic when needed Saeed Mahameed
2018-01-12 0:37 ` [net 02/11] net/mlx5: Fix get vector affinity helper function Saeed Mahameed
@ 2018-01-12 0:37 ` Saeed Mahameed
2018-01-12 0:37 ` [net 04/11] net/mlx5: Fix mlx5_get_uars_page to return error code Saeed Mahameed
` (8 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2018-01-12 0:37 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Alaa Hleihel, Saeed Mahameed
From: Alaa Hleihel <alaa@mellanox.com>
Fix a memory leak where in case that pci_alloc_irq_vectors failed,
priv->irq_info was not released.
Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
Signed-off-by: Alaa Hleihel <alaa@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/main.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
index 95e188d0883e..a4c82fa71aec 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
@@ -319,6 +319,7 @@ static int mlx5_alloc_irq_vectors(struct mlx5_core_dev *dev)
struct mlx5_eq_table *table = &priv->eq_table;
int num_eqs = 1 << MLX5_CAP_GEN(dev, log_max_eq);
int nvec;
+ int err;
nvec = MLX5_CAP_GEN(dev, num_ports) * num_online_cpus() +
MLX5_EQ_VEC_COMP_BASE;
@@ -328,21 +329,23 @@ static int mlx5_alloc_irq_vectors(struct mlx5_core_dev *dev)
priv->irq_info = kcalloc(nvec, sizeof(*priv->irq_info), GFP_KERNEL);
if (!priv->irq_info)
- goto err_free_msix;
+ return -ENOMEM;
nvec = pci_alloc_irq_vectors(dev->pdev,
MLX5_EQ_VEC_COMP_BASE + 1, nvec,
PCI_IRQ_MSIX);
- if (nvec < 0)
- return nvec;
+ if (nvec < 0) {
+ err = nvec;
+ goto err_free_irq_info;
+ }
table->num_comp_vectors = nvec - MLX5_EQ_VEC_COMP_BASE;
return 0;
-err_free_msix:
+err_free_irq_info:
kfree(priv->irq_info);
- return -ENOMEM;
+ return err;
}
static void mlx5_free_irq_vectors(struct mlx5_core_dev *dev)
--
2.13.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [net 04/11] net/mlx5: Fix mlx5_get_uars_page to return error code
2018-01-12 0:37 [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 Saeed Mahameed
` (2 preceding siblings ...)
2018-01-12 0:37 ` [net 03/11] net/mlx5: Fix memory leak in bad flow of mlx5_alloc_irq_vectors Saeed Mahameed
@ 2018-01-12 0:37 ` Saeed Mahameed
2018-01-12 0:37 ` [net 05/11] net/mlx5: Fix error handling in load one Saeed Mahameed
` (7 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2018-01-12 0:37 UTC (permalink / raw)
To: David S. Miller
Cc: netdev, Eran Ben Elisha, Eugenia Emantayev, Saeed Mahameed
From: Eran Ben Elisha <eranbe@mellanox.com>
Change mlx5_get_uars_page to return ERR_PTR in case of
allocation failure. Change all callers accordingly to
check the IS_ERR(ptr) instead of NULL.
Fixes: 59211bd3b632 ("net/mlx5: Split the load/unload flow into hardware and software flows")
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/infiniband/hw/mlx5/main.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/main.c | 3 ++-
drivers/net/ethernet/mellanox/mlx5/core/uar.c | 14 ++++++--------
3 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
index 00cb184fa027..262c1aa2e028 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -4160,7 +4160,7 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
goto err_cnt;
dev->mdev->priv.uar = mlx5_get_uars_page(dev->mdev);
- if (!dev->mdev->priv.uar)
+ if (IS_ERR(dev->mdev->priv.uar))
goto err_cong;
err = mlx5_alloc_bfreg(dev->mdev, &dev->bfreg, false, false);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
index a4c82fa71aec..6dffa58fb178 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
@@ -1135,8 +1135,9 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv,
}
dev->priv.uar = mlx5_get_uars_page(dev);
- if (!dev->priv.uar) {
+ if (IS_ERR(dev->priv.uar)) {
dev_err(&pdev->dev, "Failed allocating uar, aborting\n");
+ err = PTR_ERR(dev->priv.uar);
goto err_disable_msix;
}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/uar.c b/drivers/net/ethernet/mellanox/mlx5/core/uar.c
index 222b25908d01..8b97066dd1f1 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/uar.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/uar.c
@@ -168,18 +168,16 @@ struct mlx5_uars_page *mlx5_get_uars_page(struct mlx5_core_dev *mdev)
struct mlx5_uars_page *ret;
mutex_lock(&mdev->priv.bfregs.reg_head.lock);
- if (list_empty(&mdev->priv.bfregs.reg_head.list)) {
- ret = alloc_uars_page(mdev, false);
- if (IS_ERR(ret)) {
- ret = NULL;
- goto out;
- }
- list_add(&ret->list, &mdev->priv.bfregs.reg_head.list);
- } else {
+ if (!list_empty(&mdev->priv.bfregs.reg_head.list)) {
ret = list_first_entry(&mdev->priv.bfregs.reg_head.list,
struct mlx5_uars_page, list);
kref_get(&ret->ref_count);
+ goto out;
}
+ ret = alloc_uars_page(mdev, false);
+ if (IS_ERR(ret))
+ goto out;
+ list_add(&ret->list, &mdev->priv.bfregs.reg_head.list);
out:
mutex_unlock(&mdev->priv.bfregs.reg_head.lock);
--
2.13.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [net 05/11] net/mlx5: Fix error handling in load one
2018-01-12 0:37 [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 Saeed Mahameed
` (3 preceding siblings ...)
2018-01-12 0:37 ` [net 04/11] net/mlx5: Fix mlx5_get_uars_page to return error code Saeed Mahameed
@ 2018-01-12 0:37 ` Saeed Mahameed
2018-01-12 0:37 ` [net 06/11] net/mlx5e: Keep updating ethtool statistics when the interface is down Saeed Mahameed
` (6 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2018-01-12 0:37 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Maor Gottlieb, Eugenia Emantayev, Saeed Mahameed
From: Maor Gottlieb <maorg@mellanox.com>
We didn't store the result of mlx5_init_once, due to that
mlx5_load_one returned success on error. Fix that.
Fixes: 59211bd3b632 ("net/mlx5: Split the load/unload flow into hardware and software flows")
Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/main.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
index 6dffa58fb178..0f88fd30a09a 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
@@ -1123,9 +1123,12 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv,
goto err_stop_poll;
}
- if (boot && mlx5_init_once(dev, priv)) {
- dev_err(&pdev->dev, "sw objs init failed\n");
- goto err_stop_poll;
+ if (boot) {
+ err = mlx5_init_once(dev, priv);
+ if (err) {
+ dev_err(&pdev->dev, "sw objs init failed\n");
+ goto err_stop_poll;
+ }
}
err = mlx5_alloc_irq_vectors(dev);
--
2.13.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [net 06/11] net/mlx5e: Keep updating ethtool statistics when the interface is down
2018-01-12 0:37 [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 Saeed Mahameed
` (4 preceding siblings ...)
2018-01-12 0:37 ` [net 05/11] net/mlx5: Fix error handling in load one Saeed Mahameed
@ 2018-01-12 0:37 ` Saeed Mahameed
2018-01-12 0:37 ` [net 07/11] net/mlx5e: Add error print in ETS init Saeed Mahameed
` (5 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2018-01-12 0:37 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Gal Pressman, Saeed Mahameed
From: Gal Pressman <galp@mellanox.com>
ethtool statistics should be updated even when the interface is down
since it shows more than just netdev counters, which might change while
the logical link is down.
One useful use case, for example, is when running RoCE traffic over the
interface (while the logical link is down, but physical link is up) and
examining rx_prioX_bytes.
Fixes: f62b8bb8f2d3 ("net/mlx5: Extend mlx5_core to support ConnectX-4 Ethernet functionality")
Signed-off-by: Gal Pressman <galp@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
index 8f05efa5c829..ea5fff2c3143 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
@@ -207,8 +207,7 @@ void mlx5e_ethtool_get_ethtool_stats(struct mlx5e_priv *priv,
return;
mutex_lock(&priv->state_lock);
- if (test_bit(MLX5E_STATE_OPENED, &priv->state))
- mlx5e_update_stats(priv, true);
+ mlx5e_update_stats(priv, true);
mutex_unlock(&priv->state_lock);
for (i = 0; i < mlx5e_num_stats_grps; i++)
--
2.13.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [net 07/11] net/mlx5e: Add error print in ETS init
2018-01-12 0:37 [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 Saeed Mahameed
` (5 preceding siblings ...)
2018-01-12 0:37 ` [net 06/11] net/mlx5e: Keep updating ethtool statistics when the interface is down Saeed Mahameed
@ 2018-01-12 0:37 ` Saeed Mahameed
2018-01-12 0:37 ` [net 08/11] net/mlx5e: Check support before TC swap " Saeed Mahameed
` (4 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2018-01-12 0:37 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Tariq Toukan, Saeed Mahameed
From: Tariq Toukan <tariqt@mellanox.com>
ETS initialization might fail, add a print to indicate
such failures.
Fixes: 08fb1dacdd76 ("net/mlx5e: Support DCBNL IEEE ETS")
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c b/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c
index 9bcf38f4123b..a5c5134f5cb2 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c
@@ -922,8 +922,9 @@ static void mlx5e_dcbnl_query_dcbx_mode(struct mlx5e_priv *priv,
static void mlx5e_ets_init(struct mlx5e_priv *priv)
{
- int i;
struct ieee_ets ets;
+ int err;
+ int i;
if (!MLX5_CAP_GEN(priv->mdev, ets))
return;
@@ -940,7 +941,10 @@ static void mlx5e_ets_init(struct mlx5e_priv *priv)
ets.prio_tc[0] = 1;
ets.prio_tc[1] = 0;
- mlx5e_dcbnl_ieee_setets_core(priv, &ets);
+ err = mlx5e_dcbnl_ieee_setets_core(priv, &ets);
+ if (err)
+ netdev_err(priv->netdev,
+ "%s, Failed to init ETS: %d\n", __func__, err);
}
enum {
--
2.13.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [net 08/11] net/mlx5e: Check support before TC swap in ETS init
2018-01-12 0:37 [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 Saeed Mahameed
` (6 preceding siblings ...)
2018-01-12 0:37 ` [net 07/11] net/mlx5e: Add error print in ETS init Saeed Mahameed
@ 2018-01-12 0:37 ` Saeed Mahameed
2018-01-12 0:37 ` [net 09/11] net/mlx5e: Don't override netdev features field unless in error flow Saeed Mahameed
` (3 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2018-01-12 0:37 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Tariq Toukan, Saeed Mahameed
From: Tariq Toukan <tariqt@mellanox.com>
Should not do the following swap between TCs 0 and 1
when max num of TCs is 1:
tclass[prio=0]=1, tclass[prio=1]=0, tclass[prio=i]=i (for i>1)
Fixes: 08fb1dacdd76 ("net/mlx5e: Support DCBNL IEEE ETS")
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c b/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c
index a5c5134f5cb2..3d46ef48d5b8 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c
@@ -937,9 +937,11 @@ static void mlx5e_ets_init(struct mlx5e_priv *priv)
ets.prio_tc[i] = i;
}
- /* tclass[prio=0]=1, tclass[prio=1]=0, tclass[prio=i]=i (for i>1) */
- ets.prio_tc[0] = 1;
- ets.prio_tc[1] = 0;
+ if (ets.ets_cap > 1) {
+ /* tclass[prio=0]=1, tclass[prio=1]=0, tclass[prio=i]=i (for i>1) */
+ ets.prio_tc[0] = 1;
+ ets.prio_tc[1] = 0;
+ }
err = mlx5e_dcbnl_ieee_setets_core(priv, &ets);
if (err)
--
2.13.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [net 09/11] net/mlx5e: Don't override netdev features field unless in error flow
2018-01-12 0:37 [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 Saeed Mahameed
` (7 preceding siblings ...)
2018-01-12 0:37 ` [net 08/11] net/mlx5e: Check support before TC swap " Saeed Mahameed
@ 2018-01-12 0:37 ` Saeed Mahameed
2018-01-12 0:37 ` [net 10/11] net/mlx5: Update ptp_clock_event foreach PPS event Saeed Mahameed
` (2 subsequent siblings)
11 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2018-01-12 0:37 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Gal Pressman, Saeed Mahameed
From: Gal Pressman <galp@mellanox.com>
Set features function sets dev->features in order to keep track of which
features were successfully changed and which weren't (in case the user
asks for more than one change in a single command).
This breaks the logic in __netdev_update_features which assumes that
dev->features is not changed on success and checks for diffs between
features and dev->features (diffs that might not exist at this point
because of the driver override).
The solution is to keep track of successful/failed feature changes and
assign them to dev->features in case of failure only.
Fixes: 0e405443e803 ("net/mlx5e: Improve set features ndo resiliency")
Signed-off-by: Gal Pressman <galp@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 43 +++++++++++++----------
1 file changed, 25 insertions(+), 18 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index d9d8227f195f..311d5ec8407c 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -3219,12 +3219,12 @@ static int mlx5e_set_mac(struct net_device *netdev, void *addr)
return 0;
}
-#define MLX5E_SET_FEATURE(netdev, feature, enable) \
+#define MLX5E_SET_FEATURE(features, feature, enable) \
do { \
if (enable) \
- netdev->features |= feature; \
+ *features |= feature; \
else \
- netdev->features &= ~feature; \
+ *features &= ~feature; \
} while (0)
typedef int (*mlx5e_feature_handler)(struct net_device *netdev, bool enable);
@@ -3347,6 +3347,7 @@ static int set_feature_arfs(struct net_device *netdev, bool enable)
#endif
static int mlx5e_handle_feature(struct net_device *netdev,
+ netdev_features_t *features,
netdev_features_t wanted_features,
netdev_features_t feature,
mlx5e_feature_handler feature_handler)
@@ -3365,34 +3366,40 @@ static int mlx5e_handle_feature(struct net_device *netdev,
return err;
}
- MLX5E_SET_FEATURE(netdev, feature, enable);
+ MLX5E_SET_FEATURE(features, feature, enable);
return 0;
}
static int mlx5e_set_features(struct net_device *netdev,
netdev_features_t features)
{
+ netdev_features_t oper_features = netdev->features;
int err;
- err = mlx5e_handle_feature(netdev, features, NETIF_F_LRO,
- set_feature_lro);
- err |= mlx5e_handle_feature(netdev, features,
+ err = mlx5e_handle_feature(netdev, &oper_features, features,
+ NETIF_F_LRO, set_feature_lro);
+ err |= mlx5e_handle_feature(netdev, &oper_features, features,
NETIF_F_HW_VLAN_CTAG_FILTER,
set_feature_cvlan_filter);
- err |= mlx5e_handle_feature(netdev, features, NETIF_F_HW_TC,
- set_feature_tc_num_filters);
- err |= mlx5e_handle_feature(netdev, features, NETIF_F_RXALL,
- set_feature_rx_all);
- err |= mlx5e_handle_feature(netdev, features, NETIF_F_RXFCS,
- set_feature_rx_fcs);
- err |= mlx5e_handle_feature(netdev, features, NETIF_F_HW_VLAN_CTAG_RX,
- set_feature_rx_vlan);
+ err |= mlx5e_handle_feature(netdev, &oper_features, features,
+ NETIF_F_HW_TC, set_feature_tc_num_filters);
+ err |= mlx5e_handle_feature(netdev, &oper_features, features,
+ NETIF_F_RXALL, set_feature_rx_all);
+ err |= mlx5e_handle_feature(netdev, &oper_features, features,
+ NETIF_F_RXFCS, set_feature_rx_fcs);
+ err |= mlx5e_handle_feature(netdev, &oper_features, features,
+ NETIF_F_HW_VLAN_CTAG_RX, set_feature_rx_vlan);
#ifdef CONFIG_RFS_ACCEL
- err |= mlx5e_handle_feature(netdev, features, NETIF_F_NTUPLE,
- set_feature_arfs);
+ err |= mlx5e_handle_feature(netdev, &oper_features, features,
+ NETIF_F_NTUPLE, set_feature_arfs);
#endif
- return err ? -EINVAL : 0;
+ if (err) {
+ netdev->features = oper_features;
+ return -EINVAL;
+ }
+
+ return 0;
}
static netdev_features_t mlx5e_fix_features(struct net_device *netdev,
--
2.13.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [net 10/11] net/mlx5: Update ptp_clock_event foreach PPS event
2018-01-12 0:37 [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 Saeed Mahameed
` (8 preceding siblings ...)
2018-01-12 0:37 ` [net 09/11] net/mlx5e: Don't override netdev features field unless in error flow Saeed Mahameed
@ 2018-01-12 0:37 ` Saeed Mahameed
2018-01-12 0:37 ` [net 11/11] net/mlx5e: Remove timestamp set from netdevice open flow Saeed Mahameed
2018-01-12 15:41 ` [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 David Miller
11 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2018-01-12 0:37 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Feras Daoud, Saeed Mahameed
From: Feras Daoud <ferasda@mellanox.com>
PPS event did not update ptp_clock_event fields, therefore,
timestamp value was not updated correctly. This fix updates the
event source and the timestamp value for each PPS event.
Fixes: 7c39afb394c7 ("net/mlx5: PTP code migration to driver core section")
Signed-off-by: Feras Daoud <ferasda@mellanox.com>
Reported-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c b/drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c
index fa8aed62b231..5701f125e99c 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c
@@ -423,9 +423,13 @@ void mlx5_pps_event(struct mlx5_core_dev *mdev,
switch (clock->ptp_info.pin_config[pin].func) {
case PTP_PF_EXTTS:
+ ptp_event.index = pin;
+ ptp_event.timestamp = timecounter_cyc2time(&clock->tc,
+ be64_to_cpu(eqe->data.pps.time_stamp));
if (clock->pps_info.enabled) {
ptp_event.type = PTP_CLOCK_PPSUSR;
- ptp_event.pps_times.ts_real = ns_to_timespec64(eqe->data.pps.time_stamp);
+ ptp_event.pps_times.ts_real =
+ ns_to_timespec64(ptp_event.timestamp);
} else {
ptp_event.type = PTP_CLOCK_EXTTS;
}
--
2.13.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [net 11/11] net/mlx5e: Remove timestamp set from netdevice open flow
2018-01-12 0:37 [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 Saeed Mahameed
` (9 preceding siblings ...)
2018-01-12 0:37 ` [net 10/11] net/mlx5: Update ptp_clock_event foreach PPS event Saeed Mahameed
@ 2018-01-12 0:37 ` Saeed Mahameed
2018-01-12 15:41 ` [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 David Miller
11 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2018-01-12 0:37 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Feras Daoud, Saeed Mahameed
From: Feras Daoud <ferasda@mellanox.com>
To avoid configuration override, timestamp set call will
be moved from the netdevice open flow to the init flow.
By this, a close-open procedure will not override the timestamp
configuration.
In addition, the change will rename mlx5e_timestamp_set function
to be mlx5e_timestamp_init.
Fixes: ef9814deafd0 ("net/mlx5e: Add HW timestamping (TS) support")
Signed-off-by: Feras Daoud <ferasda@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 5 +++--
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 2 ++
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 3 ++-
4 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
index 543060c305a0..c2d89bfa1a70 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
@@ -895,7 +895,7 @@ int mlx5e_vlan_rx_kill_vid(struct net_device *dev, __always_unused __be16 proto,
u16 vid);
void mlx5e_enable_cvlan_filter(struct mlx5e_priv *priv);
void mlx5e_disable_cvlan_filter(struct mlx5e_priv *priv);
-void mlx5e_timestamp_set(struct mlx5e_priv *priv);
+void mlx5e_timestamp_init(struct mlx5e_priv *priv);
struct mlx5e_redirect_rqt_param {
bool is_rss;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index 311d5ec8407c..d8aefeed124d 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -2669,7 +2669,7 @@ void mlx5e_switch_priv_channels(struct mlx5e_priv *priv,
netif_carrier_on(netdev);
}
-void mlx5e_timestamp_set(struct mlx5e_priv *priv)
+void mlx5e_timestamp_init(struct mlx5e_priv *priv)
{
priv->tstamp.tx_type = HWTSTAMP_TX_OFF;
priv->tstamp.rx_filter = HWTSTAMP_FILTER_NONE;
@@ -2690,7 +2690,6 @@ int mlx5e_open_locked(struct net_device *netdev)
mlx5e_activate_priv_channels(priv);
if (priv->profile->update_carrier)
priv->profile->update_carrier(priv);
- mlx5e_timestamp_set(priv);
if (priv->profile->update_stats)
queue_delayed_work(priv->wq, &priv->update_stats_work, 0);
@@ -4146,6 +4145,8 @@ static void mlx5e_build_nic_netdev_priv(struct mlx5_core_dev *mdev,
INIT_WORK(&priv->set_rx_mode_work, mlx5e_set_rx_mode_work);
INIT_WORK(&priv->tx_timeout_work, mlx5e_tx_timeout_work);
INIT_DELAYED_WORK(&priv->update_stats_work, mlx5e_update_stats_work);
+
+ mlx5e_timestamp_init(priv);
}
static void mlx5e_set_netdev_dev_addr(struct net_device *netdev)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
index 2c43606c26b5..3409d86eb06b 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
@@ -877,6 +877,8 @@ static void mlx5e_init_rep(struct mlx5_core_dev *mdev,
mlx5e_build_rep_params(mdev, &priv->channels.params);
mlx5e_build_rep_netdev(netdev);
+
+ mlx5e_timestamp_init(priv);
}
static int mlx5e_init_rep_rx(struct mlx5e_priv *priv)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
index 8812d7208e8f..ee2f378c5030 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
@@ -86,6 +86,8 @@ void mlx5i_init(struct mlx5_core_dev *mdev,
mlx5e_build_nic_params(mdev, &priv->channels.params, profile->max_nch(mdev));
mlx5i_build_nic_params(mdev, &priv->channels.params);
+ mlx5e_timestamp_init(priv);
+
/* netdev init */
netdev->hw_features |= NETIF_F_SG;
netdev->hw_features |= NETIF_F_IP_CSUM;
@@ -450,7 +452,6 @@ static int mlx5i_open(struct net_device *netdev)
mlx5e_refresh_tirs(epriv, false);
mlx5e_activate_priv_channels(epriv);
- mlx5e_timestamp_set(epriv);
mutex_unlock(&epriv->state_lock);
return 0;
--
2.13.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11
2018-01-12 0:37 [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 Saeed Mahameed
` (10 preceding siblings ...)
2018-01-12 0:37 ` [net 11/11] net/mlx5e: Remove timestamp set from netdevice open flow Saeed Mahameed
@ 2018-01-12 15:41 ` David Miller
11 siblings, 0 replies; 14+ messages in thread
From: David Miller @ 2018-01-12 15:41 UTC (permalink / raw)
To: saeedm; +Cc: netdev
From: Saeed Mahameed <saeedm@mellanox.com>
Date: Fri, 12 Jan 2018 02:37:12 +0200
> The following series includes fixes to mlx5 core and netdev driver.
> To highlight we have two critical fixes in this series:
> 1st patch from Eran to address a fix for Host2BMC Breakage.
>
> 2nd patch from Saeed to address the RDMA IRQ vector affinity settings query
> issue, the patch provides the correct mlx5_core implementation for RDMA to
> correctly query vector affinity.
> I sent this patch privately to Sagi a week a go, so he could to test it
> but I didn't hear from him.
>
> All other patches are trivial misc fixes.
> Please pull and let me know if there's any problem.
>
> for -stable v4.14-y and later:
> ("net/mlx5: Fix get vector affinity helper function")
> ("{net,ib}/mlx5: Don't disable local loopback multicast traffic when needed")
Pulled and queued up for -stable, thanks Saeed.
> Note: Merging this series with net-next will produce the following conflict:
...
Thanks a lot for this!
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [net 02/11] net/mlx5: Fix get vector affinity helper function
2018-01-12 0:37 ` [net 02/11] net/mlx5: Fix get vector affinity helper function Saeed Mahameed
@ 2018-01-14 9:29 ` Sagi Grimberg
0 siblings, 0 replies; 14+ messages in thread
From: Sagi Grimberg @ 2018-01-14 9:29 UTC (permalink / raw)
To: Saeed Mahameed, David S. Miller; +Cc: netdev, Qing Huang
Hi Saeed,
> mlx5_get_vector_affinity used to call pci_irq_get_affinity and after
> reverting the patch that sets the device affinity via PCI_IRQ_AFFINITY
> API, calling pci_irq_get_affinity becomes useless and it breaks RDMA
> mlx5 users. To fix this, this patch provides an alternative way to
> retrieve IRQ vector affinity using legacy IRQ API, following
> smp_affinity read procfs implementation.
>
> Fixes: 231243c82793 ("Revert mlx5: move affinity hints assignments to generic code")
> Fixes: a435393acafb ("mlx5: move affinity hints assignments to generic code")
> Cc: Sagi Grimberg <sagi@grimberg.me>
> Cc: Qing Huang <qing.huang@oracle.com>
> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
I didn't have time to test it out thus far, I assume you tested it
though, so looks good to me,
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2018-01-14 9:29 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-12 0:37 [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 Saeed Mahameed
2018-01-12 0:37 ` [net 01/11] {net,ib}/mlx5: Don't disable local loopback multicast traffic when needed Saeed Mahameed
2018-01-12 0:37 ` [net 02/11] net/mlx5: Fix get vector affinity helper function Saeed Mahameed
2018-01-14 9:29 ` Sagi Grimberg
2018-01-12 0:37 ` [net 03/11] net/mlx5: Fix memory leak in bad flow of mlx5_alloc_irq_vectors Saeed Mahameed
2018-01-12 0:37 ` [net 04/11] net/mlx5: Fix mlx5_get_uars_page to return error code Saeed Mahameed
2018-01-12 0:37 ` [net 05/11] net/mlx5: Fix error handling in load one Saeed Mahameed
2018-01-12 0:37 ` [net 06/11] net/mlx5e: Keep updating ethtool statistics when the interface is down Saeed Mahameed
2018-01-12 0:37 ` [net 07/11] net/mlx5e: Add error print in ETS init Saeed Mahameed
2018-01-12 0:37 ` [net 08/11] net/mlx5e: Check support before TC swap " Saeed Mahameed
2018-01-12 0:37 ` [net 09/11] net/mlx5e: Don't override netdev features field unless in error flow Saeed Mahameed
2018-01-12 0:37 ` [net 10/11] net/mlx5: Update ptp_clock_event foreach PPS event Saeed Mahameed
2018-01-12 0:37 ` [net 11/11] net/mlx5e: Remove timestamp set from netdevice open flow Saeed Mahameed
2018-01-12 15:41 ` [pull request][net 00/11] Mellanox, mlx5 fixes 2018-01-11 David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).