aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorNavdeep Parhar <np@FreeBSD.org>2014-05-30 22:59:45 +0000
committerNavdeep Parhar <np@FreeBSD.org>2014-05-30 22:59:45 +0000
commit368541ba1e13599fba3b70fccc335fdae4f74313 (patch)
tree5c980acce183b817a437df20876bafe2f43401ad /sys/dev
parent700515aa62f1db839bea893fe9ce6814473d68c3 (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/cxgbe/t4_sge.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/cxgbe/t4_sge.c b/sys/dev/cxgbe/t4_sge.c
index 0fd3f931241c..bbf0575c7dc1 100644
--- a/sys/dev/cxgbe/t4_sge.c
+++ b/sys/dev/cxgbe/t4_sge.c
@@ -1628,6 +1628,7 @@ get_fl_payload(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf,
nbuf = 0;
len = G_RSPD_LEN(len_newbuf);
if (__predict_false(fl->m0 != NULL)) {
+ M_ASSERTPKTHDR(fl->m0);
MPASS(len == fl->m0->m_pkthdr.len);
MPASS(fl->remaining < len);
@@ -1651,6 +1652,8 @@ get_fl_payload(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf,
*/
m0 = get_scatter_segment(sc, fl, len, M_PKTHDR);
+ if (m0 == NULL)
+ goto done;
len -= m0->m_len;
pnext = &m0->m_next;
while (len > 0) {
@@ -1662,7 +1665,8 @@ get_segment:
fl->m0 = m0;
fl->pnext = pnext;
fl->remaining = len;
- return (NULL);
+ m0 = NULL;
+ goto done;
}
*pnext = m;
pnext = &m->m_next;
@@ -1671,7 +1675,7 @@ get_segment:
*pnext = NULL;
if (fl->rx_offset == 0)
nbuf++;
-
+done:
(*fl_bufs_used) += nbuf;
return (m0);
}