1/*
2 * Copyright (c) 2007-2011, ETH Zurich.
3 * All rights reserved.
4 *
5 * This file is distributed under the terms in the attached LICENSE file.
6 * If you do not find this file, copies can be found by writing to:
7 * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
8 */
9
10/*
11 * This interface is used in the sfn5122f driver for the device specific
12 * communication between the device manager and the queue manager. It is
13 * exposed by the device manager, and every queue manager connects to it.
14 */
15interface sfn5122f "sfn5122f queue management interface" {
16    typedef enum {PORT_TCP, PORT_UDP} port_type;
17    alias qid uint16;
18
19    message request_device_info();
20    message queue_init_data(cap registers, uint64 macaddr);
21
22    /* Upon initialization the queue driver registers its memory with
23       the device manager. */
24    message register_queue_memory(qid    id,
25                               cap    tx,
26                               cap    rx,
27                               cap    ev,
28                               uint32 rxbufsz,
29                               bool   use_irq,
30                               bool   userspace,
31                               uint8 vector,
32                               uint16 core);
33    message queue_memory_registered();
34
35    /* FIXME: this is not technically a response, but a request by the server,
36              hope this works anyway... I'd like the dev mgr to be server. */
37    /* Tells queue driver to write the tail pointers for the rx and
38       tx queues after initialization or reset */
39    message write_queue_tails();
40
41    /* Called by queue manager if it is done, and is going to terminate. */
42    rpc terminate_queue(in qid id);
43
44    /*****************************************************
45     * Filter management (used by device  manager library)
46     *****************************************************/
47
48    rpc register_port_filter(in uint64    buf_id_rx,
49                              in uint64    buf_id_tx,
50                              in qid       queue,
51                              in port_type type,
52                              in uint16    port,
53                              out errval rerr,
54                              out uint64 filter);
55
56    rpc unregister_filter(in uint64 filter, out errval rerr);
57};
58