ifpoll: Factor out code for devices which does not support multiple queues
[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 sysctl_ctx_list;
7 struct sysctl_oid;
8 struct lwkt_serialize;
9 struct ifnet;
10
11 typedef void    (*ifpoll_iofn_t)(struct ifnet *, void *, int);
12 typedef void    (*ifpoll_stfn_t)(struct ifnet *);
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[MAXCPU];
29         struct ifpoll_io        ifpi_tx[MAXCPU];
30 };
31
32 struct ifpoll_compat {
33         int                     ifpc_stcount;
34         int                     ifpc_stfrac;
35
36         int                     ifpc_cpuid;
37         struct lwkt_serialize   *ifpc_serializer;
38 };
39
40 void    ifpoll_compat_setup(struct ifpoll_compat *, struct sysctl_ctx_list *,
41             struct sysctl_oid *, int, struct lwkt_serialize *);
42
43 #endif  /* _KERNEL */
44
45 #endif  /* !_NET_IF_POLL_H_ */