Lines Matching refs:tcp_ses
1698 struct TCP_Server_Info *tcp_ses = NULL; in cifs_get_tcp_session() local
1704 tcp_ses = cifs_find_tcp_session(ctx); in cifs_get_tcp_session()
1705 if (tcp_ses) in cifs_get_tcp_session()
1706 return tcp_ses; in cifs_get_tcp_session()
1708 tcp_ses = kzalloc(sizeof(struct TCP_Server_Info), GFP_KERNEL); in cifs_get_tcp_session()
1709 if (!tcp_ses) { in cifs_get_tcp_session()
1714 tcp_ses->hostname = kstrdup(ctx->server_hostname, GFP_KERNEL); in cifs_get_tcp_session()
1715 if (!tcp_ses->hostname) { in cifs_get_tcp_session()
1721 tcp_ses->leaf_fullpath = kstrdup(ctx->leaf_fullpath, GFP_KERNEL); in cifs_get_tcp_session()
1722 if (!tcp_ses->leaf_fullpath) { in cifs_get_tcp_session()
1729 tcp_ses->nosharesock = true; in cifs_get_tcp_session()
1731 tcp_ses->ops = ctx->ops; in cifs_get_tcp_session()
1732 tcp_ses->vals = ctx->vals; in cifs_get_tcp_session()
1735 cifs_set_net_ns(tcp_ses, get_net(current->nsproxy->net_ns)); in cifs_get_tcp_session()
1737 tcp_ses->conn_id = atomic_inc_return(&tcpSesNextId); in cifs_get_tcp_session()
1738 tcp_ses->noblockcnt = ctx->rootfs; in cifs_get_tcp_session()
1739 tcp_ses->noblocksnd = ctx->noblocksnd || ctx->rootfs; in cifs_get_tcp_session()
1740 tcp_ses->noautotune = ctx->noautotune; in cifs_get_tcp_session()
1741 tcp_ses->tcp_nodelay = ctx->sockopt_tcp_nodelay; in cifs_get_tcp_session()
1742 tcp_ses->rdma = ctx->rdma; in cifs_get_tcp_session()
1743 tcp_ses->in_flight = 0; in cifs_get_tcp_session()
1744 tcp_ses->max_in_flight = 0; in cifs_get_tcp_session()
1745 tcp_ses->credits = 1; in cifs_get_tcp_session()
1750 tcp_ses->primary_server = primary_server; in cifs_get_tcp_session()
1752 init_waitqueue_head(&tcp_ses->response_q); in cifs_get_tcp_session()
1753 init_waitqueue_head(&tcp_ses->request_q); in cifs_get_tcp_session()
1754 INIT_LIST_HEAD(&tcp_ses->pending_mid_q); in cifs_get_tcp_session()
1755 mutex_init(&tcp_ses->_srv_mutex); in cifs_get_tcp_session()
1756 memcpy(tcp_ses->workstation_RFC1001_name, in cifs_get_tcp_session()
1758 memcpy(tcp_ses->server_RFC1001_name, in cifs_get_tcp_session()
1760 tcp_ses->session_estab = false; in cifs_get_tcp_session()
1761 tcp_ses->sequence_number = 0; in cifs_get_tcp_session()
1762 tcp_ses->channel_sequence_num = 0; /* only tracked for primary channel */ in cifs_get_tcp_session()
1763 tcp_ses->reconnect_instance = 1; in cifs_get_tcp_session()
1764 tcp_ses->lstrp = jiffies; in cifs_get_tcp_session()
1765 tcp_ses->compression.requested = ctx->compress; in cifs_get_tcp_session()
1766 spin_lock_init(&tcp_ses->req_lock); in cifs_get_tcp_session()
1767 spin_lock_init(&tcp_ses->srv_lock); in cifs_get_tcp_session()
1768 spin_lock_init(&tcp_ses->mid_lock); in cifs_get_tcp_session()
1769 INIT_LIST_HEAD(&tcp_ses->tcp_ses_list); in cifs_get_tcp_session()
1770 INIT_LIST_HEAD(&tcp_ses->smb_ses_list); in cifs_get_tcp_session()
1771 INIT_DELAYED_WORK(&tcp_ses->echo, cifs_echo_request); in cifs_get_tcp_session()
1772 INIT_DELAYED_WORK(&tcp_ses->reconnect, smb2_reconnect_server); in cifs_get_tcp_session()
1773 mutex_init(&tcp_ses->reconnect_mutex); in cifs_get_tcp_session()
1775 mutex_init(&tcp_ses->refpath_lock); in cifs_get_tcp_session()
1777 memcpy(&tcp_ses->srcaddr, &ctx->srcaddr, in cifs_get_tcp_session()
1778 sizeof(tcp_ses->srcaddr)); in cifs_get_tcp_session()
1779 memcpy(&tcp_ses->dstaddr, &ctx->dstaddr, in cifs_get_tcp_session()
1780 sizeof(tcp_ses->dstaddr)); in cifs_get_tcp_session()
1782 memcpy(tcp_ses->client_guid, ctx->client_guid, in cifs_get_tcp_session()
1785 generate_random_uuid(tcp_ses->client_guid); in cifs_get_tcp_session()
1791 tcp_ses->tcpStatus = CifsNew; in cifs_get_tcp_session()
1792 ++tcp_ses->srv_count; in cifs_get_tcp_session()
1796 tcp_ses->echo_interval = ctx->echo_interval * HZ; in cifs_get_tcp_session()
1798 tcp_ses->echo_interval = SMB_ECHO_INTERVAL_DEFAULT * HZ; in cifs_get_tcp_session()
1799 if (tcp_ses->rdma) { in cifs_get_tcp_session()
1805 tcp_ses->smbd_conn = smbd_get_connection( in cifs_get_tcp_session()
1806 tcp_ses, (struct sockaddr *)&ctx->dstaddr); in cifs_get_tcp_session()
1807 if (tcp_ses->smbd_conn) { in cifs_get_tcp_session()
1816 rc = ip_connect(tcp_ses); in cifs_get_tcp_session()
1827 tcp_ses->tsk = kthread_run(cifs_demultiplex_thread, in cifs_get_tcp_session()
1828 tcp_ses, "cifsd"); in cifs_get_tcp_session()
1829 if (IS_ERR(tcp_ses->tsk)) { in cifs_get_tcp_session()
1830 rc = PTR_ERR(tcp_ses->tsk); in cifs_get_tcp_session()
1835 tcp_ses->min_offload = ctx->min_offload; in cifs_get_tcp_session()
1836 tcp_ses->retrans = ctx->retrans; in cifs_get_tcp_session()
1842 spin_lock(&tcp_ses->srv_lock); in cifs_get_tcp_session()
1843 tcp_ses->tcpStatus = CifsNeedNegotiate; in cifs_get_tcp_session()
1844 spin_unlock(&tcp_ses->srv_lock); in cifs_get_tcp_session()
1847 tcp_ses->max_credits = SMB2_MAX_CREDITS_AVAILABLE; in cifs_get_tcp_session()
1849 tcp_ses->max_credits = ctx->max_credits; in cifs_get_tcp_session()
1851 tcp_ses->nr_targets = 1; in cifs_get_tcp_session()
1852 tcp_ses->ignore_signature = ctx->ignore_signature; in cifs_get_tcp_session()
1855 list_add(&tcp_ses->tcp_ses_list, &cifs_tcp_ses_list); in cifs_get_tcp_session()
1859 queue_delayed_work(cifsiod_wq, &tcp_ses->echo, tcp_ses->echo_interval); in cifs_get_tcp_session()
1861 return tcp_ses; in cifs_get_tcp_session()
1864 cifs_crypto_secmech_release(tcp_ses); in cifs_get_tcp_session()
1867 put_net(cifs_net_ns(tcp_ses)); in cifs_get_tcp_session()
1870 if (tcp_ses) { in cifs_get_tcp_session()
1871 if (SERVER_IS_CHAN(tcp_ses)) in cifs_get_tcp_session()
1872 cifs_put_tcp_session(tcp_ses->primary_server, false); in cifs_get_tcp_session()
1873 kfree(tcp_ses->hostname); in cifs_get_tcp_session()
1874 kfree(tcp_ses->leaf_fullpath); in cifs_get_tcp_session()
1875 if (tcp_ses->ssocket) { in cifs_get_tcp_session()
1876 sock_release(tcp_ses->ssocket); in cifs_get_tcp_session()
1877 put_net(cifs_net_ns(tcp_ses)); in cifs_get_tcp_session()
1879 kfree(tcp_ses); in cifs_get_tcp_session()