skb_reserve(rxb->skb, (u32)&pkt->u.frame.data[0] - (u32)pkt); 
skb_reserve(rxb->skb, offsetof(struct ipw_rx_packet, u.frame.data)); 
static inline void ipw_handle_data_packet(struct ipw_priv *priv, 					      struct ipw_rx_mem_buffer *rxb,					      struct ieee80211_rx_stats *stats){	struct ipw_rx_packet *pkt = (struct ipw_rx_packet *)rxb->skb->data;	/* We received data from the HW, so stop the watchdog */	priv->net_dev->trans_start = jiffies;	/* We only process data packets if the 	 * interface is open */	if (unlikely((pkt->u.frame.length + IPW_RX_FRAME_SIZE) > 		     skb_tailroom(rxb->skb))) {		priv->ieee->stats.rx_errors++;		priv->wstats.discard.misc++;		IPW_DEBUG_DROP("Corruption detected! Oh no!\n");		return;	} else if (unlikely(!netif_running(priv->net_dev))) {		priv->ieee->stats.rx_dropped++;		priv->wstats.discard.misc++;		IPW_DEBUG_DROP("Dropping packet while interface is not up.\n");		return;	}	/* Advance skb->data to the start of the actual payload */	skb_reserve(rxb->skb, (u32)&pkt->u.frame.data[0] - (u32)pkt);	/* Set the size of the skb to the size of the frame */	skb_put(rxb->skb, pkt->u.frame.length);	IPW_DEBUG_RX("Rx packet of %d bytes.\n", rxb->skb->len);	if (!ieee80211_rx(priv->ieee, rxb->skb, stats)) 		priv->ieee->stats.rx_errors++;	else /* ieee80211_rx succeeded, so it now owns the SKB */		rxb->skb = NULL;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/aaa4d308a8cbc4ccfd870ee556def2e481557274/ipw2200.c/clean/drivers/net/wireless/ipw2200.c