aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/core/cma.c6
-rw-r--r--drivers/infiniband/hw/nes/nes.c5
-rw-r--r--drivers/infiniband/hw/nes/nes.h3
-rw-r--r--drivers/infiniband/hw/nes/nes_verbs.c16
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib.h4
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_cm.c31
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_main.c31
7 files changed, 41 insertions, 55 deletions
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 26b37603dcf1..1983adc19243 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -2648,8 +2648,8 @@ static int cma_connect_ib(struct rdma_id_private *id_priv,
2648 req.responder_resources = conn_param->responder_resources; 2648 req.responder_resources = conn_param->responder_resources;
2649 req.initiator_depth = conn_param->initiator_depth; 2649 req.initiator_depth = conn_param->initiator_depth;
2650 req.flow_control = conn_param->flow_control; 2650 req.flow_control = conn_param->flow_control;
2651 req.retry_count = conn_param->retry_count; 2651 req.retry_count = min_t(u8, 7, conn_param->retry_count);
2652 req.rnr_retry_count = conn_param->rnr_retry_count; 2652 req.rnr_retry_count = min_t(u8, 7, conn_param->rnr_retry_count);
2653 req.remote_cm_response_timeout = CMA_CM_RESPONSE_TIMEOUT; 2653 req.remote_cm_response_timeout = CMA_CM_RESPONSE_TIMEOUT;
2654 req.local_cm_response_timeout = CMA_CM_RESPONSE_TIMEOUT; 2654 req.local_cm_response_timeout = CMA_CM_RESPONSE_TIMEOUT;
2655 req.max_cm_retries = CMA_MAX_CM_RETRIES; 2655 req.max_cm_retries = CMA_MAX_CM_RETRIES;
@@ -2770,7 +2770,7 @@ static int cma_accept_ib(struct rdma_id_private *id_priv,
2770 rep.initiator_depth = conn_param->initiator_depth; 2770 rep.initiator_depth = conn_param->initiator_depth;
2771 rep.failover_accepted = 0; 2771 rep.failover_accepted = 0;
2772 rep.flow_control = conn_param->flow_control; 2772 rep.flow_control = conn_param->flow_control;
2773 rep.rnr_retry_count = conn_param->rnr_retry_count; 2773 rep.rnr_retry_count = min_t(u8, 7, conn_param->rnr_retry_count);
2774 rep.srq = id_priv->srq ? 1 : 0; 2774 rep.srq = id_priv->srq ? 1 : 0;
2775 2775
2776 ret = ib_send_cm_rep(id_priv->cm_id.ib, &rep); 2776 ret = ib_send_cm_rep(id_priv->cm_id.ib, &rep);
diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c
index 7140199f562e..748db2d3e465 100644
--- a/drivers/infiniband/hw/nes/nes.c
+++ b/drivers/infiniband/hw/nes/nes.c
@@ -79,11 +79,6 @@ int disable_mpa_crc = 0;
79module_param(disable_mpa_crc, int, 0644); 79module_param(disable_mpa_crc, int, 0644);
80MODULE_PARM_DESC(disable_mpa_crc, "Disable checking of MPA CRC"); 80MODULE_PARM_DESC(disable_mpa_crc, "Disable checking of MPA CRC");
81 81
82unsigned int send_first = 0;
83module_param(send_first, int, 0644);
84MODULE_PARM_DESC(send_first, "Send RDMA Message First on Active Connection");
85
86
87unsigned int nes_drv_opt = NES_DRV_OPT_DISABLE_INT_MOD | NES_DRV_OPT_ENABLE_PAU; 82unsigned int nes_drv_opt = NES_DRV_OPT_DISABLE_INT_MOD | NES_DRV_OPT_ENABLE_PAU;
88module_param(nes_drv_opt, int, 0644); 83module_param(nes_drv_opt, int, 0644);
89MODULE_PARM_DESC(nes_drv_opt, "Driver option parameters"); 84MODULE_PARM_DESC(nes_drv_opt, "Driver option parameters");
diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h
index 0da62b904d00..5cac29e6bc1c 100644
--- a/drivers/infiniband/hw/nes/nes.h
+++ b/drivers/infiniband/hw/nes/nes.h
@@ -57,7 +57,7 @@
57#define QUEUE_DISCONNECTS 57#define QUEUE_DISCONNECTS
58 58
59#define DRV_NAME "iw_nes" 59#define DRV_NAME "iw_nes"
60#define DRV_VERSION "1.5.0.0" 60#define DRV_VERSION "1.5.0.1"
61#define PFX DRV_NAME ": " 61#define PFX DRV_NAME ": "
62 62
63/* 63/*
@@ -172,7 +172,6 @@ extern int interrupt_mod_interval;
172extern int nes_if_count; 172extern int nes_if_count;
173extern int mpa_version; 173extern int mpa_version;
174extern int disable_mpa_crc; 174extern int disable_mpa_crc;
175extern unsigned int send_first;
176extern unsigned int nes_drv_opt; 175extern unsigned int nes_drv_opt;
177extern unsigned int nes_debug_level; 176extern unsigned int nes_debug_level;
178extern unsigned int wqm_quanta; 177extern unsigned int wqm_quanta;
diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
index 1dadcf388c02..cd0ecb215cca 100644
--- a/drivers/infiniband/hw/nes/nes_verbs.c
+++ b/drivers/infiniband/hw/nes/nes_verbs.c
@@ -3006,6 +3006,7 @@ int nes_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
3006 switch (nesqp->hw_iwarp_state) { 3006 switch (nesqp->hw_iwarp_state) {
3007 case NES_AEQE_IWARP_STATE_CLOSING: 3007 case NES_AEQE_IWARP_STATE_CLOSING:
3008 next_iwarp_state = NES_CQP_QP_IWARP_STATE_CLOSING; 3008 next_iwarp_state = NES_CQP_QP_IWARP_STATE_CLOSING;
3009 break;
3009 case NES_AEQE_IWARP_STATE_TERMINATE: 3010 case NES_AEQE_IWARP_STATE_TERMINATE:
3010 next_iwarp_state = NES_CQP_QP_IWARP_STATE_TERMINATE; 3011 next_iwarp_state = NES_CQP_QP_IWARP_STATE_TERMINATE;
3011 break; 3012 break;
@@ -3068,18 +3069,9 @@ int nes_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
3068 } 3069 }
3069 3070
3070 nesqp->ibqp_state = attr->qp_state; 3071 nesqp->ibqp_state = attr->qp_state;
3071 if (((nesqp->iwarp_state & NES_CQP_QP_IWARP_STATE_MASK) == 3072 nesqp->iwarp_state = next_iwarp_state & NES_CQP_QP_IWARP_STATE_MASK;
3072 (u32)NES_CQP_QP_IWARP_STATE_RTS) && 3073 nes_debug(NES_DBG_MOD_QP, "Change nesqp->iwarp_state=%08x\n",
3073 ((next_iwarp_state & NES_CQP_QP_IWARP_STATE_MASK) > 3074 nesqp->iwarp_state);
3074 (u32)NES_CQP_QP_IWARP_STATE_RTS)) {
3075 nesqp->iwarp_state = next_iwarp_state & NES_CQP_QP_IWARP_STATE_MASK;
3076 nes_debug(NES_DBG_MOD_QP, "Change nesqp->iwarp_state=%08x\n",
3077 nesqp->iwarp_state);
3078 } else {
3079 nesqp->iwarp_state = next_iwarp_state & NES_CQP_QP_IWARP_STATE_MASK;
3080 nes_debug(NES_DBG_MOD_QP, "Change nesqp->iwarp_state=%08x\n",
3081 nesqp->iwarp_state);
3082 }
3083 } 3075 }
3084 3076
3085 if (attr_mask & IB_QP_ACCESS_FLAGS) { 3077 if (attr_mask & IB_QP_ACCESS_FLAGS) {
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
index 196eb52f0035..07ca6fd5546b 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib.h
+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
@@ -535,14 +535,14 @@ void ipoib_drain_cq(struct net_device *dev);
535void ipoib_set_ethtool_ops(struct net_device *dev); 535void ipoib_set_ethtool_ops(struct net_device *dev);
536int ipoib_set_dev_features(struct ipoib_dev_priv *priv, struct ib_device *hca); 536int ipoib_set_dev_features(struct ipoib_dev_priv *priv, struct ib_device *hca);
537 537
538#ifdef CONFIG_INFINIBAND_IPOIB_CM
539
540#define IPOIB_FLAGS_RC 0x80 538#define IPOIB_FLAGS_RC 0x80
541#define IPOIB_FLAGS_UC 0x40 539#define IPOIB_FLAGS_UC 0x40
542 540
543/* We don't support UC connections at the moment */ 541/* We don't support UC connections at the moment */
544#define IPOIB_CM_SUPPORTED(ha) (ha[0] & (IPOIB_FLAGS_RC)) 542#define IPOIB_CM_SUPPORTED(ha) (ha[0] & (IPOIB_FLAGS_RC))
545 543
544#ifdef CONFIG_INFINIBAND_IPOIB_CM
545
546extern int ipoib_max_conn_qp; 546extern int ipoib_max_conn_qp;
547 547
548static inline int ipoib_cm_admin_enabled(struct net_device *dev) 548static inline int ipoib_cm_admin_enabled(struct net_device *dev)
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index 175581cf478c..72ae63f0072d 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -1448,37 +1448,6 @@ static ssize_t show_mode(struct device *d, struct device_attribute *attr,
1448 return sprintf(buf, "datagram\n"); 1448 return sprintf(buf, "datagram\n");
1449} 1449}
1450 1450
1451int ipoib_set_mode(struct net_device *dev, const char *buf)
1452{
1453 struct ipoib_dev_priv *priv = netdev_priv(dev);
1454
1455 /* flush paths if we switch modes so that connections are restarted */
1456 if (IPOIB_CM_SUPPORTED(dev->dev_addr) && !strcmp(buf, "connected\n")) {
1457 set_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);
1458 ipoib_warn(priv, "enabling connected mode "
1459 "will cause multicast packet drops\n");
1460 netdev_update_features(dev);
1461 rtnl_unlock();
1462 priv->tx_wr.send_flags &= ~IB_SEND_IP_CSUM;
1463
1464 ipoib_flush_paths(dev);
1465 rtnl_lock();
1466 return 0;
1467 }
1468
1469 if (!strcmp(buf, "datagram\n")) {
1470 clear_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);
1471 netdev_update_features(dev);
1472 dev_set_mtu(dev, min(priv->mcast_mtu, dev->mtu));
1473 rtnl_unlock();
1474 ipoib_flush_paths(dev);
1475 rtnl_lock();
1476 return 0;
1477 }
1478
1479 return -EINVAL;
1480}
1481
1482static ssize_t set_mode(struct device *d, struct device_attribute *attr, 1451static ssize_t set_mode(struct device *d, struct device_attribute *attr,
1483 const char *buf, size_t count) 1452 const char *buf, size_t count)
1484{ 1453{
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index d576c7aad89d..6fdc9e78da0d 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -215,6 +215,37 @@ static int ipoib_change_mtu(struct net_device *dev, int new_mtu)
215 return 0; 215 return 0;
216} 216}
217 217
218int ipoib_set_mode(struct net_device *dev, const char *buf)
219{
220 struct ipoib_dev_priv *priv = netdev_priv(dev);
221
222 /* flush paths if we switch modes so that connections are restarted */
223 if (IPOIB_CM_SUPPORTED(dev->dev_addr) && !strcmp(buf, "connected\n")) {
224 set_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);
225 ipoib_warn(priv, "enabling connected mode "
226 "will cause multicast packet drops\n");
227 netdev_update_features(dev);
228 rtnl_unlock();
229 priv->tx_wr.send_flags &= ~IB_SEND_IP_CSUM;
230
231 ipoib_flush_paths(dev);
232 rtnl_lock();
233 return 0;
234 }
235
236 if (!strcmp(buf, "datagram\n")) {
237 clear_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);
238 netdev_update_features(dev);
239 dev_set_mtu(dev, min(priv->mcast_mtu, dev->mtu));
240 rtnl_unlock();
241 ipoib_flush_paths(dev);
242 rtnl_lock();
243 return 0;
244 }
245
246 return -EINVAL;
247}
248
218static struct ipoib_path *__path_find(struct net_device *dev, void *gid) 249static struct ipoib_path *__path_find(struct net_device *dev, void *gid)
219{ 250{
220 struct ipoib_dev_priv *priv = netdev_priv(dev); 251 struct ipoib_dev_priv *priv = netdev_priv(dev);