aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/mellanox/mlx4
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2011-10-18 17:00:24 -0400
committerDavid S. Miller <davem@davemloft.net>2011-10-19 03:10:46 -0400
commit9e903e085262ffbf1fc44a17ac06058aca03524a (patch)
tree4acefc97ba38c1733474d25c0b2053b56af97db1 /drivers/net/ethernet/mellanox/mlx4
parentdd767856a36e00b631d65ebc4bb81b19915532d6 (diff)
net: add skb frag size accessors
To ease skb->truesize sanitization, its better to be able to localize all references to skb frags size. Define accessors : skb_frag_size() to fetch frag size, and skb_frag_size_{set|add|sub}() to manipulate it. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx4')
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_rx.c14
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_tx.c12
2 files changed, 13 insertions, 13 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
index 37cc9e5c56be..46a0df9afc3c 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
@@ -135,7 +135,7 @@ static void mlx4_en_init_rx_desc(struct mlx4_en_priv *priv,
135 135
136 /* Set size and memtype fields */ 136 /* Set size and memtype fields */
137 for (i = 0; i < priv->num_frags; i++) { 137 for (i = 0; i < priv->num_frags; i++) {
138 skb_frags[i].size = priv->frag_info[i].frag_size; 138 skb_frag_size_set(&skb_frags[i], priv->frag_info[i].frag_size);
139 rx_desc->data[i].byte_count = 139 rx_desc->data[i].byte_count =
140 cpu_to_be32(priv->frag_info[i].frag_size); 140 cpu_to_be32(priv->frag_info[i].frag_size);
141 rx_desc->data[i].lkey = cpu_to_be32(priv->mdev->mr.key); 141 rx_desc->data[i].lkey = cpu_to_be32(priv->mdev->mr.key);
@@ -194,7 +194,7 @@ static void mlx4_en_free_rx_desc(struct mlx4_en_priv *priv,
194 dma = be64_to_cpu(rx_desc->data[nr].addr); 194 dma = be64_to_cpu(rx_desc->data[nr].addr);
195 195
196 en_dbg(DRV, priv, "Unmapping buffer at dma:0x%llx\n", (u64) dma); 196 en_dbg(DRV, priv, "Unmapping buffer at dma:0x%llx\n", (u64) dma);
197 pci_unmap_single(mdev->pdev, dma, skb_frags[nr].size, 197 pci_unmap_single(mdev->pdev, dma, skb_frag_size(&skb_frags[nr]),
198 PCI_DMA_FROMDEVICE); 198 PCI_DMA_FROMDEVICE);
199 put_page(skb_frags[nr].page); 199 put_page(skb_frags[nr].page);
200 } 200 }
@@ -421,7 +421,7 @@ static int mlx4_en_complete_rx_desc(struct mlx4_en_priv *priv,
421 421
422 /* Save page reference in skb */ 422 /* Save page reference in skb */
423 skb_frags_rx[nr].page = skb_frags[nr].page; 423 skb_frags_rx[nr].page = skb_frags[nr].page;
424 skb_frags_rx[nr].size = skb_frags[nr].size; 424 skb_frag_size_set(&skb_frags_rx[nr], skb_frag_size(&skb_frags[nr]));
425 skb_frags_rx[nr].page_offset = skb_frags[nr].page_offset; 425 skb_frags_rx[nr].page_offset = skb_frags[nr].page_offset;
426 dma = be64_to_cpu(rx_desc->data[nr].addr); 426 dma = be64_to_cpu(rx_desc->data[nr].addr);
427 427
@@ -430,13 +430,13 @@ static int mlx4_en_complete_rx_desc(struct mlx4_en_priv *priv,
430 goto fail; 430 goto fail;
431 431
432 /* Unmap buffer */ 432 /* Unmap buffer */
433 pci_unmap_single(mdev->pdev, dma, skb_frags_rx[nr].size, 433 pci_unmap_single(mdev->pdev, dma, skb_frag_size(&skb_frags_rx[nr]),
434 PCI_DMA_FROMDEVICE); 434 PCI_DMA_FROMDEVICE);
435 } 435 }
436 /* Adjust size of last fragment to match actual length */ 436 /* Adjust size of last fragment to match actual length */
437 if (nr > 0) 437 if (nr > 0)
438 skb_frags_rx[nr - 1].size = length - 438 skb_frag_size_set(&skb_frags_rx[nr - 1],
439 priv->frag_info[nr - 1].frag_prefix_size; 439 length - priv->frag_info[nr - 1].frag_prefix_size);
440 return nr; 440 return nr;
441 441
442fail: 442fail:
@@ -506,7 +506,7 @@ static struct sk_buff *mlx4_en_rx_skb(struct mlx4_en_priv *priv,
506 skb_shinfo(skb)->frags[0].page_offset += HEADER_COPY_SIZE; 506 skb_shinfo(skb)->frags[0].page_offset += HEADER_COPY_SIZE;
507 507
508 /* Adjust size of first fragment */ 508 /* Adjust size of first fragment */
509 skb_shinfo(skb)->frags[0].size -= HEADER_COPY_SIZE; 509 skb_frag_size_sub(&skb_shinfo(skb)->frags[0], HEADER_COPY_SIZE);
510 skb->data_len = length - HEADER_COPY_SIZE; 510 skb->data_len = length - HEADER_COPY_SIZE;
511 } 511 }
512 return skb; 512 return skb;
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
index 6e03de034ac7..2a192c2f207d 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
@@ -226,7 +226,7 @@ static u32 mlx4_en_free_tx_desc(struct mlx4_en_priv *priv,
226 frag = &skb_shinfo(skb)->frags[i]; 226 frag = &skb_shinfo(skb)->frags[i];
227 pci_unmap_page(mdev->pdev, 227 pci_unmap_page(mdev->pdev,
228 (dma_addr_t) be64_to_cpu(data[i].addr), 228 (dma_addr_t) be64_to_cpu(data[i].addr),
229 frag->size, PCI_DMA_TODEVICE); 229 skb_frag_size(frag), PCI_DMA_TODEVICE);
230 } 230 }
231 } 231 }
232 /* Stamp the freed descriptor */ 232 /* Stamp the freed descriptor */
@@ -256,7 +256,7 @@ static u32 mlx4_en_free_tx_desc(struct mlx4_en_priv *priv,
256 frag = &skb_shinfo(skb)->frags[i]; 256 frag = &skb_shinfo(skb)->frags[i];
257 pci_unmap_page(mdev->pdev, 257 pci_unmap_page(mdev->pdev,
258 (dma_addr_t) be64_to_cpu(data->addr), 258 (dma_addr_t) be64_to_cpu(data->addr),
259 frag->size, PCI_DMA_TODEVICE); 259 skb_frag_size(frag), PCI_DMA_TODEVICE);
260 ++data; 260 ++data;
261 } 261 }
262 } 262 }
@@ -550,7 +550,7 @@ static void build_inline_wqe(struct mlx4_en_tx_desc *tx_desc, struct sk_buff *sk
550 skb_copy_from_linear_data(skb, inl + 1, skb_headlen(skb)); 550 skb_copy_from_linear_data(skb, inl + 1, skb_headlen(skb));
551 if (skb_shinfo(skb)->nr_frags) 551 if (skb_shinfo(skb)->nr_frags)
552 memcpy(((void *)(inl + 1)) + skb_headlen(skb), fragptr, 552 memcpy(((void *)(inl + 1)) + skb_headlen(skb), fragptr,
553 skb_shinfo(skb)->frags[0].size); 553 skb_frag_size(&skb_shinfo(skb)->frags[0]));
554 554
555 } else { 555 } else {
556 inl->byte_count = cpu_to_be32(1 << 31 | spc); 556 inl->byte_count = cpu_to_be32(1 << 31 | spc);
@@ -570,7 +570,7 @@ static void build_inline_wqe(struct mlx4_en_tx_desc *tx_desc, struct sk_buff *sk
570 skb_headlen(skb) - spc); 570 skb_headlen(skb) - spc);
571 if (skb_shinfo(skb)->nr_frags) 571 if (skb_shinfo(skb)->nr_frags)
572 memcpy(((void *)(inl + 1)) + skb_headlen(skb) - spc, 572 memcpy(((void *)(inl + 1)) + skb_headlen(skb) - spc,
573 fragptr, skb_shinfo(skb)->frags[0].size); 573 fragptr, skb_frag_size(&skb_shinfo(skb)->frags[0]));
574 } 574 }
575 575
576 wmb(); 576 wmb();
@@ -757,11 +757,11 @@ netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev)
757 for (i = skb_shinfo(skb)->nr_frags - 1; i >= 0; i--) { 757 for (i = skb_shinfo(skb)->nr_frags - 1; i >= 0; i--) {
758 frag = &skb_shinfo(skb)->frags[i]; 758 frag = &skb_shinfo(skb)->frags[i];
759 dma = pci_map_page(mdev->dev->pdev, frag->page, frag->page_offset, 759 dma = pci_map_page(mdev->dev->pdev, frag->page, frag->page_offset,
760 frag->size, PCI_DMA_TODEVICE); 760 skb_frag_size(frag), PCI_DMA_TODEVICE);
761 data->addr = cpu_to_be64(dma); 761 data->addr = cpu_to_be64(dma);
762 data->lkey = cpu_to_be32(mdev->mr.key); 762 data->lkey = cpu_to_be32(mdev->mr.key);
763 wmb(); 763 wmb();
764 data->byte_count = cpu_to_be32(frag->size); 764 data->byte_count = cpu_to_be32(skb_frag_size(frag));
765 --data; 765 --data;
766 } 766 }
767 767