Lines Matching refs:buf_pool

1088 	qp->buf_pool.num_bufs = qp->req->length;
1091 qp->buf_pool.buf_map = kcalloc(sz, sizeof(long), GFP_KERNEL);
1092 if (!qp->buf_pool.buf_map) {
1098 qp->buf_pool.buf_array = kcalloc(qp->req->length, sizeof(void *), GFP_KERNEL);
1099 if (!qp->buf_pool.buf_array) {
1102 kfree(qp->buf_pool.buf_map);
1106 qp->buf_pool.dma_array = kcalloc(qp->req->length, sizeof(dma_addr_t), GFP_KERNEL);
1107 if (!qp->buf_pool.dma_array) {
1110 kfree(qp->buf_pool.buf_map);
1111 kfree(qp->buf_pool.buf_array);
1114 set_bit(0, qp->buf_pool.buf_map);
1123 for (i = 0; i < qp->buf_pool.num_bufs; i++) {
1124 if (qp->buf_pool.buf_array[i] && qp->buf_pool.dma_array[i])
1125 dma_pool_free(ha->fcp_cmnd_dma_pool, qp->buf_pool.buf_array[i],
1126 qp->buf_pool.dma_array[i]);
1127 qp->buf_pool.buf_array[i] = NULL;
1128 qp->buf_pool.dma_array[i] = 0;
1131 kfree(qp->buf_pool.dma_array);
1132 kfree(qp->buf_pool.buf_array);
1133 kfree(qp->buf_pool.buf_map);
1146 tag = find_first_zero_bit(qp->buf_pool.buf_map, qp->buf_pool.num_bufs);
1147 if (tag >= qp->buf_pool.num_bufs) {
1153 set_bit(0, qp->buf_pool.buf_map);
1163 if (!qp->buf_pool.buf_array[tag]) {
1171 dsc->buf = qp->buf_pool.buf_array[tag] = buf;
1172 dsc->buf_dma = qp->buf_pool.dma_array[tag] = buf_dma;
1173 qp->buf_pool.num_alloc++;
1175 dsc->buf = qp->buf_pool.buf_array[tag];
1176 dsc->buf_dma = qp->buf_pool.dma_array[tag];
1180 qp->buf_pool.num_active++;
1181 if (qp->buf_pool.num_active > qp->buf_pool.max_used)
1182 qp->buf_pool.max_used = qp->buf_pool.num_active;
1185 set_bit(tag, qp->buf_pool.buf_map);
1198 j = qp->buf_pool.num_alloc - 1;
1199 if (test_bit(j, qp->buf_pool.buf_map)) {
1202 qp->id, j, qp->buf_pool.num_alloc);
1206 if (qp->buf_pool.buf_array[j]) {
1207 dma_pool_free(ha->fcp_cmnd_dma_pool, qp->buf_pool.buf_array[j],
1208 qp->buf_pool.dma_array[j]);
1209 qp->buf_pool.buf_array[j] = NULL;
1210 qp->buf_pool.dma_array[j] = 0;
1212 qp->buf_pool.num_alloc--;
1213 if (!qp->buf_pool.num_alloc)
1218 qp->id, trim, qp->buf_pool.num_alloc);
1225 qp->buf_pool.take_snapshot = 0;
1226 qp->buf_pool.prev_max = qp->buf_pool.max_used;
1227 qp->buf_pool.max_used = qp->buf_pool.num_active;
1229 if (qp->buf_pool.prev_max > qp->buf_pool.max_used &&
1230 qp->buf_pool.num_alloc > qp->buf_pool.max_used) {
1232 trim = qp->buf_pool.num_alloc - qp->buf_pool.max_used;
1236 } else if (!qp->buf_pool.prev_max && !qp->buf_pool.max_used) {
1238 qla_trim_buf(qp, qp->buf_pool.num_alloc);
1249 clear_bit(dsc->tag, qp->buf_pool.buf_map);
1250 qp->buf_pool.num_active--;
1253 if (qp->buf_pool.take_snapshot)
1280 if (!qp->buf_pool.num_alloc)
1283 if (qp->buf_pool.take_snapshot) {
1289 qp->buf_pool.take_snapshot = 1;