From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vladimir Kondratiev Subject: generic 802.11 stack Date: Fri, 1 Oct 2004 16:30:42 +0200 Sender: netdev-bounce@oss.sgi.com Message-ID: <200410011630.59465.vkondra@mail.ru> References: <200408312111.02438.vda@port.imtp.ilyichevsk.odessa.ua> <200409290910.13201.vkondra@mail.ru> <20040929080011.GO30131@ruslug.rutgers.edu> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart16626391.WQu7vuWcJy"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Cc: "Luis R. Rodriguez" , "David S. Miller" , acx100-devel@lists.sourceforge.net, prism54-devel@prism54.org Return-path: To: netdev@oss.sgi.com In-Reply-To: <20040929080011.GO30131@ruslug.rutgers.edu> Errors-to: netdev-bounce@oss.sgi.com List-Id: netdev.vger.kernel.org --nextPart16626391.WQu7vuWcJy Content-Type: multipart/mixed; boundary="Boundary-01=_ToWXBwX6OFYnK9d" Content-Transfer-Encoding: 7bit Content-Disposition: inline --Boundary-01=_ToWXBwX6OFYnK9d Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Attached is 1-st iteration for generic 802.11 stack framework. Based on code from Dave. I make it compile for 2.6 and wrote simple skeleton for native 802.11 drive= r.=20 This skeleton is able to simulate Rx using ioctl; perl script to invoke ioc= tl=20 included. Argument for script is binary frame image. I removed all code for 802.11 header removal from p80211_type_trans for=20 several reasons: =2D I'd like to have all frames coming to stack with the same 802.11 header= ,=20 this will help for sniffer =2D header removal for data is a bit more complex: we should determine QoS= =20 header and strip 24 or 26 bytes. =2D I'd like to do fragmentation and reassembly on stack, not in driver. Nothing functional yet, but one can start debugging stack using Rx imitatio= n;=20 and driver do print packets it gets to Tx. P.S. question: I saw in all xxx_type_trans functions, skb->dev never assigned, it is done = by=20 driver instead. What is the reason? Why not assign skb->dev in=20 xxx_type_trans? --Boundary-01=_ToWXBwX6OFYnK9d Content-Type: application/x-tbz; name="p80211.tar.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="p80211.tar.bz2" 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 --Boundary-01=_ToWXBwX6OFYnK9d-- --nextPart16626391.WQu7vuWcJy Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) iD8DBQBBXWojqxdj7mhC6o0RApj6AKCFkyLZ/ge8sdgGqoGaeowKYhlVKgCghugH 21AIH4NzEcj9q1RRPAdU4Lw= =vK7r -----END PGP SIGNATURE----- --nextPart16626391.WQu7vuWcJy--