[Bug 253172] Intel e1000 - Interface Stalls After Media Type is Changed

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Feb 10 17:44:09 UTC 2021


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=253172

--- Comment #2 from jcaplan at blackberry.com ---
I have observed an underflow in iflib_completed_tx_reclaim where

txq->ift_in_use < reclaim

and as a result

txq->ift_in_use -= reclaim

wraps around to a very high number. once you bring the interface down and up
you reset txq->ift_in_use and everything is fine again.

For e1000, changing media type appears to reset the hardware, so might be best
to avoid the situation in the first place with something like

static int
em_if_media_change(if_ctx_t ctx)
{
        struct adapter *adapter = iflib_get_softc(ctx);
        struct ifmedia *ifm = iflib_get_media(ctx);

        if_t ifp = iflib_get_ifp(ctx);
        if (ifp->if_flags & IFF_UP) {
                device_printf(iflib_get_dev(ctx),
                    "%s: cannot change media type while link state is up\n",
                    __func__);
                return EINVAL;

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-net mailing list