diff options
Diffstat (limited to 'drivers/infiniband/ulp/ipoib/ipoib_ib.c')
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_ib.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c index 00435be4a44b..2b060f45bec3 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c | |||
@@ -117,7 +117,7 @@ static void ipoib_ud_skb_put_frags(struct ipoib_dev_priv *priv, | |||
117 | 117 | ||
118 | size = length - IPOIB_UD_HEAD_SIZE; | 118 | size = length - IPOIB_UD_HEAD_SIZE; |
119 | 119 | ||
120 | frag->size = size; | 120 | skb_frag_size_set(frag, size); |
121 | skb->data_len += size; | 121 | skb->data_len += size; |
122 | skb->truesize += size; | 122 | skb->truesize += size; |
123 | } else | 123 | } else |
@@ -322,10 +322,10 @@ static int ipoib_dma_map_tx(struct ib_device *ca, | |||
322 | off = 0; | 322 | off = 0; |
323 | 323 | ||
324 | for (i = 0; i < skb_shinfo(skb)->nr_frags; ++i) { | 324 | for (i = 0; i < skb_shinfo(skb)->nr_frags; ++i) { |
325 | skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; | 325 | const skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; |
326 | mapping[i + off] = ib_dma_map_page(ca, | 326 | mapping[i + off] = ib_dma_map_page(ca, |
327 | skb_frag_page(frag), | 327 | skb_frag_page(frag), |
328 | frag->page_offset, frag->size, | 328 | frag->page_offset, skb_frag_size(frag), |
329 | DMA_TO_DEVICE); | 329 | DMA_TO_DEVICE); |
330 | if (unlikely(ib_dma_mapping_error(ca, mapping[i + off]))) | 330 | if (unlikely(ib_dma_mapping_error(ca, mapping[i + off]))) |
331 | goto partial_error; | 331 | goto partial_error; |
@@ -334,8 +334,9 @@ static int ipoib_dma_map_tx(struct ib_device *ca, | |||
334 | 334 | ||
335 | partial_error: | 335 | partial_error: |
336 | for (; i > 0; --i) { | 336 | for (; i > 0; --i) { |
337 | skb_frag_t *frag = &skb_shinfo(skb)->frags[i - 1]; | 337 | const skb_frag_t *frag = &skb_shinfo(skb)->frags[i - 1]; |
338 | ib_dma_unmap_page(ca, mapping[i - !off], frag->size, DMA_TO_DEVICE); | 338 | |
339 | ib_dma_unmap_page(ca, mapping[i - !off], skb_frag_size(frag), DMA_TO_DEVICE); | ||
339 | } | 340 | } |
340 | 341 | ||
341 | if (off) | 342 | if (off) |
@@ -359,8 +360,9 @@ static void ipoib_dma_unmap_tx(struct ib_device *ca, | |||
359 | off = 0; | 360 | off = 0; |
360 | 361 | ||
361 | for (i = 0; i < skb_shinfo(skb)->nr_frags; ++i) { | 362 | for (i = 0; i < skb_shinfo(skb)->nr_frags; ++i) { |
362 | skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; | 363 | const skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; |
363 | ib_dma_unmap_page(ca, mapping[i + off], frag->size, | 364 | |
365 | ib_dma_unmap_page(ca, mapping[i + off], skb_frag_size(frag), | ||
364 | DMA_TO_DEVICE); | 366 | DMA_TO_DEVICE); |
365 | } | 367 | } |
366 | } | 368 | } |
@@ -510,7 +512,7 @@ static inline int post_send(struct ipoib_dev_priv *priv, | |||
510 | 512 | ||
511 | for (i = 0; i < nr_frags; ++i) { | 513 | for (i = 0; i < nr_frags; ++i) { |
512 | priv->tx_sge[i + off].addr = mapping[i + off]; | 514 | priv->tx_sge[i + off].addr = mapping[i + off]; |
513 | priv->tx_sge[i + off].length = frags[i].size; | 515 | priv->tx_sge[i + off].length = skb_frag_size(&frags[i]); |
514 | } | 516 | } |
515 | priv->tx_wr.num_sge = nr_frags + off; | 517 | priv->tx_wr.num_sge = nr_frags + off; |
516 | priv->tx_wr.wr_id = wr_id; | 518 | priv->tx_wr.wr_id = wr_id; |