Lines Matching refs:iucv

150 	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
336 phs_hdr->window = iucv->msglimit; in afiucv_hs_send()
338 confirm_recv = atomic_read(&iucv->msg_recv); in afiucv_hs_send()
343 memcpy(phs_hdr->destUserID, iucv->dst_user_id, 8); in afiucv_hs_send()
344 memcpy(phs_hdr->destAppName, iucv->dst_name, 8); in afiucv_hs_send()
345 memcpy(phs_hdr->srcUserID, iucv->src_user_id, 8); in afiucv_hs_send()
346 memcpy(phs_hdr->srcAppName, iucv->src_name, 8); in afiucv_hs_send()
354 skb->dev = iucv->hs_dev; in afiucv_hs_send()
369 skb_queue_tail(&iucv->send_skb_q, nskb); in afiucv_hs_send()
372 skb_unlink(nskb, &iucv->send_skb_q); in afiucv_hs_send()
375 atomic_sub(confirm_recv, &iucv->msg_recv); in afiucv_hs_send()
376 WARN_ON(atomic_read(&iucv->msg_recv) < 0); in afiucv_hs_send()
439 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sever_path() local
440 struct iucv_path *path = iucv->path; in iucv_sever_path()
442 if (iucv->path) { in iucv_sever_path()
443 iucv->path = NULL; in iucv_sever_path()
445 low_nmcpy(user_data, iucv->src_name); in iucv_sever_path()
446 high_nmcpy(user_data, iucv->dst_name); in iucv_sever_path()
474 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_close() local
486 if (iucv->transport == AF_IUCV_TRANS_HIPER) { in iucv_sock_close()
495 if (!err && !skb_queue_empty(&iucv->send_skb_q)) { in iucv_sock_close()
512 skb_queue_purge(&iucv->send_skb_q); in iucv_sock_close()
513 skb_queue_purge(&iucv->backlog_skb_q); in iucv_sock_close()
519 if (iucv->hs_dev) { in iucv_sock_close()
520 dev_put(iucv->hs_dev); in iucv_sock_close()
521 iucv->hs_dev = NULL; in iucv_sock_close()
540 struct iucv_sock *iucv; in iucv_sock_alloc() local
545 iucv = iucv_sk(sk); in iucv_sock_alloc()
548 INIT_LIST_HEAD(&iucv->accept_q); in iucv_sock_alloc()
549 spin_lock_init(&iucv->accept_q_lock); in iucv_sock_alloc()
550 skb_queue_head_init(&iucv->send_skb_q); in iucv_sock_alloc()
551 INIT_LIST_HEAD(&iucv->message_q.list); in iucv_sock_alloc()
552 spin_lock_init(&iucv->message_q.lock); in iucv_sock_alloc()
553 skb_queue_head_init(&iucv->backlog_skb_q); in iucv_sock_alloc()
554 iucv->send_tag = 0; in iucv_sock_alloc()
555 atomic_set(&iucv->pendings, 0); in iucv_sock_alloc()
556 iucv->flags = 0; in iucv_sock_alloc()
557 iucv->msglimit = 0; in iucv_sock_alloc()
558 atomic_set(&iucv->msg_sent, 0); in iucv_sock_alloc()
559 atomic_set(&iucv->msg_recv, 0); in iucv_sock_alloc()
560 iucv->path = NULL; in iucv_sock_alloc()
561 iucv->sk_txnotify = afiucv_hs_callback_txnotify; in iucv_sock_alloc()
562 memset(&iucv->src_user_id , 0, 32); in iucv_sock_alloc()
564 iucv->transport = AF_IUCV_TRANS_IUCV; in iucv_sock_alloc()
566 iucv->transport = AF_IUCV_TRANS_HIPER; in iucv_sock_alloc()
684 static void __iucv_auto_name(struct iucv_sock *iucv) in __iucv_auto_name() argument
693 memcpy(iucv->src_name, name, 8); in __iucv_auto_name()
702 struct iucv_sock *iucv; in iucv_sock_bind() local
722 iucv = iucv_sk(sk); in iucv_sock_bind()
727 if (iucv->path) in iucv_sock_bind()
741 memcpy(iucv->src_user_id, sa->siucv_user_id, 8); in iucv_sock_bind()
744 __iucv_auto_name(iucv); in iucv_sock_bind()
746 memcpy(iucv->src_name, sa->siucv_name, 8); in iucv_sock_bind()
748 iucv->hs_dev = dev; in iucv_sock_bind()
751 iucv->transport = AF_IUCV_TRANS_HIPER; in iucv_sock_bind()
752 if (!iucv->msglimit) in iucv_sock_bind()
753 iucv->msglimit = IUCV_HIPER_MSGLIM_DEFAULT; in iucv_sock_bind()
762 memcpy(iucv->src_name, sa->siucv_name, 8); in iucv_sock_bind()
763 memcpy(iucv->src_user_id, iucv_userid, 8); in iucv_sock_bind()
765 iucv->transport = AF_IUCV_TRANS_IUCV; in iucv_sock_bind()
766 if (!iucv->msglimit) in iucv_sock_bind()
767 iucv->msglimit = IUCV_QUEUELEN_DEFAULT; in iucv_sock_bind()
783 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_autobind() local
789 memcpy(iucv->src_user_id, iucv_userid, 8); in iucv_sock_autobind()
792 __iucv_auto_name(iucv); in iucv_sock_autobind()
795 if (!iucv->msglimit) in iucv_sock_autobind()
796 iucv->msglimit = IUCV_QUEUELEN_DEFAULT; in iucv_sock_autobind()
805 struct iucv_sock *iucv = iucv_sk(sk); in afiucv_path_connect() local
810 low_nmcpy(user_data, iucv->src_name); in afiucv_path_connect()
814 iucv->path = iucv_path_alloc(iucv->msglimit, in afiucv_path_connect()
816 if (!iucv->path) { in afiucv_path_connect()
820 err = pr_iucv->path_connect(iucv->path, &af_iucv_handler, in afiucv_path_connect()
824 iucv_path_free(iucv->path); in afiucv_path_connect()
825 iucv->path = NULL; in afiucv_path_connect()
852 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_connect() local
862 iucv->transport == AF_IUCV_TRANS_HIPER) in iucv_sock_connect()
877 memcpy(iucv->dst_user_id, sa->siucv_user_id, 8); in iucv_sock_connect()
878 memcpy(iucv->dst_name, sa->siucv_name, 8); in iucv_sock_connect()
880 if (iucv->transport == AF_IUCV_TRANS_HIPER) in iucv_sock_connect()
895 if (err && iucv->transport == AF_IUCV_TRANS_IUCV) in iucv_sock_connect()
988 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_getname() local
994 memcpy(siucv->siucv_user_id, iucv->dst_user_id, 8); in iucv_sock_getname()
995 memcpy(siucv->siucv_name, iucv->dst_name, 8); in iucv_sock_getname()
997 memcpy(siucv->siucv_user_id, iucv->src_user_id, 8); in iucv_sock_getname()
998 memcpy(siucv->siucv_name, iucv->src_name, 8); in iucv_sock_getname()
1035 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_sendmsg() local
1113 if (iucv->transport == AF_IUCV_TRANS_HIPER) in iucv_sock_sendmsg()
1121 if (iucv->transport == AF_IUCV_TRANS_HIPER) in iucv_sock_sendmsg()
1141 txmsg.tag = iucv->send_tag++; in iucv_sock_sendmsg()
1144 if (iucv->transport == AF_IUCV_TRANS_HIPER) { in iucv_sock_sendmsg()
1145 atomic_inc(&iucv->msg_sent); in iucv_sock_sendmsg()
1148 atomic_dec(&iucv->msg_sent); in iucv_sock_sendmsg()
1153 skb_queue_tail(&iucv->send_skb_q, skb); in iucv_sock_sendmsg()
1155 if (((iucv->path->flags & IUCV_IPRMDATA) & iucv->flags) in iucv_sock_sendmsg()
1157 err = iucv_send_iprm(iucv->path, &txmsg, skb); in iucv_sock_sendmsg()
1162 skb_unlink(skb, &iucv->send_skb_q); in iucv_sock_sendmsg()
1169 pr_iucv->path_sever(iucv->path, NULL); in iucv_sock_sendmsg()
1170 skb_unlink(skb, &iucv->send_skb_q); in iucv_sock_sendmsg()
1175 err = pr_iucv->message_send(iucv->path, &txmsg, 0, 0, in iucv_sock_sendmsg()
1180 memcpy(user_id, iucv->dst_user_id, 8); in iucv_sock_sendmsg()
1182 memcpy(appl_id, iucv->dst_name, 8); in iucv_sock_sendmsg()
1189 skb_unlink(skb, &iucv->send_skb_q); in iucv_sock_sendmsg()
1304 struct iucv_sock *iucv = iucv_sk(sk); in iucv_process_message_q() local
1308 list_for_each_entry_safe(p, n, &iucv->message_q.list, list) { in iucv_process_message_q()
1315 if (!skb_queue_empty(&iucv->backlog_skb_q)) in iucv_process_message_q()
1325 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_recvmsg() local
1332 skb_queue_empty(&iucv->backlog_skb_q) && in iucv_sock_recvmsg()
1334 list_empty(&iucv->message_q.list)) in iucv_sock_recvmsg()
1395 if (iucv->transport == AF_IUCV_TRANS_HIPER) { in iucv_sock_recvmsg()
1396 atomic_inc(&iucv->msg_recv); in iucv_sock_recvmsg()
1397 if (atomic_read(&iucv->msg_recv) > iucv->msglimit) { in iucv_sock_recvmsg()
1405 spin_lock_bh(&iucv->message_q.lock); in iucv_sock_recvmsg()
1406 rskb = skb_dequeue(&iucv->backlog_skb_q); in iucv_sock_recvmsg()
1410 skb_queue_head(&iucv->backlog_skb_q, in iucv_sock_recvmsg()
1414 rskb = skb_dequeue(&iucv->backlog_skb_q); in iucv_sock_recvmsg()
1417 if (skb_queue_empty(&iucv->backlog_skb_q)) { in iucv_sock_recvmsg()
1418 if (!list_empty(&iucv->message_q.list)) in iucv_sock_recvmsg()
1420 if (atomic_read(&iucv->msg_recv) >= in iucv_sock_recvmsg()
1421 iucv->msglimit / 2) { in iucv_sock_recvmsg()
1429 spin_unlock_bh(&iucv->message_q.lock); in iucv_sock_recvmsg()
1497 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_shutdown() local
1519 if (iucv->transport == AF_IUCV_TRANS_IUCV) { in iucv_sock_shutdown()
1522 err = pr_iucv->message_send(iucv->path, &txmsg, in iucv_sock_shutdown()
1543 if ((iucv->transport == AF_IUCV_TRANS_IUCV) && in iucv_sock_shutdown()
1544 iucv->path) { in iucv_sock_shutdown()
1545 err = pr_iucv->path_quiesce(iucv->path, NULL); in iucv_sock_shutdown()
1581 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_setsockopt() local
1600 iucv->flags |= IUCV_IPRMDATA; in iucv_sock_setsockopt()
1602 iucv->flags &= ~IUCV_IPRMDATA; in iucv_sock_setsockopt()
1611 iucv->msglimit = val; in iucv_sock_setsockopt()
1631 struct iucv_sock *iucv = iucv_sk(sk); in iucv_sock_getsockopt() local
1648 val = (iucv->flags & IUCV_IPRMDATA) ? 1 : 0; in iucv_sock_getsockopt()
1652 val = (iucv->path != NULL) ? iucv->path->msglim /* connected */ in iucv_sock_getsockopt()
1653 : iucv->msglimit; /* default */ in iucv_sock_getsockopt()
1659 val = (iucv->hs_dev) ? iucv->hs_dev->mtu - in iucv_sock_getsockopt()
1684 struct iucv_sock *iucv, *niucv; in iucv_callback_connreq() local
1691 iucv = NULL; in iucv_callback_connreq()
1700 iucv = iucv_sk(sk); in iucv_callback_connreq()
1704 if (!iucv) in iucv_callback_connreq()
1711 low_nmcpy(user_data, iucv->src_name); in iucv_callback_connreq()
1712 high_nmcpy(user_data, iucv->dst_name); in iucv_callback_connreq()
1742 memcpy(niucv->src_name, iucv->src_name, 8); in iucv_callback_connreq()
1743 memcpy(niucv->src_user_id, iucv->src_user_id, 8); in iucv_callback_connreq()
1752 niucv->msglimit = iucv->msglimit; in iucv_callback_connreq()
1753 path->msglim = iucv->msglimit; in iucv_callback_connreq()
1783 struct iucv_sock *iucv = iucv_sk(sk); in iucv_callback_rx() local
1793 spin_lock(&iucv->message_q.lock); in iucv_callback_rx()
1795 if (!list_empty(&iucv->message_q.list) || in iucv_callback_rx()
1796 !skb_queue_empty(&iucv->backlog_skb_q)) in iucv_callback_rx()
1818 list_add_tail(&save_msg->list, &iucv->message_q.list); in iucv_callback_rx()
1821 spin_unlock(&iucv->message_q.lock); in iucv_callback_rx()
1924 struct iucv_sock *iucv, *niucv; in afiucv_hs_callback_syn() local
1928 iucv = iucv_sk(sk); in afiucv_hs_callback_syn()
1930 if (!iucv) { in afiucv_hs_callback_syn()
1955 niucv->msglimit = iucv->msglimit; in afiucv_hs_callback_syn()
1962 memcpy(niucv->src_name, iucv->src_name, 8); in afiucv_hs_callback_syn()
1963 memcpy(niucv->src_user_id, iucv->src_user_id, 8); in afiucv_hs_callback_syn()
1965 niucv->hs_dev = iucv->hs_dev; in afiucv_hs_callback_syn()
1989 struct iucv_sock *iucv = iucv_sk(sk); in afiucv_hs_callback_synack() local
1993 if (!iucv) in afiucv_hs_callback_synack()
1998 iucv->msglimit_peer = trans_hdr->window; in afiucv_hs_callback_synack()
2012 struct iucv_sock *iucv = iucv_sk(sk); in afiucv_hs_callback_synfin() local
2014 if (!iucv) in afiucv_hs_callback_synfin()
2032 struct iucv_sock *iucv = iucv_sk(sk); in afiucv_hs_callback_fin() local
2035 if (!iucv) in afiucv_hs_callback_fin()
2053 struct iucv_sock *iucv = iucv_sk(sk); in afiucv_hs_callback_win() local
2057 if (!iucv) in afiucv_hs_callback_win()
2063 atomic_sub(trans_hdr->window, &iucv->msg_sent); in afiucv_hs_callback_win()
2073 struct iucv_sock *iucv = iucv_sk(sk); in afiucv_hs_callback_rx() local
2075 if (!iucv) { in afiucv_hs_callback_rx()
2099 spin_lock(&iucv->message_q.lock); in afiucv_hs_callback_rx()
2100 if (skb_queue_empty(&iucv->backlog_skb_q)) { in afiucv_hs_callback_rx()
2103 skb_queue_tail(&iucv->backlog_skb_q, skb); in afiucv_hs_callback_rx()
2107 spin_unlock(&iucv->message_q.lock); in afiucv_hs_callback_rx()
2120 struct iucv_sock *iucv; in afiucv_hs_rcv() local
2132 iucv = NULL; in afiucv_hs_rcv()
2144 iucv = iucv_sk(sk); in afiucv_hs_rcv()
2156 iucv = iucv_sk(sk); in afiucv_hs_rcv()
2162 if (!iucv) in afiucv_hs_rcv()
2222 struct iucv_sock *iucv = NULL; in afiucv_hs_callback_txnotify() local
2231 iucv = iucv_sk(sk); in afiucv_hs_callback_txnotify()
2236 if (!iucv || sock_flag(sk, SOCK_ZAPPED)) in afiucv_hs_callback_txnotify()
2239 list = &iucv->send_skb_q; in afiucv_hs_callback_txnotify()
2254 atomic_inc(&iucv->pendings); in afiucv_hs_callback_txnotify()
2258 atomic_dec(&iucv->pendings); in afiucv_hs_callback_txnotify()
2259 if (atomic_read(&iucv->pendings) <= 0) in afiucv_hs_callback_txnotify()
2301 struct iucv_sock *iucv; in afiucv_netdev_event() local
2307 iucv = iucv_sk(sk); in afiucv_netdev_event()
2308 if ((iucv->hs_dev == event_dev) && in afiucv_netdev_event()