Lines Matching refs:ch

107 static void ctcmpc_unpack_skb(struct channel *ch, struct sk_buff *pskb);
273 ctcm_pr_debug("th->ch : %02x\n", header->th_ch_flag);
611 struct channel *rch = mpcginfo->ch;
615 struct channel *ch = priv->channel[CTCM_WRITE];
617 CTCM_PR_DEBUG("%s: ch=0x%p id=%s\n", __func__, ch, ch->id);
624 fsm_deltimer(&ch->sweep_timer);
627 ch->th_seq_num = 0x00;
646 struct channel *ch = priv->channel[CTCM_WRITE];
648 CTCM_PR_DEBUG("%s: ch=0x%p id=%s\n", __func__, rch, rch->id);
660 header->sw.th_last_seq = ch->th_seq_num;
663 skb_queue_tail(&ch->sweep_queue, sweep_skb);
665 fsm_addtimer(&ch->sweep_timer, 100, CTC_EVENT_RSWEEP_TIMER, ch);
682 struct channel *rch = mpcginfo->ch;
686 struct channel *ch = priv->channel[CTCM_WRITE];
690 " %s(): ch=0x%p id=%s\n", __func__, ch, ch->id);
702 ctcmpc_send_sweep_resp(ch);
864 struct channel *ch = NULL;
880 ch = priv->channel[CTCM_READ];
881 ch->pdu_seq = 0;
883 __func__, ch->pdu_seq);
885 ctcmpc_chx_rxidle(ch->fsm, CTC_EVENT_START, ch);
887 ch = priv->channel[CTCM_WRITE];
888 if (ch->collect_len > 0) {
889 spin_lock(&ch->collect_lock);
890 ctcm_purge_skb_queue(&ch->collect_queue);
891 ch->collect_len = 0;
892 spin_unlock(&ch->collect_lock);
894 ctcm_chx_txidle(ch->fsm, CTC_EVENT_START, ch);
916 void mpc_channel_action(struct channel *ch, int direction, int action)
918 struct net_device *dev = ch->netdev;
929 CTCM_PR_DEBUG("enter %s: ch=0x%p id=%s\n", __func__, ch, ch->id);
938 if ((action == MPC_CHANNEL_ADD) && (ch->in_mpcgroup == 0)) {
942 ch->in_mpcgroup = 1;
944 if (ch->xid_skb != NULL)
945 dev_kfree_skb_any(ch->xid_skb);
947 ch->xid_skb = __dev_alloc_skb(MPC_BUFSIZE_DEFAULT,
949 if (ch->xid_skb == NULL) {
951 "%s(%s): Couldn't alloc ch xid_skb\n",
956 ch->xid_skb_data = ch->xid_skb->data;
957 ch->xid_th = (struct th_header *)ch->xid_skb->data;
958 skb_put(ch->xid_skb, TH_HEADER_LENGTH);
959 ch->xid = (struct xid2 *)skb_tail_pointer(ch->xid_skb);
960 skb_put(ch->xid_skb, XID2_LENGTH);
961 ch->xid_id = skb_tail_pointer(ch->xid_skb);
962 ch->xid_skb->data = ch->xid_skb_data;
963 skb_reset_tail_pointer(ch->xid_skb);
964 ch->xid_skb->len = 0;
966 skb_put_data(ch->xid_skb, grp->xid_skb->data,
969 ch->xid->xid2_dlc_type =
970 ((CHANNEL_DIRECTION(ch->flags) == CTCM_READ)
973 if (CHANNEL_DIRECTION(ch->flags) == CTCM_WRITE)
974 ch->xid->xid2_buf_len = 0x00;
976 ch->xid_skb->data = ch->xid_skb_data;
977 skb_reset_tail_pointer(ch->xid_skb);
978 ch->xid_skb->len = 0;
980 fsm_newstate(ch->fsm, CH_XID0_PENDING);
991 (ch->in_mpcgroup == 1)) {
992 ch->in_mpcgroup = 0;
996 if (ch->xid_skb != NULL)
997 dev_kfree_skb_any(ch->xid_skb);
998 ch->xid_skb = NULL;
1017 CTCM_PR_DEBUG("exit %s: ch=0x%p id=%s\n", __func__, ch, ch->id);
1025 * ch The channel where this skb has been received.
1028 static void ctcmpc_unpack_skb(struct channel *ch, struct sk_buff *pskb)
1030 struct net_device *dev = ch->netdev;
1043 CTCM_PR_DEBUG("ctcmpc enter: %s() %s cp:%i ch:%s\n",
1044 __func__, dev->name, smp_processor_id(), ch->id);
1065 (header->th_seq_num != ch->th_seq_num + 1) &&
1066 (ch->th_seq_num != 0))) {
1075 skb_queue_tail(&ch->io_queue, pskb);
1078 ch->th_seq_num + 1, header->th_seq_num);
1083 ch->th_seq_num = header->th_seq_num;
1086 __func__, ch->th_seq_num);
1107 if ((pskb->len <= 0) || (pskb->len > ch->max_bufsize)) {
1146 *((__u32 *) skb_push(skb, 4)) = ch->pdu_seq;
1147 ch->pdu_seq++;
1151 __func__, ch->pdu_seq);
1171 mpcginfo->ch = ch;
1211 CTCM_PR_DEBUG("exit %s: %s: ch=0x%p id=%s\n",
1212 __func__, dev->name, ch, ch->id);
1218 * ch The channel to work on.
1225 struct channel *ch = (struct channel *)thischan;
1227 struct net_device *dev = ch->netdev;
1232 dev->name, smp_processor_id(), __func__, ch->id);
1235 (skb = skb_dequeue(&ch->io_queue))) {
1236 ctcmpc_unpack_skb(ch, skb);
1245 if (skb == skb_peek(&ch->io_queue))
1248 CTCM_PR_DEBUG("exit %s: %s: ch=0x%p id=%s\n",
1249 __func__, dev->name, ch, ch->id);
1478 struct channel *ch = mpcginfo->ch;
1483 if (ch) {
1484 dev = ch->netdev;
1490 CTCM_FUNTAIL, dev->name, ch->id);
1509 struct channel *ch = (struct channel *)thischan;
1512 spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
1513 rc = ccw_device_start(ch->cdev, &ch->ccw[15], 0, 0xff, 0);
1514 spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
1517 ctcm_ccw_check_rc(ch, rc, (char *)__func__);
1531 struct channel *ch = mpcginfo->ch;
1532 struct net_device *dev = ch->netdev;
1548 CTCM_FUNTAIL, ch->id);
1555 if (((CHANNEL_DIRECTION(ch->flags) == CTCM_READ) ? XID2_WRITE_SIDE :
1561 CTCM_FUNTAIL, ch->id);
1596 CTCM_FUNTAIL, ch->id);
1601 CTCM_FUNTAIL, ch->id);
1610 CTCM_FUNTAIL, ch->id);
1617 CTCM_FUNTAIL, ch->id);
1624 CTCM_FUNTAIL, ch->id);
1631 CTCM_FUNTAIL, ch->id);
1652 struct channel *ch = arg;
1658 CTCM_PR_DEBUG("Enter %s: cp=%i ch=0x%p id=%s\n",
1659 __func__, smp_processor_id(), ch, ch->id);
1661 if (ctcm_checkalloc_buffer(ch))
1667 ch->trans_skb->data = ch->trans_skb_data;
1668 skb_reset_tail_pointer(ch->trans_skb);
1669 ch->trans_skb->len = 0;
1674 memset(ch->trans_skb->data, 0, 16);
1675 ch->rcvd_xid_th = (struct th_header *)ch->trans_skb_data;
1677 skb_put(ch->trans_skb, TH_HEADER_LENGTH);
1678 ch->rcvd_xid = (struct xid2 *)skb_tail_pointer(ch->trans_skb);
1680 skb_put(ch->trans_skb, XID2_LENGTH);
1681 ch->rcvd_xid_id = skb_tail_pointer(ch->trans_skb);
1683 ch->trans_skb->data = ch->trans_skb_data;
1684 skb_reset_tail_pointer(ch->trans_skb);
1685 ch->trans_skb->len = 0;
1689 memset(ch->trans_skb->data, 0, 16);
1690 ch->rcvd_xid_th = (struct th_header *)ch->trans_skb_data;
1691 ch->rcvd_xid = (struct xid2 *)(ch->trans_skb_data + TH_HEADER_LENGTH);
1692 ch->rcvd_xid_id = ch->trans_skb_data + TH_HEADER_LENGTH + XID2_LENGTH;
1695 ch->ccw[8].flags = CCW_FLAG_SLI | CCW_FLAG_CC;
1696 ch->ccw[8].count = 0;
1697 ch->ccw[8].cda = 0x00;
1699 if (!(ch->xid_th && ch->xid && ch->xid_id))
1702 CTCM_FUNTAIL, ch->id, ch->xid_th, ch->xid, ch->xid_id);
1706 if (ch->xid_th == NULL)
1708 ch->ccw[9].cmd_code = CCW_CMD_WRITE;
1709 ch->ccw[9].flags = CCW_FLAG_SLI | CCW_FLAG_CC;
1710 ch->ccw[9].count = TH_HEADER_LENGTH;
1711 ch->ccw[9].cda = virt_to_dma32(ch->xid_th);
1713 if (ch->xid == NULL)
1715 ch->ccw[10].cmd_code = CCW_CMD_WRITE;
1716 ch->ccw[10].flags = CCW_FLAG_SLI | CCW_FLAG_CC;
1717 ch->ccw[10].count = XID2_LENGTH;
1718 ch->ccw[10].cda = virt_to_dma32(ch->xid);
1720 ch->ccw[11].cmd_code = CCW_CMD_READ;
1721 ch->ccw[11].flags = CCW_FLAG_SLI | CCW_FLAG_CC;
1722 ch->ccw[11].count = TH_HEADER_LENGTH;
1723 ch->ccw[11].cda = virt_to_dma32(ch->rcvd_xid_th);
1725 ch->ccw[12].cmd_code = CCW_CMD_READ;
1726 ch->ccw[12].flags = CCW_FLAG_SLI | CCW_FLAG_CC;
1727 ch->ccw[12].count = XID2_LENGTH;
1728 ch->ccw[12].cda = virt_to_dma32(ch->rcvd_xid);
1730 ch->ccw[13].cmd_code = CCW_CMD_READ;
1731 ch->ccw[13].cda = virt_to_dma32(ch->rcvd_xid_id);
1734 ch->ccw[9].cmd_code = CCW_CMD_READ;
1735 ch->ccw[9].flags = CCW_FLAG_SLI | CCW_FLAG_CC;
1736 ch->ccw[9].count = TH_HEADER_LENGTH;
1737 ch->ccw[9].cda = virt_to_dma32(ch->rcvd_xid_th);
1739 ch->ccw[10].cmd_code = CCW_CMD_READ;
1740 ch->ccw[10].flags = CCW_FLAG_SLI | CCW_FLAG_CC;
1741 ch->ccw[10].count = XID2_LENGTH;
1742 ch->ccw[10].cda = virt_to_dma32(ch->rcvd_xid);
1744 if (ch->xid_th == NULL)
1746 ch->ccw[11].cmd_code = CCW_CMD_WRITE;
1747 ch->ccw[11].flags = CCW_FLAG_SLI | CCW_FLAG_CC;
1748 ch->ccw[11].count = TH_HEADER_LENGTH;
1749 ch->ccw[11].cda = virt_to_dma32(ch->xid_th);
1751 if (ch->xid == NULL)
1753 ch->ccw[12].cmd_code = CCW_CMD_WRITE;
1754 ch->ccw[12].flags = CCW_FLAG_SLI | CCW_FLAG_CC;
1755 ch->ccw[12].count = XID2_LENGTH;
1756 ch->ccw[12].cda = virt_to_dma32(ch->xid);
1758 if (ch->xid_id == NULL)
1760 ch->ccw[13].cmd_code = CCW_CMD_WRITE;
1761 ch->ccw[13].cda = virt_to_dma32(ch->xid_id);
1764 ch->ccw[13].flags = CCW_FLAG_SLI | CCW_FLAG_CC;
1765 ch->ccw[13].count = 4;
1767 ch->ccw[14].cmd_code = CCW_CMD_NOOP;
1768 ch->ccw[14].flags = CCW_FLAG_SLI;
1769 ch->ccw[14].count = 0;
1770 ch->ccw[14].cda = 0;
1772 CTCM_CCW_DUMP((char *)&ch->ccw[8], sizeof(struct ccw1) * 7);
1773 CTCM_D3_DUMP((char *)ch->xid_th, TH_HEADER_LENGTH);
1774 CTCM_D3_DUMP((char *)ch->xid, XID2_LENGTH);
1775 CTCM_D3_DUMP((char *)ch->xid_id, 4);
1781 spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
1785 fsm_addtimer(&ch->timer, 5000 , CTC_EVENT_TIMER, ch);
1786 rc = ccw_device_start(ch->cdev, &ch->ccw[8], 0, 0xff, 0);
1789 spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
1792 ctcm_ccw_check_rc(ch, rc,
1797 CTCM_PR_DEBUG("Exit %s: ch=0x%p id=%s\n",
1798 __func__, ch, ch->id);
1827 struct channel *ch = arg;
1828 struct net_device *dev = ch->netdev;
1832 CTCM_PR_DEBUG("Enter %s: cp=%i ch=0x%p id=%s\n",
1833 __func__, smp_processor_id(), ch, ch->id);
1835 if (ch->xid == NULL) {
1837 "%s(%s): ch->xid == NULL",
1842 fsm_newstate(ch->fsm, CH_XID0_INPROGRESS);
1844 ch->xid->xid2_option = XID2_0;
1849 ch->ccw[8].cmd_code = CCW_CMD_SENSE_CMD;
1853 ch->ccw[8].cmd_code = CCW_CMD_WRITE_CTL;
1857 fsm_event(grp->fsm, MPCG_EVENT_DOIO, ch);
1880 struct channel *ch = priv->channel[direction];
1881 struct xid2 *thisxid = ch->xid;
1882 ch->xid_skb->data = ch->xid_skb_data;
1883 skb_reset_tail_pointer(ch->xid_skb);
1884 ch->xid_skb->len = 0;
1891 if (fsm_getstate(ch->fsm) == CH_XID7_PENDING1) {
1892 fsm_newstate(ch->fsm, CH_XID7_PENDING2);
1893 ch->ccw[8].cmd_code = CCW_CMD_SENSE_CMD;
1894 skb_put_data(ch->xid_skb, &thdummy,
1898 } else if (fsm_getstate(ch->fsm) < CH_XID7_PENDING2) {
1899 fsm_newstate(ch->fsm, CH_XID7_PENDING2);
1900 ch->ccw[8].cmd_code = CCW_CMD_WRITE_CTL;
1901 skb_put_data(ch->xid_skb, &thnorm,
1908 if (fsm_getstate(ch->fsm) < CH_XID7_PENDING4) {
1909 fsm_newstate(ch->fsm, CH_XID7_PENDING4);
1910 skb_put_data(ch->xid_skb, &thnorm,
1912 ch->ccw[8].cmd_code = CCW_CMD_WRITE_CTL;
1915 } else if (fsm_getstate(ch->fsm) == CH_XID7_PENDING3) {
1916 fsm_newstate(ch->fsm, CH_XID7_PENDING4);
1917 ch->ccw[8].cmd_code = CCW_CMD_SENSE_CMD;
1918 skb_put_data(ch->xid_skb, &thdummy,
1925 fsm_event(grp->fsm, MPCG_EVENT_DOIO, ch);
1939 struct channel *ch = mpcginfo->ch;
1940 struct net_device *dev = ch->netdev;
1944 CTCM_PR_DEBUG("%s: ch-id:%s xid2:%i xid7:%i xidt_p2:%i \n",
1945 __func__, ch->id, grp->outstanding_xid2,
1948 if (fsm_getstate(ch->fsm) < CH_XID7_PENDING)
1949 fsm_newstate(ch->fsm, CH_XID7_PENDING);
1983 __func__, ch->id, grp->outstanding_xid2,
1986 __func__, ch->id,
1987 fsm_getstate_str(grp->fsm), fsm_getstate_str(ch->fsm));
2000 struct channel *ch = mpcginfo->ch;
2001 struct net_device *dev = ch->netdev;
2005 CTCM_PR_DEBUG("Enter %s: cp=%i ch=0x%p id=%s\n",
2006 __func__, smp_processor_id(), ch, ch->id);
2011 ch->xid_skb->data = ch->xid_skb_data;
2012 skb_reset_tail_pointer(ch->xid_skb);
2013 ch->xid_skb->len = 0;