aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ixl/ixl_txrx.c
diff options
context:
space:
mode:
authorJack F Vogel <jfv@FreeBSD.org>2014-11-06 23:45:05 +0000
committerJack F Vogel <jfv@FreeBSD.org>2014-11-06 23:45:05 +0000
commite5100ee2787fc2d98602563e00a9b1ab0768b89a (patch)
treed315d8cbe8b8cfba2d12da3c06f171590e8eb8cd /sys/dev/ixl/ixl_txrx.c
parent2b293f6aa1b3b1fd7aa2ee1809952e3d366bce72 (diff)
downloadsrc-e5100ee2787fc2d98602563e00a9b1ab0768b89a.tar.gz
src-e5100ee2787fc2d98602563e00a9b1ab0768b89a.zip
Update the Intel i40e drivers, ixl version 1.2.8, ixlv version 1.1.18
-Improved VF stability, thanks to changes from Ryan Stone, and Juniper. - RSS fixes in the ixlv driver - link detection in the ixlv driver - New sysctl's added in ixl and ixlv - reset timeout increased for ixlv - stability fixes in detach - correct media reporting - Coverity warnings fixed - Many small bug fixes - VF Makefile modified - nvm shared code needed - remove unused sleep channels in ixlv_sc struct Submitted by: Eric Joyner (committed by jfv) MFC after: 1 week
Notes
Notes: svn path=/head/; revision=274205
Diffstat (limited to 'sys/dev/ixl/ixl_txrx.c')
-rwxr-xr-xsys/dev/ixl/ixl_txrx.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/dev/ixl/ixl_txrx.c b/sys/dev/ixl/ixl_txrx.c
index b804c76f9840..ea43af85ae59 100755
--- a/sys/dev/ixl/ixl_txrx.c
+++ b/sys/dev/ixl/ixl_txrx.c
@@ -238,6 +238,11 @@ ixl_xmit(struct ixl_queue *que, struct mbuf **m_headp)
maxsegs = IXL_MAX_TSO_SEGS;
if (ixl_tso_detect_sparse(m_head)) {
m = m_defrag(m_head, M_NOWAIT);
+ if (m == NULL) {
+ m_freem(*m_headp);
+ *m_headp = NULL;
+ return (ENOBUFS);
+ }
*m_headp = m;
}
}
@@ -791,6 +796,7 @@ ixl_txeof(struct ixl_queue *que)
mtx_assert(&txr->mtx, MA_OWNED);
+
/* These are not the descriptors you seek, move along :) */
if (txr->avail == que->num_desc) {
que->busy = 0;
@@ -1186,6 +1192,9 @@ skip_head:
rxr->bytes = 0;
rxr->discard = FALSE;
+ wr32(vsi->hw, rxr->tail, que->num_desc - 1);
+ ixl_flush(vsi->hw);
+
#if defined(INET6) || defined(INET)
/*
** Now set up the LRO interface:
@@ -1365,6 +1374,7 @@ ixl_rxeof(struct ixl_queue *que, int count)
IXL_RX_LOCK(rxr);
+
for (i = rxr->next_check; count != 0;) {
struct mbuf *sendmp, *mh, *mp;
u32 rsc, status, error;
@@ -1660,3 +1670,4 @@ ixl_get_counter(if_t ifp, ift_counter cnt)
}
}
#endif
+