diff options
author | Rafał Miłecki <rafal@milecki.pl> | 2018-06-18 07:32:34 +0200 |
---|---|---|
committer | Rafał Miłecki <rafal@milecki.pl> | 2018-06-18 07:41:40 +0200 |
commit | c446e38c862201dd4d6a4fb8ea6e49172980952d (patch) | |
tree | 47f6b59330d8567d965416647a9a1d383056136f /package/kernel/mac80211/patches/330-v4.18-0006-brcmfmac-coarse-support-for-PCIe-shared-structure-re.patch | |
parent | 7e8eb7f309a802ba10a13ddb807c6a31fecc9183 (diff) | |
download | upstream-c446e38c862201dd4d6a4fb8ea6e49172980952d.tar.gz upstream-c446e38c862201dd4d6a4fb8ea6e49172980952d.tar.bz2 upstream-c446e38c862201dd4d6a4fb8ea6e49172980952d.zip |
mac80211: backport brcmfmac changes from kernel 4.18
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Diffstat (limited to 'package/kernel/mac80211/patches/330-v4.18-0006-brcmfmac-coarse-support-for-PCIe-shared-structure-re.patch')
-rw-r--r-- | package/kernel/mac80211/patches/330-v4.18-0006-brcmfmac-coarse-support-for-PCIe-shared-structure-re.patch | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/330-v4.18-0006-brcmfmac-coarse-support-for-PCIe-shared-structure-re.patch b/package/kernel/mac80211/patches/330-v4.18-0006-brcmfmac-coarse-support-for-PCIe-shared-structure-re.patch new file mode 100644 index 0000000000..8750037d85 --- /dev/null +++ b/package/kernel/mac80211/patches/330-v4.18-0006-brcmfmac-coarse-support-for-PCIe-shared-structure-re.patch @@ -0,0 +1,97 @@ +From f56324baf329bc9362a52ad77a4a1a0f3356d1bc Mon Sep 17 00:00:00 2001 +From: Franky Lin <franky.lin@broadcom.com> +Date: Thu, 26 Apr 2018 12:16:51 +0200 +Subject: [PATCH] brcmfmac: coarse support for PCIe shared structure rev7 + +Revision 7 of PCIe dongle interface increases the item size of tx and rx +complete rings to accommodate extra payload for new feature. This patch +simply bump up the size of these two rings without adding the support +for utilizing the new space. This makes brcmfmac compatible with rev7 +firmware. + +Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com> +Signed-off-by: Franky Lin <franky.lin@broadcom.com> +Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> +Signed-off-by: Kalle Valo <kvalo@codeaurora.org> +--- + .../wireless/broadcom/brcm80211/brcmfmac/msgbuf.h | 6 ++++-- + .../wireless/broadcom/brcm80211/brcmfmac/pcie.c | 23 ++++++++++++++++++---- + 2 files changed, 23 insertions(+), 6 deletions(-) + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.h +@@ -27,8 +27,10 @@ + #define BRCMF_H2D_MSGRING_CONTROL_SUBMIT_ITEMSIZE 40 + #define BRCMF_H2D_MSGRING_RXPOST_SUBMIT_ITEMSIZE 32 + #define BRCMF_D2H_MSGRING_CONTROL_COMPLETE_ITEMSIZE 24 +-#define BRCMF_D2H_MSGRING_TX_COMPLETE_ITEMSIZE 16 +-#define BRCMF_D2H_MSGRING_RX_COMPLETE_ITEMSIZE 32 ++#define BRCMF_D2H_MSGRING_TX_COMPLETE_ITEMSIZE_PRE_V7 16 ++#define BRCMF_D2H_MSGRING_TX_COMPLETE_ITEMSIZE 24 ++#define BRCMF_D2H_MSGRING_RX_COMPLETE_ITEMSIZE_PRE_V7 32 ++#define BRCMF_D2H_MSGRING_RX_COMPLETE_ITEMSIZE 40 + #define BRCMF_H2D_TXFLOWRING_ITEMSIZE 48 + + struct msgbuf_buf_addr { +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +@@ -136,8 +136,9 @@ static const struct brcmf_firmware_mappi + BRCMF_PCIE_MB_INT_D2H3_DB0 | \ + BRCMF_PCIE_MB_INT_D2H3_DB1) + ++#define BRCMF_PCIE_SHARED_VERSION_7 7 + #define BRCMF_PCIE_MIN_SHARED_VERSION 5 +-#define BRCMF_PCIE_MAX_SHARED_VERSION 6 ++#define BRCMF_PCIE_MAX_SHARED_VERSION BRCMF_PCIE_SHARED_VERSION_7 + #define BRCMF_PCIE_SHARED_VERSION_MASK 0x00FF + #define BRCMF_PCIE_SHARED_DMA_INDEX 0x10000 + #define BRCMF_PCIE_SHARED_DMA_2B_IDX 0x100000 +@@ -318,6 +319,14 @@ static const u32 brcmf_ring_max_item[BRC + BRCMF_D2H_MSGRING_RX_COMPLETE_MAX_ITEM + }; + ++static const u32 brcmf_ring_itemsize_pre_v7[BRCMF_NROF_COMMON_MSGRINGS] = { ++ BRCMF_H2D_MSGRING_CONTROL_SUBMIT_ITEMSIZE, ++ BRCMF_H2D_MSGRING_RXPOST_SUBMIT_ITEMSIZE, ++ BRCMF_D2H_MSGRING_CONTROL_COMPLETE_ITEMSIZE, ++ BRCMF_D2H_MSGRING_TX_COMPLETE_ITEMSIZE_PRE_V7, ++ BRCMF_D2H_MSGRING_RX_COMPLETE_ITEMSIZE_PRE_V7 ++}; ++ + static const u32 brcmf_ring_itemsize[BRCMF_NROF_COMMON_MSGRINGS] = { + BRCMF_H2D_MSGRING_CONTROL_SUBMIT_ITEMSIZE, + BRCMF_H2D_MSGRING_RXPOST_SUBMIT_ITEMSIZE, +@@ -1007,8 +1016,14 @@ brcmf_pcie_alloc_dma_and_ring(struct brc + struct brcmf_pcie_ringbuf *ring; + u32 size; + u32 addr; ++ const u32 *ring_itemsize_array; ++ ++ if (devinfo->shared.version < BRCMF_PCIE_SHARED_VERSION_7) ++ ring_itemsize_array = brcmf_ring_itemsize_pre_v7; ++ else ++ ring_itemsize_array = brcmf_ring_itemsize; + +- size = brcmf_ring_max_item[ring_id] * brcmf_ring_itemsize[ring_id]; ++ size = brcmf_ring_max_item[ring_id] * ring_itemsize_array[ring_id]; + dma_buf = brcmf_pcie_init_dmabuffer_for_device(devinfo, size, + tcm_ring_phys_addr + BRCMF_RING_MEM_BASE_ADDR_OFFSET, + &dma_handle); +@@ -1018,7 +1033,7 @@ brcmf_pcie_alloc_dma_and_ring(struct brc + addr = tcm_ring_phys_addr + BRCMF_RING_MAX_ITEM_OFFSET; + brcmf_pcie_write_tcm16(devinfo, addr, brcmf_ring_max_item[ring_id]); + addr = tcm_ring_phys_addr + BRCMF_RING_LEN_ITEMS_OFFSET; +- brcmf_pcie_write_tcm16(devinfo, addr, brcmf_ring_itemsize[ring_id]); ++ brcmf_pcie_write_tcm16(devinfo, addr, ring_itemsize_array[ring_id]); + + ring = kzalloc(sizeof(*ring), GFP_KERNEL); + if (!ring) { +@@ -1027,7 +1042,7 @@ brcmf_pcie_alloc_dma_and_ring(struct brc + return NULL; + } + brcmf_commonring_config(&ring->commonring, brcmf_ring_max_item[ring_id], +- brcmf_ring_itemsize[ring_id], dma_buf); ++ ring_itemsize_array[ring_id], dma_buf); + ring->dma_handle = dma_handle; + ring->devinfo = devinfo; + brcmf_commonring_register_cb(&ring->commonring, |