aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/marvell
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/marvell
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/marvell')
-rw-r--r--drivers/net/ethernet/marvell/mv643xx_eth.c9
-rw-r--r--drivers/net/ethernet/marvell/skge.c8
-rw-r--r--drivers/net/ethernet/marvell/sky2.c16
3 files changed, 17 insertions, 16 deletions
diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c
index f6821aa5ffbf..194a03113802 100644
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
@@ -713,8 +713,9 @@ static inline unsigned int has_tiny_unaligned_frags(struct sk_buff *skb)
713 int frag; 713 int frag;
714 714
715 for (frag = 0; frag < skb_shinfo(skb)->nr_frags; frag++) { 715 for (frag = 0; frag < skb_shinfo(skb)->nr_frags; frag++) {
716 skb_frag_t *fragp = &skb_shinfo(skb)->frags[frag]; 716 const skb_frag_t *fragp = &skb_shinfo(skb)->frags[frag];
717 if (fragp->size <= 8 && fragp->page_offset & 7) 717
718 if (skb_frag_size(fragp) <= 8 && fragp->page_offset & 7)
718 return 1; 719 return 1;
719 } 720 }
720 721
@@ -751,10 +752,10 @@ static void txq_submit_frag_skb(struct tx_queue *txq, struct sk_buff *skb)
751 } 752 }
752 753
753 desc->l4i_chk = 0; 754 desc->l4i_chk = 0;
754 desc->byte_cnt = this_frag->size; 755 desc->byte_cnt = skb_frag_size(this_frag);
755 desc->buf_ptr = skb_frag_dma_map(mp->dev->dev.parent, 756 desc->buf_ptr = skb_frag_dma_map(mp->dev->dev.parent,
756 this_frag, 0, 757 this_frag, 0,
757 this_frag->size, 758 skb_frag_size(this_frag),
758 DMA_TO_DEVICE); 759 DMA_TO_DEVICE);
759 } 760 }
760} 761}
diff --git a/drivers/net/ethernet/marvell/skge.c b/drivers/net/ethernet/marvell/skge.c
index 297730359b79..c7b60839ac99 100644
--- a/drivers/net/ethernet/marvell/skge.c
+++ b/drivers/net/ethernet/marvell/skge.c
@@ -2770,10 +2770,10 @@ static netdev_tx_t skge_xmit_frame(struct sk_buff *skb,
2770 2770
2771 control |= BMU_STFWD; 2771 control |= BMU_STFWD;
2772 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 2772 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
2773 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 2773 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
2774 2774
2775 map = skb_frag_dma_map(&hw->pdev->dev, frag, 0, 2775 map = skb_frag_dma_map(&hw->pdev->dev, frag, 0,
2776 frag->size, DMA_TO_DEVICE); 2776 skb_frag_size(frag), DMA_TO_DEVICE);
2777 2777
2778 e = e->next; 2778 e = e->next;
2779 e->skb = skb; 2779 e->skb = skb;
@@ -2783,9 +2783,9 @@ static netdev_tx_t skge_xmit_frame(struct sk_buff *skb,
2783 tf->dma_lo = map; 2783 tf->dma_lo = map;
2784 tf->dma_hi = (u64) map >> 32; 2784 tf->dma_hi = (u64) map >> 32;
2785 dma_unmap_addr_set(e, mapaddr, map); 2785 dma_unmap_addr_set(e, mapaddr, map);
2786 dma_unmap_len_set(e, maplen, frag->size); 2786 dma_unmap_len_set(e, maplen, skb_frag_size(frag));
2787 2787
2788 tf->control = BMU_OWN | BMU_SW | control | frag->size; 2788 tf->control = BMU_OWN | BMU_SW | control | skb_frag_size(frag);
2789 } 2789 }
2790 tf->control |= BMU_EOF | BMU_IRQ_EOF; 2790 tf->control |= BMU_EOF | BMU_IRQ_EOF;
2791 } 2791 }
diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index 92634907bf8d..7b083c438a14 100644
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -1225,10 +1225,10 @@ static int sky2_rx_map_skb(struct pci_dev *pdev, struct rx_ring_info *re,
1225 dma_unmap_len_set(re, data_size, size); 1225 dma_unmap_len_set(re, data_size, size);
1226 1226
1227 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 1227 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
1228 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 1228 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
1229 1229
1230 re->frag_addr[i] = skb_frag_dma_map(&pdev->dev, frag, 0, 1230 re->frag_addr[i] = skb_frag_dma_map(&pdev->dev, frag, 0,
1231 frag->size, 1231 skb_frag_size(frag),
1232 DMA_FROM_DEVICE); 1232 DMA_FROM_DEVICE);
1233 1233
1234 if (dma_mapping_error(&pdev->dev, re->frag_addr[i])) 1234 if (dma_mapping_error(&pdev->dev, re->frag_addr[i]))
@@ -1239,7 +1239,7 @@ static int sky2_rx_map_skb(struct pci_dev *pdev, struct rx_ring_info *re,
1239map_page_error: 1239map_page_error:
1240 while (--i >= 0) { 1240 while (--i >= 0) {
1241 pci_unmap_page(pdev, re->frag_addr[i], 1241 pci_unmap_page(pdev, re->frag_addr[i],
1242 skb_shinfo(skb)->frags[i].size, 1242 skb_frag_size(&skb_shinfo(skb)->frags[i]),
1243 PCI_DMA_FROMDEVICE); 1243 PCI_DMA_FROMDEVICE);
1244 } 1244 }
1245 1245
@@ -1263,7 +1263,7 @@ static void sky2_rx_unmap_skb(struct pci_dev *pdev, struct rx_ring_info *re)
1263 1263
1264 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) 1264 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
1265 pci_unmap_page(pdev, re->frag_addr[i], 1265 pci_unmap_page(pdev, re->frag_addr[i],
1266 skb_shinfo(skb)->frags[i].size, 1266 skb_frag_size(&skb_shinfo(skb)->frags[i]),
1267 PCI_DMA_FROMDEVICE); 1267 PCI_DMA_FROMDEVICE);
1268} 1268}
1269 1269
@@ -1936,7 +1936,7 @@ static netdev_tx_t sky2_xmit_frame(struct sk_buff *skb,
1936 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 1936 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
1937 1937
1938 mapping = skb_frag_dma_map(&hw->pdev->dev, frag, 0, 1938 mapping = skb_frag_dma_map(&hw->pdev->dev, frag, 0,
1939 frag->size, DMA_TO_DEVICE); 1939 skb_frag_size(frag), DMA_TO_DEVICE);
1940 1940
1941 if (dma_mapping_error(&hw->pdev->dev, mapping)) 1941 if (dma_mapping_error(&hw->pdev->dev, mapping))
1942 goto mapping_unwind; 1942 goto mapping_unwind;
@@ -1952,11 +1952,11 @@ static netdev_tx_t sky2_xmit_frame(struct sk_buff *skb,
1952 re = sky2->tx_ring + slot; 1952 re = sky2->tx_ring + slot;
1953 re->flags = TX_MAP_PAGE; 1953 re->flags = TX_MAP_PAGE;
1954 dma_unmap_addr_set(re, mapaddr, mapping); 1954 dma_unmap_addr_set(re, mapaddr, mapping);
1955 dma_unmap_len_set(re, maplen, frag->size); 1955 dma_unmap_len_set(re, maplen, skb_frag_size(frag));
1956 1956
1957 le = get_tx_le(sky2, &slot); 1957 le = get_tx_le(sky2, &slot);
1958 le->addr = cpu_to_le32(lower_32_bits(mapping)); 1958 le->addr = cpu_to_le32(lower_32_bits(mapping));
1959 le->length = cpu_to_le16(frag->size); 1959 le->length = cpu_to_le16(skb_frag_size(frag));
1960 le->ctrl = ctrl; 1960 le->ctrl = ctrl;
1961 le->opcode = OP_BUFFER | HW_OWNER; 1961 le->opcode = OP_BUFFER | HW_OWNER;
1962 } 1962 }
@@ -2484,7 +2484,7 @@ static void skb_put_frags(struct sk_buff *skb, unsigned int hdr_space,
2484 } else { 2484 } else {
2485 size = min(length, (unsigned) PAGE_SIZE); 2485 size = min(length, (unsigned) PAGE_SIZE);
2486 2486
2487 frag->size = size; 2487 skb_frag_size_set(frag, size);
2488 skb->data_len += size; 2488 skb->data_len += size;
2489 skb->truesize += PAGE_SIZE; 2489 skb->truesize += PAGE_SIZE;
2490 skb->len += size; 2490 skb->len += size;