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

Create dedicated memory pools for Wi-Fi #5

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
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 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
30 changes: 27 additions & 3 deletions os_if/inc/osal_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ void nrf_wifi_osal_init(const struct nrf_wifi_osal_ops *ops);
void nrf_wifi_osal_deinit(void);

/**
* @brief Allocate memory.
* @brief Allocate memory for control path requests.
* @param size Size of the memory to be allocated in bytes.
*
* Allocates memory of @p size bytes and returns a pointer to the start
Expand All @@ -52,7 +52,7 @@ void nrf_wifi_osal_deinit(void);
void *nrf_wifi_osal_mem_alloc(size_t size);

/**
* @brief Allocated zero-initialized memory.
* @brief Allocated zero-initialized memory for control path requests.
* @param size Size of the memory to be allocated in bytes.
*
* Allocates zero-initialized memory of @p size bytes and returns a pointer to the start
Expand All @@ -63,14 +63,38 @@ void *nrf_wifi_osal_mem_alloc(size_t size);
void *nrf_wifi_osal_mem_zalloc(size_t size);

/**
* @brief Free previously allocated memory.
* @brief Allocated zero-initialized memory for data.
*
* @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 for control path requests.
* @param 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.
*/
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
21 changes: 18 additions & 3 deletions os_if/inc/osal_ops.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,26 +28,41 @@ struct nrf_wifi_osal_ops {
/**
* @brief Allocate memory.
*
* @param size The size of the memory to allocate.
* @param size The size of the memory to allocate for control messages.
* @return A pointer to the start of the allocated memory.
*/
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.
*/
void *(*mem_zalloc)(size_t size);

/**
* @brief Free allocated memory.
* @brief Free memory allocated for control messages.
*
* @param buf A pointer to the memory to free.
*/
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 memory allocated for data.
*
* @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 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