sky2.c (afc4b13df143122f99a0eb10bfefb216c2806de0) | sky2.c (950a5a4fdbfbea90feda70bab3178eafecc64d0b) |
---|---|
1/* 2 * New driver for Marvell Yukon 2 chipset. 3 * Based on earlier sk98lin, and skge driver. 4 * 5 * This driver intentionally does not support all the features 6 * of the original driver such as link fail-over and link management because 7 * those should be done at higher levels. 8 * --- 1212 unchanged lines hidden (view full) --- 1221 if (pci_dma_mapping_error(pdev, re->data_addr)) 1222 goto mapping_error; 1223 1224 dma_unmap_len_set(re, data_size, size); 1225 1226 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 1227 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 1228 | 1/* 2 * New driver for Marvell Yukon 2 chipset. 3 * Based on earlier sk98lin, and skge driver. 4 * 5 * This driver intentionally does not support all the features 6 * of the original driver such as link fail-over and link management because 7 * those should be done at higher levels. 8 * --- 1212 unchanged lines hidden (view full) --- 1221 if (pci_dma_mapping_error(pdev, re->data_addr)) 1222 goto mapping_error; 1223 1224 dma_unmap_len_set(re, data_size, size); 1225 1226 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 1227 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 1228 |
1229 re->frag_addr[i] = pci_map_page(pdev, frag->page, 1230 frag->page_offset, 1231 frag->size, 1232 PCI_DMA_FROMDEVICE); | 1229 re->frag_addr[i] = skb_frag_dma_map(&pdev->dev, frag, 0, 1230 frag->size, 1231 PCI_DMA_FROMDEVICE); |
1233 1234 if (pci_dma_mapping_error(pdev, re->frag_addr[i])) 1235 goto map_page_error; 1236 } 1237 return 0; 1238 1239map_page_error: 1240 while (--i >= 0) { --- 664 unchanged lines hidden (view full) --- 1905 le->length = cpu_to_le16(len); 1906 le->ctrl = ctrl; 1907 le->opcode = mss ? (OP_LARGESEND | HW_OWNER) : (OP_PACKET | HW_OWNER); 1908 1909 1910 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 1911 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 1912 | 1232 1233 if (pci_dma_mapping_error(pdev, re->frag_addr[i])) 1234 goto map_page_error; 1235 } 1236 return 0; 1237 1238map_page_error: 1239 while (--i >= 0) { --- 664 unchanged lines hidden (view full) --- 1904 le->length = cpu_to_le16(len); 1905 le->ctrl = ctrl; 1906 le->opcode = mss ? (OP_LARGESEND | HW_OWNER) : (OP_PACKET | HW_OWNER); 1907 1908 1909 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { 1910 const skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 1911 |
1913 mapping = pci_map_page(hw->pdev, frag->page, frag->page_offset, 1914 frag->size, PCI_DMA_TODEVICE); | 1912 mapping = skb_frag_dma_map(&hw->pdev->dev, frag, 0, 1913 frag->size, PCI_DMA_TODEVICE); |
1915 1916 if (pci_dma_mapping_error(hw->pdev, mapping)) 1917 goto mapping_unwind; 1918 1919 upper = upper_32_bits(mapping); 1920 if (upper != sky2->tx_last_upper) { 1921 le = get_tx_le(sky2, &slot); 1922 le->addr = cpu_to_le32(upper); --- 521 unchanged lines hidden (view full) --- 2444 length -= size; 2445 2446 num_frags = skb_shinfo(skb)->nr_frags; 2447 for (i = 0; i < num_frags; i++) { 2448 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 2449 2450 if (length == 0) { 2451 /* don't need this page */ | 1914 1915 if (pci_dma_mapping_error(hw->pdev, mapping)) 1916 goto mapping_unwind; 1917 1918 upper = upper_32_bits(mapping); 1919 if (upper != sky2->tx_last_upper) { 1920 le = get_tx_le(sky2, &slot); 1921 le->addr = cpu_to_le32(upper); --- 521 unchanged lines hidden (view full) --- 2443 length -= size; 2444 2445 num_frags = skb_shinfo(skb)->nr_frags; 2446 for (i = 0; i < num_frags; i++) { 2447 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 2448 2449 if (length == 0) { 2450 /* don't need this page */ |
2452 __free_page(frag->page); | 2451 __skb_frag_unref(frag); |
2453 --skb_shinfo(skb)->nr_frags; 2454 } else { 2455 size = min(length, (unsigned) PAGE_SIZE); 2456 2457 frag->size = size; 2458 skb->data_len += size; 2459 skb->truesize += size; 2460 skb->len += size; --- 2670 unchanged lines hidden --- | 2452 --skb_shinfo(skb)->nr_frags; 2453 } else { 2454 size = min(length, (unsigned) PAGE_SIZE); 2455 2456 frag->size = size; 2457 skb->data_len += size; 2458 skb->truesize += size; 2459 skb->len += size; --- 2670 unchanged lines hidden --- |