From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Thu, 23 Feb 2017 19:27:49 +0000 (-0800)
Subject: Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=af17fe7a63db7e11d65f1296f0cbf156a89a2735;p=linux.git

Merge tag 'for-linus' of git://git./linux/kernel/git/dledford/rdma

Pull Mellanox rdma updates from Doug Ledford:
 "Mellanox specific updates for 4.11 merge window

  Because the Mellanox code required being based on a net-next tree, I
  keept it separate from the remainder of the RDMA stack submission that
  is based on 4.10-rc3.

  This branch contains:

   - Various mlx4 and mlx5 fixes and minor changes

   - Support for adding a tag match rule to flow specs

   - Support for cvlan offload operation for raw ethernet QPs

   - A change to the core IB code to recognize raw eth capabilities and
     enumerate them (touches non-Mellanox code)

   - Implicit On-Demand Paging memory registration support"

* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma: (40 commits)
  IB/mlx5: Fix configuration of port capabilities
  IB/mlx4: Take source GID by index from HW GID table
  IB/mlx5: Fix blue flame buffer size calculation
  IB/mlx4: Remove unused variable from function declaration
  IB: Query ports via the core instead of direct into the driver
  IB: Add protocol for USNIC
  IB/mlx4: Support raw packet protocol
  IB/mlx5: Support raw packet protocol
  IB/core: Add raw packet protocol
  IB/mlx5: Add implicit MR support
  IB/mlx5: Expose MR cache for mlx5_ib
  IB/mlx5: Add null_mkey access
  IB/umem: Indicate that process is being terminated
  IB/umem: Update on demand page (ODP) support
  IB/core: Add implicit MR flag
  IB/mlx5: Support creation of a WQ with scatter FCS offload
  IB/mlx5: Enable QP creation with cvlan offload
  IB/mlx5: Enable WQ creation and modification with cvlan offload
  IB/mlx5: Expose vlan offloads capabilities
  IB/uverbs: Enable QP creation with cvlan offload
  ...
---

af17fe7a63db7e11d65f1296f0cbf156a89a2735
diff --cc drivers/infiniband/hw/cxgb3/iwch_provider.c
index 6262dc035f3ce,9e39252a570a3..48649f93258a4
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
@@@ -1133,9 -1133,18 +1133,9 @@@ static int iwch_query_port(struct ib_de
  	dev = to_iwch_dev(ibdev);
  	netdev = dev->rdev.port_info.lldevs[port-1];
  
- 	memset(props, 0, sizeof(struct ib_port_attr));
+ 	/* props being zeroed by the caller, avoid zeroing it here */
  	props->max_mtu = IB_MTU_4096;
 -	if (netdev->mtu >= 4096)
 -		props->active_mtu = IB_MTU_4096;
 -	else if (netdev->mtu >= 2048)
 -		props->active_mtu = IB_MTU_2048;
 -	else if (netdev->mtu >= 1024)
 -		props->active_mtu = IB_MTU_1024;
 -	else if (netdev->mtu >= 512)
 -		props->active_mtu = IB_MTU_512;
 -	else
 -		props->active_mtu = IB_MTU_256;
 +	props->active_mtu = ib_mtu_int_to_enum(netdev->mtu);
  
  	if (!netif_carrier_ok(netdev))
  		props->state = IB_PORT_DOWN;
diff --cc drivers/infiniband/hw/cxgb4/provider.c
index 3345e1c312f77,5b00b50a484fa..bdf7de571d838
--- a/drivers/infiniband/hw/cxgb4/provider.c
+++ b/drivers/infiniband/hw/cxgb4/provider.c
@@@ -370,10 -358,18 +370,9 @@@ static int c4iw_query_port(struct ib_de
  
  	dev = to_c4iw_dev(ibdev);
  	netdev = dev->rdev.lldi.ports[port-1];
- 
- 	memset(props, 0, sizeof(struct ib_port_attr));
+ 	/* props being zeroed by the caller, avoid zeroing it here */
  	props->max_mtu = IB_MTU_4096;
 -	if (netdev->mtu >= 4096)
 -		props->active_mtu = IB_MTU_4096;
 -	else if (netdev->mtu >= 2048)
 -		props->active_mtu = IB_MTU_2048;
 -	else if (netdev->mtu >= 1024)
 -		props->active_mtu = IB_MTU_1024;
 -	else if (netdev->mtu >= 512)
 -		props->active_mtu = IB_MTU_512;
 -	else
 -		props->active_mtu = IB_MTU_256;
 +	props->active_mtu = ib_mtu_int_to_enum(netdev->mtu);
  
  	if (!netif_carrier_ok(netdev))
  		props->state = IB_PORT_DOWN;
diff --cc drivers/infiniband/hw/i40iw/i40iw_verbs.c
index 4c000d60d5c6f,3e830486417b0..5f695bf232a8f
--- a/drivers/infiniband/hw/i40iw/i40iw_verbs.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
@@@ -97,10 -97,18 +97,9 @@@ static int i40iw_query_port(struct ib_d
  	struct i40iw_device *iwdev = to_iwdev(ibdev);
  	struct net_device *netdev = iwdev->netdev;
  
- 	memset(props, 0, sizeof(*props));
- 
+ 	/* props being zeroed by the caller, avoid zeroing it here */
  	props->max_mtu = IB_MTU_4096;
 -	if (netdev->mtu >= 4096)
 -		props->active_mtu = IB_MTU_4096;
 -	else if (netdev->mtu >= 2048)
 -		props->active_mtu = IB_MTU_2048;
 -	else if (netdev->mtu >= 1024)
 -		props->active_mtu = IB_MTU_1024;
 -	else if (netdev->mtu >= 512)
 -		props->active_mtu = IB_MTU_512;
 -	else
 -		props->active_mtu = IB_MTU_256;
 +	props->active_mtu = ib_mtu_int_to_enum(netdev->mtu);
  
  	props->lid = 1;
  	if (netif_carrier_ok(iwdev->netdev))
diff --cc drivers/infiniband/hw/nes/nes_verbs.c
index 5a31f3c6a4211,b7179f4ac3a63..d3eae2f3e9f50
--- a/drivers/infiniband/hw/nes/nes_verbs.c
+++ b/drivers/infiniband/hw/nes/nes_verbs.c
@@@ -475,10 -475,20 +475,10 @@@ static int nes_query_port(struct ib_dev
  	struct nes_vnic *nesvnic = to_nesvnic(ibdev);
  	struct net_device *netdev = nesvnic->netdev;
  
- 	memset(props, 0, sizeof(*props));
+ 	/* props being zeroed by the caller, avoid zeroing it here */
  
  	props->max_mtu = IB_MTU_4096;
 -
 -	if (netdev->mtu  >= 4096)
 -		props->active_mtu = IB_MTU_4096;
 -	else if (netdev->mtu  >= 2048)
 -		props->active_mtu = IB_MTU_2048;
 -	else if (netdev->mtu  >= 1024)
 -		props->active_mtu = IB_MTU_1024;
 -	else if (netdev->mtu  >= 512)
 -		props->active_mtu = IB_MTU_512;
 -	else
 -		props->active_mtu = IB_MTU_256;
 +	props->active_mtu = ib_mtu_int_to_enum(netdev->mtu);
  
  	props->lid = 1;
  	props->lmc = 0;