Lines Matching refs:sport

140 	struct srpt_port *sport;  in srpt_event_handler()  local
150 sport = &sdev->port[port_num]; in srpt_event_handler()
151 sport->lid = 0; in srpt_event_handler()
152 sport->sm_lid = 0; in srpt_event_handler()
168 sport = &sdev->port[port_num]; in srpt_event_handler()
169 if (!sport->lid && !sport->sm_lid) in srpt_event_handler()
170 schedule_work(&sport->work); in srpt_event_handler()
318 static void srpt_get_ioc(struct srpt_port *sport, u32 slot, in srpt_get_ioc() argument
321 struct srpt_device *sdev = sport->sdev; in srpt_get_ioc()
360 iocp->rdma_size = cpu_to_be32(min(sport->port_attrib.srp_max_rdma_size, in srpt_get_ioc()
473 struct srpt_port *sport = (struct srpt_port *)mad_agent->context; in srpt_mad_recv_handler() local
505 srpt_mgmt_method_get(sport, mad_wc->recv_buf.mad, dm_mad); in srpt_mad_recv_handler()
550 static int srpt_refresh_port(struct srpt_port *sport) in srpt_refresh_port() argument
557 ret = ib_query_port(sport->sdev->device, sport->port, &port_attr); in srpt_refresh_port()
561 sport->sm_lid = port_attr.sm_lid; in srpt_refresh_port()
562 sport->lid = port_attr.lid; in srpt_refresh_port()
564 ret = rdma_query_gid(sport->sdev->device, sport->port, 0, &sport->gid); in srpt_refresh_port()
568 srpt_format_guid(sport->guid_name, ARRAY_SIZE(sport->guid_name), in srpt_refresh_port()
569 &sport->gid.global.interface_id); in srpt_refresh_port()
570 snprintf(sport->gid_name, ARRAY_SIZE(sport->gid_name), in srpt_refresh_port()
572 be64_to_cpu(sport->gid.global.subnet_prefix), in srpt_refresh_port()
573 be64_to_cpu(sport->gid.global.interface_id)); in srpt_refresh_port()
575 if (rdma_protocol_iwarp(sport->sdev->device, sport->port)) in srpt_refresh_port()
582 ret = ib_modify_port(sport->sdev->device, sport->port, 0, &port_modify); in srpt_refresh_port()
585 dev_name(&sport->sdev->device->dev), sport->port, ret); in srpt_refresh_port()
589 if (!sport->mad_agent) { in srpt_refresh_port()
596 sport->mad_agent = ib_register_mad_agent(sport->sdev->device, in srpt_refresh_port()
597 sport->port, in srpt_refresh_port()
602 sport, 0); in srpt_refresh_port()
603 if (IS_ERR(sport->mad_agent)) { in srpt_refresh_port()
605 dev_name(&sport->sdev->device->dev), sport->port, in srpt_refresh_port()
606 PTR_ERR(sport->mad_agent)); in srpt_refresh_port()
607 sport->mad_agent = NULL; in srpt_refresh_port()
610 ib_modify_port(sport->sdev->device, sport->port, 0, in srpt_refresh_port()
631 struct srpt_port *sport; in srpt_unregister_mad_agent() local
635 sport = &sdev->port[i - 1]; in srpt_unregister_mad_agent()
636 WARN_ON(sport->port != i); in srpt_unregister_mad_agent()
637 if (sport->mad_agent) { in srpt_unregister_mad_agent()
639 ib_unregister_mad_agent(sport->mad_agent); in srpt_unregister_mad_agent()
640 sport->mad_agent = NULL; in srpt_unregister_mad_agent()
916 ret = rdma_rw_ctx_init(&ctx->rw, ch->qp, ch->sport->port, in srpt_alloc_rw_ctxs()
945 rdma_rw_ctx_destroy(&ctx->rw, ch->qp, ch->sport->port, in srpt_alloc_rw_ctxs()
963 rdma_rw_ctx_destroy(&ctx->rw, ch->qp, ch->sport->port, in srpt_free_rw_ctxs()
1121 attr->port_num = ch->sport->port; in srpt_init_ch_qp()
1123 ret = ib_find_cached_pkey(ch->sport->sdev->device, ch->sport->port, in srpt_init_ch_qp()
1629 ib_dma_sync_single_for_cpu(ch->sport->sdev->device, in srpt_handle_new_iu()
1672 srpt_post_recv(ch->sport->sdev, ch, recv_ioctx); in srpt_handle_new_iu()
1782 struct srpt_port *sport = ch->sport; in srpt_create_ch_ib() local
1783 struct srpt_device *sdev = sport->sdev; in srpt_create_ch_ib()
1785 int sq_size = sport->port_attrib.srp_sq_size; in srpt_create_ch_ib()
1824 qp_init->port_num = ch->sport->port; in srpt_create_ch_ib()
1960 struct srpt_port *sport = ch->sport; in srpt_disconnect_ch_sync() local
1967 mutex_lock(&sport->mutex); in srpt_disconnect_ch_sync()
1969 mutex_unlock(&sport->mutex); in srpt_disconnect_ch_sync()
1977 static void __srpt_close_all_ch(struct srpt_port *sport) in __srpt_close_all_ch() argument
1982 lockdep_assert_held(&sport->mutex); in __srpt_close_all_ch()
1984 list_for_each_entry(nexus, &sport->nexus_list, entry) { in __srpt_close_all_ch()
1989 dev_name(&sport->sdev->device->dev), in __srpt_close_all_ch()
1990 sport->port); in __srpt_close_all_ch()
2000 static struct srpt_nexus *srpt_get_nexus(struct srpt_port *sport, in srpt_get_nexus() argument
2007 mutex_lock(&sport->mutex); in srpt_get_nexus()
2008 list_for_each_entry(n, &sport->nexus_list, entry) { in srpt_get_nexus()
2017 &sport->nexus_list); in srpt_get_nexus()
2020 mutex_unlock(&sport->mutex); in srpt_get_nexus()
2039 static void srpt_set_enabled(struct srpt_port *sport, bool enabled) in srpt_set_enabled() argument
2040 __must_hold(&sport->mutex) in srpt_set_enabled()
2042 lockdep_assert_held(&sport->mutex); in srpt_set_enabled()
2044 if (sport->enabled == enabled) in srpt_set_enabled()
2046 sport->enabled = enabled; in srpt_set_enabled()
2048 __srpt_close_all_ch(sport); in srpt_set_enabled()
2051 static void srpt_drop_sport_ref(struct srpt_port *sport) in srpt_drop_sport_ref() argument
2053 if (atomic_dec_return(&sport->refcount) == 0 && sport->freed_channels) in srpt_drop_sport_ref()
2054 complete(sport->freed_channels); in srpt_drop_sport_ref()
2061 srpt_drop_sport_ref(ch->sport); in srpt_free_ch()
2077 struct srpt_port *sport; in srpt_release_channel_work() local
2083 sdev = ch->sport->sdev; in srpt_release_channel_work()
2100 sport = ch->sport; in srpt_release_channel_work()
2101 mutex_lock(&sport->mutex); in srpt_release_channel_work()
2103 mutex_unlock(&sport->mutex); in srpt_release_channel_work()
2111 ch->sport->sdev, ch->rq_size, in srpt_release_channel_work()
2146 struct srpt_port *sport = &sdev->port[port_num - 1]; in srpt_cm_req_recv() local
2166 port_num, &sport->gid, be16_to_cpu(pkey)); in srpt_cm_req_recv()
2168 nexus = srpt_get_nexus(sport, req->initiator_port_id, in srpt_cm_req_recv()
2191 if (!sport->enabled) { in srpt_cm_req_recv()
2194 dev_name(&sport->sdev->device->dev), port_num); in srpt_cm_req_recv()
2220 ch->sport = sport; in srpt_cm_req_recv()
2238 ch->max_rsp_size = ch->sport->port_attrib.srp_max_rsp_size; in srpt_cm_req_recv()
2246 srpt_alloc_ioctx_ring(ch->sport->sdev, ch->rq_size, in srpt_cm_req_recv()
2281 srpt_alloc_ioctx_ring(ch->sport->sdev, ch->rq_size, in srpt_cm_req_recv()
2314 if (sport->guid_id) { in srpt_cm_req_recv()
2315 mutex_lock(&sport->guid_id->mutex); in srpt_cm_req_recv()
2316 list_for_each_entry(stpg, &sport->guid_id->tpg_list, entry) { in srpt_cm_req_recv()
2323 mutex_unlock(&sport->guid_id->mutex); in srpt_cm_req_recv()
2326 if (sport->gid_id) { in srpt_cm_req_recv()
2327 mutex_lock(&sport->gid_id->mutex); in srpt_cm_req_recv()
2328 list_for_each_entry(stpg, &sport->gid_id->tpg_list, entry) { in srpt_cm_req_recv()
2341 mutex_unlock(&sport->gid_id->mutex); in srpt_cm_req_recv()
2360 atomic_inc(&sport->refcount); in srpt_cm_req_recv()
2362 mutex_lock(&sport->mutex); in srpt_cm_req_recv()
2380 if (!sport->enabled) { in srpt_cm_req_recv()
2385 mutex_unlock(&sport->mutex); in srpt_cm_req_recv()
2390 mutex_unlock(&sport->mutex); in srpt_cm_req_recv()
2439 mutex_lock(&sport->mutex); in srpt_cm_req_recv()
2440 if (sport->enabled && ch->state == CH_CONNECTING) { in srpt_cm_req_recv()
2448 mutex_unlock(&sport->mutex); in srpt_cm_req_recv()
2469 ch->sport->sdev, ch->rq_size, in srpt_cm_req_recv()
2477 ch->sport->sdev, ch->rq_size, in srpt_cm_req_recv()
2767 first_wr = rdma_rw_ctx_wrs(&ctx->rw, ch->qp, ch->sport->port, in srpt_write_pending()
2809 struct srpt_device *sdev = ch->sport->sdev; in srpt_queue_response()
2842 ch->sport->port, NULL, first_wr); in srpt_queue_response()
2938 struct srpt_port *sport = container_of(work, struct srpt_port, work); in srpt_refresh_port_work() local
2940 srpt_refresh_port(sport); in srpt_refresh_port_work()
2947 static int srpt_release_sport(struct srpt_port *sport) in srpt_release_sport() argument
2955 sport->freed_channels = &c; in srpt_release_sport()
2957 mutex_lock(&sport->mutex); in srpt_release_sport()
2958 srpt_set_enabled(sport, false); in srpt_release_sport()
2959 mutex_unlock(&sport->mutex); in srpt_release_sport()
2961 while (atomic_read(&sport->refcount) > 0 && in srpt_release_sport()
2964 dev_name(&sport->sdev->device->dev), sport->port, in srpt_release_sport()
2965 atomic_read(&sport->refcount)); in srpt_release_sport()
2967 list_for_each_entry(nexus, &sport->nexus_list, entry) { in srpt_release_sport()
2977 mutex_lock(&sport->mutex); in srpt_release_sport()
2978 list_for_each_entry_safe(nexus, next_n, &sport->nexus_list, entry) { in srpt_release_sport()
2982 mutex_unlock(&sport->mutex); in srpt_release_sport()
2988 struct srpt_port *sport; member
2996 struct srpt_port *sport; in __srpt_lookup_port() local
3005 sport = &sdev->port[i]; in __srpt_lookup_port()
3007 if (strcmp(sport->guid_name, name) == 0) { in __srpt_lookup_port()
3010 sport, &sport->guid_id}; in __srpt_lookup_port()
3012 if (strcmp(sport->gid_name, name) == 0) { in __srpt_lookup_port()
3015 sport, &sport->gid_id}; in __srpt_lookup_port()
3142 struct srpt_port *sport; in srpt_add_one() local
3207 sport = &sdev->port[i - 1]; in srpt_add_one()
3208 INIT_LIST_HEAD(&sport->nexus_list); in srpt_add_one()
3209 mutex_init(&sport->mutex); in srpt_add_one()
3210 sport->sdev = sdev; in srpt_add_one()
3211 sport->port = i; in srpt_add_one()
3212 sport->port_attrib.srp_max_rdma_size = DEFAULT_MAX_RDMA_SIZE; in srpt_add_one()
3213 sport->port_attrib.srp_max_rsp_size = DEFAULT_MAX_RSP_SIZE; in srpt_add_one()
3214 sport->port_attrib.srp_sq_size = DEF_SRPT_SQ_SIZE; in srpt_add_one()
3215 sport->port_attrib.use_srq = false; in srpt_add_one()
3216 INIT_WORK(&sport->work, srpt_refresh_port_work); in srpt_add_one()
3218 ret = srpt_refresh_port(sport); in srpt_add_one()
3315 struct srpt_port *sport = wwn->priv; in srpt_wwn_to_sport_id() local
3317 if (sport->guid_id && &sport->guid_id->wwn == wwn) in srpt_wwn_to_sport_id()
3318 return sport->guid_id; in srpt_wwn_to_sport_id()
3319 if (sport->gid_id && &sport->gid_id->wwn == wwn) in srpt_wwn_to_sport_id()
3320 return sport->gid_id; in srpt_wwn_to_sport_id()
3355 srpt_post_recv(ch->sport->sdev, ch, recv_ioctx); in srpt_release_cmd()
3482 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_srp_max_rdma_size_show() local
3484 return sysfs_emit(page, "%u\n", sport->port_attrib.srp_max_rdma_size); in srpt_tpg_attrib_srp_max_rdma_size_show()
3491 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_srp_max_rdma_size_store() local
3510 sport->port_attrib.srp_max_rdma_size = val; in srpt_tpg_attrib_srp_max_rdma_size_store()
3519 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_srp_max_rsp_size_show() local
3521 return sysfs_emit(page, "%u\n", sport->port_attrib.srp_max_rsp_size); in srpt_tpg_attrib_srp_max_rsp_size_show()
3528 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_srp_max_rsp_size_store() local
3547 sport->port_attrib.srp_max_rsp_size = val; in srpt_tpg_attrib_srp_max_rsp_size_store()
3556 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_srp_sq_size_show() local
3558 return sysfs_emit(page, "%u\n", sport->port_attrib.srp_sq_size); in srpt_tpg_attrib_srp_sq_size_show()
3565 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_srp_sq_size_store() local
3584 sport->port_attrib.srp_sq_size = val; in srpt_tpg_attrib_srp_sq_size_store()
3593 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_use_srq_show() local
3595 return sysfs_emit(page, "%d\n", sport->port_attrib.use_srq); in srpt_tpg_attrib_use_srq_show()
3602 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_use_srq_store() local
3603 struct srpt_device *sdev = sport->sdev; in srpt_tpg_attrib_use_srq_store()
3617 ret = mutex_lock_interruptible(&sport->mutex); in srpt_tpg_attrib_use_srq_store()
3620 enabled = sport->enabled; in srpt_tpg_attrib_use_srq_store()
3622 srpt_set_enabled(sport, false); in srpt_tpg_attrib_use_srq_store()
3623 sport->port_attrib.use_srq = val; in srpt_tpg_attrib_use_srq_store()
3624 srpt_use_srq(sdev, sport->port_attrib.use_srq); in srpt_tpg_attrib_use_srq_store()
3625 srpt_set_enabled(sport, enabled); in srpt_tpg_attrib_use_srq_store()
3627 mutex_unlock(&sport->mutex); in srpt_tpg_attrib_use_srq_store()
3738 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_enable_tpg() local
3740 mutex_lock(&sport->mutex); in srpt_enable_tpg()
3741 srpt_set_enabled(sport, enable); in srpt_enable_tpg()
3742 mutex_unlock(&sport->mutex); in srpt_enable_tpg()
3784 struct srpt_port *sport = srpt_tpg_to_sport(tpg); in srpt_drop_tpg() local
3790 sport->enabled = false; in srpt_drop_tpg()
3806 struct srpt_port *sport = papi.sport; in srpt_make_tport() local
3818 srpt_sdev_put(sport->sdev); in srpt_make_tport()
3823 port_id->wwn.priv = sport; in srpt_make_tport()
3824 memcpy(port_id->name, port_id == sport->guid_id ? sport->guid_name : in srpt_make_tport()
3825 sport->gid_name, ARRAY_SIZE(port_id->name)); in srpt_make_tport()
3839 struct srpt_port *sport = wwn->priv; in srpt_drop_tport() local
3841 if (sport->guid_id == port_id) in srpt_drop_tport()
3842 sport->guid_id = NULL; in srpt_drop_tport()
3843 else if (sport->gid_id == port_id) in srpt_drop_tport()
3844 sport->gid_id = NULL; in srpt_drop_tport()
3848 srpt_sdev_put(sport->sdev); in srpt_drop_tport()