| .. | .. | 
|---|
|  | 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; | 
|---|