aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/ulp/ipoib/ipoib_ib.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/ulp/ipoib/ipoib_ib.c')
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_ib.c18
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
335partial_error: 335partial_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;