Mistake on this page?
Report an issue in GitHub or email us
Data Fields
whd_buffer_funcs Struct Reference

Allows WHD to perform buffer related operations like, allocating, releasing, retrieving the current pointer of and size of a packet buffer. More...

#include <whd_network_types.h>

Data Fields

whd_result_t(* whd_host_buffer_get )(whd_buffer_t *buffer, whd_buffer_dir_t direction, unsigned short size, unsigned long timeout_ms)
 Allocates a packet buffer. More...
 
void(* whd_buffer_release )(whd_buffer_t buffer, whd_buffer_dir_t direction)
 Releases a packet buffer. More...
 
uint8_t *(* whd_buffer_get_current_piece_data_pointer )(whd_buffer_t buffer)
 Retrieves the current pointer of a packet buffer. More...
 
uint16_t(* whd_buffer_get_current_piece_size )(whd_buffer_t buffer)
 Retrieves the size of a packet buffer. More...
 
whd_result_t(* whd_buffer_set_size )(whd_buffer_t buffer, unsigned short size)
 Sets the current size of a WHD packet. More...
 
whd_result_t(* whd_buffer_add_remove_at_front )(whd_buffer_t *buffer, int32_t add_remove_amount)
 Moves the current pointer of a packet buffer. More...
 

Detailed Description

Allows WHD to perform buffer related operations like, allocating, releasing, retrieving the current pointer of and size of a packet buffer.

Definition at line 56 of file whd_network_types.h.

Field Documentation

whd_result_t(* whd_buffer_add_remove_at_front) (whd_buffer_t *buffer, int32_t add_remove_amount)

Moves the current pointer of a packet buffer.

Implemented in the port layer interface which is specific to the buffering scheme in use.

Since packet buffers usually need to be created with space at the front for additional headers, this function allows WHD to move the current 'front' location pointer so that it has space to add headers to transmit packets, and so that the network stack does not see the internal WHD headers on received packets.

Parameters
bufferA pointer to the handle of the current packet buffer for which the current pointer will be moved. On return this may contain a pointer to a newly allocated packet buffer which has been daisy chained to the front of the given packet buffer. This would be the case if the given packet buffer didn't have enough space at the front.
add_remove_amountThis is the number of bytes to move the current pointer of the packet buffer - a negative value increases the space for headers at the front of the packet, a positive value decreases the space.
Returns
WHD_SUCCESS or error code

Definition at line 161 of file whd_network_types.h.

uint8_t*(* whd_buffer_get_current_piece_data_pointer) (whd_buffer_t buffer)

Retrieves the current pointer of a packet buffer.

Implemented in the port layer interface which is specific to the buffering scheme in use. Since packet buffers usually need to be created with space at the front for additional headers, this function allows WHD to get the current 'front' location pointer.

Parameters
bufferThe handle of the packet buffer whose pointer is to be retrieved
Returns
The packet buffer's current pointer.

Definition at line 111 of file whd_network_types.h.

uint16_t(* whd_buffer_get_current_piece_size) (whd_buffer_t buffer)

Retrieves the size of a packet buffer.

Implemented in the port layer interface which is specific to the buffering scheme in use. Since packet buffers usually need to be created with space at the front for additional headers, the memory block use to contain a packet buffer will often be larger than the current size of the packet buffer data. This function allows WHD to retrieve the current size of a packet buffer's data.

Parameters
bufferThe handle of the packet buffer whose size is to be retrieved
Returns
The size of the packet buffer.

Definition at line 126 of file whd_network_types.h.

void(* whd_buffer_release) (whd_buffer_t buffer, whd_buffer_dir_t direction)

Releases a packet buffer.

Implemented in the port layer interface, which will be specific to the buffering scheme in use. This function is used by WHD to indicate that it no longer requires a packet buffer. The buffer can then be released back into a pool for reuse, or the dynamically allocated memory can be freed, according to how the packet was allocated. Returns void since WHD cannot do anything about failures

Parameters
bufferThe handle of the packet buffer to be released
directionIndicates transmit/receive direction that the packet buffer has been used for. This might be needed if tx/rx pools are separate.

Definition at line 97 of file whd_network_types.h.

whd_result_t(* whd_buffer_set_size) (whd_buffer_t buffer, unsigned short size)

Sets the current size of a WHD packet.

Implemented in the port layer interface which is specific to the buffering scheme in use. This function sets the current length of a WHD packet buffer

Parameters
bufferThe packet to be modified
sizeThe new size of the packet buffer
Returns
WHD_SUCCESS or error code

Definition at line 139 of file whd_network_types.h.

whd_result_t(* whd_host_buffer_get) (whd_buffer_t *buffer, whd_buffer_dir_t direction, unsigned short size, unsigned long timeout_ms)

Allocates a packet buffer.

Implemented in the port layer interface which is specific to the buffering scheme in use. Attempts to allocate a packet buffer of the size requested. It can do this by allocating a pre-existing packet from a pool, using a static buffer, or by dynamically allocating memory. The method of allocation does not concern WHD, however it must match the way the network stack expects packet buffers to be allocated. Usually WHD requires packet of size of WHD_LINK_MTU which includes the MTU, other other various header. Refer to whd_types.h to find the size of WHD_LINK_MTU

Parameters
bufferA pointer which receives the allocated packet buffer handle
directionIndicates transmit/receive direction that the packet buffer is used for. This may be needed if tx/rx pools are separate.
sizeThe number of bytes to allocate.
timeout_msMaximum period to block for available buffer
Returns
WHD_SUCCESS or error code

Definition at line 79 of file whd_network_types.h.

Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.