ntb_transport.h revision 304380
12926Sphk/*-
22926Sphk * Copyright (c) 2016 Alexander Motin <mav@FreeBSD.org>
32926Sphk * All rights reserved.
493150Sphk *
52926Sphk * Redistribution and use in source and binary forms, with or without
62926Sphk * modification, are permitted provided that the following conditions
72926Sphk * are met:
82926Sphk * 1. Redistributions of source code must retain the above copyright
950479Speter *    notice, this list of conditions and the following disclaimer.
102926Sphk * 2. Redistributions in binary form must reproduce the above copyright
112926Sphk *    notice, this list of conditions and the following disclaimer in the
122926Sphk *    documentation and/or other materials provided with the distribution.
132886Sphk *
142926Sphk * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
152886Sphk * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
162886Sphk * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
174816Sphk * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
182886Sphk * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
192886Sphk * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
202886Sphk * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
216889Sphk * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
222886Sphk * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
232886Sphk * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
242886Sphk * SUCH DAMAGE.
252886Sphk *
2617946Sphk * $FreeBSD: stable/10/sys/dev/ntb/ntb_transport.h 304380 2016-08-18 10:39:00Z mav $
272886Sphk */
2817946Sphk
296889Sphkstruct ntb_transport_qp;
309491Sphk
318857Srgrimesextern devclass_t ntb_transport_devclass;
328857Srgrimes
334816Sphkenum ntb_link_event {
342886Sphk	NTB_LINK_DOWN = 0,
352886Sphk	NTB_LINK_UP,
362886Sphk};
372886Sphk
382886Sphkstruct ntb_queue_handlers {
398857Srgrimes	void (*rx_handler)(struct ntb_transport_qp *qp, void *qp_data,
402886Sphk	    void *data, int len);
412886Sphk	void (*tx_handler)(struct ntb_transport_qp *qp, void *qp_data,
422886Sphk	    void *data, int len);
432886Sphk	void (*event_handler)(void *data, enum ntb_link_event status);
442886Sphk};
452886Sphk
462886Sphkunsigned char ntb_transport_qp_num(struct ntb_transport_qp *qp);
478857Srgrimesunsigned int ntb_transport_max_size(struct ntb_transport_qp *qp);
482886Sphkstruct ntb_transport_qp *
492886Sphkntb_transport_create_queue(void *data, device_t dev,
502886Sphk			   const struct ntb_queue_handlers *handlers);
512886Sphkvoid ntb_transport_free_queue(struct ntb_transport_qp *qp);
522886Sphkint ntb_transport_rx_enqueue(struct ntb_transport_qp *qp, void *cb, void *data,
532886Sphk			     unsigned int len);
542886Sphkint ntb_transport_tx_enqueue(struct ntb_transport_qp *qp, void *cb, void *data,
552886Sphk			     unsigned int len);
562886Sphkvoid *ntb_transport_rx_remove(struct ntb_transport_qp *qp, unsigned int *len);
576889Sphkvoid ntb_transport_link_up(struct ntb_transport_qp *qp);
5817946Sphkvoid ntb_transport_link_down(struct ntb_transport_qp *qp);
5917946Sphkbool ntb_transport_link_query(struct ntb_transport_qp *qp);
607395Sphkunsigned int ntb_transport_tx_free_entry(struct ntb_transport_qp *qp);
6117946Sphk