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()
1625 ib_dma_sync_single_for_cpu(ch->sport->sdev->device, in srpt_handle_new_iu()
1668 srpt_post_recv(ch->sport->sdev, ch, recv_ioctx); in srpt_handle_new_iu()
1778 struct srpt_port *sport = ch->sport; in srpt_create_ch_ib() local
1779 struct srpt_device *sdev = sport->sdev; in srpt_create_ch_ib()
1781 int sq_size = sport->port_attrib.srp_sq_size; in srpt_create_ch_ib()
1820 qp_init->port_num = ch->sport->port; in srpt_create_ch_ib()
1956 struct srpt_port *sport = ch->sport; in srpt_disconnect_ch_sync() local
1963 mutex_lock(&sport->mutex); in srpt_disconnect_ch_sync()
1965 mutex_unlock(&sport->mutex); in srpt_disconnect_ch_sync()
1973 static void __srpt_close_all_ch(struct srpt_port *sport) in __srpt_close_all_ch() argument
1978 lockdep_assert_held(&sport->mutex); in __srpt_close_all_ch()
1980 list_for_each_entry(nexus, &sport->nexus_list, entry) { in __srpt_close_all_ch()
1985 dev_name(&sport->sdev->device->dev), in __srpt_close_all_ch()
1986 sport->port); in __srpt_close_all_ch()
1996 static struct srpt_nexus *srpt_get_nexus(struct srpt_port *sport, in srpt_get_nexus() argument
2003 mutex_lock(&sport->mutex); in srpt_get_nexus()
2004 list_for_each_entry(n, &sport->nexus_list, entry) { in srpt_get_nexus()
2013 &sport->nexus_list); in srpt_get_nexus()
2016 mutex_unlock(&sport->mutex); in srpt_get_nexus()
2035 static void srpt_set_enabled(struct srpt_port *sport, bool enabled) in srpt_set_enabled() argument
2036 __must_hold(&sport->mutex) in srpt_set_enabled()
2038 lockdep_assert_held(&sport->mutex); in srpt_set_enabled()
2040 if (sport->enabled == enabled) in srpt_set_enabled()
2042 sport->enabled = enabled; in srpt_set_enabled()
2044 __srpt_close_all_ch(sport); in srpt_set_enabled()
2047 static void srpt_drop_sport_ref(struct srpt_port *sport) in srpt_drop_sport_ref() argument
2049 if (atomic_dec_return(&sport->refcount) == 0 && sport->freed_channels) in srpt_drop_sport_ref()
2050 complete(sport->freed_channels); in srpt_drop_sport_ref()
2057 srpt_drop_sport_ref(ch->sport); in srpt_free_ch()
2073 struct srpt_port *sport; in srpt_release_channel_work() local
2079 sdev = ch->sport->sdev; in srpt_release_channel_work()
2096 sport = ch->sport; in srpt_release_channel_work()
2097 mutex_lock(&sport->mutex); in srpt_release_channel_work()
2099 mutex_unlock(&sport->mutex); in srpt_release_channel_work()
2107 ch->sport->sdev, ch->rq_size, in srpt_release_channel_work()
2142 struct srpt_port *sport = &sdev->port[port_num - 1]; in srpt_cm_req_recv() local
2162 port_num, &sport->gid, be16_to_cpu(pkey)); in srpt_cm_req_recv()
2164 nexus = srpt_get_nexus(sport, req->initiator_port_id, in srpt_cm_req_recv()
2187 if (!sport->enabled) { in srpt_cm_req_recv()
2190 dev_name(&sport->sdev->device->dev), port_num); in srpt_cm_req_recv()
2216 ch->sport = sport; in srpt_cm_req_recv()
2234 ch->max_rsp_size = ch->sport->port_attrib.srp_max_rsp_size; in srpt_cm_req_recv()
2242 srpt_alloc_ioctx_ring(ch->sport->sdev, ch->rq_size, in srpt_cm_req_recv()
2277 srpt_alloc_ioctx_ring(ch->sport->sdev, ch->rq_size, in srpt_cm_req_recv()
2310 if (sport->guid_id) { in srpt_cm_req_recv()
2311 mutex_lock(&sport->guid_id->mutex); in srpt_cm_req_recv()
2312 list_for_each_entry(stpg, &sport->guid_id->tpg_list, entry) { in srpt_cm_req_recv()
2319 mutex_unlock(&sport->guid_id->mutex); in srpt_cm_req_recv()
2322 if (sport->gid_id) { in srpt_cm_req_recv()
2323 mutex_lock(&sport->gid_id->mutex); in srpt_cm_req_recv()
2324 list_for_each_entry(stpg, &sport->gid_id->tpg_list, entry) { in srpt_cm_req_recv()
2337 mutex_unlock(&sport->gid_id->mutex); in srpt_cm_req_recv()
2356 atomic_inc(&sport->refcount); in srpt_cm_req_recv()
2358 mutex_lock(&sport->mutex); in srpt_cm_req_recv()
2376 if (!sport->enabled) { in srpt_cm_req_recv()
2381 mutex_unlock(&sport->mutex); in srpt_cm_req_recv()
2386 mutex_unlock(&sport->mutex); in srpt_cm_req_recv()
2435 mutex_lock(&sport->mutex); in srpt_cm_req_recv()
2436 if (sport->enabled && ch->state == CH_CONNECTING) { in srpt_cm_req_recv()
2444 mutex_unlock(&sport->mutex); in srpt_cm_req_recv()
2465 ch->sport->sdev, ch->rq_size, in srpt_cm_req_recv()
2473 ch->sport->sdev, ch->rq_size, in srpt_cm_req_recv()
2763 first_wr = rdma_rw_ctx_wrs(&ctx->rw, ch->qp, ch->sport->port, in srpt_write_pending()
2805 struct srpt_device *sdev = ch->sport->sdev; in srpt_queue_response()
2838 ch->sport->port, NULL, first_wr); in srpt_queue_response()
2935 struct srpt_port *sport = container_of(work, struct srpt_port, work); in srpt_refresh_port_work() local
2937 srpt_refresh_port(sport); in srpt_refresh_port_work()
2944 static int srpt_release_sport(struct srpt_port *sport) in srpt_release_sport() argument
2952 sport->freed_channels = &c; in srpt_release_sport()
2954 mutex_lock(&sport->mutex); in srpt_release_sport()
2955 srpt_set_enabled(sport, false); in srpt_release_sport()
2956 mutex_unlock(&sport->mutex); in srpt_release_sport()
2958 while (atomic_read(&sport->refcount) > 0 && in srpt_release_sport()
2961 dev_name(&sport->sdev->device->dev), sport->port, in srpt_release_sport()
2962 atomic_read(&sport->refcount)); in srpt_release_sport()
2964 list_for_each_entry(nexus, &sport->nexus_list, entry) { in srpt_release_sport()
2974 mutex_lock(&sport->mutex); in srpt_release_sport()
2975 list_for_each_entry_safe(nexus, next_n, &sport->nexus_list, entry) { in srpt_release_sport()
2979 mutex_unlock(&sport->mutex); in srpt_release_sport()
2985 struct srpt_port *sport; member
2993 struct srpt_port *sport; in __srpt_lookup_port() local
3002 sport = &sdev->port[i]; in __srpt_lookup_port()
3004 if (strcmp(sport->guid_name, name) == 0) { in __srpt_lookup_port()
3007 sport, &sport->guid_id}; in __srpt_lookup_port()
3009 if (strcmp(sport->gid_name, name) == 0) { in __srpt_lookup_port()
3012 sport, &sport->gid_id}; in __srpt_lookup_port()
3139 struct srpt_port *sport; in srpt_add_one() local
3203 sport = &sdev->port[i - 1]; in srpt_add_one()
3204 INIT_LIST_HEAD(&sport->nexus_list); in srpt_add_one()
3205 mutex_init(&sport->mutex); in srpt_add_one()
3206 sport->sdev = sdev; in srpt_add_one()
3207 sport->port = i; in srpt_add_one()
3208 sport->port_attrib.srp_max_rdma_size = DEFAULT_MAX_RDMA_SIZE; in srpt_add_one()
3209 sport->port_attrib.srp_max_rsp_size = DEFAULT_MAX_RSP_SIZE; in srpt_add_one()
3210 sport->port_attrib.srp_sq_size = DEF_SRPT_SQ_SIZE; in srpt_add_one()
3211 sport->port_attrib.use_srq = false; in srpt_add_one()
3212 INIT_WORK(&sport->work, srpt_refresh_port_work); in srpt_add_one()
3214 ret = srpt_refresh_port(sport); in srpt_add_one()
3311 struct srpt_port *sport = wwn->priv; in srpt_wwn_to_sport_id() local
3313 if (sport->guid_id && &sport->guid_id->wwn == wwn) in srpt_wwn_to_sport_id()
3314 return sport->guid_id; in srpt_wwn_to_sport_id()
3315 if (sport->gid_id && &sport->gid_id->wwn == wwn) in srpt_wwn_to_sport_id()
3316 return sport->gid_id; in srpt_wwn_to_sport_id()
3351 srpt_post_recv(ch->sport->sdev, ch, recv_ioctx); in srpt_release_cmd()
3478 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_srp_max_rdma_size_show() local
3480 return sprintf(page, "%u\n", sport->port_attrib.srp_max_rdma_size); in srpt_tpg_attrib_srp_max_rdma_size_show()
3487 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_srp_max_rdma_size_store() local
3506 sport->port_attrib.srp_max_rdma_size = val; in srpt_tpg_attrib_srp_max_rdma_size_store()
3515 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_srp_max_rsp_size_show() local
3517 return sprintf(page, "%u\n", sport->port_attrib.srp_max_rsp_size); in srpt_tpg_attrib_srp_max_rsp_size_show()
3524 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_srp_max_rsp_size_store() local
3543 sport->port_attrib.srp_max_rsp_size = val; in srpt_tpg_attrib_srp_max_rsp_size_store()
3552 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_srp_sq_size_show() local
3554 return sprintf(page, "%u\n", sport->port_attrib.srp_sq_size); in srpt_tpg_attrib_srp_sq_size_show()
3561 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_srp_sq_size_store() local
3580 sport->port_attrib.srp_sq_size = val; in srpt_tpg_attrib_srp_sq_size_store()
3589 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_use_srq_show() local
3591 return sprintf(page, "%d\n", sport->port_attrib.use_srq); in srpt_tpg_attrib_use_srq_show()
3598 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_attrib_use_srq_store() local
3599 struct srpt_device *sdev = sport->sdev; in srpt_tpg_attrib_use_srq_store()
3613 ret = mutex_lock_interruptible(&sport->mutex); in srpt_tpg_attrib_use_srq_store()
3616 enabled = sport->enabled; in srpt_tpg_attrib_use_srq_store()
3618 srpt_set_enabled(sport, false); in srpt_tpg_attrib_use_srq_store()
3619 sport->port_attrib.use_srq = val; in srpt_tpg_attrib_use_srq_store()
3620 srpt_use_srq(sdev, sport->port_attrib.use_srq); in srpt_tpg_attrib_use_srq_store()
3621 srpt_set_enabled(sport, enabled); in srpt_tpg_attrib_use_srq_store()
3623 mutex_unlock(&sport->mutex); in srpt_tpg_attrib_use_srq_store()
3735 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_enable_show() local
3737 return snprintf(page, PAGE_SIZE, "%d\n", sport->enabled); in srpt_tpg_enable_show()
3744 struct srpt_port *sport = srpt_tpg_to_sport(se_tpg); in srpt_tpg_enable_store() local
3759 mutex_lock(&sport->mutex); in srpt_tpg_enable_store()
3760 srpt_set_enabled(sport, tmp); in srpt_tpg_enable_store()
3761 mutex_unlock(&sport->mutex); in srpt_tpg_enable_store()
3810 struct srpt_port *sport = srpt_tpg_to_sport(tpg); in srpt_drop_tpg() local
3816 sport->enabled = false; in srpt_drop_tpg()
3832 struct srpt_port *sport = papi.sport; in srpt_make_tport() local
3844 srpt_sdev_put(sport->sdev); in srpt_make_tport()
3849 port_id->wwn.priv = sport; in srpt_make_tport()
3850 memcpy(port_id->name, port_id == sport->guid_id ? sport->guid_name : in srpt_make_tport()
3851 sport->gid_name, ARRAY_SIZE(port_id->name)); in srpt_make_tport()
3865 struct srpt_port *sport = wwn->priv; in srpt_drop_tport() local
3867 if (sport->guid_id == port_id) in srpt_drop_tport()
3868 sport->guid_id = NULL; in srpt_drop_tport()
3869 else if (sport->gid_id == port_id) in srpt_drop_tport()
3870 sport->gid_id = NULL; in srpt_drop_tport()
3874 srpt_sdev_put(sport->sdev); in srpt_drop_tport()