iflib: netmap: enter/exit netmap mode after device stops
Avoid possible race conditions by calling nm_set_native_flags() and nm_clear_native_flags() only after the device has been stopped. MFC after: 1 week
This commit is contained in:
parent
dfdeb45425
commit
0a182b4c63
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=362185
@ -788,13 +788,19 @@ iflib_netmap_register(struct netmap_adapter *na, int onoff)
|
||||
if (!CTX_IS_VF(ctx))
|
||||
IFDI_CRCSTRIP_SET(ctx, onoff, iflib_crcstrip);
|
||||
|
||||
/* enable or disable flags and callbacks in na and ifp */
|
||||
iflib_stop(ctx);
|
||||
|
||||
/*
|
||||
* Enable (or disable) netmap flags, and intercept (or restore)
|
||||
* ifp->if_transmit. This is done once the device has been stopped
|
||||
* to prevent race conditions.
|
||||
*/
|
||||
if (onoff) {
|
||||
nm_set_native_flags(na);
|
||||
} else {
|
||||
nm_clear_native_flags(na);
|
||||
}
|
||||
iflib_stop(ctx);
|
||||
|
||||
iflib_init_locked(ctx);
|
||||
IFDI_CRCSTRIP_SET(ctx, onoff, iflib_crcstrip); // XXX why twice ?
|
||||
status = ifp->if_drv_flags & IFF_DRV_RUNNING ? 0 : 1;
|
||||
|
Loading…
Reference in New Issue
Block a user