Lines Matching refs:tpg
32 struct usbg_tpg *tpg; member
439 luns = atomic_read(&fu->tpg->tpg_port_count); in usbg_bot_setup()
1041 struct usbg_tpg *tpg; in usbg_cmd_work() local
1045 tpg = cmd->fu->tpg; in usbg_cmd_work()
1046 tv_nexus = tpg->tpg_nexus; in usbg_cmd_work()
1097 struct usbg_tpg *tpg = fu->tpg; in usbg_submit_command() local
1107 tv_nexus = tpg->tpg_nexus; in usbg_submit_command()
1158 queue_work(tpg->workqueue, &cmd->work); in usbg_submit_command()
1171 struct usbg_tpg *tpg; in bot_cmd_work() local
1175 tpg = cmd->fu->tpg; in bot_cmd_work()
1176 tv_nexus = tpg->tpg_nexus; in bot_cmd_work()
1204 struct usbg_tpg *tpg = fu->tpg; in bot_submit_command() local
1221 tv_nexus = tpg->tpg_nexus; in bot_submit_command()
1242 queue_work(tpg->workqueue, &cmd->work); in bot_submit_command()
1261 struct usbg_tpg *tpg = container_of(se_tpg, in usbg_get_fabric_wwn() local
1263 struct usbg_tport *tport = tpg->tport; in usbg_get_fabric_wwn()
1270 struct usbg_tpg *tpg = container_of(se_tpg, in usbg_get_tag() local
1272 return tpg->tport_tpgt; in usbg_get_tag()
1339 struct usbg_tpg *tpg; in usbg_make_tpg() local
1352 if (tpg_instances[i].func_inst && !tpg_instances[i].tpg) in usbg_make_tpg()
1374 tpg = kzalloc(sizeof(struct usbg_tpg), GFP_KERNEL); in usbg_make_tpg()
1376 if (!tpg) in usbg_make_tpg()
1378 mutex_init(&tpg->tpg_mutex); in usbg_make_tpg()
1379 atomic_set(&tpg->tpg_port_count, 0); in usbg_make_tpg()
1380 tpg->workqueue = alloc_workqueue("tcm_usb_gadget", 0, 1); in usbg_make_tpg()
1381 if (!tpg->workqueue) in usbg_make_tpg()
1384 tpg->tport = tport; in usbg_make_tpg()
1385 tpg->tport_tpgt = tpgt; in usbg_make_tpg()
1391 ret = core_tpg_register(wwn, &tpg->se_tpg, SCSI_PROTOCOL_SAS); in usbg_make_tpg()
1395 tpg_instances[i].tpg = tpg; in usbg_make_tpg()
1396 tpg->fi = tpg_instances[i].func_inst; in usbg_make_tpg()
1399 return &tpg->se_tpg; in usbg_make_tpg()
1402 destroy_workqueue(tpg->workqueue); in usbg_make_tpg()
1404 kfree(tpg); in usbg_make_tpg()
1422 struct usbg_tpg *tpg = container_of(se_tpg, in usbg_drop_tpg() local
1427 tcm_usbg_drop_nexus(tpg); in usbg_drop_tpg()
1429 destroy_workqueue(tpg->workqueue); in usbg_drop_tpg()
1433 if (tpg_instances[i].tpg == tpg) in usbg_drop_tpg()
1436 tpg_instances[i].tpg = NULL; in usbg_drop_tpg()
1449 kfree(tpg); in usbg_drop_tpg()
1499 struct usbg_tpg *tpg = container_of(se_tpg, struct usbg_tpg, se_tpg); in tcm_usbg_tpg_enable_show() local
1501 return snprintf(page, PAGE_SIZE, "%u\n", tpg->gadget_connect); in tcm_usbg_tpg_enable_show()
1511 struct usbg_tpg *tpg = container_of(se_tpg, struct usbg_tpg, se_tpg); in tcm_usbg_tpg_enable_store() local
1519 if ((op && tpg->gadget_connect) || (!op && !tpg->gadget_connect)) in tcm_usbg_tpg_enable_store()
1523 ret = usbg_attach(tpg); in tcm_usbg_tpg_enable_store()
1525 usbg_detach(tpg); in tcm_usbg_tpg_enable_store()
1529 tpg->gadget_connect = op; in tcm_usbg_tpg_enable_store()
1537 struct usbg_tpg *tpg = container_of(se_tpg, struct usbg_tpg, se_tpg); in tcm_usbg_tpg_nexus_show() local
1541 mutex_lock(&tpg->tpg_mutex); in tcm_usbg_tpg_nexus_show()
1542 tv_nexus = tpg->tpg_nexus; in tcm_usbg_tpg_nexus_show()
1550 mutex_unlock(&tpg->tpg_mutex); in tcm_usbg_tpg_nexus_show()
1557 struct usbg_tpg *tpg = container_of(se_tpg, in usbg_alloc_sess_cb() local
1560 tpg->tpg_nexus = p; in usbg_alloc_sess_cb()
1564 static int tcm_usbg_make_nexus(struct usbg_tpg *tpg, char *name) in tcm_usbg_make_nexus() argument
1569 mutex_lock(&tpg->tpg_mutex); in tcm_usbg_make_nexus()
1570 if (tpg->tpg_nexus) { in tcm_usbg_make_nexus()
1582 tv_nexus->tvn_se_sess = target_setup_session(&tpg->se_tpg, in tcm_usbg_make_nexus()
1596 mutex_unlock(&tpg->tpg_mutex); in tcm_usbg_make_nexus()
1600 static int tcm_usbg_drop_nexus(struct usbg_tpg *tpg) in tcm_usbg_drop_nexus() argument
1606 mutex_lock(&tpg->tpg_mutex); in tcm_usbg_drop_nexus()
1607 tv_nexus = tpg->tpg_nexus; in tcm_usbg_drop_nexus()
1615 if (atomic_read(&tpg->tpg_port_count)) { in tcm_usbg_drop_nexus()
1618 pr_err(MSG, atomic_read(&tpg->tpg_port_count)); in tcm_usbg_drop_nexus()
1629 tpg->tpg_nexus = NULL; in tcm_usbg_drop_nexus()
1634 mutex_unlock(&tpg->tpg_mutex); in tcm_usbg_drop_nexus()
1642 struct usbg_tpg *tpg = container_of(se_tpg, struct usbg_tpg, se_tpg); in tcm_usbg_tpg_nexus_store() local
1647 ret = tcm_usbg_drop_nexus(tpg); in tcm_usbg_tpg_nexus_store()
1668 ret = tcm_usbg_make_nexus(tpg, &i_port[0]); in tcm_usbg_tpg_nexus_store()
1685 struct usbg_tpg *tpg = container_of(se_tpg, struct usbg_tpg, se_tpg); in usbg_port_link() local
1687 atomic_inc(&tpg->tpg_port_count); in usbg_port_link()
1695 struct usbg_tpg *tpg = container_of(se_tpg, struct usbg_tpg, se_tpg); in usbg_port_unlink() local
1697 atomic_dec(&tpg->tpg_port_count); in usbg_port_unlink()
2199 static int usbg_attach(struct usbg_tpg *tpg) in usbg_attach() argument
2201 struct usb_function_instance *f = tpg->fi; in usbg_attach()
2210 static void usbg_detach(struct usbg_tpg *tpg) in usbg_detach() argument
2212 struct usb_function_instance *f = tpg->fi; in usbg_detach()
2306 fu->tpg = tpg_instances[i].tpg; in tcm_alloc()