.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * Copyright (c) 2016 HGST, a Western Digital Company. |
---|
3 | | - * |
---|
4 | | - * This program is free software; you can redistribute it and/or modify it |
---|
5 | | - * under the terms and conditions of the GNU General Public License, |
---|
6 | | - * version 2, as published by the Free Software Foundation. |
---|
7 | | - * |
---|
8 | | - * This program is distributed in the hope it will be useful, but WITHOUT |
---|
9 | | - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
---|
10 | | - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
---|
11 | | - * more details. |
---|
12 | 4 | */ |
---|
13 | 5 | #include <rdma/ib_verbs.h> |
---|
14 | 6 | #include <rdma/mr_pool.h> |
---|
.. | .. |
---|
42 | 34 | EXPORT_SYMBOL(ib_mr_pool_put); |
---|
43 | 35 | |
---|
44 | 36 | int ib_mr_pool_init(struct ib_qp *qp, struct list_head *list, int nr, |
---|
45 | | - enum ib_mr_type type, u32 max_num_sg) |
---|
| 37 | + enum ib_mr_type type, u32 max_num_sg, u32 max_num_meta_sg) |
---|
46 | 38 | { |
---|
47 | 39 | struct ib_mr *mr; |
---|
48 | 40 | unsigned long flags; |
---|
49 | 41 | int ret, i; |
---|
50 | 42 | |
---|
51 | 43 | for (i = 0; i < nr; i++) { |
---|
52 | | - mr = ib_alloc_mr(qp->pd, type, max_num_sg); |
---|
| 44 | + if (type == IB_MR_TYPE_INTEGRITY) |
---|
| 45 | + mr = ib_alloc_mr_integrity(qp->pd, max_num_sg, |
---|
| 46 | + max_num_meta_sg); |
---|
| 47 | + else |
---|
| 48 | + mr = ib_alloc_mr(qp->pd, type, max_num_sg); |
---|
53 | 49 | if (IS_ERR(mr)) { |
---|
54 | 50 | ret = PTR_ERR(mr); |
---|
55 | 51 | goto out; |
---|