skb_unlink(skb); 
skb_unlink(skb, &shaper->sendq); 
static void shaper_kick(struct shaper *shaper){	struct sk_buff *skb;		/*	 *	Walk the list (may be empty)	 */	 	while((skb=skb_peek(&shaper->sendq))!=NULL)	{		/*		 *	Each packet due to go out by now (within an error		 *	of SHAPER_BURST) gets kicked onto the link 		 */		 		if(sh_debug)			printk("Clock = %ld, jiffies = %ld\n", SHAPERCB(skb)->shapeclock, jiffies);		if(time_before_eq(SHAPERCB(skb)->shapeclock, jiffies + SHAPER_BURST))		{			/*			 *	Pull the frame and get interrupts back on.			 */			 			skb_unlink(skb);			if (shaper->recovery < 			    SHAPERCB(skb)->shapeclock + SHAPERCB(skb)->shapelen)				shaper->recovery = SHAPERCB(skb)->shapeclock + SHAPERCB(skb)->shapelen;			/*			 *	Pass on to the physical target device via			 *	our low level packet thrower.			 */						SHAPERCB(skb)->shapepend=0;			shaper_queue_xmit(shaper, skb);	/* Fire */		}		else			break;	}	/*	 *	Next kick.	 */	 	if(skb!=NULL)		mod_timer(&shaper->timer, SHAPERCB(skb)->shapeclock);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/8728b834b226ffcf2c94a58530090e292af2a7bf/shaper.c/buggy/drivers/net/shaper.c