Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F150480332
D21223.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D21223.id.diff
View Options
Index: sys/dev/ixl/ixl_pf.h
===================================================================
--- sys/dev/ixl/ixl_pf.h
+++ sys/dev/ixl/ixl_pf.h
@@ -336,7 +336,8 @@
void ixl_del_filter(struct ixl_vsi *, const u8 *, s16 vlan);
void ixl_reconfigure_filters(struct ixl_vsi *vsi);
-int ixl_disable_rings(struct ixl_vsi *);
+int ixl_disable_rings(struct ixl_pf *, struct ixl_vsi *,
+ struct ixl_pf_qtag *);
int ixl_disable_tx_ring(struct ixl_pf *, struct ixl_pf_qtag *, u16);
int ixl_disable_rx_ring(struct ixl_pf *, struct ixl_pf_qtag *, u16);
int ixl_disable_ring(struct ixl_pf *pf, struct ixl_pf_qtag *, u16);
Index: sys/dev/ixl/ixl_pf_iov.c
===================================================================
--- sys/dev/ixl/ixl_pf_iov.c
+++ sys/dev/ixl/ixl_pf_iov.c
@@ -411,7 +411,7 @@
wr32(hw, I40E_VPGEN_VFRTRIG(vf->vf_num), vfrtrig);
if (vf->vsi.seid != 0)
- ixl_disable_rings(&vf->vsi);
+ ixl_disable_rings(pf, &vf->vsi, &vf->qtag);
ixl_vf_release_resources(pf, vf);
ixl_vf_setup_vsi(pf, vf);
Index: sys/dev/ixl/ixl_pf_main.c
===================================================================
--- sys/dev/ixl/ixl_pf_main.c
+++ sys/dev/ixl/ixl_pf_main.c
@@ -309,17 +309,19 @@
* by user before bringing interface up */
ixl_set_promisc(vsi);
- /* And now turn on interrupts */
- ixl_enable_intr(vsi);
-
/* Get link info */
hw->phy.get_link_info = TRUE;
i40e_get_link_status(hw, &pf->link_up);
ixl_update_link_status(pf);
- /* Now inform the stack we're ready */
+ /* Inform the stack we're ready */
ifp->if_drv_flags |= IFF_DRV_RUNNING;
+ /* Turn on interrupts after setting the running flag
+ * to avoid missing those asserted immediately after
+ * enabling them */
+ ixl_enable_intr(vsi);
+
#ifdef IXL_IW
if (ixl_enable_iwarp && pf->iw_enabled) {
int ret = ixl_iw_pf_init(pf);
@@ -1162,7 +1164,7 @@
#endif
ixl_disable_rings_intr(vsi);
- ixl_disable_rings(vsi);
+ ixl_disable_rings(pf, vsi, &pf->qtag);
}
void
@@ -3561,18 +3563,13 @@
return (error);
}
-/* For PF VSI only */
int
-ixl_disable_rings(struct ixl_vsi *vsi)
+ixl_disable_rings(struct ixl_pf *pf, struct ixl_vsi *vsi, struct ixl_pf_qtag *qtag)
{
- struct ixl_pf *pf = vsi->back;
- int error = 0;
+ int error = 0;
- for (int i = 0; i < vsi->num_queues; i++) {
- error = ixl_disable_ring(pf, &pf->qtag, i);
- if (error)
- return (error);
- }
+ for (int i = 0; i < vsi->num_queues; i++)
+ error = ixl_disable_ring(pf, qtag, i);
return (error);
}
Index: sys/dev/ixl/ixl_txrx.c
===================================================================
--- sys/dev/ixl/ixl_txrx.c
+++ sys/dev/ixl/ixl_txrx.c
@@ -1504,6 +1504,10 @@
/*
** Now set up the LRO interface:
*/
+ if (lro->ifp != NULL) {
+ tcp_lro_free(lro);
+ lro->ifp = NULL;
+ }
if (ifp->if_capenable & IFCAP_LRO) {
int err = tcp_lro_init(lro);
if (err) {
@@ -1559,6 +1563,11 @@
bus_dma_tag_destroy(rxr->ptag);
rxr->ptag = NULL;
}
+
+ if (rxr->lro.ifp != NULL) {
+ tcp_lro_free(&rxr->lro);
+ rxr->lro.ifp = NULL;
+ }
}
static inline void
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Apr 2, 2:22 PM (2 h, 30 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30725717
Default Alt Text
D21223.id.diff (2 KB)
Attached To
Mode
D21223: ixl(4): Fix issues with MTU change while passing traffic
Attached
Detach File
Event Timeline
Log In to Comment