diff options
| author | Johannes Stezenbach <devnull@localhost> | 2005-01-08 18:26:26 +0000 |
|---|---|---|
| committer | Johannes Stezenbach <devnull@localhost> | 2005-01-08 18:26:26 +0000 |
| commit | e6828816391df78801ee9ab246325cd7a51a60c1 (patch) | |
| tree | 55dae2e4a2b27016397528abf4d26c55441cad28 /linux/drivers/media/dvb/dvb-core | |
| parent | d81bf90c5b7d37b521c936be7360363904eeebea (diff) | |
| download | mediapointer-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.c | 21 |
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; |
