ACK: [PATCH 1/1][SRU][Bionic] net: qcom/emac: Use proper free methods during TX
Stefan Bader
stefan.bader at canonical.com
Mon Aug 27 13:05:12 UTC 2018
On 24.08.2018 10:53, AceLan Kao wrote:
> From: Hemanth Puranik <hpuranik at codeaurora.org>
>
> BugLink: https://bugs.launchpad.net/bugs/1788567
>
> This patch fixes the warning messages/call traces seen if DMA debug is
> enabled, In case of fragmented skb's memory was allocated using
> dma_map_page but freed using dma_unmap_single. This patch modifies buffer
> allocations in TX path to use dma_map_page in all the places and
> dma_unmap_page while freeing the buffers.
>
> Signed-off-by: Hemanth Puranik <hpuranik at codeaurora.org>
> Acked-by: Timur Tabi <timur at codeaurora.org>
> Signed-off-by: David S. Miller <davem at davemloft.net>
> (cherry picked from commit cc5db3150e87fe7f7e947bf333b6c1c97f848ecb)
> Signed-off-by: AceLan Kao <acelan.kao at canonical.com>
Acked-by: Stefan Bader <stefan.bader at canonical.com>
> ---
> drivers/net/ethernet/qualcomm/emac/emac-mac.c | 23 +++++++++++--------
> 1 file changed, 14 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/ethernet/qualcomm/emac/emac-mac.c b/drivers/net/ethernet/qualcomm/emac/emac-mac.c
> index 9cbb27263742..d5a32b7c7dc5 100644
> --- a/drivers/net/ethernet/qualcomm/emac/emac-mac.c
> +++ b/drivers/net/ethernet/qualcomm/emac/emac-mac.c
> @@ -1194,9 +1194,9 @@ void emac_mac_tx_process(struct emac_adapter *adpt, struct emac_tx_queue *tx_q)
> while (tx_q->tpd.consume_idx != hw_consume_idx) {
> tpbuf = GET_TPD_BUFFER(tx_q, tx_q->tpd.consume_idx);
> if (tpbuf->dma_addr) {
> - dma_unmap_single(adpt->netdev->dev.parent,
> - tpbuf->dma_addr, tpbuf->length,
> - DMA_TO_DEVICE);
> + dma_unmap_page(adpt->netdev->dev.parent,
> + tpbuf->dma_addr, tpbuf->length,
> + DMA_TO_DEVICE);
> tpbuf->dma_addr = 0;
> }
>
> @@ -1353,9 +1353,11 @@ static void emac_tx_fill_tpd(struct emac_adapter *adpt,
>
> tpbuf = GET_TPD_BUFFER(tx_q, tx_q->tpd.produce_idx);
> tpbuf->length = mapped_len;
> - tpbuf->dma_addr = dma_map_single(adpt->netdev->dev.parent,
> - skb->data, tpbuf->length,
> - DMA_TO_DEVICE);
> + tpbuf->dma_addr = dma_map_page(adpt->netdev->dev.parent,
> + virt_to_page(skb->data),
> + offset_in_page(skb->data),
> + tpbuf->length,
> + DMA_TO_DEVICE);
> ret = dma_mapping_error(adpt->netdev->dev.parent,
> tpbuf->dma_addr);
> if (ret)
> @@ -1371,9 +1373,12 @@ static void emac_tx_fill_tpd(struct emac_adapter *adpt,
> if (mapped_len < len) {
> tpbuf = GET_TPD_BUFFER(tx_q, tx_q->tpd.produce_idx);
> tpbuf->length = len - mapped_len;
> - tpbuf->dma_addr = dma_map_single(adpt->netdev->dev.parent,
> - skb->data + mapped_len,
> - tpbuf->length, DMA_TO_DEVICE);
> + tpbuf->dma_addr = dma_map_page(adpt->netdev->dev.parent,
> + virt_to_page(skb->data +
> + mapped_len),
> + offset_in_page(skb->data +
> + mapped_len),
> + tpbuf->length, DMA_TO_DEVICE);
> ret = dma_mapping_error(adpt->netdev->dev.parent,
> tpbuf->dma_addr);
> if (ret)
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20180827/10755d69/attachment.sig>
More information about the kernel-team
mailing list