Lines Matching refs:qedi_ep
245 struct qedi_endpoint *qedi_ep; in qedi_session_create() local
250 qedi_ep = ep->dd_data; in qedi_session_create()
251 shost = qedi_ep->qedi->shost; in qedi_session_create()
264 "Failed to setup session for ep=%p\n", qedi_ep); in qedi_session_create()
270 "Failed to setup cmd pool for ep=%p\n", qedi_ep); in qedi_session_create()
389 struct qedi_endpoint *qedi_ep; in qedi_conn_bind() local
397 qedi_ep = ep->dd_data; in qedi_conn_bind()
398 if ((qedi_ep->state == EP_STATE_TCP_FIN_RCVD) || in qedi_conn_bind()
399 (qedi_ep->state == EP_STATE_TCP_RST_RCVD)) { in qedi_conn_bind()
410 qedi_ep->conn = qedi_conn; in qedi_conn_bind()
411 qedi_conn->ep = qedi_ep; in qedi_conn_bind()
413 qedi_conn->iscsi_conn_id = qedi_ep->iscsi_cid; in qedi_conn_bind()
414 qedi_conn->fw_cid = qedi_ep->fw_cid; in qedi_conn_bind()
438 struct qedi_endpoint *qedi_ep; in qedi_iscsi_update_conn() local
441 qedi_ep = qedi_conn->ep; in qedi_iscsi_update_conn()
472 rval = qedi_ops->update_conn(qedi->cdev, qedi_ep->handle, in qedi_iscsi_update_conn()
501 static int qedi_iscsi_offload_conn(struct qedi_endpoint *qedi_ep) in qedi_iscsi_offload_conn() argument
504 struct qedi_ctx *qedi = qedi_ep->qedi; in qedi_iscsi_offload_conn()
511 "Failed to allocate memory ep=%p\n", qedi_ep); in qedi_iscsi_offload_conn()
515 ether_addr_copy(conn_info->src.mac, qedi_ep->src_mac); in qedi_iscsi_offload_conn()
516 ether_addr_copy(conn_info->dst.mac, qedi_ep->dst_mac); in qedi_iscsi_offload_conn()
518 conn_info->src.ip[0] = ntohl(qedi_ep->src_addr[0]); in qedi_iscsi_offload_conn()
519 conn_info->dst.ip[0] = ntohl(qedi_ep->dst_addr[0]); in qedi_iscsi_offload_conn()
521 if (qedi_ep->ip_type == TCP_IPV4) { in qedi_iscsi_offload_conn()
525 qedi_ep->src_addr, qedi_ep->dst_addr); in qedi_iscsi_offload_conn()
528 conn_info->src.ip[i] = ntohl(qedi_ep->src_addr[i]); in qedi_iscsi_offload_conn()
529 conn_info->dst.ip[i] = ntohl(qedi_ep->dst_addr[i]); in qedi_iscsi_offload_conn()
535 qedi_ep->src_addr, qedi_ep->dst_addr); in qedi_iscsi_offload_conn()
538 conn_info->src.port = qedi_ep->src_port; in qedi_iscsi_offload_conn()
539 conn_info->dst.port = qedi_ep->dst_port; in qedi_iscsi_offload_conn()
542 conn_info->sq_pbl_addr = qedi_ep->sq_pbl_dma; in qedi_iscsi_offload_conn()
543 conn_info->vlan_id = qedi_ep->vlan_id; in qedi_iscsi_offload_conn()
550 conn_info->default_cq = (qedi_ep->fw_cid % qedi->num_queues); in qedi_iscsi_offload_conn()
565 conn_info->remote_port = qedi_ep->dst_port; in qedi_iscsi_offload_conn()
566 conn_info->local_port = qedi_ep->src_port; in qedi_iscsi_offload_conn()
568 conn_info->mss = qedi_calc_mss(qedi_ep->pmtu, in qedi_iscsi_offload_conn()
569 (qedi_ep->ip_type == TCP_IPV6), in qedi_iscsi_offload_conn()
570 1, (qedi_ep->vlan_id != 0)); in qedi_iscsi_offload_conn()
582 qedi_ep->db_data.agg_flags = 0; in qedi_iscsi_offload_conn()
583 qedi_ep->db_data.params = 0; in qedi_iscsi_offload_conn()
584 SET_FIELD(qedi_ep->db_data.params, ISCSI_DB_DATA_DEST, DB_DEST_XCM); in qedi_iscsi_offload_conn()
585 SET_FIELD(qedi_ep->db_data.params, ISCSI_DB_DATA_AGG_CMD, in qedi_iscsi_offload_conn()
587 SET_FIELD(qedi_ep->db_data.params, ISCSI_DB_DATA_AGG_VAL_SEL, in qedi_iscsi_offload_conn()
589 SET_FIELD(qedi_ep->db_data.params, ISCSI_DB_DATA_BYPASS_EN, 1); in qedi_iscsi_offload_conn()
593 qedi_ep->p_doorbell, in qedi_iscsi_offload_conn()
594 &qedi_ep->db_data, in qedi_iscsi_offload_conn()
602 rval = qedi_ops->offload_conn(qedi->cdev, qedi_ep->handle, conn_info); in qedi_iscsi_offload_conn()
606 qedi_ep->p_doorbell, in qedi_iscsi_offload_conn()
607 &qedi_ep->db_data); in qedi_iscsi_offload_conn()
610 rval, qedi_ep); in qedi_iscsi_offload_conn()
668 struct qedi_endpoint *qedi_ep = ep->dd_data; in qedi_ep_get_param() local
671 if (!qedi_ep) in qedi_ep_get_param()
676 len = sprintf(buf, "%hu\n", qedi_ep->dst_port); in qedi_ep_get_param()
679 if (qedi_ep->ip_type == TCP_IPV4) in qedi_ep_get_param()
680 len = sprintf(buf, "%pI4\n", qedi_ep->dst_addr); in qedi_ep_get_param()
682 len = sprintf(buf, "%pI6\n", qedi_ep->dst_addr); in qedi_ep_get_param()
865 struct qedi_endpoint *qedi_ep = in qedi_offload_work() local
871 qedi = qedi_ep->qedi; in qedi_offload_work()
873 ret = qedi_iscsi_offload_conn(qedi_ep); in qedi_offload_work()
877 qedi_ep->iscsi_cid, qedi_ep, ret); in qedi_offload_work()
878 qedi_ep->state = EP_STATE_OFLDCONN_FAILED; in qedi_offload_work()
882 ret = wait_event_interruptible_timeout(qedi_ep->tcp_ofld_wait, in qedi_offload_work()
883 (qedi_ep->state == in qedi_offload_work()
886 if (ret <= 0 || qedi_ep->state != EP_STATE_OFLDCONN_COMPL) { in qedi_offload_work()
887 qedi_ep->state = EP_STATE_OFLDCONN_FAILED; in qedi_offload_work()
890 qedi_ep->iscsi_cid, qedi_ep); in qedi_offload_work()
900 struct qedi_endpoint *qedi_ep; in qedi_ep_connect() local
940 qedi_ep = ep->dd_data; in qedi_ep_connect()
941 memset(qedi_ep, 0, sizeof(struct qedi_endpoint)); in qedi_ep_connect()
942 INIT_WORK(&qedi_ep->offload_work, qedi_offload_work); in qedi_ep_connect()
943 qedi_ep->state = EP_STATE_IDLE; in qedi_ep_connect()
944 qedi_ep->iscsi_cid = (u32)-1; in qedi_ep_connect()
945 qedi_ep->qedi = qedi; in qedi_ep_connect()
949 memcpy(qedi_ep->dst_addr, &addr->sin_addr.s_addr, in qedi_ep_connect()
951 qedi_ep->dst_port = ntohs(addr->sin_port); in qedi_ep_connect()
952 qedi_ep->ip_type = TCP_IPV4; in qedi_ep_connect()
955 qedi_ep->dst_addr, qedi_ep->dst_port); in qedi_ep_connect()
958 memcpy(qedi_ep->dst_addr, &addr6->sin6_addr, in qedi_ep_connect()
960 qedi_ep->dst_port = ntohs(addr6->sin6_port); in qedi_ep_connect()
961 qedi_ep->ip_type = TCP_IPV6; in qedi_ep_connect()
964 qedi_ep->dst_addr, qedi_ep->dst_port); in qedi_ep_connect()
969 ret = qedi_alloc_sq(qedi, qedi_ep); in qedi_ep_connect()
973 ret = qedi_ops->acquire_conn(qedi->cdev, &qedi_ep->handle, in qedi_ep_connect()
974 &qedi_ep->fw_cid, &qedi_ep->p_doorbell); in qedi_ep_connect()
982 iscsi_cid = qedi_ep->handle; in qedi_ep_connect()
983 qedi_ep->iscsi_cid = iscsi_cid; in qedi_ep_connect()
985 init_waitqueue_head(&qedi_ep->ofld_wait); in qedi_ep_connect()
986 init_waitqueue_head(&qedi_ep->tcp_ofld_wait); in qedi_ep_connect()
987 qedi_ep->state = EP_STATE_OFLDCONN_START; in qedi_ep_connect()
988 qedi->ep_tbl[iscsi_cid] = qedi_ep; in qedi_ep_connect()
995 path_req.handle = (u64)qedi_ep->iscsi_cid; in qedi_ep_connect()
997 qedi_ep->pmtu = qedi->ll2_mtu; in qedi_ep_connect()
998 if (qedi_ep->ip_type == TCP_IPV4) { in qedi_ep_connect()
999 memcpy(&path_req.dst.v4_addr, &qedi_ep->dst_addr, in qedi_ep_connect()
1003 memcpy(&path_req.dst.v6_addr, &qedi_ep->dst_addr, in qedi_ep_connect()
1022 tmp = qedi_ops->release_conn(qedi->cdev, qedi_ep->handle); in qedi_ep_connect()
1027 qedi_free_sq(qedi, qedi_ep); in qedi_ep_connect()
1035 struct qedi_endpoint *qedi_ep; in qedi_ep_poll() local
1041 qedi_ep = ep->dd_data; in qedi_ep_poll()
1042 if (qedi_ep->state == EP_STATE_IDLE || in qedi_ep_poll()
1043 qedi_ep->state == EP_STATE_OFLDCONN_NONE || in qedi_ep_poll()
1044 qedi_ep->state == EP_STATE_OFLDCONN_FAILED) in qedi_ep_poll()
1047 if (qedi_ep->state == EP_STATE_OFLDCONN_COMPL) in qedi_ep_poll()
1050 ret = wait_event_interruptible_timeout(qedi_ep->ofld_wait, in qedi_ep_poll()
1051 QEDI_OFLD_WAIT_STATE(qedi_ep), in qedi_ep_poll()
1054 if (qedi_ep->state == EP_STATE_OFLDCONN_FAILED) in qedi_ep_poll()
1080 struct qedi_endpoint *qedi_ep; in qedi_ep_disconnect() local
1088 qedi_ep = ep->dd_data; in qedi_ep_disconnect()
1089 qedi = qedi_ep->qedi; in qedi_ep_disconnect()
1091 flush_work(&qedi_ep->offload_work); in qedi_ep_disconnect()
1093 if (qedi_ep->state == EP_STATE_OFLDCONN_START) in qedi_ep_disconnect()
1096 if (qedi_ep->conn) { in qedi_ep_disconnect()
1097 qedi_conn = qedi_ep->conn; in qedi_ep_disconnect()
1102 qedi_ep->iscsi_cid, qedi_ep, in qedi_ep_disconnect()
1118 qedi_ep->iscsi_cid); in qedi_ep_disconnect()
1123 qedi_ep->iscsi_cid, qedi_ep, qedi_ep->state); in qedi_ep_disconnect()
1132 switch (qedi_ep->state) { in qedi_ep_disconnect()
1145 qedi_ep->state, in qedi_ep_disconnect()
1146 qedi_ep->iscsi_cid, in qedi_ep_disconnect()
1147 qedi_ep->conn in qedi_ep_disconnect()
1165 qedi_ep->state = EP_STATE_DISCONN_START; in qedi_ep_disconnect()
1173 qedi_ep->p_doorbell, in qedi_ep_disconnect()
1174 &qedi_ep->db_data); in qedi_ep_disconnect()
1176 ret = qedi_ops->destroy_conn(qedi->cdev, qedi_ep->handle, abrt_conn); in qedi_ep_disconnect()
1182 qedi_ep->tcp_ofld_wait, in qedi_ep_disconnect()
1183 (qedi_ep->state != in qedi_ep_disconnect()
1186 if ((ret <= 0) || (qedi_ep->state == EP_STATE_DISCONN_START)) { in qedi_ep_disconnect()
1189 ret, wait_delay, qedi_ep->iscsi_cid); in qedi_ep_disconnect()
1194 ret = qedi_ops->release_conn(qedi->cdev, qedi_ep->handle); in qedi_ep_disconnect()
1198 ret, qedi_ep->iscsi_cid); in qedi_ep_disconnect()
1200 qedi_ep->state = EP_STATE_IDLE; in qedi_ep_disconnect()
1201 qedi->ep_tbl[qedi_ep->iscsi_cid] = NULL; in qedi_ep_disconnect()
1202 qedi->cid_que.conn_cid_tbl[qedi_ep->iscsi_cid] = NULL; in qedi_ep_disconnect()
1203 qedi_free_id(&qedi->lcl_port_tbl, qedi_ep->src_port); in qedi_ep_disconnect()
1204 qedi_free_sq(qedi, qedi_ep); in qedi_ep_disconnect()
1209 qedi_ep->conn = NULL; in qedi_ep_disconnect()
1210 qedi_ep->qedi = NULL; in qedi_ep_disconnect()
1272 struct qedi_endpoint *qedi_ep; in qedi_set_path() local
1301 qedi_ep = qedi->ep_tbl[iscsi_cid]; in qedi_set_path()
1303 "iscsi_cid=0x%x, qedi_ep=%p\n", iscsi_cid, qedi_ep); in qedi_set_path()
1304 if (!qedi_ep) { in qedi_set_path()
1311 qedi_ep->state = EP_STATE_OFLDCONN_NONE; in qedi_set_path()
1316 ether_addr_copy(&qedi_ep->src_mac[0], &qedi->mac[0]); in qedi_set_path()
1317 ether_addr_copy(&qedi_ep->dst_mac[0], &path_data->mac_addr[0]); in qedi_set_path()
1319 qedi_ep->vlan_id = path_data->vlan_id; in qedi_set_path()
1321 qedi_ep->pmtu = qedi->ll2_mtu; in qedi_set_path()
1324 path_data->pmtu, qedi_ep->pmtu); in qedi_set_path()
1335 qedi_ep->pmtu = qedi->ll2_mtu; in qedi_set_path()
1338 port_id = qedi_ep->src_port; in qedi_set_path()
1358 qedi_ep->src_port = port_id; in qedi_set_path()
1360 if (qedi_ep->ip_type == TCP_IPV4) { in qedi_set_path()
1361 memcpy(&qedi_ep->src_addr[0], &path_data->src.v4_addr, in qedi_set_path()
1369 qedi_ep->src_addr, qedi_ep->src_port, in qedi_set_path()
1370 qedi_ep->dst_addr, qedi_ep->dst_port); in qedi_set_path()
1372 memcpy(&qedi_ep->src_addr[0], &path_data->src.v6_addr, in qedi_set_path()
1380 qedi_ep->src_addr, qedi_ep->src_port, in qedi_set_path()
1381 qedi_ep->dst_addr, qedi_ep->dst_port); in qedi_set_path()
1384 queue_work(qedi->offload_thread, &qedi_ep->offload_work); in qedi_set_path()