diff options
author | Marcin Wojtas <mw@FreeBSD.org> | 2017-09-09 11:49:36 +0000 |
---|---|---|
committer | Marcin Wojtas <mw@FreeBSD.org> | 2017-09-09 11:49:36 +0000 |
commit | e7843f1dd6649eecf1689b28a048985cf8b7b11c (patch) | |
tree | 919371481755d4813eb3111f11cef7f3cbe19343 /sys/dev/neta/if_mvneta.c | |
parent | e49e3ec31e9478bdb7ea24613ea790c8b417bd26 (diff) |
Store virtual address of buffer in mvneta_rx_ring
Now the virtual address of received buffer is taken from a software ring.
Thanks to this, we can use the NETA driver on 64 bits architecture and
avoid 32-bit buf_cookie descriptor field limitation.
Submitted by: Patryk Duda <pdk@semihalf.com>
Obtained from: Semihalf
Sponsored by: Semihalf
Differential Revision: https://reviews.freebsd.org/D12257
Notes
Notes:
svn path=/head/; revision=323361
Diffstat (limited to 'sys/dev/neta/if_mvneta.c')
-rw-r--r-- | sys/dev/neta/if_mvneta.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/neta/if_mvneta.c b/sys/dev/neta/if_mvneta.c index 33e00d13524b..ed847c4045a4 100644 --- a/sys/dev/neta/if_mvneta.c +++ b/sys/dev/neta/if_mvneta.c @@ -3008,7 +3008,7 @@ mvneta_rx_queue(struct mvneta_softc *sc, int q, int npkt) * bytecnt cover MH, PKT, CRC */ pktlen = r->bytecnt - ETHER_CRC_LEN - MVNETA_HWHEADER_SIZE; - pktbuf = (uint8_t *)r->bufptr_va + MVNETA_PACKET_OFFSET + + pktbuf = (uint8_t *)rx->rxbuf_virt_addr[rx->dma] + MVNETA_PACKET_OFFSET + MVNETA_HWHEADER_SIZE; /* Prefetch mbuf data. */ @@ -3135,7 +3135,7 @@ mvneta_rx_queue_refill(struct mvneta_softc *sc, int q) rxbuf->m = m; r = &rx->desc[rx->cpu]; r->bufptr_pa = segs.ds_addr; - r->bufptr_va = (uint32_t)m->m_data; + rx->rxbuf_virt_addr[rx->cpu] = m->m_data; rx->cpu = rx_counter_adv(rx->cpu, 1); } |