Skip to content

Commit cf50463

Browse files
committed
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: mlx4_core: Don't double-free IRQs when falling back from MSI-X to INTx IB/mthca: Don't double-free IRQs when falling back from MSI-X to INTx IB/mlx4: Add strong ordering to local inval and fast reg work requests IB/ehca: Remove superfluous bitmasks from QP control block RDMA/cxgb3: Limit fast register size based on T3 limitations RDMA/cxgb3: Report correct port state and MTU mlx4_core: Add module parameter for number of MTTs per segment IB/mthca: Add module parameter for number of MTTs per segment RDMA/nes: Fix off-by-one bugs in reset_adapter_ne020() and init_serdes() infiniband: Remove void casts IB/ehca: Increment version number IB/ehca: Remove unnecessary memory operations for userspace queue pairs IB/ehca: Fall back to vmalloc() for big allocations IB/ehca: Replace vmalloc() with kmalloc() for queue allocation
2 parents ae937de + 8d34ff3 commit cf50463

File tree

26 files changed

+183
-136
lines changed

26 files changed

+183
-136
lines changed

drivers/infiniband/hw/amso1100/c2_cq.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ static inline int c2_poll_one(struct c2_dev *c2dev,
133133
struct c2_qp *qp;
134134
int is_recv = 0;
135135

136-
ce = (struct c2wr_ce *) c2_mq_consume(&cq->mq);
136+
ce = c2_mq_consume(&cq->mq);
137137
if (!ce) {
138138
return -EAGAIN;
139139
}
@@ -146,7 +146,7 @@ static inline int c2_poll_one(struct c2_dev *c2dev,
146146
while ((qp =
147147
(struct c2_qp *) (unsigned long) ce->qp_user_context) == NULL) {
148148
c2_mq_free(&cq->mq);
149-
ce = (struct c2wr_ce *) c2_mq_consume(&cq->mq);
149+
ce = c2_mq_consume(&cq->mq);
150150
if (!ce)
151151
return -EAGAIN;
152152
}

drivers/infiniband/hw/cxgb3/cxio_wr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ struct t3_send_wr {
176176
struct t3_sge sgl[T3_MAX_SGE]; /* 4+ */
177177
};
178178

179-
#define T3_MAX_FASTREG_DEPTH 24
179+
#define T3_MAX_FASTREG_DEPTH 10
180180
#define T3_MAX_FASTREG_FRAG 10
181181

182182
struct t3_fastreg_wr {

drivers/infiniband/hw/cxgb3/iwch_provider.c

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
#include <linux/spinlock.h>
4141
#include <linux/ethtool.h>
4242
#include <linux/rtnetlink.h>
43+
#include <linux/inetdevice.h>
4344

4445
#include <asm/io.h>
4546
#include <asm/irq.h>
@@ -1152,12 +1153,39 @@ static int iwch_query_device(struct ib_device *ibdev,
11521153
static int iwch_query_port(struct ib_device *ibdev,
11531154
u8 port, struct ib_port_attr *props)
11541155
{
1156+
struct iwch_dev *dev;
1157+
struct net_device *netdev;
1158+
struct in_device *inetdev;
1159+
11551160
PDBG("%s ibdev %p\n", __func__, ibdev);
11561161

1162+
dev = to_iwch_dev(ibdev);
1163+
netdev = dev->rdev.port_info.lldevs[port-1];
1164+
11571165
memset(props, 0, sizeof(struct ib_port_attr));
11581166
props->max_mtu = IB_MTU_4096;
1159-
props->active_mtu = IB_MTU_2048;
1160-
props->state = IB_PORT_ACTIVE;
1167+
if (netdev->mtu >= 4096)
1168+
props->active_mtu = IB_MTU_4096;
1169+
else if (netdev->mtu >= 2048)
1170+
props->active_mtu = IB_MTU_2048;
1171+
else if (netdev->mtu >= 1024)
1172+
props->active_mtu = IB_MTU_1024;
1173+
else if (netdev->mtu >= 512)
1174+
props->active_mtu = IB_MTU_512;
1175+
else
1176+
props->active_mtu = IB_MTU_256;
1177+
1178+
if (!netif_carrier_ok(netdev))
1179+
props->state = IB_PORT_DOWN;
1180+
else {
1181+
inetdev = in_dev_get(netdev);
1182+
if (inetdev->ifa_list)
1183+
props->state = IB_PORT_ACTIVE;
1184+
else
1185+
props->state = IB_PORT_INIT;
1186+
in_dev_put(inetdev);
1187+
}
1188+
11611189
props->port_cap_flags =
11621190
IB_PORT_CM_SUP |
11631191
IB_PORT_SNMP_TUNNEL_SUP |

drivers/infiniband/hw/ehca/ehca_classes_pSeries.h

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,6 @@ struct hcp_modify_qp_control_block {
165165
#define MQPCB_MASK_ALT_P_KEY_IDX EHCA_BMASK_IBM( 7, 7)
166166
#define MQPCB_MASK_RDMA_ATOMIC_CTRL EHCA_BMASK_IBM( 8, 8)
167167
#define MQPCB_MASK_QP_STATE EHCA_BMASK_IBM( 9, 9)
168-
#define MQPCB_QP_STATE EHCA_BMASK_IBM(24, 31)
169168
#define MQPCB_MASK_RDMA_NR_ATOMIC_RESP_RES EHCA_BMASK_IBM(11, 11)
170169
#define MQPCB_MASK_PATH_MIGRATION_STATE EHCA_BMASK_IBM(12, 12)
171170
#define MQPCB_MASK_RDMA_ATOMIC_OUTST_DEST_QP EHCA_BMASK_IBM(13, 13)
@@ -176,60 +175,33 @@ struct hcp_modify_qp_control_block {
176175
#define MQPCB_MASK_RETRY_COUNT EHCA_BMASK_IBM(18, 18)
177176
#define MQPCB_MASK_TIMEOUT EHCA_BMASK_IBM(19, 19)
178177
#define MQPCB_MASK_PATH_MTU EHCA_BMASK_IBM(20, 20)
179-
#define MQPCB_PATH_MTU EHCA_BMASK_IBM(24, 31)
180178
#define MQPCB_MASK_MAX_STATIC_RATE EHCA_BMASK_IBM(21, 21)
181-
#define MQPCB_MAX_STATIC_RATE EHCA_BMASK_IBM(24, 31)
182179
#define MQPCB_MASK_DLID EHCA_BMASK_IBM(22, 22)
183-
#define MQPCB_DLID EHCA_BMASK_IBM(16, 31)
184180
#define MQPCB_MASK_RNR_RETRY_COUNT EHCA_BMASK_IBM(23, 23)
185-
#define MQPCB_RNR_RETRY_COUNT EHCA_BMASK_IBM(29, 31)
186181
#define MQPCB_MASK_SOURCE_PATH_BITS EHCA_BMASK_IBM(24, 24)
187-
#define MQPCB_SOURCE_PATH_BITS EHCA_BMASK_IBM(25, 31)
188182
#define MQPCB_MASK_TRAFFIC_CLASS EHCA_BMASK_IBM(25, 25)
189-
#define MQPCB_TRAFFIC_CLASS EHCA_BMASK_IBM(24, 31)
190183
#define MQPCB_MASK_HOP_LIMIT EHCA_BMASK_IBM(26, 26)
191-
#define MQPCB_HOP_LIMIT EHCA_BMASK_IBM(24, 31)
192184
#define MQPCB_MASK_SOURCE_GID_IDX EHCA_BMASK_IBM(27, 27)
193-
#define MQPCB_SOURCE_GID_IDX EHCA_BMASK_IBM(24, 31)
194185
#define MQPCB_MASK_FLOW_LABEL EHCA_BMASK_IBM(28, 28)
195-
#define MQPCB_FLOW_LABEL EHCA_BMASK_IBM(12, 31)
196186
#define MQPCB_MASK_DEST_GID EHCA_BMASK_IBM(30, 30)
197187
#define MQPCB_MASK_SERVICE_LEVEL_AL EHCA_BMASK_IBM(31, 31)
198-
#define MQPCB_SERVICE_LEVEL_AL EHCA_BMASK_IBM(28, 31)
199188
#define MQPCB_MASK_SEND_GRH_FLAG_AL EHCA_BMASK_IBM(32, 32)
200-
#define MQPCB_SEND_GRH_FLAG_AL EHCA_BMASK_IBM(31, 31)
201189
#define MQPCB_MASK_RETRY_COUNT_AL EHCA_BMASK_IBM(33, 33)
202-
#define MQPCB_RETRY_COUNT_AL EHCA_BMASK_IBM(29, 31)
203190
#define MQPCB_MASK_TIMEOUT_AL EHCA_BMASK_IBM(34, 34)
204-
#define MQPCB_TIMEOUT_AL EHCA_BMASK_IBM(27, 31)
205191
#define MQPCB_MASK_MAX_STATIC_RATE_AL EHCA_BMASK_IBM(35, 35)
206-
#define MQPCB_MAX_STATIC_RATE_AL EHCA_BMASK_IBM(24, 31)
207192
#define MQPCB_MASK_DLID_AL EHCA_BMASK_IBM(36, 36)
208-
#define MQPCB_DLID_AL EHCA_BMASK_IBM(16, 31)
209193
#define MQPCB_MASK_RNR_RETRY_COUNT_AL EHCA_BMASK_IBM(37, 37)
210-
#define MQPCB_RNR_RETRY_COUNT_AL EHCA_BMASK_IBM(29, 31)
211194
#define MQPCB_MASK_SOURCE_PATH_BITS_AL EHCA_BMASK_IBM(38, 38)
212-
#define MQPCB_SOURCE_PATH_BITS_AL EHCA_BMASK_IBM(25, 31)
213195
#define MQPCB_MASK_TRAFFIC_CLASS_AL EHCA_BMASK_IBM(39, 39)
214-
#define MQPCB_TRAFFIC_CLASS_AL EHCA_BMASK_IBM(24, 31)
215196
#define MQPCB_MASK_HOP_LIMIT_AL EHCA_BMASK_IBM(40, 40)
216-
#define MQPCB_HOP_LIMIT_AL EHCA_BMASK_IBM(24, 31)
217197
#define MQPCB_MASK_SOURCE_GID_IDX_AL EHCA_BMASK_IBM(41, 41)
218-
#define MQPCB_SOURCE_GID_IDX_AL EHCA_BMASK_IBM(24, 31)
219198
#define MQPCB_MASK_FLOW_LABEL_AL EHCA_BMASK_IBM(42, 42)
220-
#define MQPCB_FLOW_LABEL_AL EHCA_BMASK_IBM(12, 31)
221199
#define MQPCB_MASK_DEST_GID_AL EHCA_BMASK_IBM(44, 44)
222200
#define MQPCB_MASK_MAX_NR_OUTST_SEND_WR EHCA_BMASK_IBM(45, 45)
223-
#define MQPCB_MAX_NR_OUTST_SEND_WR EHCA_BMASK_IBM(16, 31)
224201
#define MQPCB_MASK_MAX_NR_OUTST_RECV_WR EHCA_BMASK_IBM(46, 46)
225-
#define MQPCB_MAX_NR_OUTST_RECV_WR EHCA_BMASK_IBM(16, 31)
226202
#define MQPCB_MASK_DISABLE_ETE_CREDIT_CHECK EHCA_BMASK_IBM(47, 47)
227-
#define MQPCB_DISABLE_ETE_CREDIT_CHECK EHCA_BMASK_IBM(31, 31)
228-
#define MQPCB_QP_NUMBER EHCA_BMASK_IBM( 8, 31)
229203
#define MQPCB_MASK_QP_ENABLE EHCA_BMASK_IBM(48, 48)
230-
#define MQPCB_QP_ENABLE EHCA_BMASK_IBM(31, 31)
231204
#define MQPCB_MASK_CURR_SRQ_LIMIT EHCA_BMASK_IBM(49, 49)
232-
#define MQPCB_CURR_SRQ_LIMIT EHCA_BMASK_IBM(16, 31)
233205
#define MQPCB_MASK_QP_AFF_ASYN_EV_LOG_REG EHCA_BMASK_IBM(50, 50)
234206
#define MQPCB_MASK_SHARED_RQ_HNDL EHCA_BMASK_IBM(51, 51)
235207

drivers/infiniband/hw/ehca/ehca_irq.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -479,13 +479,13 @@ void ehca_tasklet_neq(unsigned long data)
479479
struct ehca_eqe *eqe;
480480
u64 ret;
481481

482-
eqe = (struct ehca_eqe *)ehca_poll_eq(shca, &shca->neq);
482+
eqe = ehca_poll_eq(shca, &shca->neq);
483483

484484
while (eqe) {
485485
if (!EHCA_BMASK_GET(NEQE_COMPLETION_EVENT, eqe->entry))
486486
parse_ec(shca, eqe->entry);
487487

488-
eqe = (struct ehca_eqe *)ehca_poll_eq(shca, &shca->neq);
488+
eqe = ehca_poll_eq(shca, &shca->neq);
489489
}
490490

491491
ret = hipz_h_reset_event(shca->ipz_hca_handle,
@@ -572,8 +572,7 @@ void ehca_process_eq(struct ehca_shca *shca, int is_irq)
572572
eqe_cnt = 0;
573573
do {
574574
u32 token;
575-
eqe_cache[eqe_cnt].eqe =
576-
(struct ehca_eqe *)ehca_poll_eq(shca, eq);
575+
eqe_cache[eqe_cnt].eqe = ehca_poll_eq(shca, eq);
577576
if (!eqe_cache[eqe_cnt].eqe)
578577
break;
579578
eqe_value = eqe_cache[eqe_cnt].eqe->entry;
@@ -637,7 +636,7 @@ void ehca_process_eq(struct ehca_shca *shca, int is_irq)
637636
goto unlock_irq_spinlock;
638637
do {
639638
struct ehca_eqe *eqe;
640-
eqe = (struct ehca_eqe *)ehca_poll_eq(shca, &shca->eq);
639+
eqe = ehca_poll_eq(shca, &shca->eq);
641640
if (!eqe)
642641
break;
643642
process_eqe(shca, eqe);

drivers/infiniband/hw/ehca/ehca_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
#include "ehca_tools.h"
5353
#include "hcp_if.h"
5454

55-
#define HCAD_VERSION "0026"
55+
#define HCAD_VERSION "0027"
5656

5757
MODULE_LICENSE("Dual BSD/GPL");
5858
MODULE_AUTHOR("Christoph Raisch <[email protected]>");

0 commit comments

Comments
 (0)