nRF7002 Wi-Fi radio test mode TX

Dear Team,

I have a question regarding the Wi-Fi radio TX test mode on the nRF7002-DK. I want to send Wi-Fi test packets of different sizes consecutively, which works fine. The problem is the delay between two packets sent consecutively. In NCS v2.4.2 it takes ~8.6 ms between two sent packets (see figure below); in NCS v2.3.0 it took "only" ~5.3 ms.

About the figure: The green line shows when (and for how long) a Wi-Fi packet is transmitted (measured on another device). The purple line shows when the Wi-Fi send command is placed in the RPU queue. So, you can clearly see that 3 commands were queued and after 8.6 ms the first packet was transmitted (and after another 8.6 ms the second and so on).

To my question: is there any way to reduce this delay? If so, to what extent is it possible?

I used the following configurations: 

Initializing / configuring the radio:

enum wifi_nrf_status wifi_radio_init(struct rpu_conf_params *conf_params) {
  enum wifi_nrf_status status = WIFI_NRF_STATUS_FAIL;

  memset(conf_params, 0, sizeof(*conf_params));
  conf_params->op_mode = RPU_OP_MODE_RADIO_TEST;

  status = wifi_nrf_fmac_rf_params_get(ctx->rpu_ctx, conf_params->rf_params);
  if (status != WIFI_NRF_STATUS_SUCCESS) 
    return status;
 
  conf_params->chan.primary_num = 9;
  conf_params->tx_pkt_rate = 6;
  conf_params->tx_power = 0;

  conf_params->power_save = 0;
  conf_params->tx_pkt_cw = 0;
  conf_params->tx_mode = 1;

  conf_params->phy_calib = 0;
  
  status = wifi_nrf_fmac_radio_test_init(ctx->rpu_ctx, &ctx->conf_params);
  if (status != WIFI_NRF_STATUS_SUCCESS) {
    LOG_ERR("Wi-Fi configuration failed");
    return -ENOEXEC;
  }

  return status;

Transmittig packets: 

static int wifi_radio_send_packets(int32_t packets, uint16_t bytes) {
  enum wifi_nrf_status status = WIFI_NRF_STATUS_FAIL;

  ctx->conf_params.tx_pkt_num = packets;
  ctx->conf_params.tx_pkt_len = bytes;
  ctx->conf_params.tx = 1;
  
  status = umac_cmd_prog_tx(ctx->rpu_ctx,&ctx->conf_params);
  if (status != WIFI_NRF_STATUS_SUCCESS) {
    LOG_ERR("Transmitting failed");
    return -ENOEXEC;
  }
  
  return 0;
}

Proj.conf: 

CONFIG_WIFI=y
CONFIG_WIFI_NRF700X=y
CONFIG_NRF700X_RADIO_TEST=y
CONFIG_NRF_WIFI_LOW_POWER=n 

CONFIG_POSIX_API=y
CONFIG_HEAP_MEM_POOL_SIZE=98304

Thanks, 

Rainer 

Parents Reply Children
No Data
Related