be16_to_cpup((u16 *) skb->data), be32_to_cpup((u32 *) phdr->hwaddr), 
be16_to_cpup((__be16 *) skb->data), be32_to_cpup((__be32 *) phdr->hwaddr), 
static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev){	struct ipoib_dev_priv *priv = netdev_priv(dev);	struct ipoib_neigh *neigh;	unsigned long flags;	local_irq_save(flags);	if (!spin_trylock(&priv->tx_lock)) {		local_irq_restore(flags);		return NETDEV_TX_LOCKED;	}	/*	 * Check if our queue is stopped.  Since we have the LLTX bit	 * set, we can't rely on netif_stop_queue() preventing our	 * xmit function from being called with a full queue.	 */	if (unlikely(netif_queue_stopped(dev))) {		spin_unlock_irqrestore(&priv->tx_lock, flags);		return NETDEV_TX_BUSY;	}	if (skb->dst && skb->dst->neighbour) {		if (unlikely(!*to_ipoib_neigh(skb->dst->neighbour))) {			path_lookup(skb, dev);			goto out;		}		neigh = *to_ipoib_neigh(skb->dst->neighbour);		if (likely(neigh->ah)) {			ipoib_send(dev, skb, neigh->ah,				   be32_to_cpup((__be32 *) skb->dst->neighbour->ha));			goto out;		}		if (skb_queue_len(&neigh->queue) < IPOIB_MAX_PATH_REC_QUEUE) {			spin_lock(&priv->lock);			__skb_queue_tail(&neigh->queue, skb);			spin_unlock(&priv->lock);		} else {			++priv->stats.tx_dropped;			dev_kfree_skb_any(skb);		}	} else {		struct ipoib_pseudoheader *phdr =			(struct ipoib_pseudoheader *) skb->data;		skb_pull(skb, sizeof *phdr);		if (phdr->hwaddr[4] == 0xff) {			/* Add in the P_Key for multicast*/			phdr->hwaddr[8] = (priv->pkey >> 8) & 0xff;			phdr->hwaddr[9] = priv->pkey & 0xff;			ipoib_mcast_send(dev, (union ib_gid *) (phdr->hwaddr + 4), skb);		} else {			/* unicast GID -- should be ARP or RARP reply */			if ((be16_to_cpup((__be16 *) skb->data) != ETH_P_ARP) &&			    (be16_to_cpup((__be16 *) skb->data) != ETH_P_RARP)) {				ipoib_warn(priv, "Unicast, no %s: type %04x, QPN %06x "					   IPOIB_GID_FMT "\n",					   skb->dst ? "neigh" : "dst",					   be16_to_cpup((u16 *) skb->data),					   be32_to_cpup((u32 *) phdr->hwaddr),					   IPOIB_GID_ARG(*(union ib_gid *) (phdr->hwaddr + 4)));				dev_kfree_skb_any(skb);				++priv->stats.tx_dropped;				goto out;			}			unicast_arp_send(skb, dev, phdr);		}	}out:	spin_unlock_irqrestore(&priv->tx_lock, flags);	return NETDEV_TX_OK;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/97f52eb438be7caebe026421545619d8a0c1398a/ipoib_main.c/buggy/drivers/infiniband/ulp/ipoib/ipoib_main.c