The buffer address is always overwritten in the extended descriptor format,

we have to refresh it ... always.  This fixes problems reported in NetMap
with em(4) devices after conversion to extended descriptor format in
svn r293331.

Submitted by:	luigi@
Reported by:	franco@opnsense.org
MFC after:	2 days
This commit is contained in:
sbruno 2016-10-28 13:37:58 +00:00 committed by Franco Fichtner
parent 6c47ea11ac
commit f6f8acf28d

View file

@ -279,9 +279,9 @@ em_netmap_rxsync(struct netmap_kring *kring, int flags)
if (addr == NETMAP_BUF_BASE(na)) /* bad buf */
goto ring_reset;
curr->read.buffer_addr = htole64(paddr);
if (slot->flags & NS_BUF_CHANGED) {
/* buffer has changed, reload map */
curr->read.buffer_addr = htole64(paddr);
netmap_reload_map(na, rxr->rxtag, rxbuf->map, addr);
slot->flags &= ~NS_BUF_CHANGED;
}