/* fi An instance of a channel statemachine. event The event, just happened. arg Generic pointer, casted from channel * upon call.  */
static void ctcm_chx_txiniterr(fsm_instance *fi, int event, void *arg)
/* fi An instance of a channel statemachine. event The event, just happened. arg Generic pointer, casted from channel * upon call.  */
static void ctcm_chx_txiniterr(fsm_instance *fi, int event, void *arg)
{
	struct channel *ch = arg;
	struct net_device *dev = ch->netdev;
	struct ctcm_priv *priv = dev->ml_priv;
	if (event == CTC_EVENT_TIMER) {
		fsm_deltimer(&ch->timer);
		if (ch->retry++ < 3)
			ctcm_chx_restart(fi, event, arg);
		else {
			fsm_newstate(fi, CTC_STATE_TXERR);
			fsm_event(priv->fsm, DEV_EVENT_TXDOWN, dev);
		}
	} else {
		CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR,
			"%s(%s): %s in %s", CTCM_FUNTAIL, ch->id,
			ctc_ch_event_names[event], fsm_getstate_str(fi));
		dev_warn(&dev->dev,
			"Initialization failed with RX/TX init handshake "
			"error %s\n", ctc_ch_event_names[event]);
	}
}