tangled
alpha
login
or
join now
tjh.dev
/
kernel
Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1
fork
atom
overview
issues
pulls
pipelines
Merge branches 'ipoib', 'mlx4' and 'nes' into for-linus
Roland Dreier
17 years ago
7e2c2328
e8224e4b
+18
-13
4 changed files
expand all
collapse all
unified
split
drivers
infiniband
hw
mlx4
qp.c
nes
nes_cm.c
net
mlx4
mr.c
include
linux
mlx4
device.h
+6
drivers/infiniband/hw/mlx4/qp.c
···
1342
static void set_fmr_seg(struct mlx4_wqe_fmr_seg *fseg, struct ib_send_wr *wr)
1343
{
1344
struct mlx4_ib_fast_reg_page_list *mfrpl = to_mfrpl(wr->wr.fast_reg.page_list);
0
0
0
0
0
0
1345
1346
fseg->flags = convert_access(wr->wr.fast_reg.access_flags);
1347
fseg->mem_key = cpu_to_be32(wr->wr.fast_reg.rkey);
···
1342
static void set_fmr_seg(struct mlx4_wqe_fmr_seg *fseg, struct ib_send_wr *wr)
1343
{
1344
struct mlx4_ib_fast_reg_page_list *mfrpl = to_mfrpl(wr->wr.fast_reg.page_list);
1345
+
int i;
1346
+
1347
+
for (i = 0; i < wr->wr.fast_reg.page_list_len; ++i)
1348
+
wr->wr.fast_reg.page_list->page_list[i] =
1349
+
cpu_to_be64(wr->wr.fast_reg.page_list->page_list[i] |
1350
+
MLX4_MTT_FLAG_PRESENT);
1351
1352
fseg->flags = convert_access(wr->wr.fast_reg.access_flags);
1353
fseg->mem_key = cpu_to_be32(wr->wr.fast_reg.rkey);
+2
-9
drivers/infiniband/hw/nes/nes_cm.c
···
1956
return ret;
1957
cleanup_retrans_entry(cm_node);
1958
cm_node->state = NES_CM_STATE_CLOSED;
1959
-
ret = send_fin(cm_node, NULL);
1960
-
1961
-
if (cm_node->accept_pend) {
1962
-
BUG_ON(!cm_node->listener);
1963
-
atomic_dec(&cm_node->listener->pend_accepts_cnt);
1964
-
BUG_ON(atomic_read(&cm_node->listener->pend_accepts_cnt) < 0);
1965
-
}
1966
1967
ret = send_reset(cm_node, NULL);
1968
return ret;
···
2376
atomic_inc(&cm_disconnects);
2377
cm_event.event = IW_CM_EVENT_DISCONNECT;
2378
if (last_ae == NES_AEQE_AEID_LLP_CONNECTION_RESET) {
0
2379
cm_event.status = IW_CM_EVENT_STATUS_RESET;
2380
nes_debug(NES_DBG_CM, "Generating a CM "
2381
"Disconnect Event (status reset) for "
···
2502
nes_debug(NES_DBG_CM, "Call close API\n");
2503
2504
g_cm_core->api->close(g_cm_core, nesqp->cm_node);
2505
-
nesqp->cm_node = NULL;
2506
}
2507
2508
return ret;
···
2830
cm_node->apbvt_set = 1;
2831
nesqp->cm_node = cm_node;
2832
cm_node->nesqp = nesqp;
0
2833
2834
return 0;
2835
}
···
3161
if (ret)
3162
printk(KERN_ERR "%s[%u] OFA CM event_handler returned, "
3163
"ret=%d\n", __func__, __LINE__, ret);
3164
-
nes_rem_ref(&nesqp->ibqp);
3165
cm_id->rem_ref(cm_id);
3166
3167
rem_ref_cm_node(event->cm_node->cm_core, event->cm_node);
···
1956
return ret;
1957
cleanup_retrans_entry(cm_node);
1958
cm_node->state = NES_CM_STATE_CLOSED;
0
0
0
0
0
0
0
1959
1960
ret = send_reset(cm_node, NULL);
1961
return ret;
···
2383
atomic_inc(&cm_disconnects);
2384
cm_event.event = IW_CM_EVENT_DISCONNECT;
2385
if (last_ae == NES_AEQE_AEID_LLP_CONNECTION_RESET) {
2386
+
issued_disconnect_reset = 1;
2387
cm_event.status = IW_CM_EVENT_STATUS_RESET;
2388
nes_debug(NES_DBG_CM, "Generating a CM "
2389
"Disconnect Event (status reset) for "
···
2508
nes_debug(NES_DBG_CM, "Call close API\n");
2509
2510
g_cm_core->api->close(g_cm_core, nesqp->cm_node);
0
2511
}
2512
2513
return ret;
···
2837
cm_node->apbvt_set = 1;
2838
nesqp->cm_node = cm_node;
2839
cm_node->nesqp = nesqp;
2840
+
nes_add_ref(&nesqp->ibqp);
2841
2842
return 0;
2843
}
···
3167
if (ret)
3168
printk(KERN_ERR "%s[%u] OFA CM event_handler returned, "
3169
"ret=%d\n", __func__, __LINE__, ret);
0
3170
cm_id->rem_ref(cm_id);
3171
3172
rem_ref_cm_node(event->cm_node->cm_core, event->cm_node);
+6
-4
drivers/net/mlx4/mr.c
···
67
#define MLX4_MPT_FLAG_PHYSICAL (1 << 9)
68
#define MLX4_MPT_FLAG_REGION (1 << 8)
69
70
-
#define MLX4_MPT_PD_FLAG_FAST_REG (1 << 26)
0
71
#define MLX4_MPT_PD_FLAG_EN_INV (3 << 24)
72
-
73
-
#define MLX4_MTT_FLAG_PRESENT 1
74
75
#define MLX4_MPT_STATUS_SW 0xF0
76
#define MLX4_MPT_STATUS_HW 0x00
···
347
if (mr->mtt.order >= 0 && mr->mtt.page_shift == 0) {
348
/* fast register MR in free state */
349
mpt_entry->flags |= cpu_to_be32(MLX4_MPT_FLAG_FREE);
350
-
mpt_entry->pd_flags |= cpu_to_be32(MLX4_MPT_PD_FLAG_FAST_REG);
0
0
0
351
} else {
352
mpt_entry->flags |= cpu_to_be32(MLX4_MPT_FLAG_SW_OWNS);
353
}
···
67
#define MLX4_MPT_FLAG_PHYSICAL (1 << 9)
68
#define MLX4_MPT_FLAG_REGION (1 << 8)
69
70
+
#define MLX4_MPT_PD_FLAG_FAST_REG (1 << 27)
71
+
#define MLX4_MPT_PD_FLAG_RAE (1 << 28)
72
#define MLX4_MPT_PD_FLAG_EN_INV (3 << 24)
0
0
73
74
#define MLX4_MPT_STATUS_SW 0xF0
75
#define MLX4_MPT_STATUS_HW 0x00
···
348
if (mr->mtt.order >= 0 && mr->mtt.page_shift == 0) {
349
/* fast register MR in free state */
350
mpt_entry->flags |= cpu_to_be32(MLX4_MPT_FLAG_FREE);
351
+
mpt_entry->pd_flags |= cpu_to_be32(MLX4_MPT_PD_FLAG_FAST_REG |
352
+
MLX4_MPT_PD_FLAG_RAE);
353
+
mpt_entry->mtt_sz = cpu_to_be32((1 << mr->mtt.order) *
354
+
MLX4_MTT_ENTRY_PER_SEG);
355
} else {
356
mpt_entry->flags |= cpu_to_be32(MLX4_MPT_FLAG_SW_OWNS);
357
}
+4
include/linux/mlx4/device.h
···
141
MLX4_STAT_RATE_OFFSET = 5
142
};
143
0
0
0
0
144
static inline u64 mlx4_fw_ver(u64 major, u64 minor, u64 subminor)
145
{
146
return (major << 32) | (minor << 16) | subminor;
···
141
MLX4_STAT_RATE_OFFSET = 5
142
};
143
144
+
enum {
145
+
MLX4_MTT_FLAG_PRESENT = 1
146
+
};
147
+
148
static inline u64 mlx4_fw_ver(u64 major, u64 minor, u64 subminor)
149
{
150
return (major << 32) | (minor << 16) | subminor;