blob: 0f8e0ed65614e12bcb69f1c16fd8b68bc5f1aea2 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Intel MIC Platform Software Stack (MPSS)
*
* Copyright(c) 2015 Intel Corporation.
*
* Intel SCIF driver.
*/
#ifndef SCIF_RMA_LIST_H
#define SCIF_RMA_LIST_H
/*
* struct scif_rma_req - Self Registration list RMA Request query
*
* @out_window - Returns the window if found
* @offset: Starting offset
* @nr_bytes: number of bytes
* @prot: protection requested i.e. read or write or both
* @type: Specify single, partial or multiple windows
* @head: Head of list on which to search
* @va_for_temp: VA for searching temporary cached windows
*/
struct scif_rma_req {
struct scif_window **out_window;
union {
s64 offset;
unsigned long va_for_temp;
};
size_t nr_bytes;
int prot;
enum scif_window_type type;
struct list_head *head;
};
/* Insert */
void scif_insert_window(struct scif_window *window, struct list_head *head);
void scif_insert_tcw(struct scif_window *window,
struct list_head *head);
/* Query */
int scif_query_window(struct scif_rma_req *request);
int scif_query_tcw(struct scif_endpt *ep, struct scif_rma_req *request);
/* Called from close to unregister all self windows */
int scif_unregister_all_windows(scif_epd_t epd);
void scif_unmap_all_windows(scif_epd_t epd);
/* Traverse list and unregister */
int scif_rma_list_unregister(struct scif_window *window, s64 offset,
int nr_pages);
#endif /* SCIF_RMA_LIST_H */