Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nrf_wifi: Create dedicated memory pools for Wi-Fi #213

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions drivers/nrf_wifi/fw_if/umac_if/src/default/fmac_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ static enum nrf_wifi_status nrf_wifi_fmac_init_tx(struct nrf_wifi_fmac_dev_ctx *
def_priv->data_config.max_tx_aggregation *
sizeof(struct nrf_wifi_fmac_buf_map_info));

def_dev_ctx->tx_buf_info = nrf_wifi_osal_mem_zalloc(size);
def_dev_ctx->tx_buf_info = nrf_wifi_osal_data_mem_zalloc(size);

if (!def_dev_ctx->tx_buf_info) {
nrf_wifi_osal_log_err("%s: No space for TX buf info",
Expand All @@ -86,7 +86,7 @@ static void nrf_wifi_fmac_deinit_tx(struct nrf_wifi_fmac_dev_ctx *fmac_dev_ctx)

tx_deinit(fmac_dev_ctx);

nrf_wifi_osal_mem_free(def_dev_ctx->tx_buf_info);
nrf_wifi_osal_data_mem_free(def_dev_ctx->tx_buf_info);
}

#endif /* NRF70_DATA_TX */
Expand All @@ -106,7 +106,7 @@ static enum nrf_wifi_status nrf_wifi_fmac_init_rx(struct nrf_wifi_fmac_dev_ctx *

size = (def_priv->num_rx_bufs * sizeof(struct nrf_wifi_fmac_buf_map_info));

def_dev_ctx->rx_buf_info = nrf_wifi_osal_mem_zalloc(size);
def_dev_ctx->rx_buf_info = nrf_wifi_osal_data_mem_zalloc(size);

if (!def_dev_ctx->rx_buf_info) {
nrf_wifi_osal_log_err("%s: No space for RX buf info",
Expand Down Expand Up @@ -182,7 +182,7 @@ static enum nrf_wifi_status nrf_wifi_fmac_deinit_rx(struct nrf_wifi_fmac_dev_ctx
}
}

nrf_wifi_osal_mem_free(def_dev_ctx->rx_buf_info);
nrf_wifi_osal_data_mem_free(def_dev_ctx->rx_buf_info);

def_dev_ctx->rx_buf_info = NULL;
out:
Expand Down
28 changes: 28 additions & 0 deletions drivers/nrf_wifi/os_if/inc/osal_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,20 @@ void *nrf_wifi_osal_mem_alloc(size_t size);
*/
void *nrf_wifi_osal_mem_zalloc(size_t size);


/**
* @brief Allocated zero-initialized memory for data.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we add ctrl in the doxygen headers for the default APIs?

*
* @size: Size of the memory to be allocated in bytes.
*
* Allocates memory of @size bytes, zeroes it out and returns a pointer to the
* start of the memory allocated.
*
* @return: Pointer to start of allocated memory or NULL.
*/
void *nrf_wifi_osal_data_mem_zalloc(size_t size);


/**
* @brief Free previously allocated memory.
* @param buf Pointer to the memory to be freed.
Expand All @@ -77,6 +91,20 @@ void *nrf_wifi_osal_mem_zalloc(size_t size);
*/
void nrf_wifi_osal_mem_free(void *buf);


/**
* @brief Free previously allocated memory for data.
*
* @buf: Pointer to the memory to be freed.
*
* Free up memory which has been allocated using @nrf_wifi_osal_mem_alloc or
* @nrf_wifi_osal_mem_zalloc.
*
* @return: None.
*/
void nrf_wifi_osal_data_mem_free(void *buf);


/**
* @brief Copy contents from one memory location to another.
*
Expand Down
17 changes: 16 additions & 1 deletion drivers/nrf_wifi/os_if/inc/osal_ops.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ struct nrf_wifi_osal_ops {
void *(*mem_alloc)(size_t size);

/**
* @brief Allocate zero-initialized memory.
* @brief Allocate zero-initialized memory for control messages.
*
* @param size The size of the memory to allocate.
* @return A pointer to the start of the allocated memory.
Expand All @@ -48,6 +48,21 @@ struct nrf_wifi_osal_ops {
*/
void (*mem_free)(void *buf);

/**
* @brief Allocate zero-initialized memory for data.
*
* @param size The size of the memory to allocate.
* @return A pointer to the start of the allocated memory.
*/
void *(*data_mem_zalloc)(size_t size);

/**
* @brief Free allocated memory.
*
* @param buf A pointer to the memory to free.
*/
void (*data_mem_free)(void *buf);

/**
* @brief Copy memory.
*
Expand Down
12 changes: 12 additions & 0 deletions drivers/nrf_wifi/os_if/src/osal.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,24 @@ void *nrf_wifi_osal_mem_zalloc(size_t size)
}


void *nrf_wifi_osal_data_mem_zalloc(size_t size)
{
return os_ops->data_mem_zalloc(size);
}


void nrf_wifi_osal_mem_free(void *buf)
{
os_ops->mem_free(buf);
}


void nrf_wifi_osal_data_mem_free(void *buf)
{
os_ops->data_mem_free(buf);
}


void *nrf_wifi_osal_mem_cpy(void *dest,
const void *src,
size_t count)
Expand Down