netmap error on -CURRENT with em and igb
Sean Bruno
sbruno at freebsd.org
Wed Apr 5 21:57:05 UTC 2017
On 02/16/17 02:25, Giuseppe Lettieri wrote:
> Hi all,
>
> the "Operation not permitted" is coming from iflib_netmap_register:
>
> ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
> ...
> IFDI_INIT(ctx); // for igb it calls em_if_init()
> ...
> return (ifp->if_drv_flags & IFF_DRV_RUNNING ? 0 : 1);
>
> the last line is meant to check that the initialization was successful,
> but em_if_init() is not setting IFF_DRV_RUNNING.
>
> Note that the iflib_netmap_register code, and the other netmap register
> functions which it mimicks, have other issues:
>
> - in case of failure on NIOCREGIF, they leaves the NETMAP_ON flag set
> even if the netmap data structures are deleted;
> - the 1 was intended as a generic indication of failure, but it
> translates to the rather confusing EPERM;
> - they check IFF_DRV_RUNNING flag outside of the lock; I don't know it
> this is safe or not.
>
> I can prepare a patch fixing these issues, but I don't know wether
> em_if_init() is supposed to set the IFF_DRV_RUNNING flag or not.
>
> Cheers,
> Giuseppe
>
With IFLIB, em_if_init() should *not* set IFF_DRV_RUNNING, this should
be done in sys/net/iflib.c
Do you have an idea where you want to put this?
sean
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 618 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-net/attachments/20170405/ca90ccd4/attachment.sig>
More information about the freebsd-net
mailing list