All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net 0/4] mlx4 driver fixes for 4.0-rc
@ 2015-03-18 14:24 Or Gerlitz
  2015-03-18 14:24 ` [PATCH net 1/4] IB/mlx4: Verify net device validity on port change event Or Gerlitz
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Or Gerlitz @ 2015-03-18 14:24 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev, Amir Vadai, Tal Alon, Hadar Har-Zion, Or Gerlitz

Hi Dave, 

Just few small fixes for the 4.0 rc cycle.

The fix from Moni addresses an issue from 4.0-rc1 so we
just need it for net.

Eran's fix for off-by-one should go to 3.19.y too.

Or.

Eran Ben Elisha (2):
  net/mlx4_en: Fix off-by-one in ethtool statistics display
  net/mlx4_en: Set statistics bitmap at port init

Majd Dibbiny (1):
  IB/mlx4: Saturate RoCE port PMA counters in case of overflow

Moni Shoua (1):
  IB/mlx4: Verify net device validity on port change event

 drivers/infiniband/hw/mlx4/mad.c               |   23 +++++++++++++++++++----
 drivers/infiniband/hw/mlx4/main.c              |    6 +++++-
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c |    4 ++--
 drivers/net/ethernet/mellanox/mlx4/mlx4_en.h   |    2 +-
 4 files changed, 27 insertions(+), 8 deletions(-)

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH net 1/4] IB/mlx4: Verify net device validity on port change event
  2015-03-18 14:24 [PATCH net 0/4] mlx4 driver fixes for 4.0-rc Or Gerlitz
@ 2015-03-18 14:24 ` Or Gerlitz
  2015-03-18 14:24 ` [PATCH net 2/4] net/mlx4_en: Fix off-by-one in ethtool statistics display Or Gerlitz
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Or Gerlitz @ 2015-03-18 14:24 UTC (permalink / raw)
  To: David S. Miller
  Cc: netdev, Amir Vadai, Tal Alon, Hadar Har-Zion, Moni Shoua, Or Gerlitz

From: Moni Shoua <monis@mellanox.com>

Processing an event is done in a different context from the one when
the event was dispatched. This requires a check that the slave
net device is still valid when the event is being processed. The check is done
under the iboe lock which ensure correctness.

Fixes: a57500903093 ('IB/mlx4: Add port aggregation support')
Signed-off-by: Moni Shoua <monis@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
---
 drivers/infiniband/hw/mlx4/main.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
index ac6e2b7..b972c0b 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -2697,8 +2697,12 @@ static void handle_bonded_port_state_event(struct work_struct *work)
 	spin_lock_bh(&ibdev->iboe.lock);
 	for (i = 0; i < MLX4_MAX_PORTS; ++i) {
 		struct net_device *curr_netdev = ibdev->iboe.netdevs[i];
+		enum ib_port_state curr_port_state;
 
-		enum ib_port_state curr_port_state =
+		if (!curr_netdev)
+			continue;
+
+		curr_port_state =
 			(netif_running(curr_netdev) &&
 			 netif_carrier_ok(curr_netdev)) ?
 			IB_PORT_ACTIVE : IB_PORT_DOWN;
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net 2/4] net/mlx4_en: Fix off-by-one in ethtool statistics display
  2015-03-18 14:24 [PATCH net 0/4] mlx4 driver fixes for 4.0-rc Or Gerlitz
  2015-03-18 14:24 ` [PATCH net 1/4] IB/mlx4: Verify net device validity on port change event Or Gerlitz
@ 2015-03-18 14:24 ` Or Gerlitz
  2015-03-18 14:24 ` [PATCH net 3/4] IB/mlx4: Saturate RoCE port PMA counters in case of overflow Or Gerlitz
  2015-03-18 14:24 ` [PATCH net 4/4] net/mlx4_en: Set statistics bitmap at port init Or Gerlitz
  3 siblings, 0 replies; 7+ messages in thread
From: Or Gerlitz @ 2015-03-18 14:24 UTC (permalink / raw)
  To: David S. Miller
  Cc: netdev, Amir Vadai, Tal Alon, Hadar Har-Zion, Eran Ben Elisha,
	Or Gerlitz

From: Eran Ben Elisha <eranbe@mellanox.com>

NUM_PORT_STATS was 9 instead of 10, which caused off-by-one bug when
displaying the statistics starting from tx_chksum_offload in ethtool.

Fixes: f8c6455bb04b ('net/mlx4_en: Extend checksum offloading by CHECKSUM COMPLETE')
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
---
 drivers/net/ethernet/mellanox/mlx4/mlx4_en.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
index 2a8268e..ebbe244 100644
--- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
@@ -453,7 +453,7 @@ struct mlx4_en_port_stats {
 	unsigned long rx_chksum_none;
 	unsigned long rx_chksum_complete;
 	unsigned long tx_chksum_offload;
-#define NUM_PORT_STATS		9
+#define NUM_PORT_STATS		10
 };
 
 struct mlx4_en_perf_stats {
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net 3/4] IB/mlx4: Saturate RoCE port PMA counters in case of overflow
  2015-03-18 14:24 [PATCH net 0/4] mlx4 driver fixes for 4.0-rc Or Gerlitz
  2015-03-18 14:24 ` [PATCH net 1/4] IB/mlx4: Verify net device validity on port change event Or Gerlitz
  2015-03-18 14:24 ` [PATCH net 2/4] net/mlx4_en: Fix off-by-one in ethtool statistics display Or Gerlitz
@ 2015-03-18 14:24 ` Or Gerlitz
  2015-03-18 14:36   ` Sergei Shtylyov
  2015-03-18 14:24 ` [PATCH net 4/4] net/mlx4_en: Set statistics bitmap at port init Or Gerlitz
  3 siblings, 1 reply; 7+ messages in thread
From: Or Gerlitz @ 2015-03-18 14:24 UTC (permalink / raw)
  To: David S. Miller
  Cc: netdev, Amir Vadai, Tal Alon, Hadar Har-Zion, Majd Dibbiny,
	Eran Ben Elisha, Or Gerlitz

From: Majd Dibbiny <majd@mellanox.com>

For RoCE ports, we set the u32 PMA values based on u64 HCA counters. In case of
overflow, according to the IB spec, we have to saturate a counter to its
max value, do that.

Fixes: c37791349cc7 ('IB/mlx4: Support PMA counters for IBoE')
Signed-off-by: Majd Dibbiny <majd@mellanox.com>
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
---
 drivers/infiniband/hw/mlx4/mad.c |   23 +++++++++++++++++++----
 1 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c
index c761971..40850f1 100644
--- a/drivers/infiniband/hw/mlx4/mad.c
+++ b/drivers/infiniband/hw/mlx4/mad.c
@@ -64,6 +64,17 @@ enum {
 #define GUID_TBL_BLK_NUM_ENTRIES 8
 #define GUID_TBL_BLK_SIZE (GUID_TBL_ENTRY_SIZE * GUID_TBL_BLK_NUM_ENTRIES)
 
+#define MAX_BE32 0xffffffffULL
+#define MAX_BE16 0xffffUL
+
+/* Counters should be saturate once they reach their maximum value */
+#define ASSIGN_32BIT_COUNTER(counter, value) do {\
+	if ((value) > MAX_BE32)			 \
+		counter = cpu_to_be32(MAX_BE32); \
+	else					 \
+		counter = cpu_to_be32(value);	 \
+} while (0)
+
 struct mlx4_mad_rcv_buf {
 	struct ib_grh grh;
 	u8 payload[256];
@@ -806,10 +817,14 @@ static int ib_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num,
 static void edit_counter(struct mlx4_counter *cnt,
 					struct ib_pma_portcounters *pma_cnt)
 {
-	pma_cnt->port_xmit_data = cpu_to_be32((be64_to_cpu(cnt->tx_bytes)>>2));
-	pma_cnt->port_rcv_data  = cpu_to_be32((be64_to_cpu(cnt->rx_bytes)>>2));
-	pma_cnt->port_xmit_packets = cpu_to_be32(be64_to_cpu(cnt->tx_frames));
-	pma_cnt->port_rcv_packets  = cpu_to_be32(be64_to_cpu(cnt->rx_frames));
+	ASSIGN_32BIT_COUNTER(pma_cnt->port_xmit_data,
+			     (be64_to_cpu(cnt->tx_bytes) >> 2));
+	ASSIGN_32BIT_COUNTER(pma_cnt->port_rcv_data,
+			     (be64_to_cpu(cnt->rx_bytes) >> 2));
+	ASSIGN_32BIT_COUNTER(pma_cnt->port_xmit_packets,
+			     be64_to_cpu(cnt->tx_frames));
+	ASSIGN_32BIT_COUNTER(pma_cnt->port_rcv_packets,
+			     be64_to_cpu(cnt->rx_frames));
 }
 
 static int iboe_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num,
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net 4/4] net/mlx4_en: Set statistics bitmap at port init
  2015-03-18 14:24 [PATCH net 0/4] mlx4 driver fixes for 4.0-rc Or Gerlitz
                   ` (2 preceding siblings ...)
  2015-03-18 14:24 ` [PATCH net 3/4] IB/mlx4: Saturate RoCE port PMA counters in case of overflow Or Gerlitz
@ 2015-03-18 14:24 ` Or Gerlitz
  3 siblings, 0 replies; 7+ messages in thread
From: Or Gerlitz @ 2015-03-18 14:24 UTC (permalink / raw)
  To: David S. Miller
  Cc: netdev, Amir Vadai, Tal Alon, Hadar Har-Zion, Eran Ben Elisha,
	Or Gerlitz

From: Eran Ben Elisha <eranbe@mellanox.com>

Port statistics bitmap will now be initialized at port init.  Even before
starting the port, statistics are visible to the user and must be properly masked.

Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
---
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
index 2a210c4..ebce5bb 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
@@ -1698,8 +1698,6 @@ int mlx4_en_start_port(struct net_device *dev)
 	/* Schedule multicast task to populate multicast list */
 	queue_work(mdev->workqueue, &priv->rx_mode_task);
 
-	mlx4_set_stats_bitmap(mdev->dev, &priv->stats_bitmap);
-
 #ifdef CONFIG_MLX4_EN_VXLAN
 	if (priv->mdev->dev->caps.tunnel_offload_mode == MLX4_TUNNEL_OFFLOAD_MODE_VXLAN)
 		vxlan_get_rx_port(dev);
@@ -2853,6 +2851,8 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
 		queue_delayed_work(mdev->workqueue, &priv->service_task,
 				   SERVICE_TASK_DELAY);
 
+	mlx4_set_stats_bitmap(mdev->dev, &priv->stats_bitmap);
+
 	return 0;
 
 out:
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH net 3/4] IB/mlx4: Saturate RoCE port PMA counters in case of overflow
  2015-03-18 14:24 ` [PATCH net 3/4] IB/mlx4: Saturate RoCE port PMA counters in case of overflow Or Gerlitz
@ 2015-03-18 14:36   ` Sergei Shtylyov
  2015-03-18 14:44     ` Or Gerlitz
  0 siblings, 1 reply; 7+ messages in thread
From: Sergei Shtylyov @ 2015-03-18 14:36 UTC (permalink / raw)
  To: Or Gerlitz, David S. Miller
  Cc: netdev, Amir Vadai, Tal Alon, Hadar Har-Zion, Majd Dibbiny,
	Eran Ben Elisha

Hello.

On 3/18/2015 5:24 PM, Or Gerlitz wrote:

> From: Majd Dibbiny <majd@mellanox.com>

> For RoCE ports, we set the u32 PMA values based on u64 HCA counters. In case of
> overflow, according to the IB spec, we have to saturate a counter to its
> max value, do that.

> Fixes: c37791349cc7 ('IB/mlx4: Support PMA counters for IBoE')
> Signed-off-by: Majd Dibbiny <majd@mellanox.com>
> Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
> Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com>
> Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
> ---
>   drivers/infiniband/hw/mlx4/mad.c |   23 +++++++++++++++++++----
>   1 files changed, 19 insertions(+), 4 deletions(-)

> diff --git a/drivers/infiniband/hw/mlx4/mad.c b/drivers/infiniband/hw/mlx4/mad.c
> index c761971..40850f1 100644
> --- a/drivers/infiniband/hw/mlx4/mad.c
> +++ b/drivers/infiniband/hw/mlx4/mad.c
> @@ -64,6 +64,17 @@ enum {
>   #define GUID_TBL_BLK_NUM_ENTRIES 8
>   #define GUID_TBL_BLK_SIZE (GUID_TBL_ENTRY_SIZE * GUID_TBL_BLK_NUM_ENTRIES)
>
> +#define MAX_BE32 0xffffffffULL
> +#define MAX_BE16 0xffffUL

    Aren't U{16|32}_MAX from <linux/kernel.h> good enough?
    And I'm not seeing wheer MAX_BE16 is used...

[...]

WBR, Sergei

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH net 3/4] IB/mlx4: Saturate RoCE port PMA counters in case of overflow
  2015-03-18 14:36   ` Sergei Shtylyov
@ 2015-03-18 14:44     ` Or Gerlitz
  0 siblings, 0 replies; 7+ messages in thread
From: Or Gerlitz @ 2015-03-18 14:44 UTC (permalink / raw)
  To: Sergei Shtylyov, David S. Miller
  Cc: netdev, Amir Vadai, Tal Alon, Hadar Har-Zion, Majd Dibbiny,
	Eran Ben Elisha

On 3/18/2015 4:36 PM, Sergei Shtylyov wrote:
>> diff --git a/drivers/infiniband/hw/mlx4/mad.c 
>> b/drivers/infiniband/hw/mlx4/mad.c
>> index c761971..40850f1 100644
>> --- a/drivers/infiniband/hw/mlx4/mad.c
>> +++ b/drivers/infiniband/hw/mlx4/mad.c
>> @@ -64,6 +64,17 @@ enum {
>>   #define GUID_TBL_BLK_NUM_ENTRIES 8
>>   #define GUID_TBL_BLK_SIZE (GUID_TBL_ENTRY_SIZE * 
>> GUID_TBL_BLK_NUM_ENTRIES)
>>
>> +#define MAX_BE32 0xffffffffULL
>> +#define MAX_BE16 0xffffUL
>
>    Aren't U{16|32}_MAX from <linux/kernel.h> good enough?
>    And I'm not seeing wheer MAX_BE16 is used...
>
> [...] 

sure, I will roll now quick fix for both issues...thanks

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-03-18 14:44 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-18 14:24 [PATCH net 0/4] mlx4 driver fixes for 4.0-rc Or Gerlitz
2015-03-18 14:24 ` [PATCH net 1/4] IB/mlx4: Verify net device validity on port change event Or Gerlitz
2015-03-18 14:24 ` [PATCH net 2/4] net/mlx4_en: Fix off-by-one in ethtool statistics display Or Gerlitz
2015-03-18 14:24 ` [PATCH net 3/4] IB/mlx4: Saturate RoCE port PMA counters in case of overflow Or Gerlitz
2015-03-18 14:36   ` Sergei Shtylyov
2015-03-18 14:44     ` Or Gerlitz
2015-03-18 14:24 ` [PATCH net 4/4] net/mlx4_en: Set statistics bitmap at port init Or Gerlitz

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.