Add ifpoll, which support hardware TX/RX queues based polling.
[dragonfly.git] / sys / net / if_poll.h
1 #ifndef _NET_IF_POLL_H_
2 #define _NET_IF_POLL_H_
3
4 #ifdef _KERNEL
5
6 struct lwkt_serialize;
7 struct ifnet;
8
9 #define IFPOLL_CTX_MAX          32
10
11 typedef void    (*ifpoll_iofn_t)(struct ifnet *, void *, int);
12 typedef void    (*ifpoll_stfn_t)(struct ifnet *, int);
13
14 struct ifpoll_status {
15         struct lwkt_serialize   *serializer;
16         ifpoll_stfn_t           status_func;
17 };
18
19 struct ifpoll_io {
20         struct lwkt_serialize   *serializer;
21         void                    *arg;
22         ifpoll_iofn_t           poll_func;
23 };
24
25 struct ifpoll_info {
26         struct ifnet            *ifpi_ifp;
27         struct ifpoll_status    ifpi_status;
28         struct ifpoll_io        ifpi_rx[IFPOLL_CTX_MAX];
29         struct ifpoll_io        ifpi_tx[IFPOLL_CTX_MAX];
30 };
31
32 #endif  /* _KERNEL */
33
34 #endif  /* !_NET_IF_POLL_H_ */