sge.c (5d6bcdfe38ce883946aebf751a64695471ce1ab5) | sge.c (9e903e085262ffbf1fc44a17ac06058aca03524a) |
---|---|
1/* 2 * Copyright (c) 2005-2008 Chelsio, Inc. All rights reserved. 3 * 4 * This software is available to you under a choice of one of two 5 * licenses. You may choose to be licensed under the terms of the GNU 6 * General Public License (GPL) Version 2, available from the file 7 * COPYING in the main directory of this source tree, or the 8 * OpenIB.org BSD license below: --- 240 unchanged lines hidden (view full) --- 249 j = 1; 250 } 251 252 curflit = d->sflit + 1 + j; 253 nfrags = skb_shinfo(skb)->nr_frags; 254 255 while (frag_idx < nfrags && curflit < WR_FLITS) { 256 pci_unmap_page(pdev, be64_to_cpu(sgp->addr[j]), | 1/* 2 * Copyright (c) 2005-2008 Chelsio, Inc. All rights reserved. 3 * 4 * This software is available to you under a choice of one of two 5 * licenses. You may choose to be licensed under the terms of the GNU 6 * General Public License (GPL) Version 2, available from the file 7 * COPYING in the main directory of this source tree, or the 8 * OpenIB.org BSD license below: --- 240 unchanged lines hidden (view full) --- 249 j = 1; 250 } 251 252 curflit = d->sflit + 1 + j; 253 nfrags = skb_shinfo(skb)->nr_frags; 254 255 while (frag_idx < nfrags && curflit < WR_FLITS) { 256 pci_unmap_page(pdev, be64_to_cpu(sgp->addr[j]), |
257 skb_shinfo(skb)->frags[frag_idx].size, | 257 skb_frag_size(&skb_shinfo(skb)->frags[frag_idx]), |
258 PCI_DMA_TODEVICE); 259 j ^= 1; 260 if (j == 0) { 261 sgp++; 262 curflit++; 263 } 264 curflit++; 265 frag_idx++; --- 706 unchanged lines hidden (view full) --- 972 mapping = pci_map_single(pdev, start, len, PCI_DMA_TODEVICE); 973 sgp->len[0] = cpu_to_be32(len); 974 sgp->addr[0] = cpu_to_be64(mapping); 975 j = 1; 976 } 977 978 nfrags = skb_shinfo(skb)->nr_frags; 979 for (i = 0; i < nfrags; i++) { | 258 PCI_DMA_TODEVICE); 259 j ^= 1; 260 if (j == 0) { 261 sgp++; 262 curflit++; 263 } 264 curflit++; 265 frag_idx++; --- 706 unchanged lines hidden (view full) --- 972 mapping = pci_map_single(pdev, start, len, PCI_DMA_TODEVICE); 973 sgp->len[0] = cpu_to_be32(len); 974 sgp->addr[0] = cpu_to_be64(mapping); 975 j = 1; 976 } 977 978 nfrags = skb_shinfo(skb)->nr_frags; 979 for (i = 0; i < nfrags; i++) { |
980 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; | 980 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; |
981 | 981 |
982 mapping = skb_frag_dma_map(&pdev->dev, frag, 0, frag->size, | 982 mapping = skb_frag_dma_map(&pdev->dev, frag, 0, skb_frag_size(frag), |
983 DMA_TO_DEVICE); | 983 DMA_TO_DEVICE); |
984 sgp->len[j] = cpu_to_be32(frag->size); | 984 sgp->len[j] = cpu_to_be32(skb_frag_size(frag)); |
985 sgp->addr[j] = cpu_to_be64(mapping); 986 j ^= 1; 987 if (j == 0) 988 ++sgp; 989 } 990 if (j) 991 sgp->len[j] = 0; 992 return ((nfrags + (len != 0)) * 3) / 2 + j; --- 546 unchanged lines hidden (view full) --- 1539 1540 if (skb->tail - skb->transport_header) 1541 pci_unmap_single(dui->pdev, *p++, 1542 skb->tail - skb->transport_header, 1543 PCI_DMA_TODEVICE); 1544 1545 si = skb_shinfo(skb); 1546 for (i = 0; i < si->nr_frags; i++) | 985 sgp->addr[j] = cpu_to_be64(mapping); 986 j ^= 1; 987 if (j == 0) 988 ++sgp; 989 } 990 if (j) 991 sgp->len[j] = 0; 992 return ((nfrags + (len != 0)) * 3) / 2 + j; --- 546 unchanged lines hidden (view full) --- 1539 1540 if (skb->tail - skb->transport_header) 1541 pci_unmap_single(dui->pdev, *p++, 1542 skb->tail - skb->transport_header, 1543 PCI_DMA_TODEVICE); 1544 1545 si = skb_shinfo(skb); 1546 for (i = 0; i < si->nr_frags; i++) |
1547 pci_unmap_page(dui->pdev, *p++, si->frags[i].size, | 1547 pci_unmap_page(dui->pdev, *p++, skb_frag_size(&si->frags[i]), |
1548 PCI_DMA_TODEVICE); 1549} 1550 1551static void setup_deferred_unmapping(struct sk_buff *skb, struct pci_dev *pdev, 1552 const struct sg_ent *sgl, int sgl_flits) 1553{ 1554 dma_addr_t *p; 1555 struct deferred_unmap_info *dui; --- 557 unchanged lines hidden (view full) --- 2113 } else 2114 cpl = qs->lro_va; 2115 2116 len -= offset; 2117 2118 rx_frag += nr_frags; 2119 __skb_frag_set_page(rx_frag, sd->pg_chunk.page); 2120 rx_frag->page_offset = sd->pg_chunk.offset + offset; | 1548 PCI_DMA_TODEVICE); 1549} 1550 1551static void setup_deferred_unmapping(struct sk_buff *skb, struct pci_dev *pdev, 1552 const struct sg_ent *sgl, int sgl_flits) 1553{ 1554 dma_addr_t *p; 1555 struct deferred_unmap_info *dui; --- 557 unchanged lines hidden (view full) --- 2113 } else 2114 cpl = qs->lro_va; 2115 2116 len -= offset; 2117 2118 rx_frag += nr_frags; 2119 __skb_frag_set_page(rx_frag, sd->pg_chunk.page); 2120 rx_frag->page_offset = sd->pg_chunk.offset + offset; |
2121 rx_frag->size = len; | 2121 skb_frag_size_set(rx_frag, len); |
2122 2123 skb->len += len; 2124 skb->data_len += len; 2125 skb->truesize += len; 2126 skb_shinfo(skb)->nr_frags++; 2127 2128 if (!complete) 2129 return; --- 1174 unchanged lines hidden --- | 2122 2123 skb->len += len; 2124 skb->data_len += len; 2125 skb->truesize += len; 2126 skb_shinfo(skb)->nr_frags++; 2127 2128 if (!complete) 2129 return; --- 1174 unchanged lines hidden --- |