Lines Matching refs:iser_conn
161 static void iser_create_send_desc(struct iser_conn *iser_conn, in iser_create_send_desc() argument
164 struct iser_device *device = iser_conn->ib_conn.device; in iser_create_send_desc()
174 static void iser_free_login_buf(struct iser_conn *iser_conn) in iser_free_login_buf() argument
176 struct iser_device *device = iser_conn->ib_conn.device; in iser_free_login_buf()
178 if (!iser_conn->login_buf) in iser_free_login_buf()
181 if (iser_conn->login_req_dma) in iser_free_login_buf()
183 iser_conn->login_req_dma, in iser_free_login_buf()
186 if (iser_conn->login_resp_dma) in iser_free_login_buf()
188 iser_conn->login_resp_dma, in iser_free_login_buf()
191 kfree(iser_conn->login_buf); in iser_free_login_buf()
194 iser_conn->login_req_dma = 0; in iser_free_login_buf()
195 iser_conn->login_resp_dma = 0; in iser_free_login_buf()
196 iser_conn->login_buf = NULL; in iser_free_login_buf()
199 static int iser_alloc_login_buf(struct iser_conn *iser_conn) in iser_alloc_login_buf() argument
201 struct iser_device *device = iser_conn->ib_conn.device; in iser_alloc_login_buf()
206 iser_conn->login_buf = kmalloc(ISCSI_DEF_MAX_RECV_SEG_LEN + in iser_alloc_login_buf()
208 if (!iser_conn->login_buf) in iser_alloc_login_buf()
211 iser_conn->login_req_buf = iser_conn->login_buf; in iser_alloc_login_buf()
212 iser_conn->login_resp_buf = iser_conn->login_buf + in iser_alloc_login_buf()
215 iser_conn->login_req_dma = ib_dma_map_single(device->ib_device, in iser_alloc_login_buf()
216 iser_conn->login_req_buf, in iser_alloc_login_buf()
220 iser_conn->login_resp_dma = ib_dma_map_single(device->ib_device, in iser_alloc_login_buf()
221 iser_conn->login_resp_buf, in iser_alloc_login_buf()
226 iser_conn->login_req_dma); in iser_alloc_login_buf()
228 iser_conn->login_resp_dma); in iser_alloc_login_buf()
232 iser_conn->login_req_dma = 0; in iser_alloc_login_buf()
234 iser_conn->login_resp_dma = 0; in iser_alloc_login_buf()
240 iser_free_login_buf(iser_conn); in iser_alloc_login_buf()
247 int iser_alloc_rx_descriptors(struct iser_conn *iser_conn, in iser_alloc_rx_descriptors() argument
254 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_alloc_rx_descriptors()
257 iser_conn->qp_max_recv_dtos = session->cmds_max; in iser_alloc_rx_descriptors()
258 iser_conn->qp_max_recv_dtos_mask = session->cmds_max - 1; /* cmds_max is 2^N */ in iser_alloc_rx_descriptors()
259 iser_conn->min_posted_rx = iser_conn->qp_max_recv_dtos >> 2; in iser_alloc_rx_descriptors()
262 iser_conn->scsi_sg_tablesize)) in iser_alloc_rx_descriptors()
265 if (iser_alloc_login_buf(iser_conn)) in iser_alloc_rx_descriptors()
268 iser_conn->num_rx_descs = session->cmds_max; in iser_alloc_rx_descriptors()
269 iser_conn->rx_descs = kmalloc(iser_conn->num_rx_descs * in iser_alloc_rx_descriptors()
271 if (!iser_conn->rx_descs) in iser_alloc_rx_descriptors()
274 rx_desc = iser_conn->rx_descs; in iser_alloc_rx_descriptors()
276 for (i = 0; i < iser_conn->qp_max_recv_dtos; i++, rx_desc++) { in iser_alloc_rx_descriptors()
290 iser_conn->rx_desc_head = 0; in iser_alloc_rx_descriptors()
294 rx_desc = iser_conn->rx_descs; in iser_alloc_rx_descriptors()
298 kfree(iser_conn->rx_descs); in iser_alloc_rx_descriptors()
299 iser_conn->rx_descs = NULL; in iser_alloc_rx_descriptors()
301 iser_free_login_buf(iser_conn); in iser_alloc_rx_descriptors()
309 void iser_free_rx_descriptors(struct iser_conn *iser_conn) in iser_free_rx_descriptors() argument
313 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_free_rx_descriptors()
319 rx_desc = iser_conn->rx_descs; in iser_free_rx_descriptors()
320 for (i = 0; i < iser_conn->qp_max_recv_dtos; i++, rx_desc++) in iser_free_rx_descriptors()
323 kfree(iser_conn->rx_descs); in iser_free_rx_descriptors()
325 iser_conn->rx_descs = NULL; in iser_free_rx_descriptors()
327 iser_free_login_buf(iser_conn); in iser_free_rx_descriptors()
332 struct iser_conn *iser_conn = conn->dd_data; in iser_post_rx_bufs() local
333 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_post_rx_bufs()
352 iser_conn->min_posted_rx); in iser_post_rx_bufs()
355 if (iser_post_recvm(iser_conn, iser_conn->min_posted_rx)) in iser_post_rx_bufs()
372 struct iser_conn *iser_conn = conn->dd_data; in iser_send_command() local
380 u8 sig_count = ++iser_conn->ib_conn.sig_count; in iser_send_command()
386 iser_create_send_desc(iser_conn, tx_desc); in iser_send_command()
426 err = iser_post_send(&iser_conn->ib_conn, tx_desc, in iser_send_command()
443 struct iser_conn *iser_conn = conn->dd_data; in iser_send_data_out() local
494 err = iser_post_send(&iser_conn->ib_conn, tx_desc, true); in iser_send_data_out()
507 struct iser_conn *iser_conn = conn->dd_data; in iser_send_control() local
516 iser_create_send_desc(iser_conn, mdesc); in iser_send_control()
518 device = iser_conn->ib_conn.device; in iser_send_control()
530 iser_conn->login_req_dma, task->data_count, in iser_send_control()
533 memcpy(iser_conn->login_req_buf, task->data, task->data_count); in iser_send_control()
536 iser_conn->login_req_dma, task->data_count, in iser_send_control()
539 tx_dsg->addr = iser_conn->login_req_dma; in iser_send_control()
548 err = iser_post_recvl(iser_conn); in iser_send_control()
556 err = iser_post_send(&iser_conn->ib_conn, mdesc, true); in iser_send_control()
572 struct iser_conn *iser_conn = container_of(ib_conn, struct iser_conn, in iser_rcv_completion() local
579 if ((char *)rx_desc == iser_conn->login_resp_buf) { in iser_rcv_completion()
580 rx_dma = iser_conn->login_resp_dma; in iser_rcv_completion()
595 iscsi_iser_recv(iser_conn->iscsi_conn, hdr, rx_desc->data, in iser_rcv_completion()
607 if (rx_dma == iser_conn->login_resp_dma) in iser_rcv_completion()
611 if (outstanding + iser_conn->min_posted_rx <= iser_conn->qp_max_recv_dtos) { in iser_rcv_completion()
612 count = min(iser_conn->qp_max_recv_dtos - outstanding, in iser_rcv_completion()
613 iser_conn->min_posted_rx); in iser_rcv_completion()
614 err = iser_post_recvm(iser_conn, count); in iser_rcv_completion()