summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/dvb-core
diff options
context:
space:
mode:
authorJohannes Stezenbach <devnull@localhost>2005-01-08 18:26:26 +0000
committerJohannes Stezenbach <devnull@localhost>2005-01-08 18:26:26 +0000
commite6828816391df78801ee9ab246325cd7a51a60c1 (patch)
tree55dae2e4a2b27016397528abf4d26c55441cad28 /linux/drivers/media/dvb/dvb-core
parentd81bf90c5b7d37b521c936be7360363904eeebea (diff)
downloadmediapointer-dvb-s2-e6828816391df78801ee9ab246325cd7a51a60c1.tar.gz
mediapointer-dvb-s2-e6828816391df78801ee9ab246325cd7a51a60c1.tar.bz2
patch by Emard:
budgetpatch integrated into dvb-ttpci: enables full ts option running in parallel with all previous functions of dvb-ttpci. This is done by opening DMA3 channel at port B and registering it as second demux named demux1 demux1 has full ts capability and is accompanied by net1 and dvr1 but has no frontend device. It uses frontend0 which is in hardware permanently connected to both demux0 and demux1. net1 can create its full ts network devices, they are named dvb010, dv010 etc. Devices created by net0 remain named dvb0_0 etc as before. kernel parameter for dvb-ttpci: budgetpatch=0,1,2 0-no budgetpatch 1-autodetect 2-alywas autodetect resets saa7146. Avoid on systems that don't like resetting of saa7146.
Diffstat (limited to 'linux/drivers/media/dvb/dvb-core')
-rw-r--r--linux/drivers/media/dvb/dvb-core/dvb_net.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/linux/drivers/media/dvb/dvb-core/dvb_net.c b/linux/drivers/media/dvb/dvb-core/dvb_net.c
index 707ad80ab..64977ba4b 100644
--- a/linux/drivers/media/dvb/dvb-core/dvb_net.c
+++ b/linux/drivers/media/dvb/dvb-core/dvb_net.c
@@ -123,7 +123,7 @@ static void hexdump( const unsigned char *buf, unsigned short len )
struct dvb_net_priv {
int in_use;
struct net_device_stats stats;
- char name[6];
+ char name[7];
u16 pid;
struct dvb_net *host;
struct dmx_demux *demux;
@@ -1157,19 +1157,29 @@ static int dvb_net_add_if(struct dvb_net *dvbnet, u16 pid, u8 feedtype)
struct dvb_net_priv *priv;
int result;
int if_num;
-
+ char name[20];
+
+ memset(name, 0, sizeof(name));
+
if (feedtype != DVB_NET_FEEDTYPE_MPE && feedtype != DVB_NET_FEEDTYPE_ULE)
return -EINVAL;
if ((if_num = get_if(dvbnet)) < 0)
return -EINVAL;
- net = alloc_netdev(sizeof(struct dvb_net_priv), "dvb",
+ sprintf(name, "dvb%1d%1d%1d",
+ dvbnet->dvbdev->adapter->num, dvbnet->dvbdev->id, if_num);
+ /* compatibility fix to keep dvb0_0 format */
+ if(name[4] == '0')
+ name[4] = '_';
+
+ net = alloc_netdev(sizeof(struct dvb_net_priv), name,
dvb_net_setup);
if (!net)
return -ENOMEM;
- sprintf(net->name, "dvb%d_%d", dvbnet->dvbdev->adapter->num, if_num);
-
+ sprintf(net->name, "%s", name);
+ printk("dvb_net: created network interface %s\n", net->name);
+
net->addr_len = 6;
memcpy(net->dev_addr, dvbnet->dvbdev->adapter->proposed_mac, 6);
@@ -1211,6 +1221,7 @@ static int dvb_net_remove_if(struct dvb_net *dvbnet, unsigned int num)
dvb_net_stop(net);
flush_scheduled_work();
+ printk("dvb_net: removed network interface %s\n", net->name);
unregister_netdev(net);
dvbnet->state[num]=0;
dvbnet->device[num] = NULL;