xref: /openbmc/linux/net/qrtr/qrtr.h (revision 4beb17e5)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2bdabad3eSCourtney Cavin #ifndef __QRTR_H_
3bdabad3eSCourtney Cavin #define __QRTR_H_
4bdabad3eSCourtney Cavin 
5bdabad3eSCourtney Cavin #include <linux/types.h>
6bdabad3eSCourtney Cavin 
7bdabad3eSCourtney Cavin struct sk_buff;
8bdabad3eSCourtney Cavin 
9bdabad3eSCourtney Cavin /* endpoint node id auto assignment */
10bdabad3eSCourtney Cavin #define QRTR_EP_NID_AUTO (-1)
11bdabad3eSCourtney Cavin 
12bdabad3eSCourtney Cavin /**
13bdabad3eSCourtney Cavin  * struct qrtr_endpoint - endpoint handle
14bdabad3eSCourtney Cavin  * @xmit: Callback for outgoing packets
15bdabad3eSCourtney Cavin  *
16bdabad3eSCourtney Cavin  * The socket buffer passed to the xmit function becomes owned by the endpoint
17bdabad3eSCourtney Cavin  * driver.  As such, when the driver is done with the buffer, it should
18bdabad3eSCourtney Cavin  * call kfree_skb() on failure, or consume_skb() on success.
19bdabad3eSCourtney Cavin  */
20bdabad3eSCourtney Cavin struct qrtr_endpoint {
21bdabad3eSCourtney Cavin 	int (*xmit)(struct qrtr_endpoint *ep, struct sk_buff *skb);
22bdabad3eSCourtney Cavin 	/* private: not for endpoint use */
23bdabad3eSCourtney Cavin 	struct qrtr_node *node;
24bdabad3eSCourtney Cavin };
25bdabad3eSCourtney Cavin 
26bdabad3eSCourtney Cavin int qrtr_endpoint_register(struct qrtr_endpoint *ep, unsigned int nid);
27bdabad3eSCourtney Cavin 
28bdabad3eSCourtney Cavin void qrtr_endpoint_unregister(struct qrtr_endpoint *ep);
29bdabad3eSCourtney Cavin 
30bdabad3eSCourtney Cavin int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len);
31bdabad3eSCourtney Cavin 
32*4beb17e5SQinglang Miao int qrtr_ns_init(void);
330c2204a4SManivannan Sadhasivam 
340c2204a4SManivannan Sadhasivam void qrtr_ns_remove(void);
350c2204a4SManivannan Sadhasivam 
36bdabad3eSCourtney Cavin #endif
37