--nextPart4786422.NUxcIxLZLS
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8Bit
All,
Modify bus_dmamap_load_mbuf() to not map zero-length mbuf segments.
This is an optimisation for some wireless drivers (wi) and is required
by others (iwi firmware in particular).
At the moment I'm working around it by adding an m_pullup() in iwi_tx_start,
but this is not optimal. Instead, Matt suggested I go after the root cause.
Cheers,
Andrew.
--nextPart4786422.NUxcIxLZLS
Content-Type: text/x-diff; name="busdma_machdep.c.diff"
Content-Transfer-Encoding: 8Bit
Content-Disposition: attachment; filename="busdma_machdep.c.diff"
*** busdma_machdep.c.old Tue Jan 18 03:25:16 2005
--- busdma_machdep.c Tue Jan 18 03:27:48 2005
***************
*** 635,645 ****
struct mbuf *m;
for (m = m0; m != NULL && error == 0; m = m->m_next) {
! error = _bus_dmamap_load_buffer(dmat,
! m->m_data, m->m_len,
! curthread, flags, &lastaddr,
! &nsegs, first);
! first = 0;
}
} else {
error = EINVAL;
--- 635,647 ----
struct mbuf *m;
for (m = m0; m != NULL && error == 0; m = m->m_next) {
! if ( m->m_len > 0 ) {
! error = _bus_dmamap_load_buffer(dmat,
! m->m_data, m->m_len,
! curthread, flags, &lastaddr,
! &nsegs, first);
! first = 0;
! }
}
} else {
error = EINVAL;
--nextPart4786422.NUxcIxLZLS--