From owner-freebsd-wireless@FreeBSD.ORG Wed Feb 15 05:55:43 2012 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 316A0106566B for ; Wed, 15 Feb 2012 05:55:43 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-wi0-f182.google.com (mail-wi0-f182.google.com [209.85.212.182]) by mx1.freebsd.org (Postfix) with ESMTP id B0EFD8FC0A for ; Wed, 15 Feb 2012 05:55:42 +0000 (UTC) Received: by wibhn14 with SMTP id hn14so441453wib.13 for ; Tue, 14 Feb 2012 21:55:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=RGKkopdM/3QBdPu2iZZ5gyu1A+oPIJgywkRBj7mPwDo=; b=K4pjLmd0O1vXD672fDoV9+KZWtH5tNtVl6i9B9r9BhQV7/vn4Js6MyTMG85zmpMgS4 yU14dKRkdRMT0alwLKkWT1Q9G8XXUftn1DG6u6pD088j1O67byTig49lfgRjL26bOP/+ b/Zrrt2kZCZoNtmG4tmcBiftkj5Wxh20m81nM= MIME-Version: 1.0 Received: by 10.216.137.210 with SMTP id y60mr2110580wei.14.1329285341633; Tue, 14 Feb 2012 21:55:41 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.216.154.199 with HTTP; Tue, 14 Feb 2012 21:55:41 -0800 (PST) In-Reply-To: References: Date: Tue, 14 Feb 2012 21:55:41 -0800 X-Google-Sender-Auth: 8T8xcHUvkR9ZOPOgvhRbCO7qwCA Message-ID: From: Adrian Chadd To: Monthadar Al Jaberi Content-Type: text/plain; charset=ISO-8859-1 Cc: freebsd-wireless@freebsd.org Subject: Re: Fragment number of first fragment != 0 X-BeenThere: freebsd-wireless@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussions of 802.11 stack, tools device driver development." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Feb 2012 05:55:43 -0000 Oddly, I can't get any fragments to transmit: * ieee80211_fragment() fragments the frame (correctly or not, I'm not paying attention); * the fragments are chained together via m->m_nextpkt; * but the first call to IFQ_DEQUEUE() in ath_start() removes the m->m_nextpkt reference, completely destroying the fragment chain; * .. and then ath_txfrag_setup() finds it has no fragments to operate on, as m0->m_nextpkt is NULL; * .. so the mbuf is dropped on the floor. I'm also not yet convinced that we're not leaking the fragment mbufs. IFQ_DEQUEUE() has been used in ath_start() since sam introduced vap functionality in 2008 or 2009. The _IF_DEQUEUE() macro behaviour (of clearing m->m_nextpkt) So, how exactly again are we supposed to handle net80211 fragments correctly? :-) Confused, Adrian