diff options
author | Hante Meuleman <meuleman@broadcom.com> | 2014-12-21 06:43:44 -0500 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2015-01-06 13:27:29 -0500 |
commit | 83297aaa8fde85154c91a59e522c3d042c1084ec (patch) | |
tree | f088fb34e4cb66f896173fb9374c281dc08a6dcc /drivers/net/wireless/brcm80211 | |
parent | 64bb1b944b554a751b518b09c3d596f6b6c0ce31 (diff) |
brcmfmac: Fix incorrect casting of 64 bit physical address.
The physical addresses being used by pcie and msgbuf were using
a cast to long, which incorrectly caused it to limit the address
to 32bit. Now explicit u64 is used where needed.
Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/brcm80211')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c | 22 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/pcie.c | 10 |
2 files changed, 16 insertions, 16 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c index 456944a6a2db..3ff6acfd82a7 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c | |||
@@ -583,7 +583,7 @@ brcmf_msgbuf_flowring_create_worker(struct brcmf_msgbuf *msgbuf, | |||
583 | u32 flowid; | 583 | u32 flowid; |
584 | void *dma_buf; | 584 | void *dma_buf; |
585 | u32 dma_sz; | 585 | u32 dma_sz; |
586 | long long address; | 586 | u64 address; |
587 | int err; | 587 | int err; |
588 | 588 | ||
589 | flowid = work->flowid; | 589 | flowid = work->flowid; |
@@ -620,7 +620,7 @@ brcmf_msgbuf_flowring_create_worker(struct brcmf_msgbuf *msgbuf, | |||
620 | BRCMF_NROF_H2D_COMMON_MSGRINGS); | 620 | BRCMF_NROF_H2D_COMMON_MSGRINGS); |
621 | memcpy(create->sa, work->sa, ETH_ALEN); | 621 | memcpy(create->sa, work->sa, ETH_ALEN); |
622 | memcpy(create->da, work->da, ETH_ALEN); | 622 | memcpy(create->da, work->da, ETH_ALEN); |
623 | address = (long long)(long)msgbuf->flowring_dma_handle[flowid]; | 623 | address = (u64)msgbuf->flowring_dma_handle[flowid]; |
624 | create->flow_ring_addr.high_addr = cpu_to_le32(address >> 32); | 624 | create->flow_ring_addr.high_addr = cpu_to_le32(address >> 32); |
625 | create->flow_ring_addr.low_addr = cpu_to_le32(address & 0xffffffff); | 625 | create->flow_ring_addr.low_addr = cpu_to_le32(address & 0xffffffff); |
626 | create->max_items = cpu_to_le16(BRCMF_H2D_TXFLOWRING_MAX_ITEM); | 626 | create->max_items = cpu_to_le16(BRCMF_H2D_TXFLOWRING_MAX_ITEM); |
@@ -698,7 +698,7 @@ static void brcmf_msgbuf_txflow(struct brcmf_msgbuf *msgbuf, u8 flowid) | |||
698 | dma_addr_t physaddr; | 698 | dma_addr_t physaddr; |
699 | u32 pktid; | 699 | u32 pktid; |
700 | struct msgbuf_tx_msghdr *tx_msghdr; | 700 | struct msgbuf_tx_msghdr *tx_msghdr; |
701 | long long address; | 701 | u64 address; |
702 | 702 | ||
703 | commonring = msgbuf->flowrings[flowid]; | 703 | commonring = msgbuf->flowrings[flowid]; |
704 | if (!brcmf_commonring_write_available(commonring)) | 704 | if (!brcmf_commonring_write_available(commonring)) |
@@ -742,7 +742,7 @@ static void brcmf_msgbuf_txflow(struct brcmf_msgbuf *msgbuf, u8 flowid) | |||
742 | tx_msghdr->seg_cnt = 1; | 742 | tx_msghdr->seg_cnt = 1; |
743 | memcpy(tx_msghdr->txhdr, skb->data, ETH_HLEN); | 743 | memcpy(tx_msghdr->txhdr, skb->data, ETH_HLEN); |
744 | tx_msghdr->data_len = cpu_to_le16(skb->len - ETH_HLEN); | 744 | tx_msghdr->data_len = cpu_to_le16(skb->len - ETH_HLEN); |
745 | address = (long long)(long)physaddr; | 745 | address = (u64)physaddr; |
746 | tx_msghdr->data_buf_addr.high_addr = cpu_to_le32(address >> 32); | 746 | tx_msghdr->data_buf_addr.high_addr = cpu_to_le32(address >> 32); |
747 | tx_msghdr->data_buf_addr.low_addr = | 747 | tx_msghdr->data_buf_addr.low_addr = |
748 | cpu_to_le32(address & 0xffffffff); | 748 | cpu_to_le32(address & 0xffffffff); |
@@ -885,7 +885,7 @@ static u32 brcmf_msgbuf_rxbuf_data_post(struct brcmf_msgbuf *msgbuf, u32 count) | |||
885 | u32 pktlen; | 885 | u32 pktlen; |
886 | dma_addr_t physaddr; | 886 | dma_addr_t physaddr; |
887 | struct msgbuf_rx_bufpost *rx_bufpost; | 887 | struct msgbuf_rx_bufpost *rx_bufpost; |
888 | long long address; | 888 | u64 address; |
889 | u32 pktid; | 889 | u32 pktid; |
890 | u32 i; | 890 | u32 i; |
891 | 891 | ||
@@ -921,7 +921,7 @@ static u32 brcmf_msgbuf_rxbuf_data_post(struct brcmf_msgbuf *msgbuf, u32 count) | |||
921 | } | 921 | } |
922 | 922 | ||
923 | if (msgbuf->rx_metadata_offset) { | 923 | if (msgbuf->rx_metadata_offset) { |
924 | address = (long long)(long)physaddr; | 924 | address = (u64)physaddr; |
925 | rx_bufpost->metadata_buf_len = | 925 | rx_bufpost->metadata_buf_len = |
926 | cpu_to_le16(msgbuf->rx_metadata_offset); | 926 | cpu_to_le16(msgbuf->rx_metadata_offset); |
927 | rx_bufpost->metadata_buf_addr.high_addr = | 927 | rx_bufpost->metadata_buf_addr.high_addr = |
@@ -936,7 +936,7 @@ static u32 brcmf_msgbuf_rxbuf_data_post(struct brcmf_msgbuf *msgbuf, u32 count) | |||
936 | rx_bufpost->msg.msgtype = MSGBUF_TYPE_RXBUF_POST; | 936 | rx_bufpost->msg.msgtype = MSGBUF_TYPE_RXBUF_POST; |
937 | rx_bufpost->msg.request_id = cpu_to_le32(pktid); | 937 | rx_bufpost->msg.request_id = cpu_to_le32(pktid); |
938 | 938 | ||
939 | address = (long long)(long)physaddr; | 939 | address = (u64)physaddr; |
940 | rx_bufpost->data_buf_len = cpu_to_le16((u16)pktlen); | 940 | rx_bufpost->data_buf_len = cpu_to_le16((u16)pktlen); |
941 | rx_bufpost->data_buf_addr.high_addr = | 941 | rx_bufpost->data_buf_addr.high_addr = |
942 | cpu_to_le32(address >> 32); | 942 | cpu_to_le32(address >> 32); |
@@ -992,7 +992,7 @@ brcmf_msgbuf_rxbuf_ctrl_post(struct brcmf_msgbuf *msgbuf, bool event_buf, | |||
992 | u32 pktlen; | 992 | u32 pktlen; |
993 | dma_addr_t physaddr; | 993 | dma_addr_t physaddr; |
994 | struct msgbuf_rx_ioctl_resp_or_event *rx_bufpost; | 994 | struct msgbuf_rx_ioctl_resp_or_event *rx_bufpost; |
995 | long long address; | 995 | u64 address; |
996 | u32 pktid; | 996 | u32 pktid; |
997 | u32 i; | 997 | u32 i; |
998 | 998 | ||
@@ -1035,7 +1035,7 @@ brcmf_msgbuf_rxbuf_ctrl_post(struct brcmf_msgbuf *msgbuf, bool event_buf, | |||
1035 | MSGBUF_TYPE_IOCTLRESP_BUF_POST; | 1035 | MSGBUF_TYPE_IOCTLRESP_BUF_POST; |
1036 | rx_bufpost->msg.request_id = cpu_to_le32(pktid); | 1036 | rx_bufpost->msg.request_id = cpu_to_le32(pktid); |
1037 | 1037 | ||
1038 | address = (long long)(long)physaddr; | 1038 | address = (u64)physaddr; |
1039 | rx_bufpost->host_buf_len = cpu_to_le16((u16)pktlen); | 1039 | rx_bufpost->host_buf_len = cpu_to_le16((u16)pktlen); |
1040 | rx_bufpost->host_buf_addr.high_addr = | 1040 | rx_bufpost->host_buf_addr.high_addr = |
1041 | cpu_to_le32(address >> 32); | 1041 | cpu_to_le32(address >> 32); |
@@ -1348,7 +1348,7 @@ int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr) | |||
1348 | { | 1348 | { |
1349 | struct brcmf_bus_msgbuf *if_msgbuf; | 1349 | struct brcmf_bus_msgbuf *if_msgbuf; |
1350 | struct brcmf_msgbuf *msgbuf; | 1350 | struct brcmf_msgbuf *msgbuf; |
1351 | long long address; | 1351 | u64 address; |
1352 | u32 count; | 1352 | u32 count; |
1353 | 1353 | ||
1354 | if_msgbuf = drvr->bus_if->msgbuf; | 1354 | if_msgbuf = drvr->bus_if->msgbuf; |
@@ -1379,7 +1379,7 @@ int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr) | |||
1379 | GFP_KERNEL); | 1379 | GFP_KERNEL); |
1380 | if (!msgbuf->ioctbuf) | 1380 | if (!msgbuf->ioctbuf) |
1381 | goto fail; | 1381 | goto fail; |
1382 | address = (long long)(long)msgbuf->ioctbuf_handle; | 1382 | address = (u64)msgbuf->ioctbuf_handle; |
1383 | msgbuf->ioctbuf_phys_hi = address >> 32; | 1383 | msgbuf->ioctbuf_phys_hi = address >> 32; |
1384 | msgbuf->ioctbuf_phys_lo = address & 0xffffffff; | 1384 | msgbuf->ioctbuf_phys_lo = address & 0xffffffff; |
1385 | 1385 | ||
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/brcm80211/brcmfmac/pcie.c index 905991fdb7b1..e91fa9a2c885 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/pcie.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/pcie.c | |||
@@ -959,14 +959,14 @@ brcmf_pcie_init_dmabuffer_for_device(struct brcmf_pciedev_info *devinfo, | |||
959 | dma_addr_t *dma_handle) | 959 | dma_addr_t *dma_handle) |
960 | { | 960 | { |
961 | void *ring; | 961 | void *ring; |
962 | long long address; | 962 | u64 address; |
963 | 963 | ||
964 | ring = dma_alloc_coherent(&devinfo->pdev->dev, size, dma_handle, | 964 | ring = dma_alloc_coherent(&devinfo->pdev->dev, size, dma_handle, |
965 | GFP_KERNEL); | 965 | GFP_KERNEL); |
966 | if (!ring) | 966 | if (!ring) |
967 | return NULL; | 967 | return NULL; |
968 | 968 | ||
969 | address = (long long)(long)*dma_handle; | 969 | address = (u64)*dma_handle; |
970 | brcmf_pcie_write_tcm32(devinfo, tcm_dma_phys_addr, | 970 | brcmf_pcie_write_tcm32(devinfo, tcm_dma_phys_addr, |
971 | address & 0xffffffff); | 971 | address & 0xffffffff); |
972 | brcmf_pcie_write_tcm32(devinfo, tcm_dma_phys_addr + 4, address >> 32); | 972 | brcmf_pcie_write_tcm32(devinfo, tcm_dma_phys_addr + 4, address >> 32); |
@@ -1166,7 +1166,7 @@ brcmf_pcie_release_scratchbuffers(struct brcmf_pciedev_info *devinfo) | |||
1166 | 1166 | ||
1167 | static int brcmf_pcie_init_scratchbuffers(struct brcmf_pciedev_info *devinfo) | 1167 | static int brcmf_pcie_init_scratchbuffers(struct brcmf_pciedev_info *devinfo) |
1168 | { | 1168 | { |
1169 | long long address; | 1169 | u64 address; |
1170 | u32 addr; | 1170 | u32 addr; |
1171 | 1171 | ||
1172 | devinfo->shared.scratch = dma_alloc_coherent(&devinfo->pdev->dev, | 1172 | devinfo->shared.scratch = dma_alloc_coherent(&devinfo->pdev->dev, |
@@ -1180,7 +1180,7 @@ static int brcmf_pcie_init_scratchbuffers(struct brcmf_pciedev_info *devinfo) | |||
1180 | 1180 | ||
1181 | addr = devinfo->shared.tcm_base_address + | 1181 | addr = devinfo->shared.tcm_base_address + |
1182 | BRCMF_SHARED_DMA_SCRATCH_ADDR_OFFSET; | 1182 | BRCMF_SHARED_DMA_SCRATCH_ADDR_OFFSET; |
1183 | address = (long long)(long)devinfo->shared.scratch_dmahandle; | 1183 | address = (u64)devinfo->shared.scratch_dmahandle; |
1184 | brcmf_pcie_write_tcm32(devinfo, addr, address & 0xffffffff); | 1184 | brcmf_pcie_write_tcm32(devinfo, addr, address & 0xffffffff); |
1185 | brcmf_pcie_write_tcm32(devinfo, addr + 4, address >> 32); | 1185 | brcmf_pcie_write_tcm32(devinfo, addr + 4, address >> 32); |
1186 | addr = devinfo->shared.tcm_base_address + | 1186 | addr = devinfo->shared.tcm_base_address + |
@@ -1198,7 +1198,7 @@ static int brcmf_pcie_init_scratchbuffers(struct brcmf_pciedev_info *devinfo) | |||
1198 | 1198 | ||
1199 | addr = devinfo->shared.tcm_base_address + | 1199 | addr = devinfo->shared.tcm_base_address + |
1200 | BRCMF_SHARED_DMA_RINGUPD_ADDR_OFFSET; | 1200 | BRCMF_SHARED_DMA_RINGUPD_ADDR_OFFSET; |
1201 | address = (long long)(long)devinfo->shared.ringupd_dmahandle; | 1201 | address = (u64)devinfo->shared.ringupd_dmahandle; |
1202 | brcmf_pcie_write_tcm32(devinfo, addr, address & 0xffffffff); | 1202 | brcmf_pcie_write_tcm32(devinfo, addr, address & 0xffffffff); |
1203 | brcmf_pcie_write_tcm32(devinfo, addr + 4, address >> 32); | 1203 | brcmf_pcie_write_tcm32(devinfo, addr + 4, address >> 32); |
1204 | addr = devinfo->shared.tcm_base_address + | 1204 | addr = devinfo->shared.tcm_base_address + |