aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/brcm80211
diff options
context:
space:
mode:
authorHante Meuleman <meuleman@broadcom.com>2014-12-21 06:43:44 -0500
committerKalle Valo <kvalo@codeaurora.org>2015-01-06 13:27:29 -0500
commit83297aaa8fde85154c91a59e522c3d042c1084ec (patch)
treef088fb34e4cb66f896173fb9374c281dc08a6dcc /drivers/net/wireless/brcm80211
parent64bb1b944b554a751b518b09c3d596f6b6c0ce31 (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.c22
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/pcie.c10
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
1167static int brcmf_pcie_init_scratchbuffers(struct brcmf_pciedev_info *devinfo) 1167static 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 +