WARP Project Forums - Wireless Open-Access Research Platform

You are not logged in.

#26 2014-Dec-19 03:26:23

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

murphpo wrote:

Modifying the definition of the SIGNAL field isn't a good approach- this will directly affect the Tx PHY's ability to generate standards-compliant waveforms.

A better approach would be a separate source for the LENGTH value that could be selected programatically. I built a simple demo of this - see wlan_phy_tx_pmd_jumboTx.zip. This is a modified version of the v1.1 Tx PHY and init script that supports "jumbo Tx" mode, up to 2^20 bytes per packet. I added a mux to the 'SIGNAL Capture' subsystem that selects between SIGNAL.LENGTH and a software-controlled register LENGTH value. This mux is controlled by a register bit, so the low-level MAC can select between normal and jumbo mode at run time. The software-controlled jumbo length and jumbo en/disable are controlled by a new register in the 'Registers' subsystem. I have not tested this modification in hardware.

Thanks for your reply. Yesterday I didn't update the EDK processor, so the JumboTx register was not included.

Today I did as you told, and the JumboTx register was included. So I applied the above simple demo "wlan_phy_tx_pmd_jumboTx" to generated pcore. And then I applied the generated pcore in XPS, however, two errors occurs:

INTERNAL_ERROR:Xst:cmain.c:3423:1.29 -  Process will terminate. For technical support on this issue, please open a WebCase with this project attached at http: //www.xilinx.com/support
ERROR:EDK - xst: unknown error occurred.
ERROR:EDK:546 - Aborting XST flow execution!
ERROR:EDK:440 - platgen failed with errors!
make: *** [implementation/system.bmm] Error 2

It seems these errors are caused by the added register. I check the XPS address block, wlan_phy_tx is allocated with (base address 0x78E00000, high address 0x78E0FFFF 64K). I thought these errors are due to the added 32bit register make wlan_phy_tx  overflow. So I tried to allocate more memory resource to wlan_phy_tx. But no matter how I click the wlan_phy_tx, I cannot make any modification. It seems that the memory allocation can not be modified manually.

Would you please give me some advice on how to solve the errors? Thanks.

http://i61.tinypic.com/10fci8n.png

Last edited by Tomi (2014-Dec-19 03:42:38)

Offline

 

#27 2014-Dec-19 09:52:51

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: Largest Packet Size Supported by Current WARP

INTERNAL_ERROR:Xst:cmain.c:3423:1.29 -  Process will terminate. For technical support on this issue, please open a WebCase with this project attached at http: //www.xilinx.com/support
ERROR:EDK - xst: unknown error occurred.
ERROR:EDK:546 - Aborting XST flow execution!
ERROR:EDK:440 - platgen failed with errors!

This error is something deep in the Xilinx tools - your addition of a register to the PHY core probably didn't cause this.

Can you build the reference design hardware project without modification? Try opening the original XPS project, select Hardware -> Clean Hardware, then Generate Bitstream.

What version of the Xilinx tools are you using? We strongly recommend using 14.4.

It seems these errors are caused by the added register. I check the XPS address block, wlan_phy_tx is allocated with (base address 0x78E00000, high address 0x78E0FFFF 64K). I thought these errors are due to the added 32bit register make wlan_phy_tx  overflow. So I tried to allocate more memory resource to wlan_phy_tx. But no matter how I click the wlan_phy_tx, I cannot make any modification. It seems that the memory allocation can not be modified manually.

Each pcore specifies the size of the memory address allocation it requires. This is part of the pcore's metadata (in <pcore>/data/<pcore>.mpd). System Generator cores default to 64KB; this is enough to address 16384 32-bit registers (i.e. adding one register does not require expanding the core's address space).

Offline

 

#28 2014-Dec-21 02:35:31

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

Thanks for your reply. The problem has been solved.

The generated pcore has all other folders except "mdlsrc". I thought "mdlsrc" folder may be useless for XPS, as it is just simulink and Matlab code.

Today I added the "mdlsrc" folder into generated pcore "wlan_phy_tx_pmd_axiw_v2_01_b" folder, then XPS can work correctly. The bitstream can be generated smoothly.

Last edited by Tomi (2014-Dec-21 06:15:08)

Offline

 

#29 2014-Dec-21 08:49:13

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

Tonight I applied XPS to generate the new bit stream successfully.

However, when I exported the design, I met a problem: two platforms exists in the SDK project! One is the new generated EDK_Projects_hw_platform, the other is the old Mango_802.11_RefDes_v1.1.0_hw_platform. Due to this problem, some blocks cannot be recognized by SDK.

Would you please give me some advice on how to deal with this problem? Thanks.

http://i59.tinypic.com/msg8d1.png

Last edited by Tomi (2014-Dec-21 08:50:22)

Offline

 

#30 2014-Dec-21 09:43:50

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: Largest Packet Size Supported by Current WARP

Great to hear XPS built successfully.

The generated pcore has all other folders except "mdlsrc". I thought "mdlsrc" folder may be useless for XPS, as it is just simulink and Matlab code.

Today I added the "mdlsrc" folder into generated pcore "wlan_phy_tx_pmd_axiw_v2_01_b" folder, then XPS can work correctly. The bitstream can be generated smoothly.

The mdlsrc folder is something we create manually after exporting a pcore from Sysgen. XPS ignores this folder completely. We use the mldsrc folder to archive the .mdl/.m files for the Sysgen design at the time of export. This helps with backtracking or comparing two versions of a core.

Whatever the XPS issue was above must have been resolved some other way (probably a reboot, or restart of the XPS binary).

However, when I exported the design, I met a problem: two platforms exists in the SDK project! One is the new generated EDK_Projects_hw_platform, the other is the old Mango_802.11_RefDes_v1.1.0_hw_platform. Due to this problem, some blocks cannot be recognized by SDK.

Would you please give me some advice on how to deal with this problem? Thanks.

This is a frustrating quirk of the XPS->SDK flow. When exporting a hardware project, XPS uses the folder name as the hardware project name. So if your XPS project is C:\work\my_proj\system.xmp, the hardware project in the SDK would be my_proj_hw_platform.

In the SDK the BSP projects are associated with a specific hardware project. This association cannot be changed for an existing BSP.

If you export a hardware project into an SDK workspace that already contains a project with the same name, the old project will be quietly upgraded. This is the desired behavior when iterating on a hardware design. The easiest way to achieve this in your situation is to re-name your XPS project folder and re-export the hardware project:
  -Close XPS/SDK
  -Delete /EDK_Projects/SDK_Workspace/EDK_Projects_hw_platform/
  -Delete /EDK_Projects/SDK/
  -Rename /EDK_Projects/ to /Mango_802.11_RefDes_v1.1.0_hw_platform/
  -Open XPS and re-export the project. This export should be fast (i.e. it won't re-synthesize the hardware design).

Offline

 

#31 2014-Dec-21 23:42:26

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

Thanks for your reply.

-Delete /EDK_Projects/SDK_Workspace/EDK_Projects_hw_platform/.

The directory location here is /EDK_Projects/EDK_Projects_hw_platform
rather than /EDK_Projects/SDK_Workspace/EDK_Projects_hw_platform

http://i57.tinypic.com/2hg8zg7.png

I checked the information in system.xml source:
  <PARAMETER ASSIGNMENT="CONSTANT" MPD_INDEX="9" NAME="C_MEMMAP_JUMBOTX_CONFIG" TYPE="integer" VALUE="0x800">
  <DESCRIPTION>C_MEMMAP_JUMBOTX_CONFIG</DESCRIPTION>
  <DESCRIPTION>C_MEMMAP_JUMBOTX_CONFIG</DESCRIPTION>
  </PARAMETER>
  <PARAMETER ASSIGNMENT="CONSTANT" MPD_INDEX="10" NAME="C_MEMMAP_JUMBOTX_CONFIG_N_BITS" TYPE="integer" VALUE="32"/>
  <PARAMETER ASSIGNMENT="CONSTANT" MPD_INDEX="11" NAME="C_MEMMAP_JUMBOTX_CONFIG_BIN_PT" TYPE="integer" VALUE="0"/>

It seems that XPS already successfully generated bit-stream containing JumboTx register.

However, in xparameters.h file, there is still no JumboTx register information!!!
I think this is because the directory of the generated "_hw_platform" folder is not under /EDK_Projects/SDK_Workspace/, the files in wlan_bsp_cpu_high and wlan_bsp_cpu_low folders cannot be updated??? How can I change the directory for generated "_hw_platform" folder?

Rename /EDK_Projects/ to /Mango_802.11_RefDes_v1.1.0_hw_platform/

After doing this, the generated one is Mango_802.11_RefDes_v1.1.0_hw_platform_hw_platform
Also under the directory of /EDK_Projects, rather than /EDK_Projects/SDK_Workspace/

http://i62.tinypic.com/k33w3k.png

Open XPS and re-export the project. This export should be fast (i.e. it won't re-synthesize the hardware design).

Even though re-export the project, the xparameters.h file didnot contain the added register. I think this is because the directory of the generated "_hw_platform" folder is not under /EDK_Projects/SDK_Workspace/, so related files cannot be updated.

So up to now, although XPS can generate the bitstream with JumboTx register information, I cannot export it correctly to SDK.

Last edited by Tomi (2014-Dec-22 02:01:29)

Offline

 

#32 2014-Dec-22 07:44:14

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

I check the XPS project report:

http://i58.tinypic.com/17v1gl.png

It seems JumTx register is successfully generated by XPS.

However, in xparameters.h, there is no JumboTx register information.
/* Definitions (address parameters) for peripheral WLAN_PHY_TX */
#define XPAR_WLAN_PHY_TX_MEMMAP_STATUS 0x78E0081C
#define XPAR_WLAN_PHY_TX_MEMMAP_TIMING 0x78E00804
#define XPAR_WLAN_PHY_TX_MEMMAP_CONFIG 0x78E00808
#define XPAR_WLAN_PHY_TX_MEMMAP_PKT_BUF_SEL 0x78E0080C
#define XPAR_WLAN_PHY_TX_MEMMAP_OUTPUT_SCALING 0x78E00810
#define XPAR_WLAN_PHY_TX_MEMMAP_TX_START 0x78E00814
#define XPAR_WLAN_PHY_TX_MEMMAP_FFT_CONFIG 0x78E00818

Shoud I add #define XPAR_WLAN_PHY_TX_MEMMAP_JUMBOTX_CONFIG 0x78E00800 manually?

Or if it updated automatically, do you know how to update files in wlan_bsp_cpu_high and wlan_bsp_cpu_low? Thanks.

Last edited by Tomi (2014-Dec-22 07:47:41)

Offline

 

#33 2014-Dec-22 08:33:40

welsh
Administrator
From: Mango Communications
Registered: 2013-May-15
Posts: 612

Re: Largest Packet Size Supported by Current WARP

First, Patrick had a typo: 

Rename /EDK_Projects/ to /Mango_802.11_RefDes_v1.1.0_hw_platform/

should have been:

Rename /EDK_Projects/ to /Mango_802.11_RefDes_v1.1.0/

because the "_hw_platform" is appended on the export.

Second, when exporting the design from XPS (i.e. select "Export Design" and then "Export & Launch SDK"), it will bring up a "Workspace Launcher" dialog when starting the SDK.  At that point, you should select the appropriate "SDK_Workspace" folder (i.e. you should select "/Mango_802.11_RefDes_v1.1.0/SDK_Workspace")  This will cause the hardware project to be exported to "/Mango_802.11_RefDes_v1.1.0/SDK_Workspace/Mango_802.11_RefDes_v1.1.0_hw_platform".  It looks like during the export, you are only selecting:  "/Mango_802.11_RefDes_v1.1.0/" and not "/Mango_802.11_RefDes_v1.1.0/SDK_Workspace".

In order to get the register to appear in the xparameters.h, you then need to re-build the BSP.  In the SDK, you should be able to just right click on the BSP and select "Clean Project" which will cause the BSP to re-build.  If that doesn't work, then you will need to delete that BSP and create a new BSP with the same settings.

Offline

 

#34 2014-Dec-22 09:50:03

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

Second, when exporting the design from XPS (i.e. select "Export Design" and then "Export & Launch SDK"), it will bring up a "Workspace Launcher" dialog when starting the SDK.  At that point, you should select the appropriate "SDK_Workspace" folder (i.e. you should select "/Mango_802.11_RefDes_v1.1.0/SDK_Workspace")  This will cause the hardware project to be exported to "/Mango_802.11_RefDes_v1.1.0/SDK_Workspace/Mango_802.11_RefDes_v1.1.0_hw_platform".  It looks like during the export, you are only selecting:  "/Mango_802.11_RefDes_v1.1.0/" and not "/Mango_802.11_RefDes_v1.1.0/SDK_Workspace".

Thanks for your reply. Now the problem solved. There are too manys places to select: SDK "Workspace Launcher", local repositories, global repositories, import project...

Offline

 

#35 2014-Dec-22 17:46:37

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

In order to get the register to appear in the xparameters.h, you then need to re-build the BSP.  In the SDK, you should be able to just right click on the BSP and select "Clean Project" which will cause the BSP to re-build.  If that doesn't work, then you will need to delete that BSP and create a new BSP with the same settings.

Now I can export the hardware project "_hw_platform" to the directory "/Mango_802.11_RefDes_v1.1.0/SDK_Workspace/Mango_802.11_RefDes_v1.1.0_hw_platform", and confirmed that JumTx register can be successfully generated by XPS.

However, as you mentioned, I right clicked on the BSP and selected "Clean Project" to re-build the BSP, however, it doesn't work. The JumboTx register still does not appear in the xparameters.h.

Would you tell me the procedure for deleteing the BSP and creating a new BSP with the same settings? Thanks.

Last edited by Tomi (2014-Dec-22 17:47:21)

Offline

 

#36 2014-Dec-22 18:01:27

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: Largest Packet Size Supported by Current WARP

Did you change the version number of the pcore when you exported it from System Generator? If so, check the BSP Settings -> Drivers tab to confirm the BSP is using the proper pcore version. The BSP will not automatically update to the newest version, to avoid breaking existing software programs. You must select the new pcore driver version if you update the version of the underlying pcore.

Offline

 

#37 2014-Dec-22 18:28:47

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

Yes, I changed the pcore wlan_phy_tx_pmd_axiw from v2_01_b to v2_01_c.
I checked the BSP Settings -> Drivers, but there is no item named as wlan_phy_tx_pmd_axiw. How can I select a new pcore? Thanks.

http://i59.tinypic.com/33da2yp.png

Last edited by Tomi (2014-Dec-22 18:32:18)

Offline

 

#38 2014-Dec-22 19:20:00

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: Largest Packet Size Supported by Current WARP

That screenshot is for wlan_bsp_cpu_high - check the wlan_bsp_cpu_low settings. The WLAN cores are all attached to the peripheral bus of the CPU Low MicroBlaze.

Offline

 

#39 2014-Dec-22 21:17:42

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

murphpo wrote:

That screenshot is for wlan_bsp_cpu_high - check the wlan_bsp_cpu_low settings. The WLAN cores are all attached to the peripheral bus of the CPU Low MicroBlaze.

Thank you very much. Now it worked. JUMBOTX register information is displayed in xparameters.h!

/* Definitions for peripheral WLAN_PHY_TX */
#define XPAR_WLAN_PHY_TX_MEMMAP_STATUS_N_BITS 32
#define XPAR_WLAN_PHY_TX_MEMMAP_STATUS_BIN_PT 0
#define XPAR_WLAN_PHY_TX_MEMMAP_JUMBOTX_CONFIG_N_BITS 32
#define XPAR_WLAN_PHY_TX_MEMMAP_JUMBOTX_CONFIG_BIN_PT 0
#define XPAR_WLAN_PHY_TX_MEMMAP_TIMING_N_BITS 32
#define XPAR_WLAN_PHY_TX_MEMMAP_TIMING_BIN_PT 0
#define XPAR_WLAN_PHY_TX_MEMMAP_CONFIG_N_BITS 32
#define XPAR_WLAN_PHY_TX_MEMMAP_CONFIG_BIN_PT 0
#define XPAR_WLAN_PHY_TX_MEMMAP_PKT_BUF_SEL_N_BITS 32
#define XPAR_WLAN_PHY_TX_MEMMAP_PKT_BUF_SEL_BIN_PT 0
#define XPAR_WLAN_PHY_TX_MEMMAP_OUTPUT_SCALING_N_BITS 32
#define XPAR_WLAN_PHY_TX_MEMMAP_OUTPUT_SCALING_BIN_PT 0
#define XPAR_WLAN_PHY_TX_MEMMAP_TX_START_N_BITS 32
#define XPAR_WLAN_PHY_TX_MEMMAP_TX_START_BIN_PT 0
#define XPAR_WLAN_PHY_TX_MEMMAP_FFT_CONFIG_N_BITS 32
#define XPAR_WLAN_PHY_TX_MEMMAP_FFT_CONFIG_BIN_PT 0
#define XPAR_WLAN_PHY_TX_DEVICE_ID 0
#define XPAR_WLAN_PHY_TX_BASEADDR 0x78E00000
/******************************************************************/

/* Definitions (address parameters) for peripheral WLAN_PHY_TX */
#define XPAR_WLAN_PHY_TX_MEMMAP_STATUS 0x78E0081C
#define XPAR_WLAN_PHY_TX_MEMMAP_JUMBOTX_CONFIG 0x78E00800
#define XPAR_WLAN_PHY_TX_MEMMAP_TIMING 0x78E00804
#define XPAR_WLAN_PHY_TX_MEMMAP_CONFIG 0x78E00808
#define XPAR_WLAN_PHY_TX_MEMMAP_PKT_BUF_SEL 0x78E0080C
#define XPAR_WLAN_PHY_TX_MEMMAP_OUTPUT_SCALING 0x78E00810
#define XPAR_WLAN_PHY_TX_MEMMAP_TX_START 0x78E00814
#define XPAR_WLAN_PHY_TX_MEMMAP_FFT_CONFIG 0x78E00818

Offline

 

#40 2014-Dec-22 21:26:07

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: Largest Packet Size Supported by Current WARP

Great! Sorry this kind of change required so much trial and error. We'll work on better documentation for iterating on the hardware design.

Offline

 

#41 2014-Dec-23 07:41:02

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

I have successfully created the bit definitions of JumboTx register in wlan_phy_util.h.

(1)
#define wlan_phy_rx_set_max_pkt_len_kB(d) Xil_Out32(WLAN_RX_REG_CFG, (Xil_In32(WLAN_RX_REG_CFG) & ~WLAN_RX_REG_CFG_MAX_PKT_LEN_MASK) | (((d) << 17) & WLAN_RX_REG_CFG_MAX_PKT_LEN_MASK))

#define wlan_phy_tx_set_max_pkt_len_kB(d) Xil_Out32(WLAN_TX_REG_CFG, (Xil_In32(WLAN_TX_REG_CFG) & ~WLAN_TX_REG_CFG_MAX_PKT_LEN_MASK) | (((d) << 8) & WLAN_TX_REG_CFG_MAX_PKT_LEN_MASK))

For the above two functions, what is the meaning of 17 and 8?
As the maximum payload is limited to 4KB, the maximum of d is 4. Then d is always less than 17 or 8. Why d<<17 and d<<8 should be added here? Thanks.

(2)
If I enable the jumbo message selection in wlan_phy_init() in wlan_phy_util.c, then the hardware will generate an expected payload. However, all the messages, not only data message, but also control message, management message become jumbo… which makes AP and STA cannot communicate with each other…
I only need data message to be jumbo, and control/management messages keep as before, so that AP and STA can communicate as before.
Do you have any suggestion on this issue? Thanks.

Last edited by Tomi (2014-Dec-23 07:44:07)

Offline

 

#42 2014-Dec-23 16:57:15

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: Largest Packet Size Supported by Current WARP

For the above two functions, what is the meaning of 17 and 8?
As the maximum payload is limited to 4KB, the maximum of d is 4. Then d is always less than 17 or 8. Why d<<17 and d<<8 should be added here?

The 17 and 8 represent the bit shifts for those fields in the target registers. In both cases the max_pkt_len fields are sliced from 32-bit registers. Both registers contain other control values, which are preserved by the read-modify-write behavior of these macros.

If I enable the jumbo message selection in wlan_phy_init() in wlan_phy_util.c, then the hardware will generate an expected payload. However, all the messages, not only data message, but also control message, management message become jumbo… which makes AP and STA cannot communicate with each other…
I only need data message to be jumbo, and control/management messages keep as before, so that AP and STA can communicate as before.
Do you have any suggestion on this issue?

When jumboTx mode is enabled the over-the-air waveform is invalid due to the SIGNAL.LENGTH field being different from the actual packet length. Standard 802.11 receivers will observe this difference and declare the packets as bad (checksum failure).

To interoperate with 802.11 devices you must en/disable jumboTx mode per-packet. This is why having control of jumboTx mode from software in CPU Low is important. You need to modify the code in CPU Low (wlan_mac_low_dcf.c) to implement this behavior. I think you only need to modify frame_transmit(). The code in CPU Low has access to the full packet contents, including the packet type. Your custom code can check the packet type, enable jumboTx mode if necessary, trigger the MAC Tx, wait for the Tx to finish, then disable jumboTx.

Offline

 

#43 2014-Dec-24 01:16:04

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

The 17 and 8 represent the bit shifts for those fields in the target registers. In both cases the max_pkt_len fields are sliced from 32-bit registers. Both registers contain other control values, which are preserved by the read-modify-write behavior of these macros.

Thanks for your reply. I check the register information of tx/rx max_pkt_len fields.
For tx max_pkt_len field, it is using the bit [8:11], so the bit shift here is 8, that is d<<8
For rx max_pkt_len field, it is using the bit [17:20], so the bit shift here is 17, that is d<<17

For jumbo pkt_len field, it is using the  bit [0:19], so the bit shift here is 0, so I should write the function as:
#define wlan_phy_tx_jumbo_pkt_len_kB(d) Xil_Out32(WLAN_TX_REG_JUMBOTX, (Xil_In32(WLAN_TX_REG_JUMBOTX) & ~WLAN_TX_REG_JUMBOTX_PKT_LEN_MASK) | (((d) << 0) & WLAN_TX_REG_JUMBOTX_PKT_LEN_MASK))

As d is always larger than 0 here, applying d<<0 looks strange here. Is the above function correct? Thanks.

To interoperate with 802.11 devices you must en/disable jumboTx mode per-packet. This is why having control of jumboTx mode from software in CPU Low is important. You need to modify the code in CPU Low (wlan_mac_low_dcf.c) to implement this behavior. I think you only need to modify frame_transmit(). The code in CPU Low has access to the full packet contents, including the packet type. Your custom code can check the packet type, enable jumboTx mode if necessary, trigger the MAC Tx, wait for the Tx to finish, then disable jumboTx.

Thanks. In frame_transmit(), I added a sentence to check the packet type and enable/disable jumboTx mode.

  if((header->frame_control_1) == MAC_FRAME_CTRL1_SUBTYPE_DATA){
        REG_SET_BITS(WLAN_TX_REG_JUMBOTX, WLAN_TX_REG_JUMBOTX_EN); //Enable JumboTx
  } else{
        REG_CLEAR_BITS(WLAN_TX_REG_JUMBOTX, WLAN_TX_REG_JUMBOTX_EN);
  }

Last edited by Tomi (2014-Dec-24 01:16:55)

Offline

 

#44 2014-Dec-27 10:49:06

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: Largest Packet Size Supported by Current WARP

Be sure to disable jumbo Tx mode before returning from frame_transmit() (i.e. don't leave this mode enabled after completing a jumbo transmission). Otherwise I think that looks right.

Offline

 

#45 2014-Dec-29 07:55:04

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

(1) As now the register "regTx_SIGNAL_MAX_LENGTH_KB" is set to 10-bit long, so it can reach a value up to 1000KB.
The value can be defined in:
#define wlan_phy_tx_set_max_pkt_len_kB(d) Xil_Out32(WLAN_TX_REG_CFG, (Xil_In32(WLAN_TX_REG_CFG) & ~WLAN_TX_REG_CFG_MAX_PKT_LEN_MASK) | (((d) << 8) & WLAN_TX_REG_CFG_MAX_PKT_LEN_MASK))

Here, the value d should be hexadecimal or decimal? For example, if I want to set "regTx_SIGNAL_MAX_LENGTH_KB" to 64KB, then d is 0x40 or 64? Thanks.

(2) The simulink simulation showed that the jumbo payload is realized in pore. Now I want to check the actual transmitted payload size.

In the past, I can use python program to get the payload size. However, the information from the TX/TX_LOW/TX_LTG/TX_LOW_LTG log entries are recorded by program written in C source code, as for jumbo message we only modified the pore, I doubt whether these log entries could reflect the jumbo payload size. If they cannot reflect the jumbo payload size, how can I check the transmitted radio data is actual jumbo message or not? How can I get the log information of pore PHY? Thanks.

Last edited by Tomi (2014-Dec-29 07:58:34)

Offline

 

#46 2014-Dec-29 09:22:31

chunter
Administrator
From: Mango Communications
Registered: 2006-Aug-24
Posts: 1212

Re: Largest Packet Size Supported by Current WARP

(1) wlan_phy_tx_set_max_pkt_len_kB(64) and wlan_phy_tx_set_max_pkt_len_kB(0x40) are equivalent. The compiled code will be the same.

(2) For TX log entries, the reported length isn't read out from the PHY. The logged TX length is the value that is written to the tx_frame_info struct when the packet is created in CPU_HIGH. So, you can't really use this value to confirm whether or not the transmitted radio data is actually jumbo. If you fill in a jumbo value into that field when CPU_HIGH creates the packet, then it will be logged as that length whether or not it actually worked.

For RX log entries, the length *is* read from the PHY and logged. Specifically, the "wlan_mac_get_rx_phy_length()" macro is ultimately logged after it is written to the rx_frame_info. Here is where that macro is defined for our PHY. You'll need to replace that call with your own custom register read in order to log the jumbo payload lengths.

Offline

 

#47 2014-Dec-29 10:06:42

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

......

Last edited by Tomi (2014-Dec-29 18:28:32)

Offline

 

#48 2014-Dec-29 18:34:16

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

In xparameters.h:
/* Definitions (address parameters) for peripheral WLAN_PHY_TX */
#define XPAR_WLAN_PHY_TX_MEMMAP_CONFIG 0x78E00808

In wlan_phy_util.h:
//Register renames
#define WLAN_TX_REG_CFG        XPAR_WLAN_PHY_TX_MEMMAP_CONFIG

//TX CONFIG
#define WLAN_TX_REG_CFG_SET_RC_RXEN                    0x001
#define WLAN_TX_REG_CFG_RESET_SCRAMBLING_PER_PKT    0x002
#define WLAN_TX_REG_CFG_ANT_A_TXEN                    0x004
#define WLAN_TX_REG_CFG_ANT_B_TXEN                    0x008
#define WLAN_TX_REG_CFG_ANT_C_TXEN                    0x010
#define WLAN_TX_REG_CFG_ANT_D_TXEN                    0x020
#define WLAN_TX_REG_CFG_USE_MAC_ANT_MASKS        0x040
#define WLAN_TX_REG_CFG_DELAY_DBG_TX_RUNNING        0x080
#define WLAN_TX_REG_CFG_MAX_PKT_LEN_MASK        0xF00
#define WLAN_TX_REG_CFG_RESET                        0x80000000

The above TX CONFIG macro names are created optionally?
How can the macro names WLAN_TX_REG_CFG_SET_RC_RXEN, WLAN_TX_REG_CFG_RESET_SCRAMBLING_PER_PKT, WLAN_TX_REG_CFG_ANT_A_TXEN be mapped to the register WLAN_TX_REG_CFG? Just because they have some part in common, i.e, they all contain "WLAN_TX_REG_CFG" part?

Thanks.

Last edited by Tomi (2014-Dec-29 18:50:26)

Offline

 

#49 2014-Dec-30 02:31:26

murphpo
Administrator
From: Mango Communications
Registered: 2006-Jul-03
Posts: 5159

Re: Largest Packet Size Supported by Current WARP

The above TX CONFIG macro names are created optionally?

How can the macro names WLAN_TX_REG_CFG_SET_RC_RXEN, WLAN_TX_REG_CFG_RESET_SCRAMBLING_PER_PKT, WLAN_TX_REG_CFG_ANT_A_TXEN be mapped to the register WLAN_TX_REG_CFG? Just because they have some part in common, i.e, they all contain "WLAN_TX_REG_CFG" part?

Using named macros in place of "magic" numbers is not required. We do this to make the reference code cleaner.

All macros in wlan_phy_util.h are defined manually - we wrote these to make code in wlan_phy_util.c cleaner. The values for the WLAN_TX_REG_CFG* macros match the bit slice assignments in the Tx PHY model. If you change the meaning of register bits in the model you must update any corresponding macros in the .h file. The names of these macros are arbitrary (i.e. you could change the "WLAN_TX_REG_CFG_" prefix to "ABC_" and it would still work - the compiler doesn't know anything about the register names in the System Generator model).

Offline

 

#50 2015-Jan-04 03:13:42

Tomi
Member
Registered: 2014-Oct-17
Posts: 58

Re: Largest Packet Size Supported by Current WARP

【One mention】
There is always two errors if run pcores\wlan_phy_rx_pmd_axiw_v2_04_g\mdlsrc\wlan_phy_rx_pmd.mdl

http://i59.tinypic.com/2ed03s7.png

I check the source code you delieverd:

​Mango_802.11_RefDes_v1.1.0.zip: There is NO /rx_sigs folder in Mango_802.11_RefDes_v1.1.0.zip\pcores\wlan_phy_rx_pmd_axiw_v2_04_g\mdlsrc
​Mango_802.11_RefDes_v1.0.0.zip: There is a /rx_sigs folders in Mango_802.11_RefDes_v1.0.0.zip\pcores\wlan_phy_rx_pmd_axiw_v2_04_d\mdlsrc

I think you maybe forget the /rx_sigs folder in the latest release v1.1.0.


【Three questions】
(1) in pcore wlan_phy_tx_init.m:

%MAX_NUM_BYTES = 4096; %DEFAULT
MAX_NUM_BYTES = 2^20;

PPDU_words = zeros(1, MAX_NUM_BYTES/4);

I cannot understand the meaning of PPDU_words. Why PPDU_words is generated according to MAX_NUM_BYTES, rather the actual payload length?


(2) in pcore wlan_phy_tx_init.m:

Pkt_Payload = MPDU_Data_short;

Pkt_len = length(Pkt_Payload);

%Reshape byte vector to u32 vector, necessary to initialize the 32-bit BRAM
% in the simulation
Pkt_Payload = [Pkt_Payload zeros(1,-mod(Pkt_len, -4))];
Pkt_Payload4 = reshape(Pkt_Payload, 4, Pkt_len/4);
Pkt_Payload_words = sum(Pkt_Payload4 .* repmat(2.^[0:8:24]', 1, size(Pkt_Payload4,2)));

%Populate payload after with the MPDU
PPDU_words(2+[1:length(Pkt_Payload_words)]) = Pkt_Payload_words;

There is also a parameter named Pkt_Payload_words. What is the relationship between PPDU_words and Pkt_Payload_words?


(3) in wlan_phy_rx_pmd/MAC Outputs:
http://i60.tinypic.com/n5h2k8.png

What is the difference between DSSS_SIGNAL_LENGTH and OFDM_SIGNAL_LENGTH? What is the meaning of RX_END_OFDM_LAST_SAMP?

Thanks.

Last edited by Tomi (2015-Jan-05 01:58:09)

Offline

 

Board footer