if (unlikely(current->flags & PF_FREEZE)) { 
if (unlikely(freezing(current))) { 
static int stir_transmit_thread(void *arg){	struct stir_cb *stir = arg;	struct net_device *dev = stir->netdev;	struct sk_buff *skb;	daemonize("%s", dev->name);	allow_signal(SIGTERM);	while (netif_running(dev)	       && netif_device_present(dev)	       && !signal_pending(current))	{#ifdef CONFIG_PM		/* if suspending, then power off and wait */		if (unlikely(current->flags & PF_FREEZE)) {			if (stir->receiving)				receive_stop(stir);			else				fifo_txwait(stir, -1);			write_reg(stir, REG_CTRL1, CTRL1_TXPWD|CTRL1_RXPWD);			refrigerator(PF_FREEZE);			if (change_speed(stir, stir->speed))				break;		}#endif		/* if something to send? */		skb = xchg(&stir->tx_pending, NULL);		if (skb) {			unsigned new_speed = irda_get_next_speed(skb);			netif_wake_queue(dev);			if (skb->len > 0)				stir_send(stir, skb);			dev_kfree_skb(skb);			if ((new_speed != -1) && (stir->speed != new_speed)) {				if (fifo_txwait(stir, -1) ||				    change_speed(stir, new_speed))					break;			}			continue;		}		/* nothing to send? start receiving */		if (!stir->receiving 		    && irda_device_txqueue_empty(dev)) {			/* Wait otherwise chip gets confused. */			if (fifo_txwait(stir, -1))				break;			if (unlikely(receive_start(stir))) {				if (net_ratelimit())					info("%s: receive usb submit failed",					     stir->netdev->name);				stir->receiving = 0;				msleep(10);				continue;			}		}		/* sleep if nothing to send */		wait_event_interruptible(stir->thr_wait, stir->tx_pending);	}	complete_and_exit (&stir->thr_exited, 0);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/3e1d1d28d99dabe63c64f7f40f1ca1d646de1f73/stir4200.c/clean/drivers/net/irda/stir4200.c