Lines Matching refs: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()
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()
636 struct iucv_connection *conn = ev->conn; in conn_action_rx() local
638 struct netiucv_priv *privptr = netdev_priv(conn->netdev); in conn_action_rx()
643 if (!conn->netdev) { in conn_action_rx()
644 iucv_message_reject(conn->path, msg); in conn_action_rx()
649 if (msg->length > conn->max_buffsize) { in conn_action_rx()
650 iucv_message_reject(conn->path, msg); in conn_action_rx()
653 msg->length, conn->max_buffsize); in conn_action_rx()
656 conn->rx_buff->data = conn->rx_buff->head; in conn_action_rx()
657 skb_reset_tail_pointer(conn->rx_buff); in conn_action_rx()
658 conn->rx_buff->len = 0; in conn_action_rx()
659 rc = iucv_message_receive(conn->path, msg, 0, conn->rx_buff->data, in conn_action_rx()
666 netiucv_unpack_skb(conn, conn->rx_buff); in conn_action_rx()
672 struct iucv_connection *conn = ev->conn; in conn_action_txdone() local
687 if (!conn || !conn->netdev) { in conn_action_txdone()
692 privptr = netdev_priv(conn->netdev); in conn_action_txdone()
693 conn->prof.tx_pending--; in conn_action_txdone()
695 if ((skb = skb_dequeue(&conn->commit_queue))) { in conn_action_txdone()
706 conn->tx_buff->data = conn->tx_buff->head; in conn_action_txdone()
707 skb_reset_tail_pointer(conn->tx_buff); in conn_action_txdone()
708 conn->tx_buff->len = 0; in conn_action_txdone()
709 spin_lock_irqsave(&conn->collect_lock, saveflags); in conn_action_txdone()
710 while ((skb = skb_dequeue(&conn->collect_queue))) { in conn_action_txdone()
711 header.next = conn->tx_buff->len + skb->len + NETIUCV_HDRLEN; in conn_action_txdone()
712 skb_put_data(conn->tx_buff, &header, NETIUCV_HDRLEN); in conn_action_txdone()
714 skb_put(conn->tx_buff, skb->len), in conn_action_txdone()
722 if (conn->collect_len > conn->prof.maxmulti) in conn_action_txdone()
723 conn->prof.maxmulti = conn->collect_len; in conn_action_txdone()
724 conn->collect_len = 0; in conn_action_txdone()
725 spin_unlock_irqrestore(&conn->collect_lock, saveflags); in conn_action_txdone()
726 if (conn->tx_buff->len == 0) { in conn_action_txdone()
732 skb_put_data(conn->tx_buff, &header, NETIUCV_HDRLEN); in conn_action_txdone()
733 conn->prof.send_stamp = jiffies; in conn_action_txdone()
736 rc = iucv_message_send(conn->path, &txmsg, 0, 0, in conn_action_txdone()
737 conn->tx_buff->data, conn->tx_buff->len); in conn_action_txdone()
738 conn->prof.doios_multi++; in conn_action_txdone()
739 conn->prof.txlen += conn->tx_buff->len; in conn_action_txdone()
740 conn->prof.tx_pending++; in conn_action_txdone()
741 if (conn->prof.tx_pending > conn->prof.tx_max_pending) in conn_action_txdone()
742 conn->prof.tx_max_pending = conn->prof.tx_pending; in conn_action_txdone()
744 conn->prof.tx_pending--; in conn_action_txdone()
754 if (stat_maxcq > conn->prof.maxcqueue) in conn_action_txdone()
755 conn->prof.maxcqueue = stat_maxcq; in conn_action_txdone()
772 struct iucv_connection *conn = ev->conn; in conn_action_connaccept() local
774 struct net_device *netdev = conn->netdev; in conn_action_connaccept()
780 conn->path = path; in conn_action_connaccept()
783 rc = iucv_path_accept(path, &netiucv_handler, conn->userdata , conn); in conn_action_connaccept()
789 netdev->tx_queue_len = conn->path->msglim; in conn_action_connaccept()
804 struct iucv_connection *conn = arg; in conn_action_connack() local
805 struct net_device *netdev = conn->netdev; in conn_action_connack()
809 fsm_deltimer(&conn->timer); in conn_action_connack()
811 netdev->tx_queue_len = conn->path->msglim; in conn_action_connack()
817 struct iucv_connection *conn = arg; in conn_action_conntimsev() local
820 fsm_deltimer(&conn->timer); in conn_action_conntimsev()
821 iucv_path_sever(conn->path, conn->userdata); in conn_action_conntimsev()
827 struct iucv_connection *conn = arg; in conn_action_connsever() local
828 struct net_device *netdev = conn->netdev; in conn_action_connsever()
833 fsm_deltimer(&conn->timer); in conn_action_connsever()
834 iucv_path_sever(conn->path, conn->userdata); in conn_action_connsever()
836 "connection\n", netiucv_printuser(conn)); in conn_action_connsever()
845 struct iucv_connection *conn = arg; in conn_action_start() local
846 struct net_device *netdev = conn->netdev; in conn_action_start()
861 conn->path = iucv_path_alloc(NETIUCV_QUEUELEN_DEFAULT, 0, GFP_KERNEL); in conn_action_start()
863 netdev->name, netiucv_printuser(conn)); in conn_action_start()
865 rc = iucv_path_connect(conn->path, &netiucv_handler, conn->userid, in conn_action_start()
866 NULL, conn->userdata, conn); in conn_action_start()
869 netdev->tx_queue_len = conn->path->msglim; in conn_action_start()
870 fsm_addtimer(&conn->timer, NETIUCV_TIMEOUT_5SEC, in conn_action_start()
871 CONN_EVENT_TIMER, conn); in conn_action_start()
876 netiucv_printname(conn->userid, 8)); in conn_action_start()
882 " guest %s\n", netiucv_printname(conn->userid, 8)); in conn_action_start()
895 netiucv_printname(conn->userid, 8)); in conn_action_start()
912 kfree(conn->path); in conn_action_start()
913 conn->path = NULL; in conn_action_start()
929 struct iucv_connection *conn = ev->conn; in conn_action_stop() local
930 struct net_device *netdev = conn->netdev; in conn_action_stop()
935 fsm_deltimer(&conn->timer); in conn_action_stop()
937 netiucv_purge_skb_queue(&conn->collect_queue); in conn_action_stop()
938 if (conn->path) { in conn_action_stop()
940 iucv_path_sever(conn->path, conn->userdata); in conn_action_stop()
941 kfree(conn->path); in conn_action_stop()
942 conn->path = NULL; in conn_action_stop()
944 netiucv_purge_skb_queue(&conn->commit_queue); in conn_action_stop()
950 struct iucv_connection *conn = arg; in conn_action_inval() local
951 struct net_device *netdev = conn->netdev; in conn_action_inval()
954 netdev->name, conn->userid); in conn_action_inval()
1012 fsm_event(privptr->conn->fsm, CONN_EVENT_START, privptr->conn); in dev_action_start()
1031 ev.conn = privptr->conn; in dev_action_stop()
1034 fsm_event(privptr->conn->fsm, CONN_EVENT_STOP, &ev); in dev_action_stop()
1059 netiucv_printuser(privptr->conn)); in dev_action_connup()
1121 static int netiucv_transmit_skb(struct iucv_connection *conn, in netiucv_transmit_skb() argument
1129 if (fsm_getstate(conn->fsm) != CONN_STATE_IDLE) { in netiucv_transmit_skb()
1132 spin_lock_irqsave(&conn->collect_lock, saveflags); in netiucv_transmit_skb()
1133 if (conn->collect_len + l > in netiucv_transmit_skb()
1134 (conn->max_buffsize - NETIUCV_HDRLEN)) { in netiucv_transmit_skb()
1140 skb_queue_tail(&conn->collect_queue, skb); in netiucv_transmit_skb()
1141 conn->collect_len += l; in netiucv_transmit_skb()
1144 spin_unlock_irqrestore(&conn->collect_lock, saveflags); in netiucv_transmit_skb()
1175 fsm_newstate(conn->fsm, CONN_STATE_TX); in netiucv_transmit_skb()
1176 conn->prof.send_stamp = jiffies; in netiucv_transmit_skb()
1180 rc = iucv_message_send(conn->path, &msg, 0, 0, in netiucv_transmit_skb()
1182 conn->prof.doios_single++; in netiucv_transmit_skb()
1183 conn->prof.txlen += skb->len; in netiucv_transmit_skb()
1184 conn->prof.tx_pending++; in netiucv_transmit_skb()
1185 if (conn->prof.tx_pending > conn->prof.tx_max_pending) in netiucv_transmit_skb()
1186 conn->prof.tx_max_pending = conn->prof.tx_pending; in netiucv_transmit_skb()
1189 fsm_newstate(conn->fsm, CONN_STATE_IDLE); in netiucv_transmit_skb()
1190 conn->prof.tx_pending--; in netiucv_transmit_skb()
1191 privptr = netdev_priv(conn->netdev); in netiucv_transmit_skb()
1209 skb_queue_tail(&conn->commit_queue, nskb); in netiucv_transmit_skb()
1295 rc = netiucv_transmit_skb(privptr->conn, skb); in netiucv_tx()
1326 return sprintf(buf, "%s\n", netiucv_printuser(priv->conn)); in user_show()
1381 struct net_device *ndev = priv->conn->netdev; in user_write()
1392 if (memcmp(username, priv->conn->userid, 9) && in user_write()
1409 memcpy(priv->conn->userid, username, 9); in user_write()
1410 memcpy(priv->conn->userdata, userdata, 17); in user_write()
1422 return sprintf(buf, "%d\n", priv->conn->max_buffsize); in buffer_show()
1429 struct net_device *ndev = priv->conn->netdev; in buffer_write()
1464 priv->conn->max_buffsize = bs1; in buffer_write()
1491 return sprintf(buf, "%s\n", fsm_getstate_str(priv->conn->fsm)); in conn_fsm_show()
1502 return sprintf(buf, "%ld\n", priv->conn->prof.maxmulti); in maxmulti_show()
1512 priv->conn->prof.maxmulti = 0; in maxmulti_write()
1524 return sprintf(buf, "%ld\n", priv->conn->prof.maxcqueue); in maxcq_show()
1533 priv->conn->prof.maxcqueue = 0; in maxcq_write()
1545 return sprintf(buf, "%ld\n", priv->conn->prof.doios_single); in sdoio_show()
1554 priv->conn->prof.doios_single = 0; in sdoio_write()
1566 return sprintf(buf, "%ld\n", priv->conn->prof.doios_multi); in mdoio_show()
1575 priv->conn->prof.doios_multi = 0; in mdoio_write()
1587 return sprintf(buf, "%ld\n", priv->conn->prof.txlen); in txlen_show()
1596 priv->conn->prof.txlen = 0; in txlen_write()
1608 return sprintf(buf, "%ld\n", priv->conn->prof.tx_time); in txtime_show()
1617 priv->conn->prof.tx_time = 0; in txtime_write()
1629 return sprintf(buf, "%ld\n", priv->conn->prof.tx_pending); in txpend_show()
1638 priv->conn->prof.tx_pending = 0; in txpend_write()
1650 return sprintf(buf, "%ld\n", priv->conn->prof.tx_max_pending); in txmpnd_show()
1659 priv->conn->prof.tx_max_pending = 0; in txmpnd_write()
1749 struct iucv_connection *conn; in netiucv_new_connection() local
1751 conn = kzalloc(sizeof(*conn), GFP_KERNEL); in netiucv_new_connection()
1752 if (!conn) in netiucv_new_connection()
1754 skb_queue_head_init(&conn->collect_queue); in netiucv_new_connection()
1755 skb_queue_head_init(&conn->commit_queue); in netiucv_new_connection()
1756 spin_lock_init(&conn->collect_lock); in netiucv_new_connection()
1757 conn->max_buffsize = NETIUCV_BUFSIZE_DEFAULT; in netiucv_new_connection()
1758 conn->netdev = dev; in netiucv_new_connection()
1760 conn->rx_buff = alloc_skb(conn->max_buffsize, GFP_KERNEL | GFP_DMA); in netiucv_new_connection()
1761 if (!conn->rx_buff) in netiucv_new_connection()
1763 conn->tx_buff = alloc_skb(conn->max_buffsize, GFP_KERNEL | GFP_DMA); in netiucv_new_connection()
1764 if (!conn->tx_buff) in netiucv_new_connection()
1766 conn->fsm = init_fsm("netiucvconn", conn_state_names, in netiucv_new_connection()
1770 if (!conn->fsm) in netiucv_new_connection()
1773 fsm_settimer(conn->fsm, &conn->timer); in netiucv_new_connection()
1774 fsm_newstate(conn->fsm, CONN_STATE_INVALID); in netiucv_new_connection()
1777 memcpy(conn->userdata, userdata, 17); in netiucv_new_connection()
1779 memcpy(conn->userid, username, 9); in netiucv_new_connection()
1780 fsm_newstate(conn->fsm, CONN_STATE_STOPPED); in netiucv_new_connection()
1784 list_add_tail(&conn->list, &iucv_connection_list); in netiucv_new_connection()
1786 return conn; in netiucv_new_connection()
1789 kfree_skb(conn->tx_buff); in netiucv_new_connection()
1791 kfree_skb(conn->rx_buff); in netiucv_new_connection()
1793 kfree(conn); in netiucv_new_connection()
1802 static void netiucv_remove_connection(struct iucv_connection *conn) in netiucv_remove_connection() argument
1807 list_del_init(&conn->list); in netiucv_remove_connection()
1809 fsm_deltimer(&conn->timer); in netiucv_remove_connection()
1810 netiucv_purge_skb_queue(&conn->collect_queue); in netiucv_remove_connection()
1811 if (conn->path) { in netiucv_remove_connection()
1812 iucv_path_sever(conn->path, conn->userdata); in netiucv_remove_connection()
1813 kfree(conn->path); in netiucv_remove_connection()
1814 conn->path = NULL; in netiucv_remove_connection()
1816 netiucv_purge_skb_queue(&conn->commit_queue); in netiucv_remove_connection()
1817 kfree_fsm(conn->fsm); in netiucv_remove_connection()
1818 kfree_skb(conn->rx_buff); in netiucv_remove_connection()
1819 kfree_skb(conn->tx_buff); in netiucv_remove_connection()
1835 if (privptr->conn) in netiucv_free_netdevice()
1836 netiucv_remove_connection(privptr->conn); in netiucv_free_netdevice()
1839 privptr->conn = NULL; privptr->fsm = NULL; in netiucv_free_netdevice()
1892 privptr->conn = netiucv_new_connection(dev, username, userdata); in netiucv_init_netdevice()
1893 if (!privptr->conn) { in netiucv_init_netdevice()
1960 netiucv_printuser(priv->conn)); in connection_store()
2007 priv->conn->userid); in remove_store()