blob: cc01dffcc9f359a0a65ba055c9ecc57acb313c8c [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001/*
2 * dvb_net.h
3 *
4 * Copyright (C) 2001 Ralph Metzler for convergence integrated media GmbH
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public License
8 * as published by the Free Software Foundation; either version 2.1
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 */
17
18#ifndef _DVB_NET_H_
19#define _DVB_NET_H_
20
21#include <linux/module.h>
22#include <linux/netdevice.h>
23#include <linux/inetdevice.h>
24#include <linux/etherdevice.h>
25#include <linux/skbuff.h>
26
27#include <media/dvbdev.h>
28
29#define DVB_NET_DEVICES_MAX 10
30
31#ifdef CONFIG_DVB_NET
32
33/**
34 * struct dvb_net - describes a DVB network interface
35 *
36 * @dvbdev: pointer to &struct dvb_device.
37 * @device: array of pointers to &struct net_device.
38 * @state: array of integers to each net device. A value
39 * different than zero means that the interface is
40 * in usage.
41 * @exit: flag to indicate when the device is being removed.
42 * @demux: pointer to &struct dmx_demux.
43 * @ioctl_mutex: protect access to this struct.
44 * @remove_mutex: mutex that avoids a race condition between a callback
45 * called when the hardware is disconnected and the
46 * file_operations of dvb_net.
47 *
48 * Currently, the core supports up to %DVB_NET_DEVICES_MAX (10) network
49 * devices.
50 */
51
52struct dvb_net {
53 struct dvb_device *dvbdev;
54 struct net_device *device[DVB_NET_DEVICES_MAX];
55 int state[DVB_NET_DEVICES_MAX];
56 unsigned int exit:1;
57 struct dmx_demux *demux;
58 struct mutex ioctl_mutex;
59 struct mutex remove_mutex;
60};
61
62/**
63 * dvb_net_init - nitializes a digital TV network device and registers it.
64 *
65 * @adap: pointer to &struct dvb_adapter.
66 * @dvbnet: pointer to &struct dvb_net.
67 * @dmxdemux: pointer to &struct dmx_demux.
68 */
69int dvb_net_init(struct dvb_adapter *adap, struct dvb_net *dvbnet,
70 struct dmx_demux *dmxdemux);
71
72/**
73 * dvb_net_release - releases a digital TV network device and unregisters it.
74 *
75 * @dvbnet: pointer to &struct dvb_net.
76 */
77void dvb_net_release(struct dvb_net *dvbnet);
78
79#else
80
81struct dvb_net {
82 struct dvb_device *dvbdev;
83};
84
85static inline void dvb_net_release(struct dvb_net *dvbnet)
86{
87}
88
89static inline int dvb_net_init(struct dvb_adapter *adap,
90 struct dvb_net *dvbnet, struct dmx_demux *dmx)
91{
92 return 0;
93}
94
95#endif /* ifdef CONFIG_DVB_NET */
96
97#endif