131 lines · 3.8 KB · C
RawDownload
/* SPDX-License-Identifier: GPL-2.0 *//* Copyright (C) 2018-2025, Advanced Micro Devices, Inc. */ #ifndef _IONIC_API_H_#define _IONIC_API_H_ #include <linux/auxiliary_bus.h>#include "ionic_if.h"#include "ionic_regs.h" /** * struct ionic_aux_dev - Auxiliary device information * @lif:        Logical interface * @idx:        Index identifier * @adev:       Auxiliary device */struct ionic_aux_dev {	struct ionic_lif *lif;	int idx;	struct auxiliary_device adev;}; /** * struct ionic_admin_ctx - Admin command context * @work:       Work completion wait queue element * @cmd:        Admin command (64B) to be copied to the queue * @comp:       Admin completion (16B) copied from the queue */struct ionic_admin_ctx {	struct completion work;	union ionic_adminq_cmd cmd;	union ionic_adminq_comp comp;}; #define IONIC_INTR_INDEX_NOT_ASSIGNED	-1#define IONIC_INTR_NAME_MAX_SZ		32 /** * struct ionic_intr_info - Interrupt information * @name:          Name identifier * @rearm_count:   Interrupt rearm count * @index:         Interrupt index position * @vector:        Interrupt number * @dim_coal_hw:   Interrupt coalesce value in hardware units * @affinity_mask: CPU affinity mask * @aff_notify:    context for notification of IRQ affinity changes */struct ionic_intr_info {	char name[IONIC_INTR_NAME_MAX_SZ];	u64 rearm_count;	unsigned int index;	unsigned int vector;	u32 dim_coal_hw;	cpumask_var_t *affinity_mask;	struct irq_affinity_notify aff_notify;}; /** * ionic_adminq_post_wait - Post an admin command and wait for response * @lif:        Logical interface * @ctx:        API admin command context * * Post the command to an admin queue in the ethernet driver.  If this command * succeeds, then the command has been posted, but that does not indicate a * completion.  If this command returns success, then the completion callback * will eventually be called. * * Return: zero or negative error status */int ionic_adminq_post_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx); /** * ionic_error_to_errno - Transform ionic_if errors to os errno * @code:       Ionic error number * * Return:      Negative OS error number or zero */int ionic_error_to_errno(enum ionic_status_code code); /** * ionic_request_rdma_reset - request reset or disable the device or lif * @lif:        Logical interface * * The reset is triggered asynchronously. It will wait until reset request * completes or times out. */void ionic_request_rdma_reset(struct ionic_lif *lif); /** * ionic_intr_alloc - Reserve a device interrupt * @lif:        Logical interface * @intr:       Reserved ionic interrupt structure * * Reserve an interrupt index and get irq number for that index. * * Return: zero or negative error status */int ionic_intr_alloc(struct ionic_lif *lif, struct ionic_intr_info *intr); /** * ionic_intr_free - Release a device interrupt index * @lif:        Logical interface * @intr:       Interrupt index * * Mark the interrupt index unused so that it can be reserved again. */void ionic_intr_free(struct ionic_lif *lif, int intr); /** * ionic_get_cmb - Reserve cmb pages * @lif:         Logical interface * @pgid:        First page index * @pgaddr:      First page bus addr (contiguous) * @order:       Log base two number of pages (PAGE_SIZE) * @stride_log2: Size of stride to determine CMB pool * @expdb:       Will be set to true if this CMB region has expdb enabled * * Return: zero or negative error status */int ionic_get_cmb(struct ionic_lif *lif, u32 *pgid, phys_addr_t *pgaddr,		  int order, u8 stride_log2, bool *expdb); /** * ionic_put_cmb - Release cmb pages * @lif:        Logical interface * @pgid:       First page index * @order:      Log base two number of pages (PAGE_SIZE) */void ionic_put_cmb(struct ionic_lif *lif, u32 pgid, int order); #endif /* _IONIC_API_H_ */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t