Commit 85576d7a authored by Paolo Abeni's avatar Paolo Abeni
Browse files

Merge branch 'hibmcge-fix-rx-packet-corruption-issue'

Jijie Shao says:

====================
hibmcge: fix RX packet corruption issue

This series fixes an RX packet corruption issue observed when SMMU is
disabled on the hibmcge driver. The fixes include disabling PCI Relaxed
Ordering and correcting the order of DMA barrier operations in the RX
data sync path.
====================

Link: https://patch.msgid.link/20260525144525.94884-1-shaojijie@huawei.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parents 031f1592 b545b6ea
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -420,6 +420,9 @@ static int hbg_pci_init(struct pci_dev *pdev)
		return -ENOMEM;

	pci_set_master(pdev);
	pcie_capability_clear_word(pdev, PCI_EXP_DEVCTL,
				   PCI_EXP_DEVCTL_RELAX_EN);
	pci_save_state(pdev);
	return 0;
}

+3 −3
Original line number Diff line number Diff line
@@ -452,12 +452,12 @@ static bool hbg_sync_data_from_hw(struct hbg_priv *priv,
{
	struct hbg_rx_desc *rx_desc;

	/* make sure HW write desc complete */
	dma_rmb();

	dma_sync_single_for_cpu(&priv->pdev->dev, buffer->page_dma,
				buffer->page_size, DMA_FROM_DEVICE);

	/* make sure HW write desc complete */
	dma_rmb();

	rx_desc = (struct hbg_rx_desc *)buffer->page_addr;
	return FIELD_GET(HBG_RX_DESC_W2_PKT_LEN_M, rx_desc->word2) != 0;
}