Lines Matching full:conn
168 struct iucv_connection *conn; member
179 struct iucv_connection *conn; member
246 static char *netiucv_printuser(struct iucv_connection *conn) in netiucv_printuser() argument
252 if (memcmp(conn->userdata, iucvMagic_ebcdic, 16)) { in netiucv_printuser()
255 memcpy(tmp_uid, netiucv_printname(conn->userid, 8), 8); in netiucv_printuser()
256 memcpy(tmp_udat, conn->userdata, 16); in netiucv_printuser()
262 return netiucv_printname(conn->userid, 8); in netiucv_printuser()
481 struct iucv_connection *conn = path->private; in netiucv_callback_rx() local
484 ev.conn = conn; in netiucv_callback_rx()
486 fsm_event(conn->fsm, CONN_EVENT_RX, &ev); in netiucv_callback_rx()
492 struct iucv_connection *conn = path->private; in netiucv_callback_txdone() local
495 ev.conn = conn; in netiucv_callback_txdone()
497 fsm_event(conn->fsm, CONN_EVENT_TXDONE, &ev); in netiucv_callback_txdone()
502 struct iucv_connection *conn = path->private; in netiucv_callback_connack() local
504 fsm_event(conn->fsm, CONN_EVENT_CONN_ACK, conn); in netiucv_callback_connack()
510 struct iucv_connection *conn = path->private; in netiucv_callback_connreq() local
521 list_for_each_entry(conn, &iucv_connection_list, list) { in netiucv_callback_connreq()
522 if (strncmp(ipvmid, conn->userid, 8) || in netiucv_callback_connreq()
523 strncmp(ipuser, conn->userdata, 16)) in netiucv_callback_connreq()
526 conn->path = path; in netiucv_callback_connreq()
527 ev.conn = conn; in netiucv_callback_connreq()
529 fsm_event(conn->fsm, CONN_EVENT_CONN_REQ, &ev); in netiucv_callback_connreq()
540 struct iucv_connection *conn = path->private; in netiucv_callback_connrej() local
542 fsm_event(conn->fsm, CONN_EVENT_CONN_REJ, conn); in netiucv_callback_connrej()
547 struct iucv_connection *conn = path->private; in netiucv_callback_connsusp() local
549 fsm_event(conn->fsm, CONN_EVENT_CONN_SUS, conn); in netiucv_callback_connsusp()
554 struct iucv_connection *conn = path->private; in netiucv_callback_connres() local
556 fsm_event(conn->fsm, CONN_EVENT_CONN_RES, conn); in netiucv_callback_connres()
572 * @conn: The connection where this skb has been received.
578 static void netiucv_unpack_skb(struct iucv_connection *conn, in netiucv_unpack_skb() argument
581 struct net_device *dev = conn->netdev; in netiucv_unpack_skb()
632 struct iucv_connection *conn = ev->conn; in conn_action_rx() local
634 struct netiucv_priv *privptr = netdev_priv(conn->netdev); in conn_action_rx()
639 if (!conn->netdev) { in conn_action_rx()
640 iucv_message_reject(conn->path, msg); in conn_action_rx()
645 if (msg->length > conn->max_buffsize) { in conn_action_rx()
646 iucv_message_reject(conn->path, msg); in conn_action_rx()
649 msg->length, conn->max_buffsize); in conn_action_rx()
652 conn->rx_buff->data = conn->rx_buff->head; in conn_action_rx()
653 skb_reset_tail_pointer(conn->rx_buff); in conn_action_rx()
654 conn->rx_buff->len = 0; in conn_action_rx()
655 rc = iucv_message_receive(conn->path, msg, 0, conn->rx_buff->data, in conn_action_rx()
662 netiucv_unpack_skb(conn, conn->rx_buff); in conn_action_rx()
668 struct iucv_connection *conn = ev->conn; in conn_action_txdone() local
683 if (!conn || !conn->netdev) { in conn_action_txdone()
688 privptr = netdev_priv(conn->netdev); in conn_action_txdone()
689 conn->prof.tx_pending--; in conn_action_txdone()
691 if ((skb = skb_dequeue(&conn->commit_queue))) { in conn_action_txdone()
702 conn->tx_buff->data = conn->tx_buff->head; in conn_action_txdone()
703 skb_reset_tail_pointer(conn->tx_buff); in conn_action_txdone()
704 conn->tx_buff->len = 0; in conn_action_txdone()
705 spin_lock_irqsave(&conn->collect_lock, saveflags); in conn_action_txdone()
706 while ((skb = skb_dequeue(&conn->collect_queue))) { in conn_action_txdone()
707 header.next = conn->tx_buff->len + skb->len + NETIUCV_HDRLEN; in conn_action_txdone()
708 skb_put_data(conn->tx_buff, &header, NETIUCV_HDRLEN); in conn_action_txdone()
710 skb_put(conn->tx_buff, skb->len), in conn_action_txdone()
718 if (conn->collect_len > conn->prof.maxmulti) in conn_action_txdone()
719 conn->prof.maxmulti = conn->collect_len; in conn_action_txdone()
720 conn->collect_len = 0; in conn_action_txdone()
721 spin_unlock_irqrestore(&conn->collect_lock, saveflags); in conn_action_txdone()
722 if (conn->tx_buff->len == 0) { in conn_action_txdone()
728 skb_put_data(conn->tx_buff, &header, NETIUCV_HDRLEN); in conn_action_txdone()
729 conn->prof.send_stamp = jiffies; in conn_action_txdone()
732 rc = iucv_message_send(conn->path, &txmsg, 0, 0, in conn_action_txdone()
733 conn->tx_buff->data, conn->tx_buff->len); in conn_action_txdone()
734 conn->prof.doios_multi++; in conn_action_txdone()
735 conn->prof.txlen += conn->tx_buff->len; in conn_action_txdone()
736 conn->prof.tx_pending++; in conn_action_txdone()
737 if (conn->prof.tx_pending > conn->prof.tx_max_pending) in conn_action_txdone()
738 conn->prof.tx_max_pending = conn->prof.tx_pending; in conn_action_txdone()
740 conn->prof.tx_pending--; in conn_action_txdone()
750 if (stat_maxcq > conn->prof.maxcqueue) in conn_action_txdone()
751 conn->prof.maxcqueue = stat_maxcq; in conn_action_txdone()
768 struct iucv_connection *conn = ev->conn; in conn_action_connaccept() local
770 struct net_device *netdev = conn->netdev; in conn_action_connaccept()
776 conn->path = path; in conn_action_connaccept()
779 rc = iucv_path_accept(path, &netiucv_handler, conn->userdata , conn); in conn_action_connaccept()
785 netdev->tx_queue_len = conn->path->msglim; in conn_action_connaccept()
800 struct iucv_connection *conn = arg; in conn_action_connack() local
801 struct net_device *netdev = conn->netdev; in conn_action_connack()
805 fsm_deltimer(&conn->timer); in conn_action_connack()
807 netdev->tx_queue_len = conn->path->msglim; in conn_action_connack()
813 struct iucv_connection *conn = arg; in conn_action_conntimsev() local
816 fsm_deltimer(&conn->timer); in conn_action_conntimsev()
817 iucv_path_sever(conn->path, conn->userdata); in conn_action_conntimsev()
823 struct iucv_connection *conn = arg; in conn_action_connsever() local
824 struct net_device *netdev = conn->netdev; in conn_action_connsever()
829 fsm_deltimer(&conn->timer); in conn_action_connsever()
830 iucv_path_sever(conn->path, conn->userdata); in conn_action_connsever()
832 "connection\n", netiucv_printuser(conn)); in conn_action_connsever()
841 struct iucv_connection *conn = arg; in conn_action_start() local
842 struct net_device *netdev = conn->netdev; in conn_action_start()
857 conn->path = iucv_path_alloc(NETIUCV_QUEUELEN_DEFAULT, 0, GFP_KERNEL); in conn_action_start()
859 netdev->name, netiucv_printuser(conn)); in conn_action_start()
861 rc = iucv_path_connect(conn->path, &netiucv_handler, conn->userid, in conn_action_start()
862 NULL, conn->userdata, conn); in conn_action_start()
865 netdev->tx_queue_len = conn->path->msglim; in conn_action_start()
866 fsm_addtimer(&conn->timer, NETIUCV_TIMEOUT_5SEC, in conn_action_start()
867 CONN_EVENT_TIMER, conn); in conn_action_start()
872 netiucv_printname(conn->userid, 8)); in conn_action_start()
878 " guest %s\n", netiucv_printname(conn->userid, 8)); in conn_action_start()
891 netiucv_printname(conn->userid, 8)); in conn_action_start()
908 kfree(conn->path); in conn_action_start()
909 conn->path = NULL; in conn_action_start()
925 struct iucv_connection *conn = ev->conn; in conn_action_stop() local
926 struct net_device *netdev = conn->netdev; in conn_action_stop()
931 fsm_deltimer(&conn->timer); in conn_action_stop()
933 netiucv_purge_skb_queue(&conn->collect_queue); in conn_action_stop()
934 if (conn->path) { in conn_action_stop()
936 iucv_path_sever(conn->path, conn->userdata); in conn_action_stop()
937 kfree(conn->path); in conn_action_stop()
938 conn->path = NULL; in conn_action_stop()
940 netiucv_purge_skb_queue(&conn->commit_queue); in conn_action_stop()
946 struct iucv_connection *conn = arg; in conn_action_inval() local
947 struct net_device *netdev = conn->netdev; in conn_action_inval()
950 netdev->name, conn->userid); in conn_action_inval()
1008 fsm_event(privptr->conn->fsm, CONN_EVENT_START, privptr->conn); in dev_action_start()
1027 ev.conn = privptr->conn; in dev_action_stop()
1030 fsm_event(privptr->conn->fsm, CONN_EVENT_STOP, &ev); in dev_action_stop()
1055 netiucv_printuser(privptr->conn)); in dev_action_connup()
1110 * @param conn Connection to be used for sending.
1117 static int netiucv_transmit_skb(struct iucv_connection *conn, in netiucv_transmit_skb() argument
1125 if (fsm_getstate(conn->fsm) != CONN_STATE_IDLE) { in netiucv_transmit_skb()
1128 spin_lock_irqsave(&conn->collect_lock, saveflags); in netiucv_transmit_skb()
1129 if (conn->collect_len + l > in netiucv_transmit_skb()
1130 (conn->max_buffsize - NETIUCV_HDRLEN)) { in netiucv_transmit_skb()
1136 skb_queue_tail(&conn->collect_queue, skb); in netiucv_transmit_skb()
1137 conn->collect_len += l; in netiucv_transmit_skb()
1140 spin_unlock_irqrestore(&conn->collect_lock, saveflags); in netiucv_transmit_skb()
1171 fsm_newstate(conn->fsm, CONN_STATE_TX); in netiucv_transmit_skb()
1172 conn->prof.send_stamp = jiffies; in netiucv_transmit_skb()
1176 rc = iucv_message_send(conn->path, &msg, 0, 0, in netiucv_transmit_skb()
1178 conn->prof.doios_single++; in netiucv_transmit_skb()
1179 conn->prof.txlen += skb->len; in netiucv_transmit_skb()
1180 conn->prof.tx_pending++; in netiucv_transmit_skb()
1181 if (conn->prof.tx_pending > conn->prof.tx_max_pending) in netiucv_transmit_skb()
1182 conn->prof.tx_max_pending = conn->prof.tx_pending; in netiucv_transmit_skb()
1185 fsm_newstate(conn->fsm, CONN_STATE_IDLE); in netiucv_transmit_skb()
1186 conn->prof.tx_pending--; in netiucv_transmit_skb()
1187 privptr = netdev_priv(conn->netdev); in netiucv_transmit_skb()
1205 skb_queue_tail(&conn->commit_queue, nskb); in netiucv_transmit_skb()
1291 rc = netiucv_transmit_skb(privptr->conn, skb); in netiucv_tx()
1322 return sprintf(buf, "%s\n", netiucv_printuser(priv->conn)); in user_show()
1377 struct net_device *ndev = priv->conn->netdev; in user_write()
1388 if (memcmp(username, priv->conn->userid, 9) && in user_write()
1405 memcpy(priv->conn->userid, username, 9); in user_write()
1406 memcpy(priv->conn->userdata, userdata, 17); in user_write()
1418 return sprintf(buf, "%d\n", priv->conn->max_buffsize); in buffer_show()
1425 struct net_device *ndev = priv->conn->netdev; in buffer_write()
1460 priv->conn->max_buffsize = bs1; in buffer_write()
1487 return sprintf(buf, "%s\n", fsm_getstate_str(priv->conn->fsm)); in conn_fsm_show()
1498 return sprintf(buf, "%ld\n", priv->conn->prof.maxmulti); in maxmulti_show()
1508 priv->conn->prof.maxmulti = 0; in maxmulti_write()
1520 return sprintf(buf, "%ld\n", priv->conn->prof.maxcqueue); in maxcq_show()
1529 priv->conn->prof.maxcqueue = 0; in maxcq_write()
1541 return sprintf(buf, "%ld\n", priv->conn->prof.doios_single); in sdoio_show()
1550 priv->conn->prof.doios_single = 0; in sdoio_write()
1562 return sprintf(buf, "%ld\n", priv->conn->prof.doios_multi); in mdoio_show()
1571 priv->conn->prof.doios_multi = 0; in mdoio_write()
1583 return sprintf(buf, "%ld\n", priv->conn->prof.txlen); in txlen_show()
1592 priv->conn->prof.txlen = 0; in txlen_write()
1604 return sprintf(buf, "%ld\n", priv->conn->prof.tx_time); in txtime_show()
1613 priv->conn->prof.tx_time = 0; in txtime_write()
1625 return sprintf(buf, "%ld\n", priv->conn->prof.tx_pending); in txpend_show()
1634 priv->conn->prof.tx_pending = 0; in txpend_write()
1646 return sprintf(buf, "%ld\n", priv->conn->prof.tx_max_pending); in txmpnd_show()
1655 priv->conn->prof.tx_max_pending = 0; in txmpnd_write()
1745 struct iucv_connection *conn; in netiucv_new_connection() local
1747 conn = kzalloc(sizeof(*conn), GFP_KERNEL); in netiucv_new_connection()
1748 if (!conn) in netiucv_new_connection()
1750 skb_queue_head_init(&conn->collect_queue); in netiucv_new_connection()
1751 skb_queue_head_init(&conn->commit_queue); in netiucv_new_connection()
1752 spin_lock_init(&conn->collect_lock); in netiucv_new_connection()
1753 conn->max_buffsize = NETIUCV_BUFSIZE_DEFAULT; in netiucv_new_connection()
1754 conn->netdev = dev; in netiucv_new_connection()
1756 conn->rx_buff = alloc_skb(conn->max_buffsize, GFP_KERNEL | GFP_DMA); in netiucv_new_connection()
1757 if (!conn->rx_buff) in netiucv_new_connection()
1759 conn->tx_buff = alloc_skb(conn->max_buffsize, GFP_KERNEL | GFP_DMA); in netiucv_new_connection()
1760 if (!conn->tx_buff) in netiucv_new_connection()
1762 conn->fsm = init_fsm("netiucvconn", conn_state_names, in netiucv_new_connection()
1766 if (!conn->fsm) in netiucv_new_connection()
1769 fsm_settimer(conn->fsm, &conn->timer); in netiucv_new_connection()
1770 fsm_newstate(conn->fsm, CONN_STATE_INVALID); in netiucv_new_connection()
1773 memcpy(conn->userdata, userdata, 17); in netiucv_new_connection()
1775 memcpy(conn->userid, username, 9); in netiucv_new_connection()
1776 fsm_newstate(conn->fsm, CONN_STATE_STOPPED); in netiucv_new_connection()
1780 list_add_tail(&conn->list, &iucv_connection_list); in netiucv_new_connection()
1782 return conn; in netiucv_new_connection()
1785 kfree_skb(conn->tx_buff); in netiucv_new_connection()
1787 kfree_skb(conn->rx_buff); in netiucv_new_connection()
1789 kfree(conn); in netiucv_new_connection()
1798 static void netiucv_remove_connection(struct iucv_connection *conn) in netiucv_remove_connection() argument
1803 list_del_init(&conn->list); in netiucv_remove_connection()
1805 fsm_deltimer(&conn->timer); in netiucv_remove_connection()
1806 netiucv_purge_skb_queue(&conn->collect_queue); in netiucv_remove_connection()
1807 if (conn->path) { in netiucv_remove_connection()
1808 iucv_path_sever(conn->path, conn->userdata); in netiucv_remove_connection()
1809 kfree(conn->path); in netiucv_remove_connection()
1810 conn->path = NULL; in netiucv_remove_connection()
1812 netiucv_purge_skb_queue(&conn->commit_queue); in netiucv_remove_connection()
1813 kfree_fsm(conn->fsm); in netiucv_remove_connection()
1814 kfree_skb(conn->rx_buff); in netiucv_remove_connection()
1815 kfree_skb(conn->tx_buff); in netiucv_remove_connection()
1831 if (privptr->conn) in netiucv_free_netdevice()
1832 netiucv_remove_connection(privptr->conn); in netiucv_free_netdevice()
1835 privptr->conn = NULL; privptr->fsm = NULL; in netiucv_free_netdevice()
1888 privptr->conn = netiucv_new_connection(dev, username, userdata); in netiucv_init_netdevice()
1889 if (!privptr->conn) { in netiucv_init_netdevice()
1956 netiucv_printuser(priv->conn)); in connection_store()
2003 priv->conn->userid); in remove_store()