DINKIN / tuo

Automatically exported from code.google.com/p/tuo
0 stars 0 forks source link

madwifi can't receive an action frame except in a monitor mode #7

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
#1945: madwifi can't receive an action frame except in a monitor mode
-------------------------------------+--------------------------------------
 Reporter:  caojing.china@gmail.com  |             Type:  defect
  Status:  new                      |         Priority:  minor
Component:  madwifi: other           |          Version:  v0.9.4
 Keywords:  action frame             |   Patch_attached:  0
-------------------------------------+--------------------------------------
 I'm trying to use the madwifi driver to tx and rx action frame, which sub
 type is 0xd0.

 1. one node sends action frame, the other node can receive those frames in
 monitor mode.

 2. I change the receive node to master mode, It can't receive any action
 frames.

 3. A virtual monitor interface is created on the same device. Then it can
 receive the action frames again.

 4. The virtual monitor interface is removed and I modify the sender action
 frame's subtype to 0x40 (Probe Request type) without change any other bits
 in the send frame. Now the receiver can receive the action frame again.

 Actual, I search the whole madwifi code. I didn't find any place to use
 the definition of IEEE80211_FC0_SUBTYPE_ACTION.

 Is there any setting for hardware to receive the action frame?

--
Ticket URL: <http://madwifi.org/ticket/1945>
madwifi.org <http://madwifi.org/>
Multiband Atheros Driver for Wireless Fidelity

Original issue reported on code.google.com by caojing....@gmail.com on 17 May 2008 at 8:17

GoogleCodeExporter commented 8 years ago
I found the problem is the rx queue filter, which is as follow.

{{{
/* Rx Filter Frame Types */
typedef enum {
    HAL_RX_FILTER_UCAST = 0x00000001,   /* Allow unicast frames */
    HAL_RX_FILTER_MCAST = 0x00000002,   /* Allow multicast frames */
    HAL_RX_FILTER_BCAST = 0x00000004,   /* Allow broadcast frames */
    HAL_RX_FILTER_CONTROL   = 0x00000008,   /* Allow control frames */
    HAL_RX_FILTER_BEACON    = 0x00000010,   /* Allow beacon frames */
    HAL_RX_FILTER_PROM  = 0x00000020,   /* Promiscuous mode */
    HAL_RX_FILTER_XRPOLL    = 0x00000040,   /* Allow XR poll frmae */
    HAL_RX_FILTER_PROBEREQ  = 0x00000080,   /* Allow probe request frames */
    HAL_RX_FILTER_PHYERR    = 0x00000100,   /* Allow phy errors */
    HAL_RX_FILTER_PHYRADAR  = 0x00000200,   /* Allow phy radar errors*/
} HAL_RX_FILTER;
}}}

In madwifi master mode, it only receive the HAL_RX_FILTER_UCAST | 
HAL_RX_FILTER_BCAST
| HAL_RX_FILTER_MCAST | HAL_RX_FILTER_PROBEREQ |  HAL_RX_FILTER_PHYERR.

In madwifi monitor mode, it also receive the HAL_RX_FILTER_CONTROL |
HAL_RX_FILTER_BEACON | HAL_RX_FILTER_PROM

The multiple virtual interface share the same filter setted by 
ath_hal_setrxfilter.

The action frame is received in HAL_RX_FILTER_PROM.

So now my question is whether there is more accurate filter from management 
frame for
hal. Or we have to use the ath5k with open_hal.

Original comment by caojing....@gmail.com on 17 May 2008 at 8:43