RT2860 : Binary Error Rate

Live forum: http://rt2x00.serialmonkey.com/viewtopic.php?t=5359

matthieu

12-05-2009 08:03:54

Hello,
I'm student in the university of Poitiers (France) and my project consist to calculate the Binary Error Rate in Ad'Hoc mode. In first I have disable the CRC (but it is not a good solution...). Now, I want to have the data before the CRC calcultation. I have use the function "filp_open, write and close " and i have a file with all packets but not with error !!!! I do that in rtmp_data.c and STARxDoneInterruptHandle function. Can you help me please ??? (I use 802.11a protocol and udp mode).
Thanks and i am sorry for my bad english......

IvD

12-05-2009 09:54:56

See register RX_FILTER_CFG for passing packets with CRC errors to driver.

matthieu

12-05-2009 12:31:21

Thanks !

So i must install patch and use RX_FILTER_CFG_DROP_CRC_ERROR, isn' it? And for use RX_FILTER, do you have documentation for this? (i have RT2860 driver 2.1.1.0)
(I'm sorry but i don't find RX_FILTER_CFG doc on google..... So i refer to you... ( )
thanks and sorry

IvD

12-05-2009 15:25:08

I would recommend using 'grep' to search through the code for the RX_FILTER_CFG usage, there you can see how to change that register value.

matthieu

12-05-2009 16:30:22

My problem is that i have a module driver (not include in kernel) and the RX_FILTER_CFG is not include. The patch is used for the driver in kernel, is'nt it? Do you know that a must do it ? thanks.

IvD

12-05-2009 17:39:08

Right, I forgot the Ralink driver contains a typo on this register. Search for RX_FILTR_CFG

matthieu

12-05-2009 19:19:11

Ok ! thanks. For dop the CRC error, i must change this integer DropCRCErr1, no? I have change to DropCRCErr0 but the command make failed. have you got a solution?

matthieu

12-05-2009 19:59:30

I have find how do it. Thank you for your help!!
Matthieu

matthieu

15-05-2009 07:30:52

Hello,

I have another problem. In fact, I have found this code for disable CRC

[code29jwd27v]RX_FILTR_CFG = 0x17f97[/code29jwd27v] in rtmp_init.c

[code29jwd27v]#define RX_FILTR_CFG 0x1400
//
// RX_FILTR_CFG: /RX configuration register
//
#ifdef RT_BIG_ENDIAN
typedef union RX_FILTR_CFG_STRUC {
struct {
UINT32 :15;
UINT32 DropRsvCntlType:1;

UINT32 DropBAR:1; //
UINT32 DropBA:1; //
UINT32 DropPsPoll:1; // Drop Ps-Poll
UINT32 DropRts:1; // Drop Ps-Poll

UINT32 DropCts:1; // Drop Ps-Poll
UINT32 DropAck:1; // Drop Ps-Poll
UINT32 DropCFEnd:1; // Drop Ps-Poll
UINT32 DropCFEndAck:1; // Drop Ps-Poll

UINT32 DropDuplicate:1; // Drop duplicate frame
UINT32 DropBcast:1; // Drop broadcast frames
UINT32 DropMcast:1; // Drop multicast frames
UINT32 DropVerErr:1; // Drop version error frame

UINT32 DropNotMyBSSID:1; // Drop fram ToDs bit is true
UINT32 DropNotToMe:1; // Drop not to me unicast frame
UINT32 DropPhyErr:1; // Drop physical error
UINT32 DropCRCErr:1; // Drop CRC error
} field;
UINT32 word;
} RX_FILTR_CFG_STRUC, *PRX_FILTR_CFG_STRUC;
#else
typedef union _RX_FILTR_CFG_STRUC {
struct {
UINT32 DropCRCErr:1; // Drop CRC error
UINT32 DropPhyErr:1; // Drop physical error
UINT32 DropNotToMe:1; // Drop not to me unicast frame
UINT32 DropNotMyBSSID:1; // Drop fram ToDs bit is true

UINT32 DropVerErr:1; // Drop version error frame
UINT32 DropMcast:1; // Drop multicast frames
UINT32 DropBcast:1; // Drop broadcast frames
UINT32 DropDuplicate:1; // Drop duplicate frame

UINT32 DropCFEndAck:1; // Drop Ps-Poll
UINT32 DropCFEnd:1; // Drop Ps-Poll
UINT32 DropAck:1; // Drop Ps-Poll
UINT32 DropCts:1; // Drop Ps-Poll

UINT32 DropRts:1; // Drop Ps-Poll
UINT32 DropPsPoll:1; // Drop Ps-Poll
UINT32 DropBA:1; //
UINT32 DropBAR:1; //

UINT32 DropRsvCntlType:1;
UINT32 :15;
} field;
UINT32 word;
} RX_FILTR_CFG_STRUC, *PRX_FILTR_CFG_STRUC;
#endif
[/code29jwd27v]
in rtmp_mac.h

I have do the correspondence with "0x17f97" and the stuct, so i have change the last bit(or the fist bit) to 1 for drop the CRC but i am not sure that it is good. In the first simulation i have coding
[code29jwd27v]RX_FILTR_CFG = 0x17f94[/code29jwd27v] (for drop CRC abnd Phy error)
and after
[code29jwd27v]RX_FILTR_CFG = 0xd7f97[/code29jwd27v] (for drop CRC abnd Phy error)
But the result is maybe not good....
Thanks for your help and have a good day !

IvD

15-05-2009 12:09:48

With that filter you need to *clear* a bit to disable the filter and thus to allow frames through.

matthieu

15-05-2009 13:25:14

clear like this ?
[code2cahy8zl]typedef union _RX_FILTR_CFG_STRUC {
struct {
/* UINT32 DropCRCErr:1; // Drop CRC error */
UINT32 DropPhyErr:1; // Drop physical error[/code2cahy8zl]

or like this ?

[code2cahy8zl]RX_FILTR_CFG = 0x00000[/code2cahy8zl]

IvD

15-05-2009 16:53:26

You have to change the value written to RX_FILTR_CFG

matthieu

20-05-2009 17:03:16

I have clear RX_FILTR_CFG to '0x00000' for drop CRC (i now, i must just clear 1 bit but if i clear all, i clear this bit).
So it don't work ! I had clear value written to STANORMAL, ... too, it don't work.
I have change the all value (STANORMAL..., RX_FILTR_CFG to 0x17f94 but it don't work). Can you say me if change this values (STANORMAL,..., RX_FILTR_CFG) to 0x17f94 is correct ? Maybe the 4 correspond to
...
dropNotmybssid to '1'
dropPhyErr to '0'
dropCrcErr to '0'

thank you !