len, DMA_TO_DEVICE);
        } else /* XDP_REDIRECT */ {
                dma_addr = ionic_tx_map_single(q, frame->data, len);
-               if (!dma_addr)
+               if (dma_addr == DMA_MAPPING_ERROR)
                        return -EIO;
        }
 
                        } else {
                                dma_addr = ionic_tx_map_frag(q, frag, 0,
                                                             skb_frag_size(frag));
-                               if (dma_mapping_error(q->dev, dma_addr)) {
+                               if (dma_addr == DMA_MAPPING_ERROR) {
                                        ionic_tx_desc_unmap_bufs(q, desc_info);
                                        return -EIO;
                                }
                net_warn_ratelimited("%s: DMA single map failed on %s!\n",
                                     dev_name(dev), q->name);
                q_to_tx_stats(q)->dma_map_err++;
-               return 0;
+               return DMA_MAPPING_ERROR;
        }
        return dma_addr;
 }
                net_warn_ratelimited("%s: DMA frag map failed on %s!\n",
                                     dev_name(dev), q->name);
                q_to_tx_stats(q)->dma_map_err++;
-               return 0;
+               return DMA_MAPPING_ERROR;
        }
        return dma_addr;
 }
        int frag_idx;
 
        dma_addr = ionic_tx_map_single(q, skb->data, skb_headlen(skb));
-       if (!dma_addr)
+       if (dma_addr == DMA_MAPPING_ERROR)
                return -EIO;
        buf_info->dma_addr = dma_addr;
        buf_info->len = skb_headlen(skb);
        nfrags = skb_shinfo(skb)->nr_frags;
        for (frag_idx = 0; frag_idx < nfrags; frag_idx++, frag++) {
                dma_addr = ionic_tx_map_frag(q, frag, 0, skb_frag_size(frag));
-               if (!dma_addr)
+               if (dma_addr == DMA_MAPPING_ERROR)
                        goto dma_fail;
                buf_info->dma_addr = dma_addr;
                buf_info->len = skb_frag_size(frag);