* [PATCH net 0/2] Mellanox mlx4 driver fixes
[not found] <a>
@ 2015-12-17 13:35 ` Or Gerlitz
2015-12-17 13:35 ` [PATCH net 1/2] net/mlx4_en: Remove dependency between timestamping capability and service_task Or Gerlitz
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Or Gerlitz @ 2015-12-17 13:35 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Or Gerlitz
Hi Dave,
Two small fixes from Jenny for code flows that deal with time-stamping.
Or.
Eugenia Emantayev (2):
net/mlx4_en: Remove dependency between timestamping capability and service_task
net/mlx4_en: Fix HW timestamp init issue upon system startup
drivers/net/ethernet/mellanox/mlx4/en_clock.c | 7 +++++++
drivers/net/ethernet/mellanox/mlx4/en_main.c | 7 -------
drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 10 ++++++++--
3 files changed, 15 insertions(+), 9 deletions(-)
--
2.3.7
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH net 1/2] net/mlx4_en: Remove dependency between timestamping capability and service_task
2015-12-17 13:35 ` [PATCH net 0/2] Mellanox mlx4 driver fixes Or Gerlitz
@ 2015-12-17 13:35 ` Or Gerlitz
2015-12-17 13:35 ` [PATCH net 2/2] net/mlx4_en: Fix HW timestamp init issue upon system startup Or Gerlitz
2015-12-18 19:48 ` [PATCH net 0/2] Mellanox mlx4 driver fixes David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Or Gerlitz @ 2015-12-17 13:35 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Eugenia Emantayev, Eran Ben Elisha, Or Gerlitz
From: Eugenia Emantayev <eugenia@mellanox.com>
Service task is responsible for other tasks in addition to timestamping
overflow check. Launch it even if timestamping is not supported by device.
Fixes: 07841f9d94c1 ('net/mlx4_en: Schedule napi when RX buffers allocation fails')
Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
index 886e1bc..4eef316 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
@@ -3058,9 +3058,8 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
}
queue_delayed_work(mdev->workqueue, &priv->stats_task, STATS_DELAY);
- if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS)
- queue_delayed_work(mdev->workqueue, &priv->service_task,
- SERVICE_TASK_DELAY);
+ queue_delayed_work(mdev->workqueue, &priv->service_task,
+ SERVICE_TASK_DELAY);
mlx4_en_set_stats_bitmap(mdev->dev, &priv->stats_bitmap,
mdev->profile.prof[priv->port].rx_ppp,
--
2.3.7
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH net 2/2] net/mlx4_en: Fix HW timestamp init issue upon system startup
2015-12-17 13:35 ` [PATCH net 0/2] Mellanox mlx4 driver fixes Or Gerlitz
2015-12-17 13:35 ` [PATCH net 1/2] net/mlx4_en: Remove dependency between timestamping capability and service_task Or Gerlitz
@ 2015-12-17 13:35 ` Or Gerlitz
2015-12-18 19:48 ` [PATCH net 0/2] Mellanox mlx4 driver fixes David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Or Gerlitz @ 2015-12-17 13:35 UTC (permalink / raw)
To: David S. Miller
Cc: netdev, Eugenia Emantayev, Marina Varshaver, Eran Ben Elisha, Or Gerlitz
From: Eugenia Emantayev <eugenia@mellanox.com>
mlx4_en_init_timestamp was called before creation of netdev and port
init, thus used uninitialized values. Specifically - NIC frequency was
incorrect causing wrong calculations and later wrong HW timestamps.
Fixes: 1ec4864b1017 ('net/mlx4_en: Fixed crash when port type is changed')
Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Signed-off-by: Marina Varshaver <marinav@mellanox.com>
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
---
drivers/net/ethernet/mellanox/mlx4/en_clock.c | 7 +++++++
drivers/net/ethernet/mellanox/mlx4/en_main.c | 7 -------
drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 7 +++++++
3 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_clock.c b/drivers/net/ethernet/mellanox/mlx4/en_clock.c
index 8a083d7..038f9ce 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_clock.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_clock.c
@@ -242,6 +242,13 @@ void mlx4_en_init_timestamp(struct mlx4_en_dev *mdev)
unsigned long flags;
u64 ns, zero = 0;
+ /* mlx4_en_init_timestamp is called for each netdev.
+ * mdev->ptp_clock is common for all ports, skip initialization if
+ * was done for other port.
+ */
+ if (mdev->ptp_clock)
+ return;
+
rwlock_init(&mdev->clock_lock);
memset(&mdev->cycles, 0, sizeof(mdev->cycles));
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_main.c b/drivers/net/ethernet/mellanox/mlx4/en_main.c
index 005f910..e0ec280 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_main.c
@@ -232,9 +232,6 @@ static void mlx4_en_remove(struct mlx4_dev *dev, void *endev_ptr)
if (mdev->pndev[i])
mlx4_en_destroy_netdev(mdev->pndev[i]);
- if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS)
- mlx4_en_remove_timestamp(mdev);
-
flush_workqueue(mdev->workqueue);
destroy_workqueue(mdev->workqueue);
(void) mlx4_mr_free(dev, &mdev->mr);
@@ -320,10 +317,6 @@ static void *mlx4_en_add(struct mlx4_dev *dev)
mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_ETH)
mdev->port_cnt++;
- /* Initialize time stamp mechanism */
- if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS)
- mlx4_en_init_timestamp(mdev);
-
/* Set default number of RX rings*/
mlx4_en_set_num_rx_rings(mdev);
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
index 4eef316..7869f97 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
@@ -2072,6 +2072,9 @@ void mlx4_en_destroy_netdev(struct net_device *dev)
/* flush any pending task for this netdev */
flush_workqueue(mdev->workqueue);
+ if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS)
+ mlx4_en_remove_timestamp(mdev);
+
/* Detach the netdev so tasks would not attempt to access it */
mutex_lock(&mdev->state_lock);
mdev->pndev[priv->port] = NULL;
@@ -3058,6 +3061,10 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
}
queue_delayed_work(mdev->workqueue, &priv->stats_task, STATS_DELAY);
+ /* Initialize time stamp mechanism */
+ if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS)
+ mlx4_en_init_timestamp(mdev);
+
queue_delayed_work(mdev->workqueue, &priv->service_task,
SERVICE_TASK_DELAY);
--
2.3.7
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH net 0/2] Mellanox mlx4 driver fixes
2015-12-17 13:35 ` [PATCH net 0/2] Mellanox mlx4 driver fixes Or Gerlitz
2015-12-17 13:35 ` [PATCH net 1/2] net/mlx4_en: Remove dependency between timestamping capability and service_task Or Gerlitz
2015-12-17 13:35 ` [PATCH net 2/2] net/mlx4_en: Fix HW timestamp init issue upon system startup Or Gerlitz
@ 2015-12-18 19:48 ` David Miller
2 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2015-12-18 19:48 UTC (permalink / raw)
To: ogerlitz; +Cc: netdev
From: Or Gerlitz <ogerlitz@mellanox.com>
Date: Thu, 17 Dec 2015 15:35:36 +0200
> Two small fixes from Jenny for code flows that deal with time-stamping.
Series applied, thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-12-18 19:48 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <a>
2015-12-17 13:35 ` [PATCH net 0/2] Mellanox mlx4 driver fixes Or Gerlitz
2015-12-17 13:35 ` [PATCH net 1/2] net/mlx4_en: Remove dependency between timestamping capability and service_task Or Gerlitz
2015-12-17 13:35 ` [PATCH net 2/2] net/mlx4_en: Fix HW timestamp init issue upon system startup Or Gerlitz
2015-12-18 19:48 ` [PATCH net 0/2] Mellanox mlx4 driver fixes 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).