From owner-cvs-src@FreeBSD.ORG Sat Sep 17 19:43:33 2005 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A971316A41F; Sat, 17 Sep 2005 19:43:33 +0000 (GMT) (envelope-from damien.bergamini@free.fr) Received: from smtp4-g19.free.fr (smtp4-g19.free.fr [212.27.42.30]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6851643D55; Sat, 17 Sep 2005 19:43:32 +0000 (GMT) (envelope-from damien.bergamini@free.fr) Received: from COMETE (pasteur-1-82-67-68-158.fbx.proxad.net [82.67.68.158]) by smtp4-g19.free.fr (Postfix) with SMTP id 44980282F8; Sat, 17 Sep 2005 21:43:31 +0200 (CEST) Message-ID: <00d501c5bbc0$1e8a9240$0300a8c0@COMETE> From: "Damien Bergamini" To: "Sam Leffler" References: <200509171241.j8HCf5ov019561@repoman.freebsd.org> <432C4C6F.80906@errno.com> Date: Sat, 17 Sep 2005 21:43:46 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2670 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670 Cc: cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/dev/iwi if_iwi.c if_iwireg.h if_iwivar.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Sep 2005 19:43:33 -0000 | You appear to have added a private sta table so that you could have an | index for each node table entry. However I don't see any place where | you index into the table; only that you need the index to pass to the | firmware. This seems to say you only need a per-node index and that can | be done differently (see below). | | FWIW, the intended way to maange per-node driver-private data like this | is for the driver to extend the node data structure with a private | definition (override the class decl in c++ parlance) and store the index | in the private data area. This could eliminate the table and avoid the | problems you've introduced by holding uncounted references to node data | structures. It also avoids likely race conditions that'll result from | having an unlocked data structure that overlaps scope with the net80211 | node table (I did something similar in the ath driver only to find out | the hard way it was a mistake). No, you missed the point. This is not a table of ieee80211_node's, but just a table of the neighbours mac addresses. Thus there is no problem with reference counting, locking and such. The iwi_find_txnode() function just looks for a mac address in the table and returns its index (an entry is created if it was not already existing). | This commit msg didn't indicate that you also made changes for WME | support. You appear to disallow QoS encapsulation of EAPOL frames but | this is already done in ieee80211_encap. ieee80211_classify should | assign an AC for all frames so use M_WME_GETAC(m) and don't make | driver-local decisions unless they are required by the h/w (hard to tell | from just looking at a diff). No. I need to decide on which Tx ring the packet will be sent. And I must decide this before calling ieee80211_encap() because in case the ring is full, I want to put the packet back to the if_snd queue. Unfortunately, the check against EAPOL frames is done in ieee80211_encap(), not in ieee80211_classify(). If I use M_WME_GETAC(m) and the frame is an EAPOL frame, I'll end up checking for free space in the wrong ring. | I suggest that MFC'ing some of these changes so quickly are a bad idea. I don't think so. The WME changes have been in 7-CURRENT for a while now and the new changes are not likely to break anything. Most of the new code will not be triggered if IBSS mode is not active. I'd like this diff to make its way in BETA5 so it can be tested by many. Moreover it fixes the association problems with APs hiding their SSID. Damien