tree a651542f82f8490daadb3fb66e1c4f41ee4bf197
parent 7c3effb906bd09b179adf0f216e4c6a6e572559f
author Petri Gynther <pgynther@google.com> 1469153100 -0700
committer Petri Gynther <pgynther@google.com> 1469153100 -0700

Fix dma_mapping_error

Calling dma_mapping_error() is not a bug.
Instead, it is used to check whether the argument dma_addr is valid.

Typical use:
dma_handle = dma_map_single(dev, addr, size, direction);
if (dma_mapping_error(dev, dma_handle)) {
    ... deal with the error ...
}

mwifiex PCIe driver uses:
mapping.addr = pci_map_single(card->dev, skb->data, size, flags);
if (pci_dma_mapping_error(card->dev, mapping.addr)) {
    mwifiex_dbg(adapter, ERROR, "failed to map pci memory!\n");
    return -1;
}

Since Quantenna uses 1:1 mapping from kernel addresses to DMA addresses,
DMA mappings never fail. Thus, we just need to remove the BUG() statement.

Change-Id: I049d57aefe508c5a0ff58367ea128ec957c2ffa3
