From owner-freebsd-net@freebsd.org Fri May 26 08:38:16 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 0A153D82E2A for ; Fri, 26 May 2017 08:38:16 +0000 (UTC) (envelope-from freebsd@omnilan.de) Received: from mx0.gentlemail.de (mx0.gentlemail.de [IPv6:2a00:e10:2800::a130]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8A5E51EBD for ; Fri, 26 May 2017 08:38:15 +0000 (UTC) (envelope-from freebsd@omnilan.de) Received: from mh0.gentlemail.de (mh0.gentlemail.de [IPv6:2a00:e10:2800::a135]) by mx0.gentlemail.de (8.14.5/8.14.5) with ESMTP id v4Q8cDTp064354; Fri, 26 May 2017 10:38:13 +0200 (CEST) (envelope-from freebsd@omnilan.de) Received: from titan.inop.mo1.omnilan.net (titan.inop.mo1.omnilan.net [IPv6:2001:a60:f0bb:1::3:1]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mh0.gentlemail.de (Postfix) with ESMTPSA id F3D272CF; Fri, 26 May 2017 10:38:12 +0200 (CEST) Message-ID: <5927E974.6060706@omnilan.de> Date: Fri, 26 May 2017 10:38:12 +0200 From: Harry Schmalzbauer Organization: OmniLAN User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; de-DE; rv:1.9.2.8) Gecko/20100906 Lightning/1.0b2 Thunderbird/3.1.2 MIME-Version: 1.0 To: Vincenzo Maffione CC: FreeBSD Net Subject: Re: [panic] netmap(4) and if_lagg(4) References: <58CBCD7A.8060301@omnilan.de> <58CC23F5.7060507@omnilan.de> <58CFA394.8070901@omnilan.de> <5926EE96.1010000@omnilan.de> <5926F9F9.4040706@omnilan.de> <592701D6.7030301@omnilan.de> <592742A8.4010207@omnilan.de> <5927D560.10003@omnilan.de> <5927D77A.60502@omnilan.de> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (mx0.gentlemail.de [IPv6:2a00:e10:2800::a130]); Fri, 26 May 2017 10:38:13 +0200 (CEST) X-Milter: Spamilter (Reciever: mx0.gentlemail.de; Sender-ip: ; Sender-helo: mh0.gentlemail.de; ) 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: Fri, 26 May 2017 08:38:16 -0000 Bezüglich Vincenzo Maffione's Nachricht vom 26.05.2017 09:31 (localtime): > Is lagg0 the only interface attached to vale0? > Is lagg0 aggregating a VLAN interface? > > You can try this trivial patch > > diff --git a/sys/dev/netmap/netmap_generic.c > b/sys/dev/netmap/netmap_generic.c > index f148b228..46a3c2c6 100644 > --- a/sys/dev/netmap/netmap_generic.c > +++ b/sys/dev/netmap/netmap_generic.c > @@ -950,6 +950,10 @@ generic_rx_handler(struct ifnet *ifp, struct mbuf *m) > u_int work_done; > u_int r = MBUF_RXQ(m); /* receive ring number */ > > + if (!NM_NA_VALID(ifp)) { > + return 0; > + } > + > if (r >= na->num_rx_rings) { > r = r % na->num_rx_rings; > } Unfortunately code base is too differing for me, since I absolutely don't know what I'm doing here. My resulting patch follows (combining this patch with the previous you provided and adding NM_NA_VALID()), but there are unmatching macros involved, which I have no idea about, so I'm not able to test this patch: --- src/sys/dev/netmap/netmap_freebsd.c.orig 2017-05-25 20:36:29.744382000 +0200 +++ src/sys/dev/netmap/netmap_freebsd.c 2017-05-25 20:35:53.858843000 +0200 @@ -259,9 +259,10 @@ void generic_find_num_queues(struct ifnet *ifp, u_int *txq, u_int *rxq) { - D("called, in txq %d rxq %d", *txq, *rxq); - *txq = netmap_generic_rings; - *rxq = netmap_generic_rings; + u_int num_rings = netmap_generic_rings ? netmap_generic_rings : 1; + + *txq = num_rings; + *rxq = num_rings; } --- src/sys/dev/netmap/netmap_kern.h.orig 2017-01-31 19:42:41.453502000 +0100 +++ src/sys/dev/netmap/netmap_kern.h 2017-05-26 10:08:17.128420000 +0200 @@ -1284,6 +1284,12 @@ #endif /* linux */ +#define NM_NA_VALID(ifp) (NA(ifp) && \ + ((uint32_t)(uintptr_t)NA(ifp) ^ NA(ifp)->magic) == NETMAP_MAGIC ) + + ((uint32_t)(uintptr_t)NA(ifp)) ^ NETMAP_MAGIC; \ + } while(0) + #ifdef __FreeBSD__ /* Assigns the device IOMMU domain to an allocator. --- src/sys/dev/netmap/netmap_generic.c.orig 2017-01-31 19:42:41.452980000 +0100 +++ src/sys/dev/netmap/netmap_generic.c 2017-05-26 09:55:21.265066000 +0200 @@ -625,6 +625,10 @@ u_int work_done; u_int rr = MBUF_RXQ(m); // receive ring number + if (!NM_NA_VALID(ifp)) { + return; + } + if (rr >= na->num_rx_rings) { rr = rr % na->num_rx_rings; // XXX expensive... } In file included from /usr/local/share/deploy-tools/RELENG_11/src/sys/modules/cxgbe/if_cxgbe/../../../dev/cxgbe/t4_netmap.c:52: /usr/local/share/deploy-tools/RELENG_11/src/sys/dev/netmap/netmap_kern.h:1290:24: error: type specifier missing, defaults to 'int' [-Werror,-Wimplicit-int] ((uint32_t)(uintptr_t)NA(ifp)) ^ NETMAP_MAGIC; \ ^ /usr/local/share/deploy-tools/RELENG_11/src/sys/dev/netmap/netmap_kern.h:1254:20: note: expanded from macro 'NA' #define NA(_ifp) ((struct netmap_adapter *)WNA(_ifp)) ^ /usr/local/share/deploy-tools/RELENG_11/src/sys/dev/netmap/netmap_kern.h:1290:27: error: a parameter list without types is only allowed in a function definition ((uint32_t)(uintptr_t)NA(ifp)) ^ NETMAP_MAGIC; \ ^ /usr/local/share/deploy-tools/RELENG_11/src/sys/dev/netmap/netmap_kern.h:1290:24: error: function cannot return function type 'int ()' ((uint32_t)(uintptr_t)NA(ifp)) ^ NETMAP_MAGIC; \ ^ /usr/local/share/deploy-tools/RELENG_11/src/sys/dev/netmap/netmap_kern.h:1254:19: note: expanded from macro 'NA' #define NA(_ifp) ((struct netmap_adapter *)WNA(_ifp)) ^ /usr/local/share/deploy-tools/RELENG_11/src/sys/dev/netmap/netmap_kern.h:1290:24: error: expected ')' /usr/local/share/deploy-tools/RELENG_11/src/sys/dev/netmap/netmap_kern.h:1254:44: note: expanded from macro 'NA' #define NA(_ifp) ((struct netmap_adapter *)WNA(_ifp)) ^ /usr/local/share/deploy-tools/RELENG_11/src/sys/dev/netmap/netmap_kern.h:90:25: note: expanded from macro 'WNA' #define WNA(_ifp) (_ifp)->if_netmap ^ /usr/local/share/deploy-tools/RELENG_11/src/sys/dev/netmap/netmap_kern.h:1290:24: note: to match this '(' /usr/local/share/deploy-tools/RELENG_11/src/sys/dev/netmap/netmap_kern.h:1254:18: note: expanded from macro 'NA' #define NA(_ifp) ((struct netmap_adapter *)WNA(_ifp)) thanks, -harry