Hi,

After reading 
http://www.ieee802.org/1/files/public/802_architecture_group/802-11/4-address-format.doc
 (2005-07-19) I think there is a fault at the implementation of
encapsulating WIFI frames at DS to DS mode. The main error consist
that this frames have 4 address fields.

Resuming:

To/From DS values       Meaning
To DS = 0, From DS = 0  A data frame direct from one STA to another STA
within the same IBSS, as well as all management and control type
frames.
To DS = 0, From DS = 1  Data frame exiting the DS.
To DS = 1, From DS = 0  Data frame destined for the DS.
To DS = 1, From DS = 1  Wireless distribution system (WDS) frame being
distributed from one AP to another AP.

Fields:

ID      Mode    ToDS    FromDS  # of Address Fields
A       Ad hoc  0       0       3
B       LAN access      0       1       3
C       LAN access      1       0       3
D       4A      1       1       4

Hence, “WDS” is simply a mechanism for constructing 802.11 frames
using the 4-address format, as shown in the last row of Table 4 and
subsequently the last row of Table 5/710-T01.  The application of the
four-address addressing type and procedures for operating STAs that
uses that type of addressing are not defined or described by IEEE
802.11-1999.

The IEEE 802.11-1999 standard does not define how to construct any
such implementations or how stations interact to arrange for
exchanging frames of this format, it merely defines the 4-address
frame format that makes it possible.  Neither does the standard define
all the other supporting operations or protocols that would be
required to build such devices.

I suggest the implementation of wifiencap4A, wifidecap4A and the
definition of 802.11 4 address frames.

- Define 802.11 4 addresss frames at wifi.h, somethig like:

struct click_wifi_4A {
        uint8_t         i_fc[2];
        uint8_t         i_dur[2];
        uint8_t         i_addr1[WIFI_ADDR_LEN]; //RA
        uint8_t         i_addr2[WIFI_ADDR_LEN]; //TA
        uint8_t         i_addr3[WIFI_ADDR_LEN]; //DA
        uint8_t         i_addr4[WIFI_ADDR_LEN]; //SA
        uint8_t         i_seq[2];
} CLICK_SIZE_PACKED_ATTRIBUTE;

- Implement wifiencap4A, wifidecap4A:

...

struct click_wifi *w = (struct click_wifi_4A *) p->data();
dir = w->i_fc[1] & WIFI_FC1_DIR_MASK;
if dir ==  WIFI_FC1_DIR_MASK; // process the 4A frame
else //this is not a 4A frame

...

I think that the directly conversion of 802.11 4A frames to Ethernet
frames is incorrect, the main use of this frames should be bridges,
repeaters, distribution ... at WIFI level.

Salutations
Javier Sánchez

_______________________________________________
click mailing list
[email protected]
https://amsterdam.lcs.mit.edu/mailman/listinfo/click

Reply via email to