From owner-freebsd-net@FreeBSD.ORG Mon Sep 17 15:50:01 2012 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B99331065672 for ; Mon, 17 Sep 2012 15:50:01 +0000 (UTC) (envelope-from rysto32@gmail.com) Received: from mail-vc0-f182.google.com (mail-vc0-f182.google.com [209.85.220.182]) by mx1.freebsd.org (Postfix) with ESMTP id 694A28FC18 for ; Mon, 17 Sep 2012 15:50:01 +0000 (UTC) Received: by vcbfw7 with SMTP id fw7so9650174vcb.13 for ; Mon, 17 Sep 2012 08:49:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=BaHmVNe0Gg6qtj5EqiJhabhczSIGCpel/omzD44kYSI=; b=q0JLYERaYZU1xrhSTRXposJQwNbDveeyPADNpFgZ8d/lmHECNhdhLPnjxWUHoNIgRg x/j0gDek80LnFF7yZeFJliG4USHF0UwZWjCBFMO9SxLH738lvEQuEVA7Rx28mZDG1CJ7 ekn9aEzZRmlTzwj8ZcdSJqcU4njL4TTDj6x6AnoS9+AC6wtaUqRHhj2SlRGDdNzA4Mbk ZTOUQr3AmX5kD8F2PbE1uEHSkj3+liJLAaRqtuM71VY2+88jdHHe3oy/MWacOK6pOJ2U R+Dkr1+VQ9nadgdXYAWNOYYXaqacYes1XH9C1o2NM70Ns8G6IcrkUQIjornDPT1l98gY 8MHg== MIME-Version: 1.0 Received: by 10.52.36.113 with SMTP id p17mr3681765vdj.91.1347896999728; Mon, 17 Sep 2012 08:49:59 -0700 (PDT) Received: by 10.58.207.114 with HTTP; Mon, 17 Sep 2012 08:49:59 -0700 (PDT) Date: Mon, 17 Sep 2012 11:49:59 -0400 Message-ID: From: Ryan Stone To: freebsd-net Content-Type: text/plain; charset=ISO-8859-1 Subject: What's the latest on fixing IFF_DRV_OACTIVE/if_start/etc? X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Sep 2012 15:50:01 -0000 I know that there have been a lot of discussions about fixing how packets are handed off to ifnets due to the current methods being extremely race-prone. Has there been any consensus on how the problem is going to be solved? In my particular case, I've seen an if_bridge interface whose if_snd queue is full, and once an ifnet reaches that point it will never transmit anything ever again unless its driver manually calls the start method somehow. As a short-term fix I'm temped to call to if_start in IFQ_HANDOFF_ADJ even if IFQ_ENQUEUE returns an error, to ensure that the queue will be drained eventually, but I'm wondering if people are actively working on longer-term fixes.