Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at fix-function-merge 84 lines 3.1 kB view raw
1From 6c66b0eaaa3e6ebaa84891298715b71f7b2f0b1c Mon Sep 17 00:00:00 2001 2From: X9VoiD <oscar.silvestrexx@gmail.com> 3Date: Mon, 13 Jun 2022 17:38:18 +0800 4Subject: [PATCH 13/16] linuxPackages.broadcom_sta: fix build for kernel 5.18+ 5 6--- 7 src/shared/linux_osl.c | 21 +++++++++++++++++++++ 8 1 file changed, 21 insertions(+) 9 10diff --git a/src/shared/linux_osl.c b/src/shared/linux_osl.c 11index dcfc075..5a25b82 100644 12--- a/src/shared/linux_osl.c 13+++ b/src/shared/linux_osl.c 14@@ -599,6 +599,8 @@ osl_dma_alloc_consistent(osl_t *osh, uint size, uint16 align_bits, uint *alloced 15 va = kmalloc(size, GFP_ATOMIC | __GFP_ZERO); 16 if (va) 17 *pap = (ulong)__virt_to_phys(va); 18+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) 19+ va = dma_alloc_coherent(&((struct pci_dev *)osh->pdev)->dev, size, (dma_addr_t*)pap, GFP_ATOMIC); 20 #else 21 va = pci_alloc_consistent(osh->pdev, size, (dma_addr_t*)pap); 22 #endif 23@@ -612,6 +614,8 @@ osl_dma_free_consistent(osl_t *osh, void *va, uint size, ulong pa) 24 25 #ifdef __ARM_ARCH_7A__ 26 kfree(va); 27+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) 28+ dma_free_coherent(&((struct pci_dev *)osh->pdev)->dev, size, va, (dma_addr_t)pa); 29 #else 30 pci_free_consistent(osh->pdev, size, va, (dma_addr_t)pa); 31 #endif 32@@ -623,7 +627,11 @@ osl_dma_map(osl_t *osh, void *va, uint size, int direction, void *p, hnddma_seg_ 33 int dir; 34 35 ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC))); 36+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) 37+ dir = (direction == DMA_TX)? DMA_TO_DEVICE: DMA_FROM_DEVICE; 38+#else 39 dir = (direction == DMA_TX)? PCI_DMA_TODEVICE: PCI_DMA_FROMDEVICE; 40+#endif 41 42 #if defined(__ARM_ARCH_7A__) && defined(BCMDMASGLISTOSL) 43 if (dmah != NULL) { 44@@ -641,7 +649,11 @@ osl_dma_map(osl_t *osh, void *va, uint size, int direction, void *p, hnddma_seg_ 45 ASSERT(totsegs + nsegs <= MAX_DMA_SEGS); 46 sg->page_link = 0; 47 sg_set_buf(sg, PKTDATA(osh, skb), PKTLEN(osh, skb)); 48+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) 49+ dma_map_single(&((struct pci_dev *)osh->pdev)->dev, PKTDATA(osh, skb), PKTLEN(osh, skb), dir); 50+#else 51 pci_map_single(osh->pdev, PKTDATA(osh, skb), PKTLEN(osh, skb), dir); 52+#endif 53 } 54 totsegs += nsegs; 55 totlen += PKTLEN(osh, skb); 56@@ -656,7 +668,11 @@ osl_dma_map(osl_t *osh, void *va, uint size, int direction, void *p, hnddma_seg_ 57 } 58 #endif 59 60+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) 61+ return (dma_map_single(&((struct pci_dev *)osh->pdev)->dev, va, size, dir)); 62+#else 63 return (pci_map_single(osh->pdev, va, size, dir)); 64+#endif 65 } 66 67 void BCMFASTPATH 68@@ -665,8 +681,13 @@ osl_dma_unmap(osl_t *osh, uint pa, uint size, int direction) 69 int dir; 70 71 ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC))); 72+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) 73+ dir = (direction == DMA_TX)? DMA_TO_DEVICE: DMA_FROM_DEVICE; 74+ dma_unmap_single(&((struct pci_dev *)osh->pdev)->dev, (uint32)pa, size, dir); 75+#else 76 dir = (direction == DMA_TX)? PCI_DMA_TODEVICE: PCI_DMA_FROMDEVICE; 77 pci_unmap_single(osh->pdev, (uint32)pa, size, dir); 78+#endif 79 } 80 81 #if defined(BCMDBG_ASSERT) 82-- 832.45.1 84