Module Name: src
Committed By: martin
Date: Fri Nov 2 07:55:06 UTC 2018
Modified Files:
src/sys/dev/pci [netbsd-8]: if_bwfm_pci.c
Log Message:
Additional pullup for ticket #1072:
sys/dev/pci/if_bwfm_pci.c 1.5
Make this compilable with 32bit paddr_t.
To generate a diff of this commit:
cvs rdiff -u -r1.4.2.2 -r1.4.2.3 src/sys/dev/pci/if_bwfm_pci.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/pci/if_bwfm_pci.c
diff -u src/sys/dev/pci/if_bwfm_pci.c:1.4.2.2 src/sys/dev/pci/if_bwfm_pci.c:1.4.2.3
--- src/sys/dev/pci/if_bwfm_pci.c:1.4.2.2 Wed Oct 31 09:23:00 2018
+++ src/sys/dev/pci/if_bwfm_pci.c Fri Nov 2 07:55:06 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: if_bwfm_pci.c,v 1.4.2.2 2018/10/31 09:23:00 martin Exp $ */
+/* $NetBSD: if_bwfm_pci.c,v 1.4.2.3 2018/11/02 07:55:06 martin Exp $ */
/* $OpenBSD: if_bwfm_pci.c,v 1.18 2018/02/08 05:00:38 patrick Exp $ */
/*
* Copyright (c) 2010-2016 Broadcom Corporation
@@ -199,7 +199,7 @@ struct bwfm_pci_dmamem {
#define BWFM_PCI_DMA_MAP(_bdm) ((_bdm)->bdm_map)
#define BWFM_PCI_DMA_LEN(_bdm) ((_bdm)->bdm_size)
-#define BWFM_PCI_DMA_DVA(_bdm) ((_bdm)->bdm_map->dm_segs[0].ds_addr)
+#define BWFM_PCI_DMA_DVA(_bdm) (uint64_t)((_bdm)->bdm_map->dm_segs[0].ds_addr)
#define BWFM_PCI_DMA_KVA(_bdm) ((_bdm)->bdm_kva)
static u_int if_rxr_get(struct if_rxring *rxr, unsigned int max);
@@ -1006,6 +1006,7 @@ bwfm_pci_fill_rx_ioctl_ring(struct bwfm_
uint32_t pktid;
paddr_t paddr;
int s, slots;
+ uint64_t devaddr;
s = splnet();
for (slots = if_rxr_get(rxring, 8); slots > 0; slots--) {
@@ -1025,12 +1026,13 @@ bwfm_pci_fill_rx_ioctl_ring(struct bwfm_
m_freem(m);
break;
}
+ devaddr = paddr;
memset(req, 0, sizeof(*req));
req->msg.msgtype = msgtype;
req->msg.request_id = htole32(pktid);
req->host_buf_len = htole16(MSGBUF_MAX_PKT_SIZE);
- req->host_buf_addr.high_addr = htole32(paddr >> 32);
- req->host_buf_addr.low_addr = htole32(paddr & 0xffffffff);
+ req->host_buf_addr.high_addr = htole32(devaddr >> 32);
+ req->host_buf_addr.low_addr = htole32(devaddr & 0xffffffff);
bwfm_pci_ring_write_commit(sc, &sc->sc_ctrl_submit);
}
if_rxr_put(rxring, slots);
@@ -1045,6 +1047,7 @@ bwfm_pci_fill_rx_buf_ring(struct bwfm_pc
uint32_t pktid;
paddr_t paddr;
int s, slots;
+ uint64_t devaddr;
s = splnet();
for (slots = if_rxr_get(&sc->sc_rxbuf_ring, sc->sc_max_rxbufpost);
@@ -1065,12 +1068,13 @@ bwfm_pci_fill_rx_buf_ring(struct bwfm_pc
m_freem(m);
break;
}
+ devaddr = paddr;
memset(req, 0, sizeof(*req));
req->msg.msgtype = MSGBUF_TYPE_RXBUF_POST;
req->msg.request_id = htole32(pktid);
req->data_buf_len = htole16(MSGBUF_MAX_PKT_SIZE);
- req->data_buf_addr.high_addr = htole32(paddr >> 32);
- req->data_buf_addr.low_addr = htole32(paddr & 0xffffffff);
+ req->data_buf_addr.high_addr = htole32(devaddr >> 32);
+ req->data_buf_addr.low_addr = htole32(devaddr & 0xffffffff);
bwfm_pci_ring_write_commit(sc, &sc->sc_rxpost_submit);
}
if_rxr_put(&sc->sc_rxbuf_ring, slots);
@@ -1898,6 +1902,7 @@ bwfm_pci_txdata(struct bwfm_softc *bwfm,
struct msgbuf_tx_msghdr *tx;
uint32_t pktid;
paddr_t paddr;
+ uint64_t devaddr;
struct ether_header *eh;
int flowid, ret, ac;
@@ -1952,12 +1957,12 @@ bwfm_pci_txdata(struct bwfm_softc *bwfm,
bwfm_pci_ring_write_cancel(sc, ring, 1);
return ret;
}
- paddr += ETHER_HDR_LEN;
+ devaddr = paddr + ETHER_HDR_LEN;
tx->msg.request_id = htole32(pktid);
tx->data_len = htole16((*mp)->m_len - ETHER_HDR_LEN);
- tx->data_buf_addr.high_addr = htole32(paddr >> 32);
- tx->data_buf_addr.low_addr = htole32(paddr & 0xffffffff);
+ tx->data_buf_addr.high_addr = htole32(devaddr >> 32);
+ tx->data_buf_addr.low_addr = htole32(devaddr & 0xffffffff);
bwfm_pci_ring_write_commit(sc, ring);
return 0;