aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/DMA-API-HOWTO.txt
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2010-05-26 17:44:22 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-27 12:12:53 -0400
commit4ae9ca825e3e28441ef8155c1a81e4c14dfbf38d (patch)
tree3386c1afa66e71e73f6ab4a5f3dc7675017fc4a1 /Documentation/DMA-API-HOWTO.txt
parentb02de871617be353c941edce5f7c22bb18499b4e (diff)
Documentation: move the error handling to the better place in DMA-API-HOWTO
Handing DMA mapping errors is essential. Let's put it in the more appropriate place rather than the end of the doc. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'Documentation/DMA-API-HOWTO.txt')
-rw-r--r--Documentation/DMA-API-HOWTO.txt60
1 files changed, 30 insertions, 30 deletions
diff --git a/Documentation/DMA-API-HOWTO.txt b/Documentation/DMA-API-HOWTO.txt
index c3ab456422f3..bfd94e90af51 100644
--- a/Documentation/DMA-API-HOWTO.txt
+++ b/Documentation/DMA-API-HOWTO.txt
@@ -639,6 +639,36 @@ is planned to completely remove virt_to_bus() and bus_to_virt() as
639they are entirely deprecated. Some ports already do not provide these 639they are entirely deprecated. Some ports already do not provide these
640as it is impossible to correctly support them. 640as it is impossible to correctly support them.
641 641
642 Handling Errors
643
644DMA address space is limited on some architectures and an allocation
645failure can be determined by:
646
647- checking if dma_alloc_coherent returns NULL or dma_map_sg returns 0
648
649- checking the returned dma_addr_t of dma_map_single and dma_map_page
650 by using dma_mapping_error():
651
652 dma_addr_t dma_handle;
653
654 dma_handle = dma_map_single(dev, addr, size, direction);
655 if (dma_mapping_error(dev, dma_handle)) {
656 /*
657 * reduce current DMA mapping usage,
658 * delay and try again later or
659 * reset driver.
660 */
661 }
662
663Networking drivers must call dev_kfree_skb to free the socket buffer
664and return NETDEV_TX_OK if the DMA mapping fails on the transmit hook
665(ndo_start_xmit). This means that the socket buffer is just dropped in
666the failure case.
667
668SCSI drivers must return SCSI_MLQUEUE_HOST_BUSY if the DMA mapping
669fails in the queuecommand hook. This means that the SCSI subsystem
670passes the command to the driver again later.
671
642 Optimizing Unmap State Space Consumption 672 Optimizing Unmap State Space Consumption
643 673
644On many platforms, dma_unmap_{single,page}() is simply a nop. 674On many platforms, dma_unmap_{single,page}() is simply a nop.
@@ -710,36 +740,6 @@ to "Closing".
710 740
7112) More to come... 7412) More to come...
712 742
713 Handling Errors
714
715DMA address space is limited on some architectures and an allocation
716failure can be determined by:
717
718- checking if dma_alloc_coherent returns NULL or dma_map_sg returns 0
719
720- checking the returned dma_addr_t of dma_map_single and dma_map_page
721 by using dma_mapping_error():
722
723 dma_addr_t dma_handle;
724
725 dma_handle = dma_map_single(dev, addr, size, direction);
726 if (dma_mapping_error(dev, dma_handle)) {
727 /*
728 * reduce current DMA mapping usage,
729 * delay and try again later or
730 * reset driver.
731 */
732 }
733
734Networking drivers must call dev_kfree_skb to free the socket buffer
735and return NETDEV_TX_OK if the DMA mapping fails on the transmit hook
736(ndo_start_xmit). This means that the socket buffer is just dropped in
737the failure case.
738
739SCSI drivers must return SCSI_MLQUEUE_HOST_BUSY if the DMA mapping
740fails in the queuecommand hook. This means that the SCSI subsystem
741passes the command to the driver again later.
742
743 Closing 743 Closing
744 744
745This document, and the API itself, would not be in its current 745This document, and the API itself, would not be in its current