Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Feb 2021 17:44:08 +0000
From:      bugzilla-noreply@freebsd.org
To:        net@FreeBSD.org
Subject:   [Bug 253172] Intel e1000 - Interface Stalls After Media Type is Changed
Message-ID:  <bug-253172-7501-fetbwPJhLB@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-253172-7501@https.bugs.freebsd.org/bugzilla/>
References:  <bug-253172-7501@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help

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

--- Comment #2 from jcaplan@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.


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-253172-7501-fetbwPJhLB>