Date: Tue, 02 Apr 2013 10:20:35 -0400 From: Karim Fodil-Lemelin <fodillemlinkarim@gmail.com> To: Nick Rogers <ncrogers@gmail.com> Cc: "freebsd-net@freebsd.org" <freebsd-net@freebsd.org> Subject: Re: igb and ALTQ in 9.1-rc3 Message-ID: <515AE933.7020806@gmail.com> In-Reply-To: <CAKOb=Ybh=_w5ZSB%2B64bxpzBanheJvMhwd9Pus7sJet9ihn5jSA@mail.gmail.com> References: <1355177348.71087.YahooMailClassic@web121601.mail.ne1.yahoo.com> <50C6656E.3020601@gmail.com> <CAFOYbc=79HwkHm6PAyRba%2Bue_7Xq0dUJvLk48RwqUN0Oz6%2BVFw@mail.gmail.com> <20121211075853.GU48639@FreeBSD.org> <CAFOYbc=Yh3WiUDstjSm-AUz4WMF9VteiydcEb5opnJ_gT4F7ag@mail.gmail.com> <CAKOb=Yb7NMm26=u%2B-0ywMk543WdXc5uiO2omY4=TXpRxPrOWHg@mail.gmail.com> <CAFOYbcn3HpRaaoSPWF5OL6QJCec-Zb2%2BNySqjgqyOXHRaXD26Q@mail.gmail.com> <5159AB72.1050202@gmail.com> <CAKOb=YbDW2kMhnAPUetsGeNdtiaOCOmQ2X-9GXW18wwSUZ8j-A@mail.gmail.com> <515ADACD.8010108@gmail.com> <CAKOb=Ybh=_w5ZSB%2B64bxpzBanheJvMhwd9Pus7sJet9ihn5jSA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi Nick, You need to set the ALTQF_READY flag inside the igb driver. Make sure you have something like this in if_igb.c: ifp->if_start = igb_start; IFQ_SET_MAXLEN(&ifp->if_snd, adapter->num_tx_desc - 1); ifp->if_snd.ifq_drv_maxlen = adapter->num_tx_desc - 1; IFQ_SET_READY(&ifp->if_snd); The call to IFQ_SET_READY() is what will enable ALTQ on your device. Regards, Karim. On 02/04/2013 9:58 AM, Nick Rogers wrote: > On Tuesday, April 2, 2013, Karim Fodil-Lemelin wrote: > >> Hi Nick, >> >> Can you verify that you have at least one of those options in your kernel >> config file: >> >> ALTQ_CBQ >> ALTQ_PRIQ >> ALTQ_HFSC > > Yes I have hfsc included in the kernel. I have other machines using altq > with em(4) interfaces and similar pf configurations on the same kernel that > work fine. > > >> Regards, >> >> Karim. >> >> On 01/04/2013 8:22 PM, Nick Rogers wrote: >> >> On Mon, Apr 1, 2013 at 8:44 AM, Karim Fodil-Lemelin >> <fodillemlinkarim@gmail.com> wrote: >> >> Hi Jack, >> >> I think this would help M. Rogers case as we have done something similar >> here to circumvent the issue and it seems to work well. I would also add >> that when using ALTQ we found it much more stable to set the number of >> queues to 1: >> >> static int igb_num_queues = 1; >> >> Our approach consisted in keeping igb_start() defined and using >> igb_mq_start_locked() inside it instead of igb_start_locked(). >> >> Regards, >> >> Karim. >> >> Thanks for the pointer. >> >> I've been working with Jack to get a fix for this in that downgrades >> the stack to the older if_start/non-multiqueue interface. See the >> following two commits he made to HEAD. >> >> http://svnweb.freebsd.org/**base/head/sys/dev/e1000/if_** >> igb.c?revision=248906&view=**markup<http://svnweb.freebsd.org/base/head/sys/dev/e1000/if_igb.c?revision=248906&view=markup> >> http://svnweb.freebsd.org/**base/head/sys/dev/e1000/if_** >> igb.h?revision=248908&view=**markup<http://svnweb.freebsd.org/base/head/sys/dev/e1000/if_igb.h?revision=248908&view=markup> >> >> I've applied these changes to latest 9.1-STABLE src and included the >> IGB_LEGACY_TX in the e1000 Makefile. So far I am not having any luck >> getting pfctl to think igb is supported. >> >> i.e. I am still getting the following when loading my PF config: >> pfctl -f /etc/pf.conf >> pfctl: igb0: driver does not support altq >> >> Can anyone comment on if the above referenced changes that Jack made >> should be sufficient to get ALTQ working with igb? >> >> The error is coming from src/contrib/pf/pfctl/pfctl.c. There seems to >> be a function that checks if the driver is supported or not but I >> cannot figure out why the ioctl is not returning a device. >> >> Here is the device check code for reference: >> >> int >> pfctl_add_altq(struct pfctl *pf, struct pf_altq *a) >> { >> if (altqsupport && >> (loadopt & PFCTL_FLAG_ALTQ) != 0) { >> memcpy(&pf->paltq->altq, a, sizeof(struct pf_altq)); >> if ((pf->opts & PF_OPT_NOACTION) == 0) { >> if (ioctl(pf->dev, DIOCADDALTQ, pf->paltq)) { >> if (errno == ENXIO) >> errx(1, "qtype not configured"); >> else if (errno == ENODEV) >> errx(1, "%s: driver does not >> support " >> "altq", a->ifname); >> else >> err(1, "DIOCADDALTQ"); >> } >> } >> pfaltq_store(&pf->paltq->altq)**; >> } >> return (0); >> } >> >> >> >> >> >> On 28/03/2013 7:16 PM, Jack Vogel wrote: >> >> Have been kept fairly busy with other matters, one thing I could do short >> term is >> change the defines in igb the way I did in the em driver so you could >> still >> define >> the older if_start entry. Right now those are based on OS version and so >> you will >> automatically get if_transmit, but I could change it to be IGB_LEGACY_TX >> or >> so, >> and that could be defined in the Makefile. >> >> Would this help? >> >> Jack >> >> >> On Thu, Mar 28, 2013 at 2:31 PM, Nick Rogers <ncrogers@gmail.com> wrote: >> >> On Tue, Dec 11, 2012 at 1:09 AM, Jack Vogel <jfvogel@gmail.com> wrote: >> >> On Mon, Dec 10, 2012 at 11:58 PM, Gleb Smirnoff <glebius@freebsd.org> >> >> wrote: >> >> On Mon, Dec 10, 2012 at 03:31:19PM -0800, Jack Vogel wrote: >> J> UH, maybe asking the owner of the driver would help :) >> J> >> J> ... and no, I've never been aware of doing anything to stop >> >> supporting >> >> > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?515AE933.7020806>