rte_rawdev_pmd.h(3)

πŸ“¦ version 26.03, in nixos 26.05, nixpkgs unstable

okay bestie, welcome to rte_rawdev_pmd.h(3) from the Library Functions Manual πŸ’– this is the driver-facing raw PMD API page, and we are keeping every single include, struct, typedef, and function signature exactly as it is. no cap, not one detail is getting left behind.

🌸 NAME 🌸

rte_rawdev_pmd.h β€” that's the header name, periodt.

✨ SYNOPSIS ✨

the vibe check says include these exactly:

       #include <string.h>
       #include <dev_driver.h>
       #include <rte_malloc.h>
       #include <rte_log.h>
       #include <rte_common.h>
       #include 'rte_rawdev.h'

🧱 Data Structures

  • struct rte_rawdev_ops β€” the data structure listed in the synopsis, sitting pretty and staying exact.

🏷️ Typedefs

here come the typedefs, and yes every single one is staying. this is literal signature territory, bestie:

       typedef int(* rawdev_info_get_t) (struct rte_rawdev *dev,
           rte_rawdev_obj_t dev_info, size_t dev_private_size)
       typedef int(* rawdev_configure_t) (const struct rte_rawdev *dev,
           rte_rawdev_obj_t config, size_t config_size)
       typedef int(* rawdev_start_t) (struct rte_rawdev *dev)
       typedef void(* rawdev_stop_t) (struct rte_rawdev *dev)
       typedef int(* rawdev_close_t) (struct rte_rawdev *dev)
       typedef int(* rawdev_reset_t) (struct rte_rawdev *dev)
       typedef int(* rawdev_queue_conf_get_t) (struct rte_rawdev *dev, uint16_t
           queue_id, rte_rawdev_obj_t queue_conf, size_t queue_conf_size)
       typedef int(* rawdev_queue_setup_t) (struct rte_rawdev *dev, uint16_t
           queue_id, rte_rawdev_obj_t queue_conf, size_t queue_conf_size)
       typedef int(* rawdev_queue_release_t) (struct rte_rawdev *dev, uint16_t
           queue_id)
       typedef uint16_t(* rawdev_queue_count_t) (struct rte_rawdev *dev)
       typedef int(* rawdev_enqueue_bufs_t) (struct rte_rawdev *dev, struct
           rte_rawdev_buf **buffers, unsigned int count, rte_rawdev_obj_t
           context)
       typedef int(* rawdev_dequeue_bufs_t) (struct rte_rawdev *dev, struct
           rte_rawdev_buf **buffers, unsigned int count, rte_rawdev_obj_t
           context)
       typedef int(* rawdev_dump_t) (struct rte_rawdev *dev, FILE *f)
       typedef int(* rawdev_get_attr_t) (struct rte_rawdev *dev, const char
           *attr_name, uint64_t *attr_value)
       typedef int(* rawdev_set_attr_t) (struct rte_rawdev *dev, const char
           *attr_name, const uint64_t attr_value)
       typedef int(* rawdev_xstats_get_t) (const struct rte_rawdev *dev, const
           unsigned int ids[], uint64_t values[], unsigned int n)
       typedef int(* rawdev_xstats_reset_t) (struct rte_rawdev *dev, const
           uint32_t ids[], uint32_t nb_ids)
       typedef int(* rawdev_xstats_get_names_t) (const struct rte_rawdev *dev,
           struct rte_rawdev_xstats_name *xstats_names, unsigned int size)
       typedef uint64_t(* rawdev_xstats_get_by_name_t) (const struct rte_rawdev
           *dev, const char *name, unsigned int *id)
       typedef int(* rawdev_firmware_status_get_t) (struct rte_rawdev *dev,
           rte_rawdev_obj_t status_info)
       typedef int(* rawdev_firmware_version_get_t) (struct rte_rawdev *dev,
           rte_rawdev_obj_t version_info)
       typedef int(* rawdev_firmware_load_t) (struct rte_rawdev *dev,
           rte_rawdev_obj_t firmware_buf)
       typedef int(* rawdev_firmware_unload_t) (struct rte_rawdev *dev)
       typedef int(* rawdev_selftest_t) (uint16_t dev_id)

πŸ”§ Functions

and here are the functions, exact signatures only, no edits, no guesses:

       static struct rte_rawdev * rte_rawdev_pmd_get_named_dev (const char
           *name)
       static struct rte_rawdev * rte_rawdev_pmd_get_dev (uint8_t dev_id)
       static unsigned rte_rawdev_pmd_is_valid_dev (uint8_t dev_id)
       struct rte_rawdev * rte_rawdev_pmd_allocate (const char *name, size_t
           dev_private_size, int socket_id)
       int rte_rawdev_pmd_release (struct rte_rawdev *rawdev)
       struct rte_rawdev * rte_rawdev_pmd_init (const char *name, size_t
           dev_private_size, int socket_id)
       int rte_rawdev_pmd_uninit (const char *name)

πŸ’– Detailed Description πŸ’–

RTE RAW PMD APIs β€” that's the zone we're in, bestie.

Note β€” Driver facing APIs for a raw device. These are not to be called directly by any application.

Definition in file rte_rawdev_pmd.h.

πŸ’– Typedef Documentation πŸ’–

✨ rawdev_info_get_t ✨

typedef int(* rawdev_info_get_t) (struct rte_rawdev *dev, rte_rawdev_obj_t
       dev_info, size_t dev_private_size)

Okay so this is the big β€œdefinitions of all functions exported by a driver” situation, bestie. It’s the generic structure of type rawdev_ops supplied in the rte_rawdev structure associated with a device. Its job? Get device information of a device. Slay.

Parameters

  • dev β€” Raw device pointer
  • dev_info β€” Raw device information structure
  • dev_private_size β€” The size of the structure pointed to by dev_info->dev_private

Returns

Returns 0 on success, negative error code on failure.

Definition at line 172 of file rte_rawdev_pmd.h.


πŸŽ€ rawdev_configure_t πŸŽ€

typedef int(* rawdev_configure_t) (const struct rte_rawdev *dev,
       rte_rawdev_obj_t config, size_t config_size)

Configure a device. That’s it, that’s the vibe.

Parameters

  • dev β€” Raw device pointer
  • config β€” Void object containing device specific configuration
  • config_size β€” Size of the memory allocated for the configuration

Returns

Returns 0 on success.

Definition at line 189 of file rte_rawdev_pmd.h.


🌸 rawdev_start_t 🌸

typedef int(* rawdev_start_t) (struct rte_rawdev *dev)

Start a configured device. Iconic behavior, honestly.

Parameters

  • dev β€” Raw device pointer

Returns

Returns 0 on success.

Definition at line 202 of file rte_rawdev_pmd.h.


πŸ¦‹ rawdev_stop_t πŸ¦‹

typedef void(* rawdev_stop_t) (struct rte_rawdev *dev)

Stop a configured device. No return value, just main character exit energy.

Parameters

  • dev β€” Raw device pointer

Definition at line 210 of file rte_rawdev_pmd.h.


πŸ’… rawdev_close_t πŸ’…

typedef int(* rawdev_close_t) (struct rte_rawdev *dev)

Close a configured device. Bye bestie.

Parameters

  • dev β€” Raw device pointer

Returns

  • 0 on success
  • (-EAGAIN) if can’t close as device is busy

Definition at line 222 of file rte_rawdev_pmd.h.


⭐ rawdev_reset_t ⭐

typedef int(* rawdev_reset_t) (struct rte_rawdev *dev)

Reset a configured device. Fresh start era.

Parameters

  • dev β€” Raw device pointer

Returns

0 for success, !0 for failure.

Definition at line 233 of file rte_rawdev_pmd.h.


🌈 rawdev_queue_conf_get_t 🌈

typedef int(* rawdev_queue_conf_get_t) (struct rte_rawdev *dev, uint16_t
       queue_id, rte_rawdev_obj_t queue_conf, size_t queue_conf_size)

Retrieve the current raw queue configuration. Lowkey important.

Parameters

  • dev β€” Raw device pointer
  • queue_id β€” Raw device queue index
  • queue_conf β€” Raw device queue configuration structure
  • queue_conf_size β€” Size of the memory allocated for the configuration

Returns

Returns 0 on success, negative errno on failure.

Definition at line 250 of file rte_rawdev_pmd.h.


πŸ“ rawdev_queue_setup_t πŸ“

typedef int(* rawdev_queue_setup_t) (struct rte_rawdev *dev, uint16_t
       queue_id, rte_rawdev_obj_t queue_conf, size_t queue_conf_size)

Setup an raw queue. Yes, the original says β€œan raw queue,” and we are respecting the lore.

Parameters

  • dev β€” Raw device pointer
  • queue_id β€” Rawqueue index
  • queue_conf β€” Rawqueue configuration structure
  • queue_conf_size β€” Size of the memory allocated for the configuration

Returns

Returns 0 on success.

Definition at line 270 of file rte_rawdev_pmd.h.


🧚 rawdev_queue_release_t 🧚

typedef int(* rawdev_queue_release_t) (struct rte_rawdev *dev, uint16_t
       queue_id)

Release resources allocated by given raw queue. Give the queue its release funds, periodt.

Parameters

  • dev β€” Raw device pointer
  • queue_id β€” Raw queue index

Definition at line 283 of file rte_rawdev_pmd.h.


πŸ‘‘ rawdev_queue_count_t πŸ‘‘

typedef uint16_t(* rawdev_queue_count_t) (struct rte_rawdev *dev)

Get the count of number of queues configured on this device.

Another way to fetch this information is to fetch the device configuration. But, that assumes that the device configuration managed by the driver has that kind of information.

This function helps in getting queue count supported, independently. It can help in cases where iterator needs to be implemented.

Parameters

  • dev β€” Raw device pointer

Returns

Number of queues; 0 is assumed to be a valid response.

Definition at line 301 of file rte_rawdev_pmd.h.


πŸ”₯ rawdev_enqueue_bufs_t πŸ”₯

typedef int(* rawdev_enqueue_bufs_t) (struct rte_rawdev *dev, struct
       rte_rawdev_buf **buffers, unsigned int count, rte_rawdev_obj_t context)

Enqueue an array of raw buffers to the device.

Buffer being used is opaque β€” it can be obtained from mempool or from any other source. Interpretation of buffer is responsibility of driver.

Parameters

  • dev β€” Raw device pointer
  • buffers β€” array of buffers
  • count β€” number of buffers passed
  • context β€” an opaque object representing context of the call; for example, an application can pass information about the queues on which enqueue needs to be done. Or, the enqueue operation might be passed reference to an object containing a callback (agreed upon between application and driver).

Returns

  • >=0 β€” Count of buffers successfully enqueued (0: no buffers enqueued)
  • <0 β€” Error count in case of error

Definition at line 325 of file rte_rawdev_pmd.h.


πŸ’œ rawdev_dequeue_bufs_t πŸ’œ

typedef int(* rawdev_dequeue_bufs_t) (struct rte_rawdev *dev, struct
       rte_rawdev_buf **buffers, unsigned int count, rte_rawdev_obj_t context)

Dequeue an array of raw buffers from the device.

Parameters

  • dev β€” Raw device pointer
  • buffers β€” array of buffers
  • count β€” Max buffers expected to be dequeued
  • context β€” an opaque object representing context of the call. Based on this object, the application and driver can coordinate for dequeue operation involving agreed upon semantics. For example, queue information/id on which Dequeue needs to be performed.

Returns

  • >0, ~0: Count of buffers returned
  • <0: Error

Whether short dequeue is success or failure is decided between app and driver.

Definition at line 350 of file rte_rawdev_pmd.h.


🌟 rawdev_dump_t 🌟

typedef int(* rawdev_dump_t) (struct rte_rawdev *dev, FILE *f)

Dump internal information. Spill the tea, but into a file.

Parameters

  • dev β€” Raw device pointer
  • f β€” A pointer to a file for output

Returns

0 for success, !0 Error.

Definition at line 366 of file rte_rawdev_pmd.h.


🫢 rawdev_get_attr_t 🫢

typedef int(* rawdev_get_attr_t) (struct rte_rawdev *dev, const char
       *attr_name, uint64_t *attr_value)

Get an attribute value from implementation. Attribute is an opaque handle agreed upon between application and PMD.

Parameters

  • dev β€” Raw device pointer
  • attr_name β€” Opaque object representing an attribute in implementation.
  • attr_value β€” [out] Opaque response to the attribute value. In case of error, this remains untouched. This is double pointer of void type.

Returns

0 for success, !0 Error; attr_value remains untouched in case of error.

Definition at line 383 of file rte_rawdev_pmd.h.


πŸ’– rawdev_set_attr_t πŸ’–

typedef int(* rawdev_set_attr_t) (struct rte_rawdev *dev, const char
       *attr_name, const uint64_t attr_value)

Set an attribute value. Attribute is an opaque handle agreed upon between application and PMD.

Parameters

  • dev β€” Raw device pointer
  • attr_name β€” Opaque object representing an attribute in implementation.
  • attr_value β€” Value of the attribute represented by attr_name

Returns

0 for success, !0 Error.

Definition at line 401 of file rte_rawdev_pmd.h.


🌸 rawdev_xstats_get_t 🌸

typedef int(* rawdev_xstats_get_t) (const struct rte_rawdev *dev, const
       unsigned int ids[], uint64_t values[], unsigned int n)

Retrieve a set of statistics from device. Note: Being a raw device, the stats are specific to the device being implemented thus represented as xstats.

Parameters

  • dev β€” Raw device pointer
  • ids β€” The stat ids to retrieve
  • values β€” The returned stat values
  • n β€” The number of id values and entries in the values array

Returns

The number of stat values successfully filled into the values array.

Definition at line 421 of file rte_rawdev_pmd.h.


πŸŽ€ rawdev_xstats_reset_t πŸŽ€

typedef int(* rawdev_xstats_reset_t) (struct rte_rawdev *dev, const uint32_t
       ids[], uint32_t nb_ids)

Resets the statistic values in xstats for the device. Clean slate, bestie.

Definition at line 427 of file rte_rawdev_pmd.h.


🌈 rawdev_xstats_get_names_t 🌈

typedef int(* rawdev_xstats_get_names_t) (const struct rte_rawdev *dev,
       struct rte_rawdev_xstats_name *xstats_names, unsigned int size)

Get names of extended stats of an raw device. Again: β€œan raw device” is canon here.

Parameters

  • dev β€” Raw device pointer
  • xstats_names β€” Array of name values to be filled in
  • size β€” Number of values in the xstats_names array

Returns

When size >= the number of stats, return the number of stat values filled into the array. When size < the number of available stats, return the number of stats values, and do not fill in any data into xstats_names.

Definition at line 446 of file rte_rawdev_pmd.h.


πŸ“ rawdev_xstats_get_by_name_t πŸ“

typedef uint64_t(* rawdev_xstats_get_by_name_t) (const struct rte_rawdev
       *dev, const char *name, unsigned int *id)

Get value of one stats and optionally return its id.

Parameters

  • dev β€” Raw device pointer
  • name β€” The name of the stat to retrieve
  • id β€” Pointer to an unsigned int where we store the stat-id. This pointer may be null if the id is not required.

Returns

The value of the stat, or (uint64_t)-1 if the stat is not found. If the stat is not found, the id value will be returned as (unsigned)-1, if id pointer is non-NULL.

Definition at line 465 of file rte_rawdev_pmd.h.


🧚 rawdev_firmware_status_get_t 🧚

typedef int(* rawdev_firmware_status_get_t) (struct rte_rawdev *dev,
       rte_rawdev_obj_t status_info)

Get firmware/device-stack status. Implementation to allocate buffer for returning information.

Parameters

  • dev β€” Raw device pointer
  • status_info β€” void block containing device specific status information

Returns

0 for success, !0 for failure, with undefined value in status_info.

Definition at line 481 of file rte_rawdev_pmd.h.


πŸ‘‘ rawdev_firmware_version_get_t πŸ‘‘

typedef int(* rawdev_firmware_version_get_t) (struct rte_rawdev *dev,
       rte_rawdev_obj_t version_info)

Get firmware version information.

Parameters

  • dev β€” Raw device pointer
  • version_info β€” void pointer to version information returned by device

Returns

0 for success, !0 for failure, with undefined value in version_info.

Definition at line 495 of file rte_rawdev_pmd.h.


πŸ”₯ rawdev_firmware_load_t πŸ”₯

typedef int(* rawdev_firmware_load_t) (struct rte_rawdev *dev,
       rte_rawdev_obj_t firmware_buf)

Load firmware from a buffer (DMA’able). Very demure, very DMA.

Parameters

  • dev β€” Raw device pointer
  • firmware_buf β€” Pointer to firmware image

Returns

  • >0, ~0: for successful load
  • <0: for failure

See also

Application may use firmware_version_get for ascertaining successful load.

Definition at line 512 of file rte_rawdev_pmd.h.


πŸ’œ rawdev_firmware_unload_t πŸ’œ

typedef int(* rawdev_firmware_unload_t) (struct rte_rawdev *dev)

Unload firmware.

Parameters

  • dev β€” Raw device pointer

Returns

  • >0, ~0 for successful unloading
  • <0 for failure in unloading
Note: Application can use the firmware_status_get or firmware_version_get to get result of unload.

Definition at line 527 of file rte_rawdev_pmd.h.


⭐ rawdev_selftest_t ⭐

typedef int(* rawdev_selftest_t) (uint16_t dev_id)

Start rawdev selftest.

Returns

Return 0 on success.

Definition at line 535 of file rte_rawdev_pmd.h.

πŸ’– Function Documentation πŸ’–

These are the actual functions, and every parameter, return value, and line number is staying. No skipping, no cap. πŸ’…

struct rte_rawdev *rte_rawdev_pmd_get_named_dev(const char *name) β€” [inline], [static]

struct rte_rawdev *rte_rawdev_pmd_get_named_dev(const char *name)

Context: the pool of rte_rawdev structures. This one grabs the rte_rawdev structure device pointer for the named device. πŸŽ€

Parameters

  • name β€” device name to select the device structure.

Returns

  • The rte_rawdev structure pointer for the given device ID.

Definition at line 87 of file rte_rawdev_pmd.h.


struct rte_rawdev *rte_rawdev_pmd_get_dev(uint8_t dev_id) β€” [inline], [static]

struct rte_rawdev *rte_rawdev_pmd_get_dev(uint8_t dev_id)

Same mission, different lookup key: get the rte_rawdev structure device pointer for the given device ID. πŸ¦‹

Parameters

  • dev_id β€” raw device index.

Returns

  • The rte_rawdev structure pointer for the given device ID.

Definition at line 115 of file rte_rawdev_pmd.h.


unsigned rte_rawdev_pmd_is_valid_dev(uint8_t dev_id) β€” [inline], [static]

unsigned rte_rawdev_pmd_is_valid_dev(uint8_t dev_id)

Vibe check for a raw device index: validate if it's a valid attached raw device. βœ…

Parameters

  • dev_id β€” raw device index.

Returns

  • If the device index is valid (1) or not (0).

Definition at line 139 of file rte_rawdev_pmd.h.


struct rte_rawdev *rte_rawdev_pmd_allocate(const char *name, size_t dev_private_size, int socket_id)

struct rte_rawdev *rte_rawdev_pmd_allocate(const char *name, size_t dev_private_size, int socket_id)

This one allocates a new rawdev slot for an raw device and returns the pointer to that slot so the driver can use it. Main character allocation energy. πŸ‘‘

Parameters

  • name β€” Unique identifier name for each device.
  • dev_private_size β€” Size of private data memory allocated within rte_rawdev object. Set to 0 to disable internal memory allocation and allow for self-allocation.
  • socket_id β€” Socket to allocate resources on.

Returns

  • Slot in the rte_dev_devices array for a new device;

int rte_rawdev_pmd_release(struct rte_rawdev *rawdev)

int rte_rawdev_pmd_release(struct rte_rawdev *rawdev)

Release the specified rawdev device. Say bye to it properly. 🫢

Parameters

  • rawdev β€” The rawdev pointer is the address of the rte_rawdev structure.

Returns

  • 0 on success, negative on error.

struct rte_rawdev *rte_rawdev_pmd_init(const char *name, size_t dev_private_size, int socket_id)

struct rte_rawdev *rte_rawdev_pmd_init(const char *name, size_t dev_private_size, int socket_id)

Creates a new raw device and returns the pointer to that device. It's giving fresh device, fresh start. 🌸

Parameters

  • name β€” Pointer to a character array containing name of the device.
  • dev_private_size β€” Size of raw PMDs private data.
  • socket_id β€” Socket to allocate resources on.

Returns

  • Raw device pointer if device is successfully created.
  • NULL if device cannot be created.

int rte_rawdev_pmd_uninit(const char *name)

int rte_rawdev_pmd_uninit(const char *name)

Destroy a raw device πŸ’€

Parameters

  • name β€” Name of the device.

Returns

  • 0 on success, negative on error.

✨ Author ✨

Generated automatically by Doxygen for DPDK from the source code.


Okay bestie, that's the whole page. Footer deets but make it cute: this is DPDK, version 26.03.0, for rte_rawdev_pmd.h(3), and the date is the one Doxygen stamped in your footer. 🫢✨

πŸ“¦ where this page comes from