Lines Matching refs:iucv

151 	struct iucv_sock *iucv;  in afiucv_pm_freeze()  local
159 iucv = iucv_sk(sk); in afiucv_pm_freeze()
173 skb_queue_purge(&iucv->send_skb_q); in afiucv_pm_freeze()
174 skb_queue_purge(&iucv->backlog_skb_q); in afiucv_pm_freeze()
286 struct iucv_sock *iucv = iucv_sk(sk); in iucv_below_msglim() local
290 if (iucv->transport == AF_IUCV_TRANS_IUCV) in iucv_below_msglim()
291 return (skb_queue_len(&iucv->send_skb_q) < iucv->path->msglim); in iucv_below_msglim()
293 return ((atomic_read(&iucv->msg_sent) < iucv->msglimit_peer) && in iucv_below_msglim()
294 (atomic_read(&iucv->pendings) <= 0)); in iucv_below_msglim()
318 struct iucv_sock *iucv = iucv_sk(sock); in afiucv_hs_send() local
335 phs_hdr->window = iucv->msglimit; in afiucv_hs_send()
337 confirm_recv = atomic_read(&iucv->msg_recv); in afiucv_hs_send()
342 memcpy(phs_hdr->destUserID, iucv->dst_user_id, 8); in afiucv_hs_send()
343 memcpy(phs_hdr->destAppName, iucv->dst_name, 8); in afiucv_hs_send()
344 memcpy(phs_hdr->srcUserID, iucv->src_user_id, 8); in afiucv_hs_send()
345 memcpy(phs_hdr->srcAppName, iucv->src_name, 8); in afiucv_hs_send()
353 skb->dev = iucv->hs_dev; in afiucv_hs_send()
376 skb_queue_tail(&iucv->send_skb_q, nskb); in afiucv_hs_send()
379 skb_unlink(nskb, &iucv->send_skb_q); in afiucv_hs_send()
382 atomic_sub(confirm_recv, &iucv->msg_recv); in afiucv_hs_send()
383 WARN_ON(atomic_read(&iucv->msg_recv) < 0); in afiucv_hs_send()
450 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sever_path() local
451 struct iucv_path *path = iucv->path; in iucv_sever_path()
453 if (iucv->path) { in iucv_sever_path()
454 iucv->path = NULL; in iucv_sever_path()
456 low_nmcpy(user_data, iucv->src_name); in iucv_sever_path()
457 high_nmcpy(user_data, iucv->dst_name); in iucv_sever_path()
493 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_close() local
505 if (iucv->transport == AF_IUCV_TRANS_HIPER) { in iucv_sock_close()
514 if (!err && !skb_queue_empty(&iucv->send_skb_q)) { in iucv_sock_close()
531 skb_queue_purge(&iucv->send_skb_q); in iucv_sock_close()
532 skb_queue_purge(&iucv->backlog_skb_q); in iucv_sock_close()
538 if (iucv->hs_dev) { in iucv_sock_close()
539 dev_put(iucv->hs_dev); in iucv_sock_close()
540 iucv->hs_dev = NULL; in iucv_sock_close()
561 struct iucv_sock *iucv; in iucv_sock_alloc() local
566 iucv = iucv_sk(sk); in iucv_sock_alloc()
569 INIT_LIST_HEAD(&iucv->accept_q); in iucv_sock_alloc()
570 spin_lock_init(&iucv->accept_q_lock); in iucv_sock_alloc()
571 skb_queue_head_init(&iucv->send_skb_q); in iucv_sock_alloc()
572 INIT_LIST_HEAD(&iucv->message_q.list); in iucv_sock_alloc()
573 spin_lock_init(&iucv->message_q.lock); in iucv_sock_alloc()
574 skb_queue_head_init(&iucv->backlog_skb_q); in iucv_sock_alloc()
575 iucv->send_tag = 0; in iucv_sock_alloc()
576 atomic_set(&iucv->pendings, 0); in iucv_sock_alloc()
577 iucv->flags = 0; in iucv_sock_alloc()
578 iucv->msglimit = 0; in iucv_sock_alloc()
579 atomic_set(&iucv->msg_sent, 0); in iucv_sock_alloc()
580 atomic_set(&iucv->msg_recv, 0); in iucv_sock_alloc()
581 iucv->path = NULL; in iucv_sock_alloc()
582 iucv->sk_txnotify = afiucv_hs_callback_txnotify; in iucv_sock_alloc()
583 memset(&iucv->src_user_id , 0, 32); in iucv_sock_alloc()
585 iucv->transport = AF_IUCV_TRANS_IUCV; in iucv_sock_alloc()
587 iucv->transport = AF_IUCV_TRANS_HIPER; in iucv_sock_alloc()
705 static void __iucv_auto_name(struct iucv_sock *iucv) in __iucv_auto_name() argument
714 memcpy(iucv->src_name, name, 8); in __iucv_auto_name()
723 struct iucv_sock *iucv; in iucv_sock_bind() local
741 iucv = iucv_sk(sk); in iucv_sock_bind()
746 if (iucv->path) in iucv_sock_bind()
760 memcpy(iucv->src_user_id, sa->siucv_user_id, 8); in iucv_sock_bind()
763 __iucv_auto_name(iucv); in iucv_sock_bind()
765 memcpy(iucv->src_name, sa->siucv_name, 8); in iucv_sock_bind()
767 iucv->hs_dev = dev; in iucv_sock_bind()
770 iucv->transport = AF_IUCV_TRANS_HIPER; in iucv_sock_bind()
771 if (!iucv->msglimit) in iucv_sock_bind()
772 iucv->msglimit = IUCV_HIPER_MSGLIM_DEFAULT; in iucv_sock_bind()
781 memcpy(iucv->src_name, sa->siucv_name, 8); in iucv_sock_bind()
782 memcpy(iucv->src_user_id, iucv_userid, 8); in iucv_sock_bind()
784 iucv->transport = AF_IUCV_TRANS_IUCV; in iucv_sock_bind()
785 if (!iucv->msglimit) in iucv_sock_bind()
786 iucv->msglimit = IUCV_QUEUELEN_DEFAULT; in iucv_sock_bind()
802 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_autobind() local
808 memcpy(iucv->src_user_id, iucv_userid, 8); in iucv_sock_autobind()
811 __iucv_auto_name(iucv); in iucv_sock_autobind()
814 if (!iucv->msglimit) in iucv_sock_autobind()
815 iucv->msglimit = IUCV_QUEUELEN_DEFAULT; in iucv_sock_autobind()
824 struct iucv_sock *iucv = iucv_sk(sk); in afiucv_path_connect() local
829 low_nmcpy(user_data, iucv->src_name); in afiucv_path_connect()
833 iucv->path = iucv_path_alloc(iucv->msglimit, in afiucv_path_connect()
835 if (!iucv->path) { in afiucv_path_connect()
839 err = pr_iucv->path_connect(iucv->path, &af_iucv_handler, in afiucv_path_connect()
843 iucv_path_free(iucv->path); in afiucv_path_connect()
844 iucv->path = NULL; in afiucv_path_connect()
871 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_connect() local
881 iucv->transport == AF_IUCV_TRANS_HIPER) in iucv_sock_connect()
896 memcpy(iucv->dst_user_id, sa->siucv_user_id, 8); in iucv_sock_connect()
897 memcpy(iucv->dst_name, sa->siucv_name, 8); in iucv_sock_connect()
899 if (iucv->transport == AF_IUCV_TRANS_HIPER) in iucv_sock_connect()
914 if (err && iucv->transport == AF_IUCV_TRANS_IUCV) in iucv_sock_connect()
1007 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_getname() local
1012 memcpy(siucv->siucv_user_id, iucv->dst_user_id, 8); in iucv_sock_getname()
1013 memcpy(siucv->siucv_name, iucv->dst_name, 8); in iucv_sock_getname()
1015 memcpy(siucv->siucv_user_id, iucv->src_user_id, 8); in iucv_sock_getname()
1016 memcpy(siucv->siucv_name, iucv->src_name, 8); in iucv_sock_getname()
1053 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_sendmsg() local
1133 if (iucv->transport == AF_IUCV_TRANS_HIPER) { in iucv_sock_sendmsg()
1174 txmsg.tag = iucv->send_tag++; in iucv_sock_sendmsg()
1177 if (iucv->transport == AF_IUCV_TRANS_HIPER) { in iucv_sock_sendmsg()
1178 atomic_inc(&iucv->msg_sent); in iucv_sock_sendmsg()
1181 atomic_dec(&iucv->msg_sent); in iucv_sock_sendmsg()
1185 skb_queue_tail(&iucv->send_skb_q, skb); in iucv_sock_sendmsg()
1187 if (((iucv->path->flags & IUCV_IPRMDATA) & iucv->flags) && in iucv_sock_sendmsg()
1189 err = iucv_send_iprm(iucv->path, &txmsg, skb); in iucv_sock_sendmsg()
1194 skb_unlink(skb, &iucv->send_skb_q); in iucv_sock_sendmsg()
1201 pr_iucv->path_sever(iucv->path, NULL); in iucv_sock_sendmsg()
1202 skb_unlink(skb, &iucv->send_skb_q); in iucv_sock_sendmsg()
1220 err = pr_iucv->message_send(iucv->path, &txmsg, in iucv_sock_sendmsg()
1224 err = pr_iucv->message_send(iucv->path, &txmsg, in iucv_sock_sendmsg()
1230 memcpy(user_id, iucv->dst_user_id, 8); in iucv_sock_sendmsg()
1232 memcpy(appl_id, iucv->dst_name, 8); in iucv_sock_sendmsg()
1240 skb_unlink(skb, &iucv->send_skb_q); in iucv_sock_sendmsg()
1351 struct iucv_sock *iucv = iucv_sk(sk); in iucv_process_message_q() local
1355 list_for_each_entry_safe(p, n, &iucv->message_q.list, list) { in iucv_process_message_q()
1362 if (!skb_queue_empty(&iucv->backlog_skb_q)) in iucv_process_message_q()
1372 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_recvmsg() local
1379 skb_queue_empty(&iucv->backlog_skb_q) && in iucv_sock_recvmsg()
1381 list_empty(&iucv->message_q.list)) in iucv_sock_recvmsg()
1442 if (iucv->transport == AF_IUCV_TRANS_HIPER) { in iucv_sock_recvmsg()
1443 atomic_inc(&iucv->msg_recv); in iucv_sock_recvmsg()
1444 if (atomic_read(&iucv->msg_recv) > iucv->msglimit) { in iucv_sock_recvmsg()
1452 spin_lock_bh(&iucv->message_q.lock); in iucv_sock_recvmsg()
1453 rskb = skb_dequeue(&iucv->backlog_skb_q); in iucv_sock_recvmsg()
1458 skb_queue_head(&iucv->backlog_skb_q, in iucv_sock_recvmsg()
1462 rskb = skb_dequeue(&iucv->backlog_skb_q); in iucv_sock_recvmsg()
1464 if (skb_queue_empty(&iucv->backlog_skb_q)) { in iucv_sock_recvmsg()
1465 if (!list_empty(&iucv->message_q.list)) in iucv_sock_recvmsg()
1467 if (atomic_read(&iucv->msg_recv) >= in iucv_sock_recvmsg()
1468 iucv->msglimit / 2) { in iucv_sock_recvmsg()
1476 spin_unlock_bh(&iucv->message_q.lock); in iucv_sock_recvmsg()
1544 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_shutdown() local
1566 if (iucv->transport == AF_IUCV_TRANS_IUCV) { in iucv_sock_shutdown()
1569 err = pr_iucv->message_send(iucv->path, &txmsg, in iucv_sock_shutdown()
1590 if ((iucv->transport == AF_IUCV_TRANS_IUCV) && in iucv_sock_shutdown()
1591 iucv->path) { in iucv_sock_shutdown()
1592 err = pr_iucv->path_quiesce(iucv->path, NULL); in iucv_sock_shutdown()
1628 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_setsockopt() local
1647 iucv->flags |= IUCV_IPRMDATA; in iucv_sock_setsockopt()
1649 iucv->flags &= ~IUCV_IPRMDATA; in iucv_sock_setsockopt()
1658 iucv->msglimit = val; in iucv_sock_setsockopt()
1678 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_getsockopt() local
1695 val = (iucv->flags & IUCV_IPRMDATA) ? 1 : 0; in iucv_sock_getsockopt()
1699 val = (iucv->path != NULL) ? iucv->path->msglim /* connected */ in iucv_sock_getsockopt()
1700 : iucv->msglimit; /* default */ in iucv_sock_getsockopt()
1706 val = (iucv->hs_dev) ? iucv->hs_dev->mtu - in iucv_sock_getsockopt()
1731 struct iucv_sock *iucv, *niucv; in iucv_callback_connreq() local
1738 iucv = NULL; in iucv_callback_connreq()
1747 iucv = iucv_sk(sk); in iucv_callback_connreq()
1751 if (!iucv) in iucv_callback_connreq()
1758 low_nmcpy(user_data, iucv->src_name); in iucv_callback_connreq()
1759 high_nmcpy(user_data, iucv->dst_name); in iucv_callback_connreq()
1789 memcpy(niucv->src_name, iucv->src_name, 8); in iucv_callback_connreq()
1790 memcpy(niucv->src_user_id, iucv->src_user_id, 8); in iucv_callback_connreq()
1799 niucv->msglimit = iucv->msglimit; in iucv_callback_connreq()
1800 path->msglim = iucv->msglimit; in iucv_callback_connreq()
1830 struct iucv_sock *iucv = iucv_sk(sk); in iucv_callback_rx() local
1840 spin_lock(&iucv->message_q.lock); in iucv_callback_rx()
1842 if (!list_empty(&iucv->message_q.list) || in iucv_callback_rx()
1843 !skb_queue_empty(&iucv->backlog_skb_q)) in iucv_callback_rx()
1865 list_add_tail(&save_msg->list, &iucv->message_q.list); in iucv_callback_rx()
1868 spin_unlock(&iucv->message_q.lock); in iucv_callback_rx()
1971 struct iucv_sock *iucv, *niucv; in afiucv_hs_callback_syn() local
1975 iucv = iucv_sk(sk); in afiucv_hs_callback_syn()
1977 if (!iucv) { in afiucv_hs_callback_syn()
2002 niucv->msglimit = iucv->msglimit; in afiucv_hs_callback_syn()
2009 memcpy(niucv->src_name, iucv->src_name, 8); in afiucv_hs_callback_syn()
2010 memcpy(niucv->src_user_id, iucv->src_user_id, 8); in afiucv_hs_callback_syn()
2012 niucv->hs_dev = iucv->hs_dev; in afiucv_hs_callback_syn()
2036 struct iucv_sock *iucv = iucv_sk(sk); in afiucv_hs_callback_synack() local
2040 if (!iucv) in afiucv_hs_callback_synack()
2045 iucv->msglimit_peer = trans_hdr->window; in afiucv_hs_callback_synack()
2059 struct iucv_sock *iucv = iucv_sk(sk); in afiucv_hs_callback_synfin() local
2061 if (!iucv) in afiucv_hs_callback_synfin()
2079 struct iucv_sock *iucv = iucv_sk(sk); in afiucv_hs_callback_fin() local
2082 if (!iucv) in afiucv_hs_callback_fin()
2100 struct iucv_sock *iucv = iucv_sk(sk); in afiucv_hs_callback_win() local
2104 if (!iucv) in afiucv_hs_callback_win()
2110 atomic_sub(trans_hdr->window, &iucv->msg_sent); in afiucv_hs_callback_win()
2120 struct iucv_sock *iucv = iucv_sk(sk); in afiucv_hs_callback_rx() local
2122 if (!iucv) { in afiucv_hs_callback_rx()
2148 spin_lock(&iucv->message_q.lock); in afiucv_hs_callback_rx()
2149 if (skb_queue_empty(&iucv->backlog_skb_q)) { in afiucv_hs_callback_rx()
2152 skb_queue_tail(&iucv->backlog_skb_q, skb); in afiucv_hs_callback_rx()
2155 spin_unlock(&iucv->message_q.lock); in afiucv_hs_callback_rx()
2168 struct iucv_sock *iucv; in afiucv_hs_rcv() local
2194 iucv = NULL; in afiucv_hs_rcv()
2206 iucv = iucv_sk(sk); in afiucv_hs_rcv()
2218 iucv = iucv_sk(sk); in afiucv_hs_rcv()
2224 if (!iucv) in afiucv_hs_rcv()
2284 struct iucv_sock *iucv = NULL; in afiucv_hs_callback_txnotify() local
2293 iucv = iucv_sk(sk); in afiucv_hs_callback_txnotify()
2298 if (!iucv || sock_flag(sk, SOCK_ZAPPED)) in afiucv_hs_callback_txnotify()
2301 list = &iucv->send_skb_q; in afiucv_hs_callback_txnotify()
2316 atomic_inc(&iucv->pendings); in afiucv_hs_callback_txnotify()
2320 atomic_dec(&iucv->pendings); in afiucv_hs_callback_txnotify()
2321 if (atomic_read(&iucv->pendings) <= 0) in afiucv_hs_callback_txnotify()
2363 struct iucv_sock *iucv; in afiucv_netdev_event() local
2369 iucv = iucv_sk(sk); in afiucv_netdev_event()
2370 if ((iucv->hs_dev == event_dev) && in afiucv_netdev_event()