* [RFC] acx100 inclusion in mainline; generic 802.11 stack @ 2004-08-31 18:11 Denis Vlasenko 2004-08-31 18:21 ` Jeff Garzik 2004-09-06 18:13 ` Sam Leffler 0 siblings, 2 replies; 70+ messages in thread From: Denis Vlasenko @ 2004-08-31 18:11 UTC (permalink / raw) To: Jean Tourrilhes, Jouni Malinen, jgarzik Cc: acx100-devel, netdev, prism54-devel Hi all, It looks like acx100 approaches state when we can consider it's inclusion into mainline kernel. Some background information: acx100 and acx111 hardware is a bit like Atheros and possibly prism54 "softmac": it handles mostly low-level rx/tx stuff, leaving 802.11 stack implementation up to OS (which is good. To have largish potentially buggy binary-only firmware to cope with is a nightmare). I think what acx100 devel is working on can be best described as "yet another 802.11 stack implementation". This is not ok. I think we definitely need generic 802.11 stack, with individual drivers providing only needed callbacks, just like it is done for wired eth drivers. I think 'senior' network guys are in position to decide upon which of currently available 802.11 stacks we should continue to work. (Atheros has one, said to be derived from BSD, is there any others?) Give us some guidance please... -- vda ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-08-31 18:11 [RFC] acx100 inclusion in mainline; generic 802.11 stack Denis Vlasenko @ 2004-08-31 18:21 ` Jeff Garzik 2004-08-31 19:14 ` Vladimir Kondratiev 2004-09-02 20:24 ` Vladimir Kondratiev 2004-09-06 18:13 ` Sam Leffler 1 sibling, 2 replies; 70+ messages in thread From: Jeff Garzik @ 2004-08-31 18:21 UTC (permalink / raw) To: Denis Vlasenko Cc: acx100-devel, netdev, Jouni Malinen, Jean Tourrilhes, prism54-devel Denis Vlasenko wrote: > I think 'senior' network guys are in position to decide upon which > of currently available 802.11 stacks we should continue to work. > (Atheros has one, said to be derived from BSD, is there any others?) Already have. Start with the code in wireless-2.6 -- HostAP -- and use DaveM's 802.11 stack template as a model for actually integrating 802.11 very tightly with the rest of the net stack. http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/davem-p80211.tar.bz2 Jeff ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-08-31 18:21 ` Jeff Garzik @ 2004-08-31 19:14 ` Vladimir Kondratiev 2004-08-31 21:37 ` Luis R. Rodriguez 2004-09-02 20:24 ` Vladimir Kondratiev 1 sibling, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-08-31 19:14 UTC (permalink / raw) To: netdev Cc: Jeff Garzik, Denis Vlasenko, Jean Tourrilhes, Jouni Malinen, acx100-devel, prism54-devel, davem [-- Attachment #1: Type: text/plain, Size: 1624 bytes --] On Tuesday 31 August 2004 21:21, Jeff Garzik wrote: JG> Denis Vlasenko wrote: JG> > I think 'senior' network guys are in position to decide upon which JG> > of currently available 802.11 stacks we should continue to work. JG> > (Atheros has one, said to be derived from BSD, is there any others?) JG> JG> JG> Already have. Start with the code in wireless-2.6 -- HostAP -- and use JG> DaveM's 802.11 stack template as a model for actually integrating 802.11 JG> very tightly with the rest of the net stack. JG> JG> http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/davem-p8 0211.tar.bz2 JG> JG> Jeff This stack raises many questions. The very idea to implement generic softmac is pretty good. So, first questions: - it defines structures that was present in Jean's wireless extensions. So, will it replace Jean's wireless extensions, merge with it, or some other relationship? Partually, I don't like to see definitions for .11 header and field constants in 2 includes. - QoS stuff is not defined. I suppose recent cards will all support WME and/or TGe. It is easy to add "QoS control" field to header and new frame types, but it is harder to formally define how PHY should handle it. And, TGe is big story on itself, with all its HCCA, block ack, etc. I also think that QoS, as it is defined in TGe, required driver to have several tx queues and start/stop them separately. Is anyone working on it? I'll be glad to join. - Security is not up-to date either. We need .1x, EAS, TKIP etc. This need to be done for modern cards to use this infrastructure. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-08-31 19:14 ` Vladimir Kondratiev @ 2004-08-31 21:37 ` Luis R. Rodriguez 2004-08-31 22:06 ` Vladimir Kondratiev 2004-09-01 2:22 ` Jouni Malinen 0 siblings, 2 replies; 70+ messages in thread From: Luis R. Rodriguez @ 2004-08-31 21:37 UTC (permalink / raw) To: Vladimir Kondratiev Cc: netdev, Jeff Garzik, Denis Vlasenko, Jean Tourrilhes, Jouni Malinen, acx100-devel, prism54-devel, davem On Tue, Aug 31, 2004 at 10:14:38PM +0300, Vladimir Kondratiev wrote: > On Tuesday 31 August 2004 21:21, Jeff Garzik wrote: > JG> Denis Vlasenko wrote: > JG> > I think 'senior' network guys are in position to decide upon which > JG> > of currently available 802.11 stacks we should continue to work. > JG> > (Atheros has one, said to be derived from BSD, is there any others?) > JG> > JG> > JG> Already have. Start with the code in wireless-2.6 -- HostAP -- and use > JG> DaveM's 802.11 stack template as a model for actually integrating 802.11 > JG> very tightly with the rest of the net stack. > JG> > JG> > http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/davem-p8 > 0211.tar.bz2 JG> > JG> Jeff > > This stack raises many questions. > > The very idea to implement generic softmac is pretty good. > > So, first questions: > > - it defines structures that was present in Jean's wireless extensions. So, > will it replace Jean's wireless extensions, merge with it, or some other > relationship? Partually, I don't like to see definitions for .11 header and > field constants in 2 includes. > > - QoS stuff is not defined. I suppose recent cards will all support WME and/or > TGe. It is easy to add "QoS control" field to header and new frame types, but > it is harder to formally define how PHY should handle it. And, TGe is big > story on itself, with all its HCCA, block ack, etc. I also think that QoS, as > it is defined in TGe, required driver to have several tx queues and > start/stop them separately. Is anyone working on it? I'll be glad to join. > > - Security is not up-to date either. We need .1x, EAS, TKIP etc. This need to > be done for modern cards to use this infrastructure. This is handled by hostap wpa_supplicant now, which is going to be part of WE18. The question I think is whether somoene plans on re-doing it on wireless-2.6, since as you mentioned it seems WE are being redone on davem's patch. Luis -- GnuPG Key fingerprint = 113F B290 C6D2 0251 4D84 A34A 6ADD 4937 E20A 525E ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-08-31 21:37 ` Luis R. Rodriguez @ 2004-08-31 22:06 ` Vladimir Kondratiev 2004-09-01 2:22 ` Jouni Malinen 1 sibling, 0 replies; 70+ messages in thread From: Vladimir Kondratiev @ 2004-08-31 22:06 UTC (permalink / raw) To: netdev Cc: Luis R. Rodriguez, Jeff Garzik, Denis Vlasenko, Jean Tourrilhes, Jouni Malinen, acx100-devel, prism54-devel, davem [-- Attachment #1.1: Type: text/plain, Size: 779 bytes --] <skip> http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/davem-p80211.tar.bz2 <skip> LR> > - QoS stuff is not defined. I suppose recent cards will all support WME and/or LR> > TGe. It is easy to add "QoS control" field to header and new frame types, but LR> > it is harder to formally define how PHY should handle it. And, TGe is big LR> > story on itself, with all its HCCA, block ack, etc. I also think that QoS, as LR> > it is defined in TGe, required driver to have several tx queues and LR> > start/stop them separately. Is anyone working on it? I'll be glad to join. LR> > I'd like to contribute easiest part of TGe, to start with something (against source mentioned above). I defined only frame formats and bits for fixed fields. [-- Attachment #1.2: tge.patch --] [-- Type: text/x-diff, Size: 3682 bytes --] Index: if_80211.h =================================================================== RCS file: /home/vkondra-l/cvsroot/p80211/if_80211.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 if_80211.h --- if_80211.h 31 Aug 2004 20:32:16 -0000 1.1.1.1 +++ if_80211.h 31 Aug 2004 21:29:58 -0000 @@ -31,6 +31,27 @@ u8 addr4[ETH_ALEN]; }; +struct ieee802_11_hdrq { + u16 frame_ctl; + u16 duration_id; + u8 addr1[ETH_ALEN]; + u8 addr2[ETH_ALEN]; + u8 addr3[ETH_ALEN]; + u16 seq_ctl; + u16 qos_ctl; +}; + +struct ieee802_11_hdr4q { + u16 frame_ctl; + u16 duration_id; + u8 addr1[ETH_ALEN]; + u8 addr2[ETH_ALEN]; + u8 addr3[ETH_ALEN]; + u16 seq_ctl; + u8 addr4[ETH_ALEN]; + u16 qos_ctl; +}; + /* Address field usage based upon setting of FROMDS/TODS bits: * * FROMDS TODS addr1 addr2 addr3 addr4 @@ -78,8 +99,11 @@ #define IEEE802_11_STYPE_DISASSOC 0x00A0 #define IEEE802_11_STYPE_AUTH 0x00B0 #define IEEE802_11_STYPE_DEAUTH 0x00C0 +#define IEEE802_11_STYPE_ACTION 0x00D0 /* control */ +#define IEEE802_11_STYPE_BACK_REQ 0x0080 +#define IEEE802_11_STYPE_BACK 0x0090 #define IEEE802_11_STYPE_PSPOLL 0x00A0 #define IEEE802_11_STYPE_RTS 0x00B0 #define IEEE802_11_STYPE_CTS 0x00C0 @@ -96,11 +120,51 @@ #define IEEE802_11_STYPE_CFACK 0x0050 #define IEEE802_11_STYPE_CFPOLL 0x0060 #define IEEE802_11_STYPE_CFACKPOLL 0x0070 +#define IEEE802_11_STYPE_QDATA 0x0080 +#define IEEE802_11_STYPE_QDATA_CFACK 0x0090 +#define IEEE802_11_STYPE_QDATA_CFPOLL 0x00A0 +#define IEEE802_11_STYPE_QDATA_CFACKPOLL 0x00B0 +#define IEEE802_11_STYPE_QNULLFUNC 0x00C0 +#define IEEE802_11_STYPE_QCFACK 0x00D0 +#define IEEE802_11_STYPE_QCFPOLL 0x00E0 +#define IEEE802_11_STYPE_QCFACKPOLL 0x00F0 #define IEEE802_11_SCTL_FRAG 0x000F #define IEEE802_11_SCTL_SEQ 0xFFF0 #define IEEE802_11_SCTL_SEQ_SHIFT 4 +/** QOS control field bits usage + * Frame 0..3 4 5..6 7 8..15 + * + * QoS (+)CF-Poll TID EOSP Ack_policy rsrv TXOP limit + * sent by HC + * + * QoS Data, QoS Null, TID EOSP Ack_policy rsrv QAP PS buffer size + * QoS CF-Ack, + * QoS Data + CF-Ack + * sent by HC + * + * QoS Data sent by TID 0 Ack_policy rsrv TXOP duration requested + * non-AP QSTA TID 1 Ack_policy rsrv Queue size + * + */ +#define IEEE802_11_QCTL_FRAG 0x000F +#define IEEE802_11_QCTL_EOSP 0x0010 +#define IEEE802_11_QCTL_ACK 0x0060 +#define IEEE802_11_QCTL_VAL 0xFF00 + +/* bits for ack policy */ +#define IEEE802_11_QCTL_ACK_NORM 0x0000 /* normal Ack */ +#define IEEE802_11_QCTL_ACK_NO 0x0020 /* No ack */ +#define IEEE802_11_QCTL_ACK_NEXP 0x0040 /* No explicit Ack */ +#define IEEE802_11_QCTL_ACK_BLK 0x0060 /* Block Ack */ + +/* bits for QAP PS buffer size */ +#define IEEE802_11_QCTL_PSBUF_PRESENT 0x0200 /* next fields present */ +#define IEEE802_11_QCTL_PSBUF_HI_AC 0x0C00 /* highest AC buffered */ +#define IEEE802_11_QCTL_PSBUF_BUF 0xF000 /* total buffered payload */ + + struct ieee802_11_snap { u8 dsap; u8 ssap; @@ -119,6 +183,14 @@ #define IEEE802_11_TLV_TYPE_TIM 5 #define IEEE802_11_TLV_TYPE_IBSSPARMS 6 #define IEEE802_11_TLV_TYPE_COUNTRY 7 +#define IEEE802_11_TLV_TYPE_QBSS_LOAD 11 +#define IEEE802_11_TLV_TYPE_EDCA 12 +#define IEEE802_11_TLV_TYPE_TSPEC 13 +#define IEEE802_11_TLV_TYPE_TCLAS 14 +#define IEEE802_11_TLV_TYPE_SCHED 15 +#define IEEE802_11_TLV_TYPE_TS_DELAY 43 +#define IEEE802_11_TLV_TYPE_TC_PROC 44 +#define IEEE802_11_TLV_TYPE_QOS_CAP 46 #define IEEE802_11_TLV_TYPE_XRATES 50 #define IEEE802_11_MAX_RATES 8 [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-08-31 21:37 ` Luis R. Rodriguez 2004-08-31 22:06 ` Vladimir Kondratiev @ 2004-09-01 2:22 ` Jouni Malinen 1 sibling, 0 replies; 70+ messages in thread From: Jouni Malinen @ 2004-09-01 2:22 UTC (permalink / raw) To: Vladimir Kondratiev, netdev, Jeff Garzik, Denis Vlasenko, Jean Tourrilhes, Jouni Malinen, acx100-devel, prism54-devel, davem On Tue, Aug 31, 2004 at 05:37:19PM -0400, Luis R. Rodriguez wrote: > On Tue, Aug 31, 2004 at 10:14:38PM +0300, Vladimir Kondratiev wrote: > > - Security is not up-to date either. We need .1x, EAS, TKIP etc. This need to > > be done for modern cards to use this infrastructure. > > This is handled by hostap wpa_supplicant now, which is going to be part > of WE18. The question I think is whether somoene plans on re-doing it on > wireless-2.6, since as you mentioned it seems WE are being redone on > davem's patch. This sounds somewhat confusing.. As far as WPA and IEEE 802.11i (RSN/WPA2) are concerned, there are number of different components involved. One part is in IEEE 802.11 data frame handling (TKIP, CCMP). This is implemented, e.g., in the current Host AP RX/TX paths more or less completely. The current implementation is still hardcoded to do this in software, so it would need to be extended to support offloading encryption to the wlan card since many of the modern cards have hardware (or combination of hardware/firmware) implementation of TKIP and CCMP. In addition, IEEE 802.11e will add some small changes to TKIP/CCMP processing; Host AP code has places for this for TX (mainly, setting priority value in the header). RX needs some more work because of possible reordering of packets with different priorities. This all lives in the generic 802.11 stack of the kernel. In addition to data encryption, IEEE 802.11i defines key management protocol (4-Way/PTK handshake, 2-Way/Group Key handshake) and optimizations for full IEEE 802.1X authentication (PMKSA caching, pre-authentication). IEEE 802.1X and EAP authentication is on similar level. All these are done using EAPOL packet (own ethertype; one for EAPOL and one for pre-authentication). This could be done in kernel, but I don't see much point in that and have thus implemented these in user space. wpa_supplicant includes the Supplicant part both for IEEE 802.1X and IEEE 802.11i key handshakes. hostapd includes the Authenticator part for the same functionality. Being able to keep authentication and key management separated from the data encryption. There needs to be an interface for configuring and getting event information. I would say this can be considered as separate design area. Currently, hostapd and wpa_supplicant are using combination of ioctls (WE and private, depending on the driver) for user space -> kernel configuration (e.g., encryption keys), wireless events (netlink) for getting event information (association/encryption error/etc.), network interfaces with or without IEEE 802.11 headers (e.g., hostapd includes IEEE 802.11 headers for management frames in a separate interface and wpa_supplicant uses just Ethernet header and normal data interface to get the two special ethertypes). This communication interface can be replaced with something different, if desired, without affecting the other parts of the implementation (the encryption of data frames itself or the authentication/key management protocols). -- Jouni Malinen PGP id EFC895FA ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-08-31 18:21 ` Jeff Garzik 2004-08-31 19:14 ` Vladimir Kondratiev @ 2004-09-02 20:24 ` Vladimir Kondratiev 2004-09-02 20:33 ` Jeff Garzik 1 sibling, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-02 20:24 UTC (permalink / raw) To: netdev Cc: Jeff Garzik, Denis Vlasenko, Jean Tourrilhes, Jouni Malinen, acx100-devel, prism54-devel [-- Attachment #1: Type: text/plain, Size: 852 bytes --] Jeff, On Tuesday 31 August 2004 21:21, Jeff Garzik wrote: JG> Denis Vlasenko wrote: JG> > I think 'senior' network guys are in position to decide upon which JG> > of currently available 802.11 stacks we should continue to work. JG> > (Atheros has one, said to be derived from BSD, is there any others?) JG> JG> JG> Already have. Start with the code in wireless-2.6 -- HostAP -- and use JG> DaveM's 802.11 stack template as a model for actually integrating 802.11 JG> very tightly with the rest of the net stack. JG> JG> http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/davem-p8 0211.tar.bz2 Is this stack the main one that is going to be used? I.e. if I am working on driver for next generation .11 card - should I try to use it, request/submitt missing features etc.? Or should I use wireless extensions? [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-02 20:24 ` Vladimir Kondratiev @ 2004-09-02 20:33 ` Jeff Garzik 2004-09-03 17:37 ` Vladimir Kondratiev 0 siblings, 1 reply; 70+ messages in thread From: Jeff Garzik @ 2004-09-02 20:33 UTC (permalink / raw) To: Vladimir Kondratiev Cc: netdev, Denis Vlasenko, Jean Tourrilhes, Jouni Malinen, acx100-devel, prism54-devel, David S. Miller Vladimir Kondratiev wrote: > Jeff, > > On Tuesday 31 August 2004 21:21, Jeff Garzik wrote: > JG> Denis Vlasenko wrote: > JG> > I think 'senior' network guys are in position to decide upon which > JG> > of currently available 802.11 stacks we should continue to work. > JG> > (Atheros has one, said to be derived from BSD, is there any others?) > JG> > JG> > JG> Already have. Start with the code in wireless-2.6 -- HostAP -- and use > JG> DaveM's 802.11 stack template as a model for actually integrating 802.11 > JG> very tightly with the rest of the net stack. > JG> > JG> > http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/davem-p8 > 0211.tar.bz2 > > Is this stack the main one that is going to be used? I.e. if I am working on > driver for next generation .11 card - should I try to use it, request/submitt > missing features etc.? Or should I use wireless extensions? DaveM's code is a template for how a wireless stack would look when properly and fully integrated into the net core. Although JeanT and I disagree about this, I am less interested in backwards compatibility than I am about making wireless a "first class citizen" in the kernel. As I have proven with kcompat (http://sf.net/projects/gkernel/) you can be backwards compatible while still evolving the current kernel driver API to meet current design needs. Jeff ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-02 20:33 ` Jeff Garzik @ 2004-09-03 17:37 ` Vladimir Kondratiev 2004-09-03 20:29 ` Jeff Garzik 0 siblings, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-03 17:37 UTC (permalink / raw) To: netdev Cc: Jeff Garzik, Denis Vlasenko, Jean Tourrilhes, Jouni Malinen, acx100-devel, prism54-devel, David S. Miller Is anyone working on this stack? I asked Dave, he is hot working on it. Or is this code dead? On Thursday 02 September 2004 23:33, Jeff Garzik wrote: JG> Vladimir Kondratiev wrote: JG> > Jeff, JG> > JG> > On Tuesday 31 August 2004 21:21, Jeff Garzik wrote: JG> > JG> Denis Vlasenko wrote: JG> > JG> > I think 'senior' network guys are in position to decide upon which JG> > JG> > of currently available 802.11 stacks we should continue to work. JG> > JG> > (Atheros has one, said to be derived from BSD, is there any others?) JG> > JG> JG> > JG> JG> > JG> Already have. Start with the code in wireless-2.6 -- HostAP -- and use JG> > JG> DaveM's 802.11 stack template as a model for actually integrating 802.11 JG> > JG> very tightly with the rest of the net stack. JG> > JG> JG> > JG> JG> > http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/davem-p8 JG> > 0211.tar.bz2 JG> > JG> > Is this stack the main one that is going to be used? I.e. if I am working on JG> > driver for next generation .11 card - should I try to use it, request/submitt JG> > missing features etc.? Or should I use wireless extensions? JG> JG> DaveM's code is a template for how a wireless stack would look when JG> properly and fully integrated into the net core. JG> JG> Although JeanT and I disagree about this, I am less interested in JG> backwards compatibility than I am about making wireless a "first class JG> citizen" in the kernel. As I have proven with kcompat JG> (http://sf.net/projects/gkernel/) you can be backwards compatible while JG> still evolving the current kernel driver API to meet current design needs. JG> JG> Jeff JG> JG> JG> JG> ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-03 17:37 ` Vladimir Kondratiev @ 2004-09-03 20:29 ` Jeff Garzik 0 siblings, 0 replies; 70+ messages in thread From: Jeff Garzik @ 2004-09-03 20:29 UTC (permalink / raw) To: Vladimir Kondratiev Cc: netdev, Denis Vlasenko, Jean Tourrilhes, Jouni Malinen, acx100-devel, prism54-devel, David S. Miller Vladimir Kondratiev wrote: > Is anyone working on this stack? I asked Dave, he is hot working on it. > Or is this code dead? Nobody is actively working on that stack AFAIK. Jeff ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-08-31 18:11 [RFC] acx100 inclusion in mainline; generic 802.11 stack Denis Vlasenko 2004-08-31 18:21 ` Jeff Garzik @ 2004-09-06 18:13 ` Sam Leffler 2004-09-06 18:57 ` Vladimir Kondratiev 2004-09-07 1:23 ` David S. Miller 1 sibling, 2 replies; 70+ messages in thread From: Sam Leffler @ 2004-09-06 18:13 UTC (permalink / raw) To: Denis Vlasenko Cc: netdev, Jouni Malinen, Jean Tourrilhes, acx100-devel, prism54-devel, jgarzik On Aug 31, 2004, at 11:11 AM, Denis Vlasenko wrote: > Hi all, > > It looks like acx100 approaches state when we can consider it's > inclusion > into mainline kernel. > > Some background information: acx100 and acx111 hardware is a bit like > Atheros and possibly prism54 "softmac": it handles mostly low-level > rx/tx stuff, leaving 802.11 stack implementation up to OS > (which is good. To have largish potentially buggy binary-only firmware > to cope with is a nightmare). > > I think what acx100 devel is working on can be best described as > "yet another 802.11 stack implementation". This is not ok. > > I think we definitely need generic 802.11 stack, with individual > drivers > providing only needed callbacks, just like it is done for wired eth > drivers. > > I think 'senior' network guys are in position to decide upon which > of currently available 802.11 stacks we should continue to work. > (Atheros has one, said to be derived from BSD, is there any others?) To correct this oft-repeated misinformation: "Atheros has one" is wrong. There is a freely available device-independent 802.11 protocol stack that is dual BSD/GPL licensed. The only relationship between this code and Atheros is that the madwifi project uses it to support Atheros hardware under Linux. Atheros holds no copyrights on any of the net80211 code. As to it being derived from BSD, that is correct but misleading. The 1st generation of this code was done for netbsd but the current code is very different and has been developed almost exclusively in Linux for over a year (though I'm now trying to find time to backport to FreeBSD). The net80211 code is actively used in netbsd to support 6+ drivers and a similar number in freebsd. There is a fairly complete implementation of the 802.11 protocols (fragmentation isn't there but will be soon) including 11g, WPA/11i, WME and WSM (coming soon). WPA/802.11i supplicant support using wpa_supplicant has been available for a while and a hostapd-based authenticator will hit CVS shortly. The management API for Linux is based on wireless extensions (WE is insufficient so like everyone else you'll find lots of private ioctls). I've suggested this code as a good starting point for a "generic 802.11 stack" but received only misinformed responses. Folks who are unaware of the work should take a look at it. Sam ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-06 18:13 ` Sam Leffler @ 2004-09-06 18:57 ` Vladimir Kondratiev 2004-09-06 19:30 ` Sam Leffler 2004-09-07 1:23 ` David S. Miller 1 sibling, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-06 18:57 UTC (permalink / raw) To: netdev Cc: Sam Leffler, Denis Vlasenko, jgarzik, acx100-devel, Jean Tourrilhes, Jouni Malinen, prism54-devel [-- Attachment #1: Type: text/plain, Size: 328 bytes --] Sam, could you please provide URL where this code is hosted? I know it only as part of madwifi. Vladimir SL> I've suggested this code as a good starting point for a "generic 802.11 SL> stack" but received only misinformed responses. Folks who are unaware SL> of the work should take a look at it. SL> SL> Sam [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-06 18:57 ` Vladimir Kondratiev @ 2004-09-06 19:30 ` Sam Leffler 2004-09-06 20:09 ` Vladimir Kondratiev 0 siblings, 1 reply; 70+ messages in thread From: Sam Leffler @ 2004-09-06 19:30 UTC (permalink / raw) To: Vladimir Kondratiev Cc: Denis Vlasenko, netdev, acx100-devel, jgarzik, Jean Tourrilhes, Jouni Malinen, prism54-devel On Sep 6, 2004, at 11:57 AM, Vladimir Kondratiev wrote: > Sam, > > could you please provide URL where this code is hosted? I know it only > as part > of madwifi. The madwifi project is hosted at sourceforge http;//sourceforge.net/projects/madwifi. Source code is currently available only via cvs (but there's a web interface that you can reach through the above url). Sam ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-06 19:30 ` Sam Leffler @ 2004-09-06 20:09 ` Vladimir Kondratiev 2004-09-06 23:04 ` Sam Leffler 0 siblings, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-06 20:09 UTC (permalink / raw) To: netdev Cc: Sam Leffler, Denis Vlasenko, acx100-devel, jgarzik, Jean Tourrilhes, Jouni Malinen, prism54-devel [-- Attachment #1: Type: text/plain, Size: 625 bytes --] I know about madwifi. I wondering whether there is URL for net80211, or it exist only as part of madwifi. Thanks, Vladimir On Monday 06 September 2004 22:30, Sam Leffler wrote: SL> On Sep 6, 2004, at 11:57 AM, Vladimir Kondratiev wrote: SL> SL> > Sam, SL> > SL> > could you please provide URL where this code is hosted? I know it only SL> > as part SL> > of madwifi. SL> SL> The madwifi project is hosted at sourceforge SL> http;//sourceforge.net/projects/madwifi. Source code is currently SL> available only via cvs (but there's a web interface that you can reach SL> through the above url). SL> SL> Sam [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-06 20:09 ` Vladimir Kondratiev @ 2004-09-06 23:04 ` Sam Leffler 0 siblings, 0 replies; 70+ messages in thread From: Sam Leffler @ 2004-09-06 23:04 UTC (permalink / raw) To: Vladimir Kondratiev Cc: netdev, Denis Vlasenko, acx100-devel, jgarzik, Jean Tourrilhes, Jouni Malinen, prism54-devel On Monday 06 September 2004 01:09 pm, Vladimir Kondratiev wrote: > I know about madwifi. I wondering whether there is URL for net80211, or it > exist only as part of madwifi. It only exists as part of other systems (madwifi, netbsd, freebsd, etc.) Sam ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-06 18:13 ` Sam Leffler 2004-09-06 18:57 ` Vladimir Kondratiev @ 2004-09-07 1:23 ` David S. Miller 2004-09-07 4:32 ` Sam Leffler 1 sibling, 1 reply; 70+ messages in thread From: David S. Miller @ 2004-09-07 1:23 UTC (permalink / raw) To: Sam Leffler Cc: vda, jgarzik, netdev, acx100-devel, jt, jkmaline, prism54-devel On Mon, 6 Sep 2004 11:13:31 -0700 Sam Leffler <sam@errno.com> wrote: > I've suggested this code as a good starting point for a "generic 802.11 > stack" but received only misinformed responses. Sam, I've told you multiple times why your stack isn't a good starting point. It isn't implemented as a true network stack, like IPV4, Appletalk, etc. Instead it's a gross input packet hooked packet eater thing that's an ugly wart bolted onto the side of the driver API. ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-07 1:23 ` David S. Miller @ 2004-09-07 4:32 ` Sam Leffler 2004-09-07 6:47 ` David S. Miller 2004-09-07 17:03 ` [RFC] acx100 inclusion in mainline; " greg chesson 0 siblings, 2 replies; 70+ messages in thread From: Sam Leffler @ 2004-09-07 4:32 UTC (permalink / raw) To: David S. Miller Cc: vda, jgarzik, netdev, acx100-devel, jt, jkmaline, prism54-devel On Monday 06 September 2004 06:23 pm, David S. Miller wrote: > On Mon, 6 Sep 2004 11:13:31 -0700 > > Sam Leffler <sam@errno.com> wrote: > > I've suggested this code as a good starting point for a "generic 802.11 > > stack" but received only misinformed responses. > > Sam, I've told you multiple times why your stack isn't a good > starting point. It isn't implemented as a true network stack, > like IPV4, Appletalk, etc. Instead it's a gross input packet > hooked packet eater thing that's an ugly wart bolted onto the > side of the driver API. Actually, this is the first time you've said anything to me about this code. We corresponded intensely for about a week 2+ years ago after which you declared you now knew how to "write an 802.11 stack right" and were going to do it that weekend. I waited but it seems the sum total result was the shell of code that Jeff referenced in a previous note. Perhaps you can point me at a description of what a "true network stack" means to you. I'm guessing this has to do with your wanting queues inserted at various places instead of direct handoffs. Regardless, I've never suggested the current code is suitable as-is but rather should be reshaped to suit the intended structure of the system. There is a lot of hard-earned experience in the code that is independent of coding style and operational infrastructure. Anyway, the point of my note was to correct a comment in the original posting and make folks aware that working code existed from which they could crib stuff. Good luck finding someone to reimplement eveything according to your wishes. Sam ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-07 4:32 ` Sam Leffler @ 2004-09-07 6:47 ` David S. Miller 2004-09-07 17:22 ` Vladimir Kondratiev 2004-09-07 17:03 ` [RFC] acx100 inclusion in mainline; " greg chesson 1 sibling, 1 reply; 70+ messages in thread From: David S. Miller @ 2004-09-07 6:47 UTC (permalink / raw) To: Sam Leffler Cc: vda, jgarzik, netdev, acx100-devel, jt, jkmaline, prism54-devel On Mon, 6 Sep 2004 21:32:49 -0700 Sam Leffler <sam@errno.com> wrote: > Actually, this is the first time you've said anything to me about this code. I do remember telling you how much I was against this element of your design. At the time, you were not willing to rearchitect things and you were in a sort-of bug-fix only mode. > Perhaps you can point me at a description of what a "true network stack" means > to you. It means passing the 802.11 protocol packets into the networking just like any other type of packet, via netif_rx() or netif_receive_skb(). Creating an ETH_P_80211 protocol type and registering the stack via dev_add_pack() just like any other real protocol layer does. Then responses generated in that 802.11 stack need to feed packets back out to the network via the normal and usual methods of transmitting packets in the networking, namely dev_queue_xmit(). That is exactly what my shell protocol layer does, and it is exactly how a real 802.11 soft stack should be implemented and operate. ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click ^ permalink raw reply [flat|nested] 70+ messages in thread
* generic 802.11 stack 2004-09-07 6:47 ` David S. Miller @ 2004-09-07 17:22 ` Vladimir Kondratiev 2004-09-07 17:32 ` David S. Miller 0 siblings, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-07 17:22 UTC (permalink / raw) To: David S. Miller; +Cc: netdev [-- Attachment #1: Type: text/plain, Size: 1653 bytes --] Dave, I'd like to evaluate possibility to use your stack for real driver. 80211 have some specifics thus we need to answer following questions: - some devices handles almost all MAC in firmware; some - handle control frame exchange in firmware, rest - on host; some use other separation of work between host and firmware. So, quite flexible mechanism to specify offloading of parts of .11 stack to firmware required. What is best way? netdev->features? - there are cases when PHY information needed, to make decisions (like select AP from list), or for information purposes (sniffer). What is your vision how to do this? I.e. provide some standard PHY header before MAC header, out of band (use cb?) I see the following info that may be interesting: rate;modulation;preamble;TSF timer;RSSI;antenna;signal;noise;AGC. This list may vary from NIC to NIC. - there is PHY level information that may be needed for Tx: modulation;rate;retry policy and rates;Tx power;protection(RTS/CTS, CTS to self). Same question as above: how to provide it? - there is some interesting information that may come from Tx status, like success indication, last rate, retry count, energy in channel after packet, actual backoff time. - is it feasible to do rate scaling in generic way in stack? Or should it be done always in the driver? - Since WME and TGe introduction, NICs will likely to have multiple Tx queues. It would be wise for driver to use multiple Tx queues and start/stop them separately, like have all functions netif_start_queue() etc. have additional parameter - queue number. Will it fit into your stack? [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-07 17:22 ` Vladimir Kondratiev @ 2004-09-07 17:32 ` David S. Miller 2004-09-07 18:06 ` Vladimir Kondratiev 0 siblings, 1 reply; 70+ messages in thread From: David S. Miller @ 2004-09-07 17:32 UTC (permalink / raw) To: Vladimir Kondratiev; +Cc: netdev On Tue, 7 Sep 2004 20:22:07 +0300 Vladimir Kondratiev <vkondra@mail.ru> wrote: > I'd like to evaluate possibility to use your stack for real driver. 80211 have > some specifics thus we need to answer following questions: > > - some devices handles almost all MAC in firmware; some - handle control frame > exchange in firmware, rest - on host; some use other separation of work > between host and firmware. So, quite flexible mechanism to specify offloading > of parts of .11 stack to firmware required. What is best way? > netdev->features? Use function pointers for the handlers that can be overridden by the driver, or something similar like that. Start with "pure %100 software" stack, then once that is fully functional work back to add the necessary hooks to support partial software stacks. > - there are cases when PHY information needed, to make decisions (like select > AP from list), or for information purposes (sniffer). What is your vision how > to do this? I.e. provide some standard PHY header before MAC header, out of > band (use cb?) This should be stored in the 802.11 specific information struct which I allocate for each generic device which registers with the 802.11 layer. There should be a standard 802.11 stack interface the driver can use the pass the information in so that the details of the layout inside of the 802.11 device information structure need not be exported publicly. > - there is PHY level information that may be needed for Tx: > modulation;rate;retry policy and rates;Tx power;protection(RTS/CTS, CTS to > self). Same question as above: how to provide it? Same way. > - there is some interesting information that may come from Tx status, like > success indication, last rate, retry count, energy in channel after packet, > actual backoff time. Feed it back into the software stack with some kind of function call. > - is it feasible to do rate scaling in generic way in stack? Or should it be > done always in the driver? I believe so. > - Since WME and TGe introduction, NICs will likely to have multiple Tx queues. > It would be wise for driver to use multiple Tx queues and start/stop them > separately, like have all functions netif_start_queue() etc. have additional > parameter - queue number. Will it fit into your stack? We can represent this using multiple generic netdev objects, perhaps. Or we can finally start supporting multiple queues in the generic device struct. I like the latter idea better, and it allows us to do other things as well. ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-07 17:32 ` David S. Miller @ 2004-09-07 18:06 ` Vladimir Kondratiev 2004-09-07 18:08 ` David S. Miller 0 siblings, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-07 18:06 UTC (permalink / raw) To: netdev; +Cc: David S. Miller [-- Attachment #1: Type: text/plain, Size: 1598 bytes --] DS> > - there are cases when PHY information needed, to make decisions (like select DS> > AP from list), or for information purposes (sniffer). What is your vision how DS> > to do this? I.e. provide some standard PHY header before MAC header, out of DS> > band (use cb?) DS> DS> This should be stored in the 802.11 specific information struct which DS> I allocate for each generic device which registers with the 802.11 DS> layer. There should be a standard 802.11 stack interface the driver DS> can use the pass the information in so that the details of the layout DS> inside of the 802.11 device information structure need not be exported DS> publicly. DS> DS> > - there is PHY level information that may be needed for Tx: DS> > modulation;rate;retry policy and rates;Tx power;protection(RTS/CTS, CTS to DS> > self). Same question as above: how to provide it? DS> DS> Same way. May be I did not stated the question clearly. This information need to be specified per packet. So question ramains: how to specify PHY info per skb. DS> DS> > - there is some interesting information that may come from Tx status, like DS> > success indication, last rate, retry count, energy in channel after packet, DS> > actual backoff time. DS> DS> Feed it back into the software stack with some kind of function call. DS> I tend to agree, with one note that it should be some mechanism to associate this information with original packet. One implementation example would be to keep original skb in some "in process" queue, and actually free it after Tx status arrival. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-07 18:06 ` Vladimir Kondratiev @ 2004-09-07 18:08 ` David S. Miller 2004-09-07 18:41 ` Vladimir Kondratiev 0 siblings, 1 reply; 70+ messages in thread From: David S. Miller @ 2004-09-07 18:08 UTC (permalink / raw) To: Vladimir Kondratiev; +Cc: netdev On Tue, 7 Sep 2004 21:06:24 +0300 Vladimir Kondratiev <vkondra@mail.ru> wrote: > May be I did not stated the question clearly. This information need to be > specified per packet. So question ramains: how to specify PHY info per skb. Use the skb->cb[] area, create: struct p80211_skb_cb { int rate; int channel; /* whatever... */ }; #define P80211_SKB_CB(skb) ((struct p80211_skb_cb *)((skb)->cb)) ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-07 18:08 ` David S. Miller @ 2004-09-07 18:41 ` Vladimir Kondratiev 2004-09-07 19:10 ` David S. Miller 0 siblings, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-07 18:41 UTC (permalink / raw) To: netdev; +Cc: David S. Miller [-- Attachment #1: Type: text/plain, Size: 1011 bytes --] On Tuesday 07 September 2004 21:08, David S. Miller wrote: DS> On Tue, 7 Sep 2004 21:06:24 +0300 DS> Vladimir Kondratiev <vkondra@mail.ru> wrote: DS> DS> > May be I did not stated the question clearly. This information need to be DS> > specified per packet. So question ramains: how to specify PHY info per skb. DS> DS> Use the skb->cb[] area, create: DS> DS> struct p80211_skb_cb { DS> int rate; DS> int channel; DS> /* whatever... */ DS> }; DS> DS> #define P80211_SKB_CB(skb) ((struct p80211_skb_cb *)((skb)->cb)) This should be done in generic way. This information used to communicate berween particular driver and generic stack. For example, Rx PHY info and Tx status info should be used for in-stack generic rate scaling algorithm. To complicate it a bit, cb[] is only 48 bytes long. PHY info may easily exceed this size, so it's better to allocate something and free it in destructor. But again, point is this structure should be generic since it is used by stack. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-07 18:41 ` Vladimir Kondratiev @ 2004-09-07 19:10 ` David S. Miller 2004-09-07 19:54 ` Vladimir Kondratiev 0 siblings, 1 reply; 70+ messages in thread From: David S. Miller @ 2004-09-07 19:10 UTC (permalink / raw) To: Vladimir Kondratiev; +Cc: netdev On Tue, 7 Sep 2004 21:41:54 +0300 Vladimir Kondratiev <vkondra@mail.ru> wrote: > This should be done in generic way. This information used to communicate > berween particular driver and generic stack. For example, Rx PHY info and Tx > status info should be used for in-stack generic rate scaling algorithm. > > To complicate it a bit, cb[] is only 48 bytes long. PHY info may easily exceed > this size, so it's better to allocate something and free it in destructor. > > But again, point is this structure should be generic since it is used by > stack. TCP does the same thing, and if space is an issue you can use pointers in the cb[] area, other subsystems do this. ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-07 19:10 ` David S. Miller @ 2004-09-07 19:54 ` Vladimir Kondratiev 2004-09-09 2:40 ` Sam Leffler 2004-09-09 4:36 ` Luis R. Rodriguez 0 siblings, 2 replies; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-07 19:54 UTC (permalink / raw) To: David S. Miller, Sam Leffler, Jeff Garzik; +Cc: netdev, prism54-devel [-- Attachment #1: Type: text/plain, Size: 1244 bytes --] DS> > This should be done in generic way. This information used to communicate DS> > berween particular driver and generic stack. For example, Rx PHY info and Tx DS> > status info should be used for in-stack generic rate scaling algorithm. DS> > DS> > To complicate it a bit, cb[] is only 48 bytes long. PHY info may easily exceed DS> > this size, so it's better to allocate something and free it in destructor. DS> > DS> > But again, point is this structure should be generic since it is used by DS> > stack. DS> DS> TCP does the same thing, and if space is an issue you can use DS> pointers in the cb[] area, other subsystems do this. Sure, I agree. But this structure for PHY should be defined in stack, it is not driver's decision. Actually, I'd like to fit this stack into real life. To get real, I want, for some wireless card, write driver that will be able to Tx/Rx 802.11 frames, and let stack handle the rest. Like association, roaming... What should be done to get to this stage? Jeff, your opinion on this? Sam (you represent Atheros?), would you like to cooperate to make this possible? Anyone doing drivers for Intersil and Broadcom, are you on this list? Would you join this effort? [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-07 19:54 ` Vladimir Kondratiev @ 2004-09-09 2:40 ` Sam Leffler 2004-09-09 4:36 ` Luis R. Rodriguez 1 sibling, 0 replies; 70+ messages in thread From: Sam Leffler @ 2004-09-09 2:40 UTC (permalink / raw) To: Vladimir Kondratiev; +Cc: netdev, David S. Miller, prism54-devel, Jeff Garzik On Sep 7, 2004, at 12:54 PM, Vladimir Kondratiev wrote: > Sam (you represent Atheros?), would you like to cooperate to make this > possible? I do not represent Atheros. I'm happy to offer advise but have zero time to write code. Sam ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-07 19:54 ` Vladimir Kondratiev 2004-09-09 2:40 ` Sam Leffler @ 2004-09-09 4:36 ` Luis R. Rodriguez 1 sibling, 0 replies; 70+ messages in thread From: Luis R. Rodriguez @ 2004-09-09 4:36 UTC (permalink / raw) To: Netdev; +Cc: prism54-devel On Tue, Sep 07, 2004 at 10:54:12PM +0300, Vladimir Kondratiev wrote: > Anyone doing drivers for Intersil and Broadcom, are you on this list? Would > you join this effort? In regards to Intersil 802.11g chipsets and new card support lead by the prism54 project, we haven't yet been provided with specs for the new softmac chipsets nor an updated source base but regardless I'm sure we'll have to do a lot of cleaning/code nuking so sure why not. We still have work to complete for prism54 and have nothing solid to work on for a new softmac driver so participation with this effort may take a while. If we don't hear back from Conexant in regards to the softmac chipsets we will just have to use that old code posted earlier as base for new development. The softmac driver is "supposed" to be backward compatible with the fullmac chipsets as well as with the firmware for them but I've heard this backward compatiblity has been broken. This is unfortunate as if this backward compatibility does not work it would be the requirement of two separate prism54-type drivers. We've also discussed re-writing our current fullmac driver for two purposes: 1. Dual licensing (FBSD/GPL) 2. Start using/help writing this new generic 802.11 stack 3. Cleaning the code It may be the case that we can just re-write the fullmac driver in hopes that we can later adapt/include softmac code. We need questions answered for this though so hopefully Conexant will start talking to us again. Luis -- GnuPG Key fingerprint = 113F B290 C6D2 0251 4D84 A34A 6ADD 4937 E20A 525E ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-07 4:32 ` Sam Leffler 2004-09-07 6:47 ` David S. Miller @ 2004-09-07 17:03 ` greg chesson 2004-09-07 17:10 ` David S. Miller 1 sibling, 1 reply; 70+ messages in thread From: greg chesson @ 2004-09-07 17:03 UTC (permalink / raw) To: Sam Leffler Cc: David S. Miller, vda, jgarzik, netdev, acx100-devel, jt, jkmaline, prism54-devel Oh really? What about eth_type_trans()? It is not implemented as a true network stack. Many drivers call it, but it is a gross input packet hooked eater thing that's an ugly wart bolted onto the side of the driver API. what's good for the goose, etc. My point is that there is ample precedent in the OS for common driver "assistance" subroutines that contain protocol knowledge or implement policy yet are not implemented in strict stack-like manner because it didn't make sense to do 'em that way. It seems to me that Sam's net80211 code is performing three essential functions: 1. encap/decap service for converting between 802.3 and 802.11 2. the MLME protocol (802.11 management messages and state keeping) 3. interface to upper layer ioctl stuff, particularly user-land crypto supplicants and authenticators in addition to the usual group of tools. The MLME protocol works as a stack already since it really does implement a protocol. The encap/decap could be implemented stack-like instead of eth_type_trans-like, but it seems very suboptimal to do it another way. The ioctl interfaces are a wart on the side of the driver API anyway, but let's not have an argument about that since it is a design feature of the OS inherited from unix. The complaint seems to be mainly about the encap/decap procedures which are implemented more as driver helper functions. If somebody wants to rewrite them as a stack, then go for it. I'll be interested in seeing whether or not good methods can be found for exporting driver-local information (e.g. the mac address of the AP, or the tx PHY rate needed to calculate the duration field value, or whether or not to do mac tx fragmentation, etc) up the stack without creating a pile of spaghetti to rival Microsoft's failed "native 802.11" project. I've thought about this problem and don't think there is a good answer if a layered approach to protocol implementation stipulates that each layer be self-contained. The 802.11 situation requires more data-sharing between layers than is conducive to a strict layering approach. I suspect that what's needed is a data structure tailored to wireless which can be shared between layers and common across devices. Perhaps it could be an extention to dev (wdev?) that captures the necessary sharing. But the problems don't stop there. Think for a moment about where power-save should be implemented - which layer? cheers, g Sam Leffler wrote: > On Monday 06 September 2004 06:23 pm, David S. Miller wrote: > >>On Mon, 6 Sep 2004 11:13:31 -0700 >> >>Sam Leffler <sam@errno.com> wrote: >> >>>I've suggested this code as a good starting point for a "generic 802.11 >>>stack" but received only misinformed responses. >> >>Sam, I've told you multiple times why your stack isn't a good >>starting point. It isn't implemented as a true network stack, >>like IPV4, Appletalk, etc. Instead it's a gross input packet >>hooked packet eater thing that's an ugly wart bolted onto the >>side of the driver API. > > > Actually, this is the first time you've said anything to me about this code. > We corresponded intensely for about a week 2+ years ago after which you > declared you now knew how to "write an 802.11 stack right" and were going to > do it that weekend. I waited but it seems the sum total result was the shell > of code that Jeff referenced in a previous note. > > Perhaps you can point me at a description of what a "true network stack" means > to you. I'm guessing this has to do with your wanting queues inserted at > various places instead of direct handoffs. Regardless, I've never suggested > the current code is suitable as-is but rather should be reshaped to suit the > intended structure of the system. There is a lot of hard-earned experience > in the code that is independent of coding style and operational > infrastructure. > > Anyway, the point of my note was to correct a comment in the original posting > and make folks aware that working code existed from which they could crib > stuff. Good luck finding someone to reimplement eveything according to your > wishes. > > Sam ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-07 17:03 ` [RFC] acx100 inclusion in mainline; " greg chesson @ 2004-09-07 17:10 ` David S. Miller 2004-09-07 18:14 ` greg chesson 2004-09-08 7:38 ` jamal 0 siblings, 2 replies; 70+ messages in thread From: David S. Miller @ 2004-09-07 17:10 UTC (permalink / raw) To: greg chesson Cc: sam, vda, jgarzik, netdev, acx100-devel, jt, jkmaline, prism54-devel On Tue, 07 Sep 2004 10:03:41 -0700 greg chesson <greg@atheros.com> wrote: > What about eth_type_trans()? It determines the protocol type from the ethernet header fields. It is a simple shorthand header field fetcher, not a protocol stack. You would need a eth80211_type_trans() for wireless drivers too, and surprise surprise my skeleton 802.11 stack code in fact does exactly this. > I've thought about this problem and don't think there is a good answer > if a layered approach to protocol implementation stipulates that each layer > be self-contained. In my 802.11 stack the 802.11 information structure can be found given a generic device pointer. All the wireless info can be retrieved from that, and you can use it to call the wireless stack routines if you wish as well. This is no different than how we keep ipv4 information hooked onto the generic device structure and walk between these various entities in the ipv4 and generic networking code. Please read my skeletal stack code, it is exactly how I truly believe something like this should be architected. It's all the base layout stuff that's important, the rest are details that will fit in cleanly and readily once you have a solid and firm foundation. ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-07 17:10 ` David S. Miller @ 2004-09-07 18:14 ` greg chesson 2004-09-07 18:16 ` David S. Miller 2004-09-08 7:38 ` jamal 1 sibling, 1 reply; 70+ messages in thread From: greg chesson @ 2004-09-07 18:14 UTC (permalink / raw) To: David S. Miller Cc: sam, vda, jgarzik, netdev, acx100-devel, jt, jkmaline, prism54-devel I certainly agree with you about getting the base design right. Where are these bits you refer to? g David S. Miller wrote: > On Tue, 07 Sep 2004 10:03:41 -0700 > greg chesson <greg@atheros.com> wrote: > > >>What about eth_type_trans()? > > > It determines the protocol type from the ethernet header > fields. It is a simple shorthand header field fetcher, > not a protocol stack. > > You would need a eth80211_type_trans() for wireless > drivers too, and surprise surprise my skeleton 802.11 > stack code in fact does exactly this. > > >>I've thought about this problem and don't think there is a good answer >>if a layered approach to protocol implementation stipulates that each layer >>be self-contained. > > > In my 802.11 stack the 802.11 information structure can be > found given a generic device pointer. All the wireless info > can be retrieved from that, and you can use it to call the > wireless stack routines if you wish as well. > > This is no different than how we keep ipv4 information hooked > onto the generic device structure and walk between these various > entities in the ipv4 and generic networking code. > > Please read my skeletal stack code, it is exactly how I truly > believe something like this should be architected. It's all > the base layout stuff that's important, the rest are details > that will fit in cleanly and readily once you have a solid > and firm foundation. > ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-07 18:14 ` greg chesson @ 2004-09-07 18:16 ` David S. Miller 0 siblings, 0 replies; 70+ messages in thread From: David S. Miller @ 2004-09-07 18:16 UTC (permalink / raw) To: greg chesson Cc: sam, vda, jgarzik, netdev, acx100-devel, jt, jkmaline, prism54-devel On Tue, 07 Sep 2004 11:14:17 -0700 greg chesson <greg@atheros.com> wrote: > I certainly agree with you about getting the base design right. > Where are these bits you refer to? See earlier in this very thread you are replying to: http://marc.theaimsgroup.com/?l=linux-netdev&m=109415745726088&w=2 :-) ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-07 17:10 ` David S. Miller 2004-09-07 18:14 ` greg chesson @ 2004-09-08 7:38 ` jamal 2004-09-08 16:02 ` greg chesson 1 sibling, 1 reply; 70+ messages in thread From: jamal @ 2004-09-08 7:38 UTC (permalink / raw) To: David S. Miller Cc: greg chesson, sam, vda, jgarzik, netdev, acx100-devel, jt, jkmaline, prism54-devel On Tue, 2004-09-07 at 13:10, David S. Miller wrote: > On Tue, 07 Sep 2004 10:03:41 -0700 > greg chesson <greg@atheros.com> wrote: > > > What about eth_type_trans()? > > It determines the protocol type from the ethernet header > fields. It is a simple shorthand header field fetcher, > not a protocol stack. > > You would need a eth80211_type_trans() for wireless > drivers too, and surprise surprise my skeleton 802.11 > stack code in fact does exactly this. Or as Andi has been suggesting for sometime, not invoke it all ;-> This is possible if the DMA descriptor already has all the info needed (quiet a few modern hardware can be programmed to do this). .. er, at the driver level. So this is not "a gross input packet hooked eater thing that's an ugly wart bolted onto the side of the driver API.";-> cheers, jamal ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-08 7:38 ` jamal @ 2004-09-08 16:02 ` greg chesson 2004-09-08 19:51 ` Vladimir Kondratiev 0 siblings, 1 reply; 70+ messages in thread From: greg chesson @ 2004-09-08 16:02 UTC (permalink / raw) To: hadi Cc: David S. Miller, sam, vda, jgarzik, netdev, acx100-devel, jt, jkmaline, prism54-devel You guys are too serious and, I believe, missed the real points. 1. There is a need in the OS for a "service" to convert between .11 and .3 packet formats. It should be designed for hw-independence. Everyone sees the same potential for unification of wireless drivers. 2. It's harder to do than it first appears because the complete transformation from .3 to .11 cannot be done in isolation from the driver(s) and there are monkey wrenches that get tossed in from crypto, interaction between crypto and fragementation, power-save, observing txoplimits, and other things that tend to cross architecture lines that would otherwise be nice and clean. 3. I personally don't have religion about whether a service that transforms headers is implemented as a stack or implemented as a side call. I think that a variety of factors are worth considering. In this particular case (header transformation), I believe a side call "helper function" is appropriate and has less overhead than the full protocol stack mechanism. But it's pointless to argue about it without measurements. 4. David's skeleton code is quite interesting and a good start. You won't know its usefulness until someone tries to implement a real driver. g jamal wrote: > On Tue, 2004-09-07 at 13:10, David S. Miller wrote: > >>On Tue, 07 Sep 2004 10:03:41 -0700 >>greg chesson <greg@atheros.com> wrote: >> >> >>>What about eth_type_trans()? >> >>It determines the protocol type from the ethernet header >>fields. It is a simple shorthand header field fetcher, >>not a protocol stack. >> >>You would need a eth80211_type_trans() for wireless >>drivers too, and surprise surprise my skeleton 802.11 >>stack code in fact does exactly this. > > > Or as Andi has been suggesting for sometime, not invoke it all ;-> > This is possible if the DMA descriptor already has all the info > needed (quiet a few modern hardware can be programmed to do this). > .. er, at the driver level. So this is not "a gross input packet > hooked eater thing that's an ugly wart bolted onto the > side of the driver API.";-> > > cheers, > jamal > > > ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-08 16:02 ` greg chesson @ 2004-09-08 19:51 ` Vladimir Kondratiev 2004-09-08 20:52 ` greg chesson 2004-09-08 21:19 ` [Acx100-devel] Re: [RFC] acx100 inclusion in mainline; " Denis Vlasenko 0 siblings, 2 replies; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-08 19:51 UTC (permalink / raw) To: netdev Cc: David S. Miller, acx100-devel, greg chesson, hadi, jgarzik, jkmaline, prism54-devel, sam, vda [-- Attachment #1: Type: text/plain, Size: 3582 bytes --] Greg, you missed one important point. Besides data packets, that every driver now convert .11<->.3 using almost the same code, there is whole story of management. Many modern cards are "softmac" and do all management on host. I see no point for every driver to implement its own scanning and association. It is simply waste of resources. To make step forward, I suggest the following: 1. Dave's code is at least year old. someone need to start maintain it, starting with update for current kernel infrastructure. Get it compile and load for 2.6.9, for example. 2. To debug stack, you don't need real driver. I can write dummy .11 driver that will silently discard all Tx, and will provide some way for user level tool to simulate Rx (ioctl, netlink, does not really matter). For logic, it is sufficient. Later, when it will come to timing, performance etc, it will be easy to strip some real driver. This may be king of "proof of concept". Vladimir On Wednesday 08 September 2004 19:02, greg chesson wrote: gc> You guys are too serious and, I believe, missed the real points. gc> gc> 1. There is a need in the OS for a "service" to convert between gc> .11 and .3 packet formats. It should be designed for gc> hw-independence. gc> Everyone sees the same potential for unification gc> of wireless drivers. gc> gc> 2. It's harder to do than it first appears because the complete gc> transformation from .3 to .11 cannot be done in isolation gc> from the driver(s) and there are monkey wrenches that get gc> tossed in from crypto, interaction between crypto and fragementation, gc> power-save, observing txoplimits, and other things that tend gc> to cross architecture lines that would otherwise be nice and clean. gc> gc> 3. I personally don't have religion about whether a service gc> that transforms headers is implemented as a stack or implemented gc> as a side call. I think that a variety of factors are worth gc> considering. gc> In this particular case (header transformation), I believe a side call gc> "helper function" is appropriate and has less overhead than the full gc> protocol stack mechanism. But it's pointless to argue about it gc> without gc> measurements. gc> gc> 4. David's skeleton code is quite interesting and a good start. gc> You won't know its usefulness until someone tries to implement gc> a real driver. gc> gc> g gc> gc> gc> gc> jamal wrote: gc> > On Tue, 2004-09-07 at 13:10, David S. Miller wrote: gc> > gc> >>On Tue, 07 Sep 2004 10:03:41 -0700 gc> >>greg chesson <greg@atheros.com> wrote: gc> >> gc> >> gc> >>>What about eth_type_trans()? gc> >> gc> >>It determines the protocol type from the ethernet header gc> >>fields. It is a simple shorthand header field fetcher, gc> >>not a protocol stack. gc> >> gc> >>You would need a eth80211_type_trans() for wireless gc> >>drivers too, and surprise surprise my skeleton 802.11 gc> >>stack code in fact does exactly this. gc> > gc> > gc> > Or as Andi has been suggesting for sometime, not invoke it all ;-> gc> > This is possible if the DMA descriptor already has all the info gc> > needed (quiet a few modern hardware can be programmed to do this). gc> > .. er, at the driver level. So this is not "a gross input packet gc> > hooked eater thing that's an ugly wart bolted onto the gc> > side of the driver API.";-> gc> > gc> > cheers, gc> > jamal gc> > gc> > gc> > gc> gc> gc> gc> [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-08 19:51 ` Vladimir Kondratiev @ 2004-09-08 20:52 ` greg chesson 2004-09-08 21:54 ` Vladimir Kondratiev 2004-09-28 12:20 ` [RFC] acx100 inclusion in mainline; " Luis R. Rodriguez 2004-09-08 21:19 ` [Acx100-devel] Re: [RFC] acx100 inclusion in mainline; " Denis Vlasenko 1 sibling, 2 replies; 70+ messages in thread From: greg chesson @ 2004-09-08 20:52 UTC (permalink / raw) To: Vladimir Kondratiev Cc: netdev, David S. Miller, acx100-devel, hadi, jgarzik, jkmaline, prism54-devel, sam, vda Vladimir Kondratiev wrote: > Greg, > you missed one important point. Besides data packets, that every driver now > convert .11<->.3 using almost the same code, there is whole story of > management. Many modern cards are "softmac" and do all management on host. I > see no point for every driver to implement its own scanning and association. Yes, Quite right. No disagreement. It is standard practice on NDIS and Apple Darwin that a common GUI-based application controls scanning, association, and manages keys+authentication+crypto. Linux does the same thing (driver is configured by application code) although there does not yet exist a single app that can serve as a common point of control for multiple vendor drivers. I believe that achieving that goal is the real payoff for wireless Linux users. > It is simply waste of resources. > > To make step forward, I suggest the following: > > 1. Dave's code is at least year old. someone need to start maintain it, > starting with update for current kernel infrastructure. Get it compile and > load for 2.6.9, for example. > > 2. To debug stack, you don't need real driver. I can write dummy .11 driver > that will silently discard all Tx, and will provide some way for user level > tool to simulate Rx (ioctl, netlink, does not really matter). For logic, it > is sufficient. Later, when it will come to timing, performance etc, it will > be easy to strip some real driver. > > This may be king of "proof of concept". Yes, for logic it is sufficient. My personal approach would be to test the theory by examining what fits or doesn't fit into David's API if I were to port one of the MLME implementations that I work with. Discover if it fits or not. > > Vladimir > > On Wednesday 08 September 2004 19:02, greg chesson wrote: > gc> You guys are too serious and, I believe, missed the real points. > gc> > gc> 1. There is a need in the OS for a "service" to convert between > gc> .11 and .3 packet formats. It should be designed for > gc> hw-independence. > gc> Everyone sees the same potential for unification > gc> of wireless drivers. > gc> > gc> 2. It's harder to do than it first appears because the complete > gc> transformation from .3 to .11 cannot be done in isolation > gc> from the driver(s) and there are monkey wrenches that get > gc> tossed in from crypto, interaction between crypto and > fragementation, gc> power-save, observing txoplimits, and other things > that tend gc> to cross architecture lines that would otherwise be nice > and clean. gc> > gc> 3. I personally don't have religion about whether a service > gc> that transforms headers is implemented as a stack or implemented > gc> as a side call. I think that a variety of factors are worth > gc> considering. > gc> In this particular case (header transformation), I believe a side > call gc> "helper function" is appropriate and has less overhead than > the full gc> protocol stack mechanism. But it's pointless to argue > about it gc> without > gc> measurements. > gc> > gc> 4. David's skeleton code is quite interesting and a good start. > gc> You won't know its usefulness until someone tries to implement > gc> a real driver. > gc> > gc> g > gc> > gc> > gc> > gc> jamal wrote: > gc> > On Tue, 2004-09-07 at 13:10, David S. Miller wrote: > gc> > > gc> >>On Tue, 07 Sep 2004 10:03:41 -0700 > gc> >>greg chesson <greg@atheros.com> wrote: > gc> >> > gc> >> > gc> >>>What about eth_type_trans()? > gc> >> > gc> >>It determines the protocol type from the ethernet header > gc> >>fields. It is a simple shorthand header field fetcher, > gc> >>not a protocol stack. > gc> >> > gc> >>You would need a eth80211_type_trans() for wireless > gc> >>drivers too, and surprise surprise my skeleton 802.11 > gc> >>stack code in fact does exactly this. > gc> > > gc> > > gc> > Or as Andi has been suggesting for sometime, not invoke it all ;-> > gc> > This is possible if the DMA descriptor already has all the info > gc> > needed (quiet a few modern hardware can be programmed to do this). > gc> > .. er, at the driver level. So this is not "a gross input packet > gc> > hooked eater thing that's an ugly wart bolted onto the > gc> > side of the driver API.";-> > gc> > > gc> > cheers, > gc> > jamal > gc> > > gc> > > gc> > > gc> > gc> > gc> > gc > ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-08 20:52 ` greg chesson @ 2004-09-08 21:54 ` Vladimir Kondratiev 2004-09-09 17:06 ` greg chesson 2004-09-28 12:20 ` [RFC] acx100 inclusion in mainline; " Luis R. Rodriguez 1 sibling, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-08 21:54 UTC (permalink / raw) To: netdev Cc: greg chesson, David S. Miller, acx100-devel, hadi, jgarzik, jkmaline, prism54-devel, sam, vda [-- Attachment #1: Type: text/plain, Size: 1696 bytes --] gc> gc> Linux does the same thing (driver is configured by application code) gc> although there does not yet exist a single app gc> that can serve as a common point of control for multiple vendor drivers. gc> I believe that achieving that goal is the real payoff for wireless Linux gc> users. I would not fully agree here: for timing reasons, you can do scanning/AP selection in user space, but for rate scaling, if we ever can do it generic, you better be in kernel. From architecture point of view, MLME should be stack, not user app. For me, management packets generation is same kind of activity as arp. gc> gc> > It is simply waste of resources. gc> > gc> > To make step forward, I suggest the following: gc> > gc> > 1. Dave's code is at least year old. someone need to start maintain it, gc> > starting with update for current kernel infrastructure. Get it compile and gc> > load for 2.6.9, for example. gc> > gc> > 2. To debug stack, you don't need real driver. I can write dummy .11 driver gc> > that will silently discard all Tx, and will provide some way for user level gc> > tool to simulate Rx (ioctl, netlink, does not really matter). For logic, it gc> > is sufficient. Later, when it will come to timing, performance etc, it will gc> > be easy to strip some real driver. gc> > gc> > This may be king of "proof of concept". gc> gc> Yes, for logic it is sufficient. gc> My personal approach would be to test the theory by examining gc> what fits or doesn't fit into David's API if I were to port one of the gc> MLME implementations that I work with. Discover if it fits or not. Sounds promising. Don't forget to share you findings. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-08 21:54 ` Vladimir Kondratiev @ 2004-09-09 17:06 ` greg chesson 2004-09-12 18:03 ` Vladimir Kondratiev 0 siblings, 1 reply; 70+ messages in thread From: greg chesson @ 2004-09-09 17:06 UTC (permalink / raw) To: Vladimir Kondratiev Cc: netdev, David S. Miller, acx100-devel, hadi, jgarzik, jkmaline, prism54-devel, sam, vda good discussion. some complementary thoughts below. Vladimir Kondratiev wrote: > gc> > gc> Linux does the same thing (driver is configured by application code) > gc> although there does not yet exist a single app > gc> that can serve as a common point of control for multiple vendor drivers. > gc> I believe that achieving that goal is the real payoff for wireless Linux > gc> users. > > I would not fully agree here: for timing reasons, you can do scanning/AP > selection in user space, but for rate scaling, if we ever can do it generic, > you better be in kernel. Existing APIs have a command to tell the driver to scan and return the result. There are sometimes parameters to limit the scan to a certain amount of time or certain channels or to sort the scan results on some metric, e.g. is-WPA. The user-space app then selects an AP and commands the driver to associate. That's all fine and well-understood. An exception to this arrangement is background scanning where the driver is expected to go off-channel and search around for other APs while remaining associated with one AP. The driver goes into power-save state with the current AP while doing the scan. There's enough of a real-time component to this, that it needs to be implemented in the driver. An extreme example is the work being done for voip over 802.11. Every vendor as well as the 802.11 TGe and TGr groups are pursuing techniques whereby the wireless subsystem goes into power-save between voip codec samples (usually at 20ms intervals) except for those times when it is doing off-channel background scanning (also between codec samples!). This is an interesting implementation challenge.... and it's also necessary since it is the only way to get cell-phone equivalent battery life for 802.11 devices while also running at 802.11 power and phy rates. The phone people in TGr also have a goal of implementing fast handoff of an active voip call between APs within 20ms. The heavy problem with that is moving the security context in a low-overhead manner without opening up new security holes. I can see the possibility of enabling fast handoff via application > From architecture point of view, MLME should be stack, not user app. For me, > management packets generation is same kind of activity as arp. I agree with this and tried to say it in previous emails.... > <snip> > gc> Yes, for logic it is sufficient. > gc> My personal approach would be to test the theory by examining > gc> what fits or doesn't fit into David's API if I were to port one of the > gc> MLME implementations that I work with. Discover if it fits or not. > > Sounds promising. Don't forget to share you findings. roger. ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-09 17:06 ` greg chesson @ 2004-09-12 18:03 ` Vladimir Kondratiev 2004-09-13 0:09 ` Jeff Garzik 2004-09-13 0:14 ` David S. Miller 0 siblings, 2 replies; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-12 18:03 UTC (permalink / raw) To: greg chesson Cc: netdev, David S. Miller, acx100-devel, hadi, jgarzik, jkmaline, prism54-devel, sam, vda [-- Attachment #1: Type: text/plain, Size: 387 bytes --] To inform about status: I started to work on idea of 802.11 generic stack. I start from code by Dave. This far I fixed it to compile for 2.6 (Makefile and couple of syntax errors). I am going to implement minimum functionality, at this stage I will somehow publish the project. Anyone can suggest what it the right solution for hosting? Sourceforge? Something else? Vladimir [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-12 18:03 ` Vladimir Kondratiev @ 2004-09-13 0:09 ` Jeff Garzik 2004-09-13 0:45 ` David S. Miller 2004-09-13 0:14 ` David S. Miller 1 sibling, 1 reply; 70+ messages in thread From: Jeff Garzik @ 2004-09-13 0:09 UTC (permalink / raw) To: Vladimir Kondratiev Cc: greg chesson, netdev, David S. Miller, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda Vladimir Kondratiev wrote: > To inform about status: > I started to work on idea of 802.11 generic stack. I start from code by Dave. > This far I fixed it to compile for 2.6 (Makefile and couple of syntax > errors). > I am going to implement minimum functionality, at this stage I will somehow > publish the project. Anyone can suggest what it the right solution for > hosting? Sourceforge? Something else? I can put it into the wireless-2.6 queue, which is where I would prefer that work on a generic 802.11 stack went. Jeff ------------------------------------------------------- This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 Project Admins to receive an Apple iPod Mini FREE for your judgement on who ports your project to Linux PPC the best. Sponsored by IBM. Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-13 0:09 ` Jeff Garzik @ 2004-09-13 0:45 ` David S. Miller 2004-09-15 17:57 ` James Ketrenos 0 siblings, 1 reply; 70+ messages in thread From: David S. Miller @ 2004-09-13 0:45 UTC (permalink / raw) To: Jeff Garzik Cc: vkondra, greg, netdev, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda On Sun, 12 Sep 2004 20:09:08 -0400 Jeff Garzik <jgarzik@pobox.com> wrote: > Vladimir Kondratiev wrote: > > To inform about status: > > I started to work on idea of 802.11 generic stack. I start from code by Dave. > > This far I fixed it to compile for 2.6 (Makefile and couple of syntax > > errors). > > I am going to implement minimum functionality, at this stage I will somehow > > publish the project. Anyone can suggest what it the right solution for > > hosting? Sourceforge? Something else? > > I can put it into the wireless-2.6 queue, which is where I would prefer > that work on a generic 802.11 stack went. This is fine with me as well. ------------------------------------------------------- This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 Project Admins to receive an Apple iPod Mini FREE for your judgement on who ports your project to Linux PPC the best. Sponsored by IBM. Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-13 0:45 ` David S. Miller @ 2004-09-15 17:57 ` James Ketrenos 0 siblings, 0 replies; 70+ messages in thread From: James Ketrenos @ 2004-09-15 17:57 UTC (permalink / raw) To: David S. Miller Cc: Jeff Garzik, vkondra, greg, netdev, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda David S. Miller wrote: >On Sun, 12 Sep 2004 20:09:08 -0400 >Jeff Garzik <jgarzik@pobox.com> wrote: > > >>Vladimir Kondratiev wrote: >> >> >>>To inform about status: >>>I started to work on idea of 802.11 generic stack. I start from code by Dave. >>>This far I fixed it to compile for 2.6 (Makefile and couple of syntax >>>errors). >>>I am going to implement minimum functionality, at this stage I will somehow >>>publish the project. Anyone can suggest what it the right solution for >>>hosting? Sourceforge? Something else? >>> >>> >>I can put it into the wireless-2.6 queue, which is where I would prefer >>that work on a generic 802.11 stack went. >> >> > >This is fine with me as well. > > I have seen two paths that need to occur: 1) Creation of a generic 802.11 frame handling stack (management, data, etc.) sufficient to do .3 to .11 conversion, .11 fragmentation, state machine, etc. 2) Tight integration of a .11 stack into the kernel The first step can occur with minimal changes to the rest of the kernel, isolated completely within drivers/net/wireless. Once a stack is there, all the drivers there can be adapted to use that. This would seem reasonable to pull into the 2.6 stable series. The second step will likely require more invasive changes to other parts of the networking stack and I hadn't thought such changes would be considered for 2.6. Am I incorrect in the above? We have been cleaning up the ipw2200/ipw2100 and their corresponding ieee80211 stack so that it could then be used with the other wifi drivers (adapting it to add back in features from HostAP that are currently stub'd out) in a non-intrusive way (we would like to get ipw* merged in soon). We have a bk tree for this cloned from wireless-2.6 avialable at ipw.bkbits.net/ipw-2.6. Right now a driver can register with netdev's xmit to receive the ethernet frame and then pass it to ieee80211_skb_to_txb() to transform it into a chain of 802.11 fragments (encrypted if configured to do so) which the device can then pass to the HW. I don't like the way the skb_to_txb transform occurs, but its working right now. The next level of integration would be to have the device driver register an ieee80211 stack callback as the xmit handler, and then register a .11 xmit with the ieee80211 stack. Anyway, based on what I had read previously on this group, the sequence of steps I understood needing to be followed were: 0) Get the ipw2100 and ipw2200 drivers functionally complete so that end users can fully utilize that hardware. 1) Create generic ieee80211 frame handling stack. HW specific piece should be limited to Tx/Rx of raw frames as much as possible (while supporting drivers that can not do full 802.11 frame tx/rx). For nonintrusive inclusion in kernel, this would be achieved through calls into the ieee80211 stack from the driver vs. addition of netdev entry points. To date this has been achieved by adding infrastructure into either the ipw2100 or ipw2200 project, then merging it into ieee80211 so that the other project could leverage it. 2) Adapt other drivers besides ipw2100 and ipw2200 to use the stack 3) Once 1 and 2 are stabilized, begin restructuring the entry points to more tightly integrate the .11 handling into the netdev core. One area where I wasn't sure on how invasive it would be for stack optimizations deal with 802.11 fragmentation and encryption of said fragments such that TCP retries do not require re-fragmentation/encryption when host based enc/frag is enabled. The next potentially invasive area is the addition of TGe support which Vladimir has discussed previously. We based the current ieee80211 stack in part on the Host AP stack. In looking through the madwifi stack, there are traights that it carries that would be nice to be able to use as well moving forward -- whether through code (CVS madwifi is licensed under a GPL compatible BSD license) or aspects of design. The whole of the ieee80211 stack (and ipw2100/ipw2200 drivers) are licensed under GPL version 2. James ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-12 18:03 ` Vladimir Kondratiev 2004-09-13 0:09 ` Jeff Garzik @ 2004-09-13 0:14 ` David S. Miller 2004-09-13 5:39 ` Vladimir Kondratiev 1 sibling, 1 reply; 70+ messages in thread From: David S. Miller @ 2004-09-13 0:14 UTC (permalink / raw) To: Vladimir Kondratiev Cc: greg, netdev, acx100-devel, hadi, jgarzik, jkmaline, prism54-devel, sam, vda On Sun, 12 Sep 2004 21:03:13 +0300 Vladimir Kondratiev <vkondra@mail.ru> wrote: > I am going to implement minimum functionality, at this stage I will somehow > publish the project. Anyone can suggest what it the right solution for > hosting? Sourceforge? Something else? I am willing to host things for you, if you wish. I can make a directory in my personal area on ftp.kernel.org and that's where I'd put your patches. I'd also like to help review your patches, so I can perform both things at the same time. ------------------------------------------------------- This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 Project Admins to receive an Apple iPod Mini FREE for your judgement on who ports your project to Linux PPC the best. Sponsored by IBM. Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-13 0:14 ` David S. Miller @ 2004-09-13 5:39 ` Vladimir Kondratiev 2004-09-13 5:50 ` Jeff Garzik 0 siblings, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-13 5:39 UTC (permalink / raw) To: David S. Miller Cc: greg, netdev, acx100-devel, hadi, jgarzik, jkmaline, prism54-devel, sam, vda [-- Attachment #1: Type: text/plain, Size: 791 bytes --] Dave, Thanks, I'll post patches to you. Jeff: what would you say? I think it is great if it will went through Dave with his review. Vladimir. On Monday 13 September 2004 03:14, David S. Miller wrote: DS> On Sun, 12 Sep 2004 21:03:13 +0300 DS> Vladimir Kondratiev <vkondra@mail.ru> wrote: DS> DS> > I am going to implement minimum functionality, at this stage I will somehow DS> > publish the project. Anyone can suggest what it the right solution for DS> > hosting? Sourceforge? Something else? DS> DS> I am willing to host things for you, if you wish. DS> I can make a directory in my personal area on ftp.kernel.org DS> and that's where I'd put your patches. DS> DS> I'd also like to help review your patches, so I can perform DS> both things at the same time. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-13 5:39 ` Vladimir Kondratiev @ 2004-09-13 5:50 ` Jeff Garzik 2004-09-13 23:21 ` David S. Miller 0 siblings, 1 reply; 70+ messages in thread From: Jeff Garzik @ 2004-09-13 5:50 UTC (permalink / raw) To: Vladimir Kondratiev Cc: David S. Miller, greg, netdev, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda Vladimir Kondratiev wrote: > Dave, > Thanks, I'll post patches to you. > > Jeff: what would you say? I think it is great if it will went through Dave > with his review. You are the one doing the work. Which would you prefer? :) You could always send patches to netdev@oss.sgi.com and CC jgarzik@pobox.com and davem@davemloft.net. DaveM could review, and I could apply to wireless-2.6, then post a snapshot on kernel.org. Jeff ------------------------------------------------------- This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 Project Admins to receive an Apple iPod Mini FREE for your judgement on who ports your project to Linux PPC the best. Sponsored by IBM. Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-13 5:50 ` Jeff Garzik @ 2004-09-13 23:21 ` David S. Miller 2004-09-14 5:14 ` Vladimir Kondratiev 0 siblings, 1 reply; 70+ messages in thread From: David S. Miller @ 2004-09-13 23:21 UTC (permalink / raw) To: Jeff Garzik Cc: vkondra, greg, netdev, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda On Mon, 13 Sep 2004 01:50:39 -0400 Jeff Garzik <jgarzik@pobox.com> wrote: > You are the one doing the work. Which would you prefer? :) > > You could always send patches to netdev@oss.sgi.com and CC > jgarzik@pobox.com and davem@davemloft.net. DaveM could review, and I > could apply to wireless-2.6, then post a snapshot on kernel.org. That works for me. ------------------------------------------------------- This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 Project Admins to receive an Apple iPod Mini FREE for your judgement on who ports your project to Linux PPC the best. Sponsored by IBM. Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-13 23:21 ` David S. Miller @ 2004-09-14 5:14 ` Vladimir Kondratiev 2004-09-14 5:35 ` David S. Miller 0 siblings, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-14 5:14 UTC (permalink / raw) To: David S. Miller Cc: Jeff Garzik, greg, netdev, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda [-- Attachment #1: Type: text/plain, Size: 618 bytes --] On Tuesday 14 September 2004 02:21, David S. Miller wrote: DS> On Mon, 13 Sep 2004 01:50:39 -0400 DS> Jeff Garzik <jgarzik@pobox.com> wrote: DS> DS> > You are the one doing the work. Which would you prefer? :) DS> > DS> > You could always send patches to netdev@oss.sgi.com and CC DS> > jgarzik@pobox.com and davem@davemloft.net. DaveM could review, and I DS> > could apply to wireless-2.6, then post a snapshot on kernel.org. DS> DS> That works for me. Fine. Let it be this way. It may take for me some time till I can sumbit something, I want that it will kind of work with minimum functionality. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-14 5:14 ` Vladimir Kondratiev @ 2004-09-14 5:35 ` David S. Miller 2004-09-14 23:55 ` Luis R. Rodriguez 0 siblings, 1 reply; 70+ messages in thread From: David S. Miller @ 2004-09-14 5:35 UTC (permalink / raw) To: Vladimir Kondratiev Cc: jgarzik, greg, netdev, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda On Tue, 14 Sep 2004 08:14:56 +0300 Vladimir Kondratiev <vkondra@mail.ru> wrote: > Fine. Let it be this way. It may take for me some time till I can sumbit > something, I want that it will kind of work with minimum functionality. Ok, good luck Vladimir :-) ------------------------------------------------------- This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 Project Admins to receive an Apple iPod Mini FREE for your judgement on who ports your project to Linux PPC the best. Sponsored by IBM. Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-14 5:35 ` David S. Miller @ 2004-09-14 23:55 ` Luis R. Rodriguez 2004-09-15 0:11 ` Jeff Garzik 0 siblings, 1 reply; 70+ messages in thread From: Luis R. Rodriguez @ 2004-09-14 23:55 UTC (permalink / raw) To: David S. Miller Cc: Vladimir Kondratiev, jgarzik, greg, netdev, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda On Mon, Sep 13, 2004 at 10:35:00PM -0700, David S. Miller wrote: > On Tue, 14 Sep 2004 08:14:56 +0300 > Vladimir Kondratiev <vkondra@mail.ru> wrote: > > > Fine. Let it be this way. It may take for me some time till I can sumbit > > something, I want that it will kind of work with minimum functionality. > > Ok, good luck Vladimir :-) Vladimir, How about dual-licensing this work as GPL/BSD? I believe the BSD teams might benefit from this work. Luis -- GnuPG Key fingerprint = 113F B290 C6D2 0251 4D84 A34A 6ADD 4937 E20A 525E ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-14 23:55 ` Luis R. Rodriguez @ 2004-09-15 0:11 ` Jeff Garzik 2004-09-15 0:51 ` greg chesson 0 siblings, 1 reply; 70+ messages in thread From: Jeff Garzik @ 2004-09-15 0:11 UTC (permalink / raw) To: Luis R. Rodriguez Cc: David S. Miller, Vladimir Kondratiev, greg, netdev, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda Luis R. Rodriguez wrote: > On Mon, Sep 13, 2004 at 10:35:00PM -0700, David S. Miller wrote: > >>On Tue, 14 Sep 2004 08:14:56 +0300 >>Vladimir Kondratiev <vkondra@mail.ru> wrote: >> >> >>>Fine. Let it be this way. It may take for me some time till I can sumbit >>>something, I want that it will kind of work with minimum functionality. >> >>Ok, good luck Vladimir :-) > > > Vladimir, > > How about dual-licensing this work as GPL/BSD? I believe the BSD teams might > benefit from this work. While I don't mind dual-licensing per se, I really dislike the associated _technical_ crap that comes along with it, namely * cross-OS compatibility wrappers * attempts to pretend that locking is _remotely_ similar between BSD and Linux net stacks * use of non-Linux coding styles and memes * over-engineering and over-abstraction Linus Credo #788 is "do what you must, and no more." If Vladimir is working from DaveM's code template, then he is working at the lowest, most native _Linux kernel_ levels to interface with the net stack. I'm all for code sharing -- but I'm all for rationality too. There will _inevitably_ be _fundamental_ differences between BSD and Linux net stacks, and to attempt to code for both OS's will be nasty and time consuming, IMHO. Jeff ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-15 0:11 ` Jeff Garzik @ 2004-09-15 0:51 ` greg chesson 2004-09-15 1:19 ` Jeff Garzik 0 siblings, 1 reply; 70+ messages in thread From: greg chesson @ 2004-09-15 0:51 UTC (permalink / raw) To: Jeff Garzik Cc: Luis R. Rodriguez, David S. Miller, Vladimir Kondratiev, netdev, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda Jeff Garzik wrote: <snip> > > > While I don't mind dual-licensing per se, I really dislike the > associated _technical_ crap that comes along with it, namely > > * cross-OS compatibility wrappers > * attempts to pretend that locking is _remotely_ similar between BSD and > Linux net stacks > * use of non-Linux coding styles and memes > * over-engineering and over-abstraction > <snip> I won't try to argue that these are not valid points - except for maybe the last one because it is so subjective. But not in this email. I do argue that these points are not relevant to the question of whether or not a strict stack model of 802.11 management and encapsulation procedures will suffice for anything more than the most basic functionality. That is an interesting question that deserves an answer. Personally, I think it will be necessary to have more shared information and procedures between driver and 802.11 stack than is convenient or elegant in a strict stack arrangement. But, I've been wrong before. Perhaps a fresh start with unbiased implementation will do something wonderful. I look forward to seeing how a new implementation deals with the power-save packets in the presence of qos, crypto, and fragmentation - all of which are necessary evils if you want to pass wifi certification tests. g ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-15 0:51 ` greg chesson @ 2004-09-15 1:19 ` Jeff Garzik 2004-09-15 3:02 ` Luis R. Rodriguez 0 siblings, 1 reply; 70+ messages in thread From: Jeff Garzik @ 2004-09-15 1:19 UTC (permalink / raw) To: greg chesson Cc: Luis R. Rodriguez, David S. Miller, Vladimir Kondratiev, netdev, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda greg chesson wrote: > I won't try to argue that these are not valid points - > except for maybe the last one because it is so subjective. > But not in this email. > > I do argue that these points are not relevant to the question > of whether or not a strict stack model of 802.11 management > and encapsulation procedures will suffice for anything more > than the most basic functionality. That is an interesting question > that deserves an answer. Agreed. > Personally, I think it will be necessary to have more shared information > and procedures between > driver and 802.11 stack than is convenient or elegant in a strict stack > arrangement. > But, I've been wrong before. > Perhaps a fresh start with unbiased implementation will do something > wonderful. That's precisely what I want -- an elegant strict stack arrangement :) Since DaveM's template is _the_ net stack, I'm worried that BSD compatibility will only slow development and encumber innovation. Surely they can watch what we're doing, learn from our mistakes, and do something even better :) Jeff ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-15 1:19 ` Jeff Garzik @ 2004-09-15 3:02 ` Luis R. Rodriguez 2004-09-15 3:05 ` Jeff Garzik 0 siblings, 1 reply; 70+ messages in thread From: Luis R. Rodriguez @ 2004-09-15 3:02 UTC (permalink / raw) To: Jeff Garzik Cc: greg chesson, Luis R. Rodriguez, David S. Miller, Vladimir Kondratiev, netdev, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda On Tue, Sep 14, 2004 at 09:19:24PM -0400, Jeff Garzik wrote: > greg chesson wrote: > >I won't try to argue that these are not valid points - > >except for maybe the last one because it is so subjective. > >But not in this email. > > > >I do argue that these points are not relevant to the question > >of whether or not a strict stack model of 802.11 management > >and encapsulation procedures will suffice for anything more > >than the most basic functionality. That is an interesting question > >that deserves an answer. > > Agreed. > > > >Personally, I think it will be necessary to have more shared information > >and procedures between > >driver and 802.11 stack than is convenient or elegant in a strict stack > >arrangement. > > But, I've been wrong before. > >Perhaps a fresh start with unbiased implementation will do something > >wonderful. > > That's precisely what I want -- an elegant strict stack arrangement :) > > Since DaveM's template is _the_ net stack, I'm worried that BSD > compatibility will only slow development and encumber innovation. > Surely they can watch what we're doing, learn from our mistakes, and do > something even better :) I proposed dual licensing not to specifically allow clear compatibility among linux and the BSDs on the 802.11 work, but to allow BSDers to do whatever they want with what we come up with -- help with code sharing. Luis -- GnuPG Key fingerprint = 113F B290 C6D2 0251 4D84 A34A 6ADD 4937 E20A 525E ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-15 3:02 ` Luis R. Rodriguez @ 2004-09-15 3:05 ` Jeff Garzik 2004-09-15 3:17 ` Luis R. Rodriguez 0 siblings, 1 reply; 70+ messages in thread From: Jeff Garzik @ 2004-09-15 3:05 UTC (permalink / raw) To: greg chesson, Luis R. Rodriguez, David S. Miller, Vladimir Kondratiev, netdev, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda On Tue, Sep 14, 2004 at 11:02:11PM -0400, Luis R. Rodriguez wrote: > I proposed dual licensing not to specifically allow clear compatibility > among linux and the BSDs on the 802.11 work, but to allow BSDers to do > whatever they want with what we come up with -- help with code sharing. Overall, He Who Writes The Code Gets To Choose. My own personal opinion is that the BSD license goes against the stated spirit of Linux -- contribute back. But that's just me. Jeff ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-15 3:05 ` Jeff Garzik @ 2004-09-15 3:17 ` Luis R. Rodriguez 2004-09-15 5:44 ` Vladimir Kondratiev 0 siblings, 1 reply; 70+ messages in thread From: Luis R. Rodriguez @ 2004-09-15 3:17 UTC (permalink / raw) To: Jeff Garzik Cc: greg chesson, Luis R. Rodriguez, David S. Miller, Vladimir Kondratiev, netdev, acx100-devel, hadi, jkmaline, prism54-devel, sam, vda On Tue, Sep 14, 2004 at 11:05:45PM -0400, Jeff Garzik wrote: > On Tue, Sep 14, 2004 at 11:02:11PM -0400, Luis R. Rodriguez wrote: > > I proposed dual licensing not to specifically allow clear compatibility > > among linux and the BSDs on the 802.11 work, but to allow BSDers to do > > whatever they want with what we come up with -- help with code sharing. > > > Overall, He Who Writes The Code Gets To Choose. > > My own personal opinion is that the BSD license goes against the stated > spirit of Linux -- contribute back. But that's just me. > Agreed -- but in this case I feel we're the bigger crowd so I wanted to address to the *author* that I feel we should be considerate to the BSD crowd. Luis -- GnuPG Key fingerprint = 113F B290 C6D2 0251 4D84 A34A 6ADD 4937 E20A 525E ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-15 3:17 ` Luis R. Rodriguez @ 2004-09-15 5:44 ` Vladimir Kondratiev 2004-09-15 14:47 ` greg chesson 0 siblings, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-15 5:44 UTC (permalink / raw) To: Luis R. Rodriguez Cc: acx100-devel, David S. Miller, greg chesson, hadi, Jeff Garzik, Luis R. Rodriguez, netdev, prism54-devel, sam [-- Attachment #1: Type: text/plain, Size: 1938 bytes --] Let me answer to the set of questions raised: - dual licensing: I am not ready to answer for legal. I will discuss with proper people and answer. - code style: regardless of answer on question above, I intend to do Linux work and will not care about compatibility macros. I really dislike such macros, they do make code hard to understand. - information sharing (driver-stack): good question indeed. I am currently evaluating it. This far, I think I will supply some standard link layer information per packet. Like rate, RSSI etc. For Tx, it will include also crypto key for hardware assisted encryption, type of protection (RTS/CTS etc.) I believe it should be sufficient. To prove it, I am going to write some dummy .11 driver that will be capable to simulate any Rx, with user interface for feeding packets. I will use this driver to debug stack. It is complex issue to support all combination of job separation between host and NIC, I will choose some model like "NIC do almost nothing" and will develop around it. Vladimir. On Wednesday 15 September 2004 06:17, Luis R. Rodriguez wrote: LR> On Tue, Sep 14, 2004 at 11:05:45PM -0400, Jeff Garzik wrote: LR> > On Tue, Sep 14, 2004 at 11:02:11PM -0400, Luis R. Rodriguez wrote: LR> > > I proposed dual licensing not to specifically allow clear compatibility LR> > > among linux and the BSDs on the 802.11 work, but to allow BSDers to do LR> > > whatever they want with what we come up with -- help with code sharing. LR> > LR> > LR> > Overall, He Who Writes The Code Gets To Choose. LR> > LR> > My own personal opinion is that the BSD license goes against the stated LR> > spirit of Linux -- contribute back. But that's just me. LR> > LR> LR> Agreed -- but in this case I feel we're the bigger crowd so I wanted to LR> address to the *author* that I feel we should be considerate to the BSD LR> crowd. LR> LR> Luis LR> [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-15 5:44 ` Vladimir Kondratiev @ 2004-09-15 14:47 ` greg chesson 2004-09-15 15:55 ` David S. Miller 0 siblings, 1 reply; 70+ messages in thread From: greg chesson @ 2004-09-15 14:47 UTC (permalink / raw) To: Vladimir Kondratiev Cc: Luis R. Rodriguez, acx100-devel, David S. Miller, hadi, Jeff Garzik, Luis R. Rodriguez, netdev, prism54-devel, sam Vladimir Kondratiev wrote: > Let me answer to the set of questions raised: > > - dual licensing: I am not ready to answer for legal. I will discuss with > proper people and answer. end the end it is your choice. > > - code style: regardless of answer on question above, I intend to do Linux > work and will not care about compatibility macros. I really dislike such > macros, they do make code hard to understand. This is true - and it's not just compatibility macro's that force the reader to find and read the macro before understanding the code. But there is a fine line between macro's that are accepted as standard practice in a kernel, e.g. LIST_INSERT_HEAD, and the same kind of thing that is used in a driver for compatibility across different versions of the Linux kernel or, dog save us, some other unix-like OS. > > - information sharing (driver-stack): good question indeed. I am currently > evaluating it. This far, I think I will supply some standard link layer > information per packet. Like rate, RSSI etc. For Tx, it will include also > crypto key for hardware assisted encryption, type of protection (RTS/CTS > etc.) I believe it should be sufficient. To prove it, I am going to write > some dummy .11 driver that will be capable to simulate any Rx, with user > interface for feeding packets. I will use this driver to debug stack. 2 cents of advice: the rx path is the easier side. the more complex and fun stuff happens on the tx side. > > It is complex issue to support all combination of job separation between host > and NIC, I will choose some model like "NIC do almost nothing" and will > develop around it. very reasonable. > > Vladimir. > > On Wednesday 15 September 2004 06:17, Luis R. Rodriguez wrote: > LR> On Tue, Sep 14, 2004 at 11:05:45PM -0400, Jeff Garzik wrote: > LR> > On Tue, Sep 14, 2004 at 11:02:11PM -0400, Luis R. Rodriguez wrote: > LR> > > I proposed dual licensing not to specifically allow clear > compatibility LR> > > among linux and the BSDs on the 802.11 work, but to > allow BSDers to do LR> > > whatever they want with what we come up with -- > help with code sharing. LR> > > LR> > > LR> > Overall, He Who Writes The Code Gets To Choose. > LR> > > LR> > My own personal opinion is that the BSD license goes against the stated > LR> > spirit of Linux -- contribute back. But that's just me. > LR> > > LR> > LR> Agreed -- but in this case I feel we're the bigger crowd so I wanted to > LR> address to the *author* that I feel we should be considerate to the BSD > LR> crowd. > LR> > LR> Luis > LR > ------------------------------------------------------- This SF.Net email is sponsored by: thawte's Crypto Challenge Vl Crack the code and win a Sony DCRHC40 MiniDV Digital Handycam Camcorder. More prizes in the weekly Lunch Hour Challenge. Sign up NOW http://ad.doubleclick.net/clk;10740251;10262165;m ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-15 14:47 ` greg chesson @ 2004-09-15 15:55 ` David S. Miller 2004-09-15 16:48 ` Sam Leffler 0 siblings, 1 reply; 70+ messages in thread From: David S. Miller @ 2004-09-15 15:55 UTC (permalink / raw) To: greg chesson Cc: vkondra, mcgrof, acx100-devel, hadi, jgarzik, mcgrof, netdev, prism54-devel, sam On Wed, 15 Sep 2004 07:47:36 -0700 greg chesson <greg@atheros.com> wrote: > Vladimir Kondratiev wrote: > > Let me answer to the set of questions raised: > > > > - dual licensing: I am not ready to answer for legal. I will discuss with > > proper people and answer. > end the end it is your choice. He has to also ask the person who wrote the code he is basing his work upon, and that would be me :-) ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-15 15:55 ` David S. Miller @ 2004-09-15 16:48 ` Sam Leffler 2004-09-15 17:06 ` David S. Miller 0 siblings, 1 reply; 70+ messages in thread From: Sam Leffler @ 2004-09-15 16:48 UTC (permalink / raw) To: David S. Miller Cc: greg chesson, vkondra, mcgrof, acx100-devel, hadi, jgarzik, netdev, prism54-devel On Wednesday 15 September 2004 08:55 am, David S. Miller wrote: > On Wed, 15 Sep 2004 07:47:36 -0700 > > greg chesson <greg@atheros.com> wrote: > > Vladimir Kondratiev wrote: > > > Let me answer to the set of questions raised: > > > > > > - dual licensing: I am not ready to answer for legal. I will discuss > > > with proper people and answer. > > > > end the end it is your choice. > > He has to also ask the person who wrote the code he is > basing his work upon, and that would be me :-) That assumes he uses no code from somewhere else. Given that your code didn't include any protocol implementation I suspect he'll be borrowing work from elsewhere.... Sam ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-09-15 16:48 ` Sam Leffler @ 2004-09-15 17:06 ` David S. Miller 0 siblings, 0 replies; 70+ messages in thread From: David S. Miller @ 2004-09-15 17:06 UTC (permalink / raw) To: Sam Leffler Cc: greg, vkondra, mcgrof, acx100-devel, hadi, jgarzik, netdev, prism54-devel On Wed, 15 Sep 2004 09:48:57 -0700 Sam Leffler <sam@errno.com> wrote: > On Wednesday 15 September 2004 08:55 am, David S. Miller wrote: > > On Wed, 15 Sep 2004 07:47:36 -0700 > > > > greg chesson <greg@atheros.com> wrote: > > > Vladimir Kondratiev wrote: > > > > Let me answer to the set of questions raised: > > > > > > > > - dual licensing: I am not ready to answer for legal. I will discuss > > > > with proper people and answer. > > > > > > end the end it is your choice. > > > > He has to also ask the person who wrote the code he is > > basing his work upon, and that would be me :-) > > That assumes he uses no code from somewhere else. Not at all. If he wants to change the licensing of any piece of code, he has to get permission from all the authors. So, firstly, if he wants to take my code and extend it in any way he'll need permission from me to use it as anything other than pure GPL. Secondly, if he wants to add BSD code to it he cannot do so without working out the previous paragraph. ------------------------------------------------------- This SF.Net email is sponsored by: thawte's Crypto Challenge Vl Crack the code and win a Sony DCRHC40 MiniDV Digital Handycam Camcorder. More prizes in the weekly Lunch Hour Challenge. Sign up NOW http://ad.doubleclick.net/clk;10740251;10262165;m ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-08 20:52 ` greg chesson 2004-09-08 21:54 ` Vladimir Kondratiev @ 2004-09-28 12:20 ` Luis R. Rodriguez 2004-09-28 20:29 ` Vladimir Kondratiev 1 sibling, 1 reply; 70+ messages in thread From: Luis R. Rodriguez @ 2004-09-28 12:20 UTC (permalink / raw) To: greg chesson Cc: netdev, jkmaline, acx100-devel, Vladimir Kondratiev, hadi, prism54-devel, vda, sam, jgarzik, David S. Miller [-- Attachment #1.1: Type: text/plain, Size: 1176 bytes --] On Wed, Sep 08, 2004 at 01:52:00PM -0700, greg chesson wrote: > > > Vladimir Kondratiev wrote: > >Greg, > >you missed one important point. Besides data packets, that every driver > >now convert .11<->.3 using almost the same code, there is whole story of > >management. Many modern cards are "softmac" and do all management on host. > >I see no point for every driver to implement its own scanning and > >association. > > Yes, Quite right. No disagreement. > It is standard practice on NDIS and Apple Darwin that a common GUI-based > application controls scanning, association, and manages > keys+authentication+crypto. > > Linux does the same thing (driver is configured by application code) > although there does not yet exist a single app > that can serve as a common point of control for multiple vendor drivers. > I believe that achieving that goal is the real payoff for wireless Linux > users. > <-- snip --> RFC: what are the chances we can implement our own generic "softmac" that may be usable by the different chipsets out there? Luis -- GnuPG Key fingerprint = 113F B290 C6D2 0251 4D84 A34A 6ADD 4937 E20A 525E [-- Attachment #1.2: Type: application/pgp-signature, Size: 189 bytes --] [-- Attachment #2: Type: text/plain, Size: 151 bytes --] _______________________________________________ Prism54-devel mailing list Prism54-devel@prism54.org http://prism54.org/mailman/listinfo/prism54-devel ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-28 12:20 ` [RFC] acx100 inclusion in mainline; " Luis R. Rodriguez @ 2004-09-28 20:29 ` Vladimir Kondratiev 2004-09-29 0:48 ` Luis R. Rodriguez 0 siblings, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-28 20:29 UTC (permalink / raw) To: Luis R. Rodriguez Cc: greg chesson, netdev, David S. Miller, acx100-devel, hadi, jgarzik, jkmaline, prism54-devel, sam [-- Attachment #1: Type: text/plain, Size: 638 bytes --] On Tuesday 28 September 2004 14:20, Luis R. Rodriguez wrote: LR> RFC: what are the chances we can implement our own generic "softmac" that may LR> be usable by the different chipsets out there? Coming days, I will submit "framework" consisting of stack based on Dave's code and debug driver which will be able to imitate Rx. I have working basic Tx/Rx. Then, I'd like to concentrate on interfaces stack-driver and stack-upper layers. It would be great if someone will do MAC algorithms. I'll appreciate this for sure. Vladimir. P.S. My ... provider complains about "too many recipients". I removed one or 2. Sorry. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-28 20:29 ` Vladimir Kondratiev @ 2004-09-29 0:48 ` Luis R. Rodriguez 2004-09-29 7:10 ` Vladimir Kondratiev 0 siblings, 1 reply; 70+ messages in thread From: Luis R. Rodriguez @ 2004-09-29 0:48 UTC (permalink / raw) To: Vladimir Kondratiev Cc: netdev, jkmaline, Luis R. Rodriguez, jgarzik, hadi, prism54-devel, acx100-devel, sam, greg chesson, David S. Miller [-- Attachment #1.1: Type: text/plain, Size: 876 bytes --] On Tue, Sep 28, 2004 at 10:29:48PM +0200, Vladimir Kondratiev wrote: > On Tuesday 28 September 2004 14:20, Luis R. Rodriguez wrote: > LR> RFC: what are the chances we can implement our own generic "softmac" that may > LR> be usable by the different chipsets out there? > > Coming days, I will submit "framework" consisting of stack based on Dave's > code and debug driver which will be able to imitate Rx. I have working basic > Tx/Rx. Then, I'd like to concentrate on interfaces stack-driver and > stack-upper layers. It would be great if someone will do MAC algorithms. I'll > appreciate this for sure. But would it be possible? Would it work, if we write our own softmac interface? Or are softmac interaces/libraries strictly dependent on a chipset being used? Luis -- GnuPG Key fingerprint = 113F B290 C6D2 0251 4D84 A34A 6ADD 4937 E20A 525E [-- Attachment #1.2: Type: application/pgp-signature, Size: 189 bytes --] [-- Attachment #2: Type: text/plain, Size: 151 bytes --] _______________________________________________ Prism54-devel mailing list Prism54-devel@prism54.org http://prism54.org/mailman/listinfo/prism54-devel ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-29 0:48 ` Luis R. Rodriguez @ 2004-09-29 7:10 ` Vladimir Kondratiev 2004-09-29 8:00 ` Luis R. Rodriguez 0 siblings, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-09-29 7:10 UTC (permalink / raw) To: Luis R. Rodriguez Cc: Luis R. Rodriguez, greg chesson, netdev, David S. Miller, acx100-devel, hadi, jgarzik, jkmaline, prism54-devel [-- Attachment #1: Type: text/plain, Size: 2333 bytes --] On Wednesday 29 September 2004 02:48, Luis R. Rodriguez wrote: LR> On Tue, Sep 28, 2004 at 10:29:48PM +0200, Vladimir Kondratiev wrote: LR> > On Tuesday 28 September 2004 14:20, Luis R. Rodriguez wrote: LR> > LR> RFC: what are the chances we can implement our own generic "softmac" that may LR> > LR> be usable by the different chipsets out there? LR> > LR> > Coming days, I will submit "framework" consisting of stack based on Dave's LR> > code and debug driver which will be able to imitate Rx. I have working basic LR> > Tx/Rx. Then, I'd like to concentrate on interfaces stack-driver and LR> > stack-upper layers. It would be great if someone will do MAC algorithms. I'll LR> > appreciate this for sure. LR> LR> But would it be possible? Would it work, if we write our own softmac LR> interface? Or are softmac interaces/libraries strictly dependent on a LR> chipset being used? LR> LR> Luis LR> In idea yes, 802.11 stack should serve any low level driver provided it can Tx/Rx 802.11 frames. Just like Ethernet, where driver is very simple. The difference is, 802.11 stack is not written yet, we need to make sure we do it in smart way and with reasonable assumptions about what low level driver can do. Thus far, I assume, low level driver (and NIC, of course) can: -Tx/Rx arbitrary data and management packets. Control frames generated by NIC. -NIC can perform scanning and report beacons or probe resp. to the stack. -NIC can report some basic PHY data per packet: rate, RSSI, maybe something else. -NIC accept some basic PHY data per packet on Tx: rate, retry count, protection, maybe Tx power and some others -NIC can do crypto transformations on both Tx and Rx. For this, crypto key need be provided per packet for Tx and some ,mechanism to provide key for each peer need to be established for Rx. -NIC may choose to not do fragmentation/reassembly, stack will handle it. -NIC may have many Tx queues for QoS, it will be able to start/stop each one. To not raise unsupported expectations: 802.11 stack is only skeleton for now. I will do interface parts first. For actual algorithms to handle managements flows, help required. But, I believe it is wise to write these algorithms once for this stack rather to implement whole stack with each driver. Vladimir. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-29 7:10 ` Vladimir Kondratiev @ 2004-09-29 8:00 ` Luis R. Rodriguez 2004-10-01 14:30 ` Vladimir Kondratiev 0 siblings, 1 reply; 70+ messages in thread From: Luis R. Rodriguez @ 2004-09-29 8:00 UTC (permalink / raw) To: Vladimir Kondratiev Cc: netdev, jkmaline, Luis R. Rodriguez, jgarzik, hadi, prism54-devel, acx100-devel, greg chesson, David S. Miller [-- Attachment #1.1: Type: text/plain, Size: 2872 bytes --] On Wed, Sep 29, 2004 at 09:10:08AM +0200, Vladimir Kondratiev wrote: > On Wednesday 29 September 2004 02:48, Luis R. Rodriguez wrote: > LR> On Tue, Sep 28, 2004 at 10:29:48PM +0200, Vladimir Kondratiev wrote: > LR> > On Tuesday 28 September 2004 14:20, Luis R. Rodriguez wrote: > LR> > LR> RFC: what are the chances we can implement our own generic > "softmac" that may LR> > LR> be usable by the different chipsets out there? > LR> > > LR> > Coming days, I will submit "framework" consisting of stack based on > Dave's LR> > code and debug driver which will be able to imitate Rx. I have > working basic LR> > Tx/Rx. Then, I'd like to concentrate on interfaces > stack-driver and LR> > stack-upper layers. It would be great if someone will > do MAC algorithms. I'll LR> > appreciate this for sure. > LR> > LR> But would it be possible? Would it work, if we write our own softmac > LR> interface? Or are softmac interaces/libraries strictly dependent on a > LR> chipset being used? > LR> > LR> Luis > LR> > In idea yes, 802.11 stack should serve any low level driver provided it can > Tx/Rx 802.11 frames. Just like Ethernet, where driver is very simple. The > difference is, 802.11 stack is not written yet, we need to make sure we do it > in smart way and with reasonable assumptions about what low level driver can > do. > > Thus far, I assume, low level driver (and NIC, of course) can: > -Tx/Rx arbitrary data and management packets. Control frames generated by NIC. > -NIC can perform scanning and report beacons or probe resp. to the stack. > -NIC can report some basic PHY data per packet: rate, RSSI, maybe something > else. > -NIC accept some basic PHY data per packet on Tx: rate, retry count, > protection, maybe Tx power and some others > -NIC can do crypto transformations on both Tx and Rx. For this, crypto key > need be provided per packet for Tx and some ,mechanism to provide key for > each peer need to be established for Rx. > -NIC may choose to not do fragmentation/reassembly, stack will handle it. > -NIC may have many Tx queues for QoS, it will be able to start/stop each one. > > To not raise unsupported expectations: 802.11 stack is only skeleton for now. > I will do interface parts first. For actual algorithms to handle managements > flows, help required. But, I believe it is wise to write these algorithms > once for this stack rather to implement whole stack with each driver. OK great, then I'll try working Conexant to push for this as our goal for a softmac driver for linux. Currently they use their own libraries (not even a separate module, as atheros with its HAL). This is unacceptable for kernel inclusion and that simply just sucks. Hopefully this will be possible :) Luis -- GnuPG Key fingerprint = 113F B290 C6D2 0251 4D84 A34A 6ADD 4937 E20A 525E [-- Attachment #1.2: Type: application/pgp-signature, Size: 189 bytes --] [-- Attachment #2: Type: text/plain, Size: 151 bytes --] _______________________________________________ Prism54-devel mailing list Prism54-devel@prism54.org http://prism54.org/mailman/listinfo/prism54-devel ^ permalink raw reply [flat|nested] 70+ messages in thread
* generic 802.11 stack 2004-09-29 8:00 ` Luis R. Rodriguez @ 2004-10-01 14:30 ` Vladimir Kondratiev 2004-10-01 22:53 ` David S. Miller 0 siblings, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-10-01 14:30 UTC (permalink / raw) To: netdev; +Cc: Luis R. Rodriguez, David S. Miller, acx100-devel, prism54-devel [-- Attachment #1.1: Type: text/plain, Size: 998 bytes --] 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 driver. This skeleton is able to simulate Rx using ioctl; perl script to invoke ioctl included. Argument for script is binary frame image. I removed all code for 802.11 header removal from p80211_type_trans for several reasons: - I'd like to have all frames coming to stack with the same 802.11 header, this will help for sniffer - header removal for data is a bit more complex: we should determine QoS header and strip 24 or 26 bytes. - I'd like to do fragmentation and reassembly on stack, not in driver. Nothing functional yet, but one can start debugging stack using Rx imitation; 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 driver instead. What is the reason? Why not assign skb->dev in xxx_type_trans? [-- Attachment #1.2: p80211.tar.bz2 --] [-- Type: application/x-tbz, Size: 10418 bytes --] [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-10-01 14:30 ` Vladimir Kondratiev @ 2004-10-01 22:53 ` David S. Miller 2004-10-01 23:25 ` Vladimir Kondratiev 0 siblings, 1 reply; 70+ messages in thread From: David S. Miller @ 2004-10-01 22:53 UTC (permalink / raw) To: Vladimir Kondratiev; +Cc: netdev, mcgrof, acx100-devel, prism54-devel Why this change? -extern void hh_data_is_too_small(void); +static void hh_data_is_too_small(void) +{ + printk(KERN_ERR "hh_data_is_too_small\n"); +} We don't define the function because it is meant to cause a compile time error if hh->hh_data is too small to hold the full p80211_data_header structure. Please undo this change. And therefore undo this change too: - if (sizeof(hh->hh_data) < sizeof(*p)) + if (sizeof(hh->hh_data) < sizeof(*p)) { hh_data_is_too_small(); + return -1; + } Next, what's this? - dev->hard_header = p80211_header; + dev->hard_header = p80211_header; dev->rebuild_header = p80211_rebuild_header; Your merely changing the tab character after dev->hard_header into spaces. Please don't do this. This makes a lot of white space noise when making diffs against the original davem-p80211 code thus making it harder to review the changes you actually made. Next: + dev->mtu = 2304; + dev->type = ARPHRD_IEEE80211; Is this really the correct default MTU for wireless devices? @@ -342,7 +343,7 @@ int p80211_recv_cfackpoll(struct sk_buff static struct packet_type p80211_packet_type = { .type = __constant_htons(ETH_P_802_11), .func = p80211_rcv, - .data = (void *) 1, /* understands shared SKBs */ + .af_packet_priv = (void *) 1, /* understands shared SKBs */ }; You can just remove this line entirely for 2.6.x kernels. Otherwise looks fine :-) ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-10-01 22:53 ` David S. Miller @ 2004-10-01 23:25 ` Vladimir Kondratiev 2004-10-02 0:11 ` David S. Miller 0 siblings, 1 reply; 70+ messages in thread From: Vladimir Kondratiev @ 2004-10-01 23:25 UTC (permalink / raw) To: David S. Miller; +Cc: netdev, mcgrof, acx100-devel, prism54-devel [-- Attachment #1: Type: text/plain, Size: 2728 bytes --] On Saturday 02 October 2004 00:53, David S. Miller wrote: DS> DS> Why this change? DS> DS> -extern void hh_data_is_too_small(void); DS> +static void hh_data_is_too_small(void) DS> +{ DS> + printk(KERN_ERR "hh_data_is_too_small\n"); DS> +} My misunderstanding. Sorry. DS> DS> We don't define the function because it is meant to DS> cause a compile time error if hh->hh_data is too small to DS> hold the full p80211_data_header structure. Please undo DS> this change. DS> DS> And therefore undo this change too: DS> DS> - if (sizeof(hh->hh_data) < sizeof(*p)) DS> + if (sizeof(hh->hh_data) < sizeof(*p)) { DS> hh_data_is_too_small(); DS> + return -1; DS> + } As above. DS> DS> Next, what's this? DS> DS> - dev->hard_header = p80211_header; DS> + dev->hard_header = p80211_header; DS> dev->rebuild_header = p80211_rebuild_header; DS> DS> Your merely changing the tab character after dev->hard_header DS> into spaces. Please don't do this. This makes a lot of white DS> space noise when making diffs against the original davem-p80211 DS> code thus making it harder to review the changes you actually made. My editor did it for me. I'll be more carefull to check this behind the scene things. Maybe, I'll do one patch to do all spaces accordingly to kernel coding style, and since that will follow it. DS> DS> Next: DS> DS> + dev->mtu = 2304; DS> + dev->type = ARPHRD_IEEE80211; DS> DS> Is this really the correct default MTU for wireless devices? Yes, 802.11e (QoS) defines this value. DS> DS> @@ -342,7 +343,7 @@ int p80211_recv_cfackpoll(struct sk_buff DS> static struct packet_type p80211_packet_type = { DS> .type = __constant_htons(ETH_P_802_11), DS> .func = p80211_rcv, DS> - .data = (void *) 1, /* understands shared SKBs */ DS> + .af_packet_priv = (void *) 1, /* understands shared SKBs */ DS> }; DS> DS> You can just remove this line entirely for 2.6.x kernels. Thanks, I will. I was confused by this member and did simplest trick to make it compile. DS> DS> Otherwise looks fine :-) Really, thus far I did almost nothing. It is just foundation for playing with stack. My intention was to decouple driver and stack ASAP to enable separate development for each part. Next step I will do data path, with some code to enable QoS 26 byte headers but without real QoS, which is, by the way, pretty complicated as defined in TGe. May be, it is better to start with WME w.r.t QoS. Then, it is management's turn. Association, scanning. Then, once again, data path. Fragmentation, reassembly. Framework for security. Then - let's see how this will develop. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: generic 802.11 stack 2004-10-01 23:25 ` Vladimir Kondratiev @ 2004-10-02 0:11 ` David S. Miller 0 siblings, 0 replies; 70+ messages in thread From: David S. Miller @ 2004-10-02 0:11 UTC (permalink / raw) To: Vladimir Kondratiev; +Cc: netdev, mcgrof, acx100-devel, prism54-devel On Sat, 2 Oct 2004 01:25:32 +0200 Vladimir Kondratiev <vkondra@mail.ru> wrote: > DS> Next: > DS> > DS> + dev->mtu = 2304; > DS> + dev->type = ARPHRD_IEEE80211; > DS> > DS> Is this really the correct default MTU for wireless devices? > > Yes, 802.11e (QoS) defines this value. All existing wireless drivers use the standard ethernet MTU. I really think it is supposed to be 1500. That's why I left it at ether_setup()'s setting. Upper layers really want to see a 1500 byte standard ethernet MTU by default. It's OK to let people set this higher via netdev->change_mtu() configuration calls, but by default it should be something that makes sense for most networks and that is 1500. Yes, btw, your tabs are all screwed up. Please configure your editor to use real tab characters. Your's is using spaces and using a tab-stop of 4 when it should be 8. ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [Acx100-devel] Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-08 19:51 ` Vladimir Kondratiev 2004-09-08 20:52 ` greg chesson @ 2004-09-08 21:19 ` Denis Vlasenko 2004-09-09 3:31 ` Sam Leffler 1 sibling, 1 reply; 70+ messages in thread From: Denis Vlasenko @ 2004-09-08 21:19 UTC (permalink / raw) To: acx100-devel, Vladimir Kondratiev, netdev Cc: David S. Miller, acx100-devel, greg chesson, hadi, jgarzik, jkmaline, prism54-devel, sam On Wednesday 08 September 2004 22:51, Vladimir Kondratiev wrote: > Greg, > you missed one important point. Besides data packets, that every driver now > convert .11<->.3 using almost the same code, there is whole story of > management. Many modern cards are "softmac" and do all management on host. > I see no point for every driver to implement its own scanning and > association. It is simply waste of resources. This is exactly what I meant. We need generic 802.11 idioc^W management handling. And maybe also tx rate control, ACK/retries for "completely-softmac" cards like Atheros. Full spectrum of possible fullmac......softmac designs are not trivial to handle... > To make step forward, I suggest the following: > > 1. Dave's code is at least year old. someone need to start maintain it, > starting with update for current kernel infrastructure. Get it compile and > load for 2.6.9, for example. /me runs away and hides > 2. To debug stack, you don't need real driver. I can write dummy .11 driver > that will silently discard all Tx, and will provide some way for user level > tool to simulate Rx (ioctl, netlink, does not really matter). For logic, it > is sufficient. Later, when it will come to timing, performance etc, it will > be easy to strip some real driver. -- vda ^ permalink raw reply [flat|nested] 70+ messages in thread
* Re: [Acx100-devel] Re: [RFC] acx100 inclusion in mainline; generic 802.11 stack 2004-09-08 21:19 ` [Acx100-devel] Re: [RFC] acx100 inclusion in mainline; " Denis Vlasenko @ 2004-09-09 3:31 ` Sam Leffler 0 siblings, 0 replies; 70+ messages in thread From: Sam Leffler @ 2004-09-09 3:31 UTC (permalink / raw) To: Denis Vlasenko Cc: netdev, Vladimir Kondratiev, prism54-devel, greg chesson, acx100-devel, jgarzik, hadi, jkmaline, David S. Miller On Sep 8, 2004, at 2:19 PM, Denis Vlasenko wrote: > On Wednesday 08 September 2004 22:51, Vladimir Kondratiev wrote: >> Greg, >> you missed one important point. Besides data packets, that every >> driver now >> convert .11<->.3 using almost the same code, there is whole story of >> management. Many modern cards are "softmac" and do all management on >> host. >> I see no point for every driver to implement its own scanning and >> association. It is simply waste of resources. > > This is exactly what I meant. We need generic 802.11 idioc^W management > handling. And maybe also tx rate control, ACK/retries for > "completely-softmac" > cards like Atheros. The net80211 code has generic 802.11 management handling based on wireless extensions. Drivers that sit beneath it and have the necessary capabilities automatically are usable, for example, with wpa_supplicant (and soon hostapd). At the moment there is one driver for Linux--the ath driver for Atheros h/w. Rate control is another can-o-worms. The model we've taken is that it is driver-specific. I'd be very surprised to see "softmac" h/w come along that requires the host to generate ACK frames explicitly; the timing is very tight and it would suck a lot of cycles from the host. > > Full spectrum of possible fullmac......softmac designs are not trivial > to handle... Experience with net80211 indicates you're fine if you have a good 802.11 protocol implementation to fall back on. Then devices that have functionality in h/w just supplant the s/w support. The net80211 code defines a set of device capabilities that indicate, for example, when a device supports various h/w crypto algorithms. Class-like method override mechanisms are used to handle other issues. This stuff is constantly evolving as more devices are hooked up but in general it's worked out pretty well. I've tried to avoid a spaghetti web of function pointers using callbacks only where it seems most drivers will make use of them. For other cases it often is easier to grab control early on so it's easier to optimize+share code. A concrete example of this is the processing of 802.11 management frames where the original code (that David saw) had an array of function pointers to little routines that handled each frame type--it turned out drivers didn't override these pointers so I removed them and drivers that want to override the default processing override the "recv management" method to intercept specific frames. > >> To make step forward, I suggest the following: >> >> 1. Dave's code is at least year old. someone need to start maintain >> it, >> starting with update for current kernel infrastructure. Get it >> compile and >> load for 2.6.9, for example. > > /me runs away and hides > >> 2. To debug stack, you don't need real driver. I can write dummy .11 >> driver >> that will silently discard all Tx, and will provide some way for user >> level >> tool to simulate Rx (ioctl, netlink, does not really matter). For >> logic, it >> is sufficient. Later, when it will come to timing, performance etc, >> it will >> be easy to strip some real driver. To evaluate a design and implementation show support for a few devices at each end of the spectrum. The Atheros h/w is probably a good example of softmac h/w. ADMTek 8211 is also in this category. I'd consider Prism devices toward the other end. You also need to be sure you handle single- and dual-band operation as each have different requirements. Also 11g support takes work to get right so be sure you have a softmac 11g card in the pile. Past that you get into the security protocols, WME/WMM, etc. Sound like a lot of work? It is. Sam ^ permalink raw reply [flat|nested] 70+ messages in thread
end of thread, other threads:[~2004-10-02 0:11 UTC | newest] Thread overview: 70+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2004-08-31 18:11 [RFC] acx100 inclusion in mainline; generic 802.11 stack Denis Vlasenko 2004-08-31 18:21 ` Jeff Garzik 2004-08-31 19:14 ` Vladimir Kondratiev 2004-08-31 21:37 ` Luis R. Rodriguez 2004-08-31 22:06 ` Vladimir Kondratiev 2004-09-01 2:22 ` Jouni Malinen 2004-09-02 20:24 ` Vladimir Kondratiev 2004-09-02 20:33 ` Jeff Garzik 2004-09-03 17:37 ` Vladimir Kondratiev 2004-09-03 20:29 ` Jeff Garzik 2004-09-06 18:13 ` Sam Leffler 2004-09-06 18:57 ` Vladimir Kondratiev 2004-09-06 19:30 ` Sam Leffler 2004-09-06 20:09 ` Vladimir Kondratiev 2004-09-06 23:04 ` Sam Leffler 2004-09-07 1:23 ` David S. Miller 2004-09-07 4:32 ` Sam Leffler 2004-09-07 6:47 ` David S. Miller 2004-09-07 17:22 ` Vladimir Kondratiev 2004-09-07 17:32 ` David S. Miller 2004-09-07 18:06 ` Vladimir Kondratiev 2004-09-07 18:08 ` David S. Miller 2004-09-07 18:41 ` Vladimir Kondratiev 2004-09-07 19:10 ` David S. Miller 2004-09-07 19:54 ` Vladimir Kondratiev 2004-09-09 2:40 ` Sam Leffler 2004-09-09 4:36 ` Luis R. Rodriguez 2004-09-07 17:03 ` [RFC] acx100 inclusion in mainline; " greg chesson 2004-09-07 17:10 ` David S. Miller 2004-09-07 18:14 ` greg chesson 2004-09-07 18:16 ` David S. Miller 2004-09-08 7:38 ` jamal 2004-09-08 16:02 ` greg chesson 2004-09-08 19:51 ` Vladimir Kondratiev 2004-09-08 20:52 ` greg chesson 2004-09-08 21:54 ` Vladimir Kondratiev 2004-09-09 17:06 ` greg chesson 2004-09-12 18:03 ` Vladimir Kondratiev 2004-09-13 0:09 ` Jeff Garzik 2004-09-13 0:45 ` David S. Miller 2004-09-15 17:57 ` James Ketrenos 2004-09-13 0:14 ` David S. Miller 2004-09-13 5:39 ` Vladimir Kondratiev 2004-09-13 5:50 ` Jeff Garzik 2004-09-13 23:21 ` David S. Miller 2004-09-14 5:14 ` Vladimir Kondratiev 2004-09-14 5:35 ` David S. Miller 2004-09-14 23:55 ` Luis R. Rodriguez 2004-09-15 0:11 ` Jeff Garzik 2004-09-15 0:51 ` greg chesson 2004-09-15 1:19 ` Jeff Garzik 2004-09-15 3:02 ` Luis R. Rodriguez 2004-09-15 3:05 ` Jeff Garzik 2004-09-15 3:17 ` Luis R. Rodriguez 2004-09-15 5:44 ` Vladimir Kondratiev 2004-09-15 14:47 ` greg chesson 2004-09-15 15:55 ` David S. Miller 2004-09-15 16:48 ` Sam Leffler 2004-09-15 17:06 ` David S. Miller 2004-09-28 12:20 ` [RFC] acx100 inclusion in mainline; " Luis R. Rodriguez 2004-09-28 20:29 ` Vladimir Kondratiev 2004-09-29 0:48 ` Luis R. Rodriguez 2004-09-29 7:10 ` Vladimir Kondratiev 2004-09-29 8:00 ` Luis R. Rodriguez 2004-10-01 14:30 ` Vladimir Kondratiev 2004-10-01 22:53 ` David S. Miller 2004-10-01 23:25 ` Vladimir Kondratiev 2004-10-02 0:11 ` David S. Miller 2004-09-08 21:19 ` [Acx100-devel] Re: [RFC] acx100 inclusion in mainline; " Denis Vlasenko 2004-09-09 3:31 ` Sam Leffler
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).