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