/* This function is called from timer callback functions. When connection is busy (during sending a data frame) timer expiration event must be queued. Otherwise this event can be sent to connection state machine. Queued events will process by llc_backlog_rcv function after sending data frame.  */
static void llc_process_tmr_ev(struct sock *sk, struct sk_buff *skb)
/* This function is called from timer callback functions. When connection is busy (during sending a data frame) timer expiration event must be queued. Otherwise this event can be sent to connection state machine. Queued events will process by llc_backlog_rcv function after sending data frame.  */
static void llc_process_tmr_ev(struct sock *sk, struct sk_buff *skb)
{
	if (llc_sk(sk)->state == LLC_CONN_OUT_OF_SVC) {
		printk(KERN_WARNING "%s: timer called on closed connection\n",
		       __func__);
		kfree_skb(skb);
	} else {
		if (!sock_owned_by_user(sk))
			llc_conn_state_process(sk, skb);
		else {
			llc_set_backlog_type(skb, LLC_EVENT);
			sk_add_backlog(sk, skb);
		}
	}
}