The DMA api requires that the full mapping be sync'd when copying frame. First found by Jarek on sky2. Signed-off-by: Stephen Hemminger --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c 2010-01-20 12:02:29.269388203 -0800 +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c 2010-01-20 12:24:37.828137536 -0800 @@ -624,11 +624,15 @@ void ipoib_cm_handle_rx_wc(struct net_de small_skb = dev_alloc_skb(dlen + 12); if (small_skb) { skb_reserve(small_skb, 12); - ib_dma_sync_single_for_cpu(priv->ca, rx_ring[wr_id].mapping[0], - dlen, DMA_FROM_DEVICE); + ib_dma_sync_single_for_cpu(priv->ca, + rx_ring[wr_id].mapping[0], + IPOIB_CM_HEAD_SIZE, + DMA_FROM_DEVICE); skb_copy_from_linear_data(skb, small_skb->data, dlen); - ib_dma_sync_single_for_device(priv->ca, rx_ring[wr_id].mapping[0], - dlen, DMA_FROM_DEVICE); + ib_dma_sync_single_for_device(priv->ca, + rx_ring[wr_id].mapping[0], + IPOIB_CM_HEAD_SIZE, + DMA_FROM_DEVICE); skb_put(small_skb, dlen); skb = small_skb; goto copied; -- -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html