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 ---