From owner-freebsd-net@freebsd.org Thu Mar 23 18:46:55 2017 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 45294D1A3C5 for ; Thu, 23 Mar 2017 18:46:55 +0000 (UTC) (envelope-from ermal.luci@gmail.com) Received: from mail-io0-x229.google.com (mail-io0-x229.google.com [IPv6:2607:f8b0:4001:c06::229]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1133C1234 for ; Thu, 23 Mar 2017 18:46:55 +0000 (UTC) (envelope-from ermal.luci@gmail.com) Received: by mail-io0-x229.google.com with SMTP id z13so3176332iof.2 for ; Thu, 23 Mar 2017 11:46:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=+AAb/ObeFdbg1HYC4oHnbbwpn5YXAxyBJfS5ITu8zns=; b=ITjDtlPuHZVkj4WSCD89dPrtOKo9gSvFXdbOrjoJvCbQC/VQ5NqlA7lOE+4gFc/0le aGnSzPZGMI37zBa6vGZULXlUs1DIctSdBazIMKVawIljDNjcHQsEDGsp5L/XT8c6ATT5 lH0+D78h3Ympe7ksVq++2FcqdE4QBR7EsTcLah70FwVPQ8GmL2n1Nlp8zQq0sixlUU++ u2QxyGT75gb2ptendIK/U43AbDntB8PLlVYdXZppNK/kEcDenn/q7KrHXzYO6s/xIRjf peiaVrvIWK59/8HQViXQgzGcBAe7bPzhCVGiYdcB4GrVmYclDUSC0po2egXCJlfgdLmE ZtFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=+AAb/ObeFdbg1HYC4oHnbbwpn5YXAxyBJfS5ITu8zns=; b=amzZR02Zmi73VPoSqGkmNOEgduB8oqvaqWMkqsH955/tx6fH/6Nw5JzS3mtH+wVBbl 4PONvj/9jNU0/FWOBSHJIiJsIRrCsbZ+E1o7TCO/JTDhTzuDC/b0Rqiq4AxrXbDTl3Db 6HloAeNkUwy1aTT1mfl6U4xNxM88a8rNa1uD/g5Qax74UxwxpwPNbz4FGQbVKD2sOm3i ljSZbPfYaC4zEwQPYsDHbusIb23xEnRH0SfJ+Xp9E1eOocYD3OCjfopSfoSfXvL9ZPwO +eu5pRSa/XoilzaVicX3VLkib2h3M0iy+rs3ZbXQC18Kkf+jFPoLaMvX6Ivh0tm23PK/ w10A== X-Gm-Message-State: AFeK/H3sSmq7co0XacoXVTYWbHyR3K5QA0xR/QbdXxHXNU9t+B693ixp5hFJVLi9jiDOmtBYu8gpIxj53HOOsg== X-Received: by 10.107.155.16 with SMTP id d16mr4061999ioe.125.1490294814426; Thu, 23 Mar 2017 11:46:54 -0700 (PDT) MIME-Version: 1.0 Sender: ermal.luci@gmail.com Received: by 10.107.149.135 with HTTP; Thu, 23 Mar 2017 11:46:53 -0700 (PDT) In-Reply-To: References: From: =?UTF-8?Q?Ermal_Lu=C3=A7i?= Date: Thu, 23 Mar 2017 11:46:53 -0700 X-Google-Sender-Auth: qPI4HsJPlI_a8eMTTfqO9Wldql8 Message-ID: Subject: Re: if_epair altq support problem To: =?UTF-8?B?w5Z6a2FuIEtJUklL?= Cc: "freebsd-net@freebsd.org" Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.23 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Mar 2017 18:46:55 -0000 On Thu, Mar 23, 2017 at 11:06 AM, =C3=96zkan KIRIK = wrote: > Thank you, I'm waiting for 10.3 fix :) > have a nice day > This should work for 10.3++ diff --git a/sys/net/if_epair.c b/sys/net/if_epair.c index 540f06c..d028a95 100644 --- a/sys/net/if_epair.c +++ b/sys/net/if_epair.c @@ -829,7 +829,8 @@ epair_clone_create(struct if_clone *ifc, char *name, size_t len, caddr_t params) ifp->if_start =3D epair_start; ifp->if_ioctl =3D epair_ioctl; ifp->if_init =3D epair_init; - ifp->if_snd.ifq_maxlen =3D ifqmaxlen; + IFQ_SET_MAXLEN(&ifp->if_snd, ifqmaxlen); + IFQ_SET_READY(&ifp->if_snd); /* Assign a hopefully unique, locally administered etheraddr. */ eaddr[0] =3D 0x02; eaddr[3] =3D (ifp->if_index >> 8) & 0xff; @@ -855,7 +856,8 @@ epair_clone_create(struct if_clone *ifc, char *name, size_t len, caddr_t params) ifp->if_start =3D epair_start; ifp->if_ioctl =3D epair_ioctl; ifp->if_init =3D epair_init; - ifp->if_snd.ifq_maxlen =3D ifqmaxlen; + IFQ_SET_MAXLEN(&ifp->if_snd, ifqmaxlen); + IFQ_SET_READY(&ifp->if_snd); /* We need to play some tricks here for the second interface. */ strlcpy(name, epairname, len); error =3D if_clone_create(name, len, (caddr_t)scb); On Wed, Mar 22, 2017 at 11:44 PM, Ermal Lu=C3=A7i wrote: > >> >> On Wed, Mar 22, 2017 at 10:50 AM, =C3=96zkan KIRIK >> wrote: >> >>> Sorry, I mistested on 10.3RELENG. >>> it works on 11 RELENG, But at 10.3RELENG it throws >>> >>> /usr/src/sys/modules/if_epair/../../net/if_epair.c:830:2: error: >>> implicit declaration of function 'if_setstartfn' is invalid in C99 >>> [-Werror,-Wimplicit-function-declaration] >>> >>> >>> On Wed, Mar 22, 2017 at 8:18 PM, =C3=96zkan KIRIK >>> wrote: >>> >>>> Thank You Ermal ! >>>> >>>> It works perfectly, can you commit this patch to 11.0 RELENG and MFC t= o >>>> 10.3 RELENG ? >>>> >>>> >> Thanks, for confirming that it fixes your issues. >> Yeah, on 10.3 its almost the same fix i will deal with it. >> >> >>> Regards >>>> >>>> On Wed, Mar 22, 2017 at 6:59 AM, Ermal Lu=C3=A7i wro= te: >>>> >>>>> >>>>> >>>>> On Tue, Mar 21, 2017 at 5:26 AM, =C3=96zkan KIRIK >>>>> wrote: >>>>> >>>>>> Hello, >>>>>> >>>>>> I sent this email also to freebsd-pf list. But I think that the mai= n >>>>>> problem is belongs to sys/net/if_epair.c. >>>>>> >>>>>> I'm using FreeBSD 10.3-p17 amd64. epair pseudo device is listed as >>>>>> supperted deviced at the Man page of altq(4). >>>>>> From man page of altq : >>>>>> >>>>>> *SUPPORTED DEVICES >>>>> an.cgi?query=3Daltq#end>* >>>>>> >>>>>> The driver modifications described in altq(9) >>>>>> >>>>> ropos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports> >>>>>> are required to use a cer- >>>>>> tain network card with *ALTQ*. They have been applied to >>>>>> the following >>>>>> hardware drivers: ae(4) >>>>>> >>>>> pos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> age(4) >>>>> opos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> alc(4) >>>>> opos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> ale(4) >>>>> opos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> an(4) >>>>> pos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> ath(4) >>>>> opos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> aue(4) >>>>> opos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> axe(4) >>>>> an.cgi?query=3Daxe&sektion=3D4&apropos=3D0&manpath=3DFreeBSD+11.0-RE >>>>>> LEASE+and+Ports>, >>>>>> bce(4) >>>>> opos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> bfe(4) >>>>> opos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> bge(4) >>>>> opos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> bxe(4) >>>>> opos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> cas(4) >>>>> opos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> cxgbe(4) >>>>> propos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> dc(4) >>>>> pos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> de(4) >>>>> pos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> ed(4) >>>>> an.cgi?query=3Ded&sektion=3D4&apropos=3D0&manpath=3DFreeBSD+11.0-REL >>>>>> EASE+and+Ports>, >>>>>> em(4) >>>>> pos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> ep(4) >>>>> pos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> epair(4) >>>>> propos=3D0&manpath=3DFreeBSD+11.0-RELEASE+and+Ports>, >>>>>> >>>>>> .... >>>>>> >>>>>> But while trying to use it the system says that it's not suppoerted.= I >>>>>> tried on FreeBSD 11 also. The output is below: >>>>>> >>>>>> pf.conf : >>>>>> altq on epair0b hfsc bandwidth 1Mb queue { ftp, ssh, icmp, other } >>>>>> queue ftp bandwidth 30% priority 0 hfsc (upperlimit 99%) >>>>>> queue ssh bandwidth 30% priority 2 hfsc (upperlimit 99%) >>>>>> queue icmp bandwidth 10% priority 2 hfsc (upperlimit 99%) >>>>>> queue other bandwidth 30% priority 1 hfsc (default upperlimit 99%) >>>>>> >>>>>> >>>>>> # ifconfig epair0 create >>>>>> # ifconfig epair0a up >>>>>> # ifconfig epair0b up >>>>>> # pfctl -f pf.conf >>>>>> pfctl: epair0b: driver does not support altq >>>>>> >>>>>> # sysctl -a | grep ALTQ >>>>>> options ALTQ_NOPCC >>>>>> options ALTQ_PRIQ >>>>>> options ALTQ_CDNR >>>>>> options ALTQ_HFSC >>>>>> options ALTQ_RIO >>>>>> options ALTQ_RED >>>>>> options ALTQ_CBQ >>>>>> options ALTQ >>>>>> >>>>>> >>>>>> I have a look on /usr/src/sys/net/if_epair.c, and found the ALTQ >>>>>> section: >>>>>> >>>>>> 514 #ifdef ALTQ >>>>>> 515 /* Support ALTQ via the clasic if_start() path. */ >>>>>> 516 IF_LOCK(&ifp->if_snd); >>>>>> 517 if (ALTQ_IS_ENABLED(&ifp->if_snd)) { >>>>>> 518 ALTQ_ENQUEUE(&ifp->if_snd, m, NULL, error); >>>>>> 519 if (error) >>>>>> 520 ifp->if_snd.ifq_drops++; >>>>>> 521 IF_UNLOCK(&ifp->if_snd); >>>>>> 522 if (!error) { >>>>>> 523 ifp->if_obytes +=3D len; >>>>>> 524 if (mflags & (M_BCAST|M_MCAST)) >>>>>> 525 ifp->if_omcasts++; >>>>>> 526 >>>>>> 527 if ((ifp->if_drv_flags & >>>>>> IFF_DRV_OACTIVE) =3D=3D 0) >>>>>> 528 epair_start_locked(ifp); >>>>>> 529 else >>>>>> 530 (void)epair_add_ifp_for_drain >>>>>> ing(ifp); >>>>>> 531 } >>>>>> 532 return (error); >>>>>> 533 } >>>>>> 534 IF_UNLOCK(&ifp->if_snd); >>>>>> 535 #endif >>>>>> >>>>>> >>>>> >>>>> Just apply manually this patch to make it work. >>>>> >>>>> diff --git a/sys/net/if_epair.c b/sys/net/if_epair.c >>>>> index 540f06c..04733a5 100644 >>>>> --- a/sys/net/if_epair.c >>>>> +++ b/sys/net/if_epair.c >>>>> @@ -827,9 +827,11 @@ epair_clone_create(struct if_clone *ifc, char >>>>> *name, size_t len, caddr_t params) >>>>> ifp->if_capabilities =3D IFCAP_VLAN_MTU; >>>>> ifp->if_capenable =3D IFCAP_VLAN_MTU; >>>>> ifp->if_start =3D epair_start; >>>>> + if_setstartfn(ifp, epair_start); >>>>> + if_setsendqlen(ifp, ifqmaxlen); >>>>> + if_setsendqready(ifp); >>>>> ifp->if_ioctl =3D epair_ioctl; >>>>> ifp->if_init =3D epair_init; >>>>> - ifp->if_snd.ifq_maxlen =3D ifqmaxlen; >>>>> /* Assign a hopefully unique, locally administered etheraddr. >>>>> */ >>>>> eaddr[0] =3D 0x02; >>>>> eaddr[3] =3D (ifp->if_index >> 8) & 0xff; >>>>> @@ -852,10 +854,11 @@ epair_clone_create(struct if_clone *ifc, char >>>>> *name, size_t len, caddr_t params) >>>>> ifp->if_flags =3D IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST= ; >>>>> ifp->if_capabilities =3D IFCAP_VLAN_MTU; >>>>> ifp->if_capenable =3D IFCAP_VLAN_MTU; >>>>> - ifp->if_start =3D epair_start; >>>>> + if_setstartfn(ifp, epair_start); >>>>> + if_setsendqlen(ifp, ifqmaxlen); >>>>> + if_setsendqready(ifp); >>>>> ifp->if_ioctl =3D epair_ioctl; >>>>> ifp->if_init =3D epair_init; >>>>> - ifp->if_snd.ifq_maxlen =3D ifqmaxlen; >>>>> /* We need to play some tricks here for the second interface. >>>>> */ >>>>> strlcpy(name, epairname, len); >>>>> error =3D if_clone_create(name, len, (caddr_t)scb); >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>> I have no idea that why it says that it doesn't support altq altough >>>>>> the >>>>>> source code contains ALTQ section. >>>>>> >>>>>> >>>>>> Regards >>>>>> =C3=96zkan KIRIK >>>>>> _______________________________________________ >>>>>> freebsd-net@freebsd.org mailing list >>>>>> https://lists.freebsd.org/mailman/listinfo/freebsd-net >>>>>> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.or= g >>>>>> " >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Ermal >>>>> >>>> >>>> >>> >> >> >> -- >> Ermal >> > > --=20 Ermal