diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2011-10-18 17:00:24 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-10-19 03:10:46 -0400 |
commit | 9e903e085262ffbf1fc44a17ac06058aca03524a (patch) | |
tree | 4acefc97ba38c1733474d25c0b2053b56af97db1 /drivers/net/ethernet/mellanox/mlx4 | |
parent | dd767856a36e00b631d65ebc4bb81b19915532d6 (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.c | 14 | ||||
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/en_tx.c | 12 |
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 | ||
442 | fail: | 442 | fail: |
@@ -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 | ||