aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@s-opensource.com>2016-10-13 06:14:38 -0400
committerMauro Carvalho Chehab <mchehab@s-opensource.com>2016-10-21 06:43:24 -0400
commitdd79d27e1bbded7366ade6d25fbfde305e33fad8 (patch)
tree36418da9a4f875830d93fad51f86854ab1f8de4b
parent801edd6bb9b223390028dc7f565904a2833d20e1 (diff)
[media] dvb-core: get rid of demux optional circular buffer
There is a provision at the dvb_demux.c to use a vmalloc'ed circular buffer, enabled via an extra #ifdef option that it is not at Kconfig. Enabling it will only make the Kernel to allocate/deallocate such buffer, but no code would actually use it. So, no practical effect, except for sparing some memory without any good reason. So, get rid of such dead code. Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
-rw-r--r--drivers/media/dvb-core/demux.h5
-rw-r--r--drivers/media/dvb-core/dmxdev.c4
-rw-r--r--drivers/media/dvb-core/dvb_demux.c42
-rw-r--r--drivers/media/dvb-core/dvb_demux.h2
-rw-r--r--drivers/media/dvb-core/dvb_net.c3
5 files changed, 6 insertions, 50 deletions
diff --git a/drivers/media/dvb-core/demux.h b/drivers/media/dvb-core/demux.h
index aeda2b64931c..f8adf4506a45 100644
--- a/drivers/media/dvb-core/demux.h
+++ b/drivers/media/dvb-core/demux.h
@@ -103,7 +103,6 @@ struct dmx_ts_feed {
103 u16 pid, 103 u16 pid,
104 int type, 104 int type,
105 enum dmx_ts_pes pes_type, 105 enum dmx_ts_pes pes_type,
106 size_t circular_buffer_size,
107 ktime_t timeout); 106 ktime_t timeout);
108 int (*start_filtering)(struct dmx_ts_feed *feed); 107 int (*start_filtering)(struct dmx_ts_feed *feed);
109 int (*stop_filtering)(struct dmx_ts_feed *feed); 108 int (*stop_filtering)(struct dmx_ts_feed *feed);
@@ -181,7 +180,6 @@ struct dmx_section_feed {
181 /* public: */ 180 /* public: */
182 int (*set)(struct dmx_section_feed *feed, 181 int (*set)(struct dmx_section_feed *feed,
183 u16 pid, 182 u16 pid,
184 size_t circular_buffer_size,
185 int check_crc); 183 int check_crc);
186 int (*allocate_filter)(struct dmx_section_feed *feed, 184 int (*allocate_filter)(struct dmx_section_feed *feed,
187 struct dmx_section_filter **filter); 185 struct dmx_section_filter **filter);
@@ -206,8 +204,7 @@ struct dmx_section_feed {
206 * the &dmx_demux. 204 * the &dmx_demux.
207 * Any TS packets that match the filter settings are copied to a circular 205 * Any TS packets that match the filter settings are copied to a circular
208 * buffer. The filtered TS packets are delivered to the client using this 206 * buffer. The filtered TS packets are delivered to the client using this
209 * callback function. The size of the circular buffer is controlled by the 207 * callback function.
210 * circular_buffer_size parameter of the &dmx_ts_feed.@set function.
211 * It is expected that the @buffer1 and @buffer2 callback parameters point to 208 * It is expected that the @buffer1 and @buffer2 callback parameters point to
212 * addresses within the circular buffer, but other implementations are also 209 * addresses within the circular buffer, but other implementations are also
213 * possible. Note that the called party should not try to free the memory 210 * possible. Note that the called party should not try to free the memory
diff --git a/drivers/media/dvb-core/dmxdev.c b/drivers/media/dvb-core/dmxdev.c
index 1e96a6f1b6f0..efe55a3e80d0 100644
--- a/drivers/media/dvb-core/dmxdev.c
+++ b/drivers/media/dvb-core/dmxdev.c
@@ -595,7 +595,7 @@ static int dvb_dmxdev_start_feed(struct dmxdev *dmxdev,
595 tsfeed = feed->ts; 595 tsfeed = feed->ts;
596 tsfeed->priv = filter; 596 tsfeed->priv = filter;
597 597
598 ret = tsfeed->set(tsfeed, feed->pid, ts_type, ts_pes, 32768, timeout); 598 ret = tsfeed->set(tsfeed, feed->pid, ts_type, ts_pes, timeout);
599 if (ret < 0) { 599 if (ret < 0) {
600 dmxdev->demux->release_ts_feed(dmxdev->demux, tsfeed); 600 dmxdev->demux->release_ts_feed(dmxdev->demux, tsfeed);
601 return ret; 601 return ret;
@@ -666,7 +666,7 @@ static int dvb_dmxdev_filter_start(struct dmxdev_filter *filter)
666 return ret; 666 return ret;
667 } 667 }
668 668
669 ret = (*secfeed)->set(*secfeed, para->pid, 32768, 669 ret = (*secfeed)->set(*secfeed, para->pid,
670 (para->flags & DMX_CHECK_CRC) ? 1 : 0); 670 (para->flags & DMX_CHECK_CRC) ? 1 : 0);
671 if (ret < 0) { 671 if (ret < 0) {
672 pr_err("DVB (%s): could not set feed\n", 672 pr_err("DVB (%s): could not set feed\n",
diff --git a/drivers/media/dvb-core/dvb_demux.c b/drivers/media/dvb-core/dvb_demux.c
index 51bf5eb2df49..3ad0b2cd26b1 100644
--- a/drivers/media/dvb-core/dvb_demux.c
+++ b/drivers/media/dvb-core/dvb_demux.c
@@ -36,8 +36,6 @@
36 36
37#include "dvb_demux.h" 37#include "dvb_demux.h"
38 38
39#define NOBUFS
40
41static int dvb_demux_tscheck; 39static int dvb_demux_tscheck;
42module_param(dvb_demux_tscheck, int, 0644); 40module_param(dvb_demux_tscheck, int, 0644);
43MODULE_PARM_DESC(dvb_demux_tscheck, 41MODULE_PARM_DESC(dvb_demux_tscheck,
@@ -663,8 +661,7 @@ out:
663} 661}
664 662
665static int dmx_ts_feed_set(struct dmx_ts_feed *ts_feed, u16 pid, int ts_type, 663static int dmx_ts_feed_set(struct dmx_ts_feed *ts_feed, u16 pid, int ts_type,
666 enum dmx_ts_pes pes_type, 664 enum dmx_ts_pes pes_type, ktime_t timeout)
667 size_t circular_buffer_size, ktime_t timeout)
668{ 665{
669 struct dvb_demux_feed *feed = (struct dvb_demux_feed *)ts_feed; 666 struct dvb_demux_feed *feed = (struct dvb_demux_feed *)ts_feed;
670 struct dvb_demux *demux = feed->demux; 667 struct dvb_demux *demux = feed->demux;
@@ -694,23 +691,10 @@ static int dmx_ts_feed_set(struct dmx_ts_feed *ts_feed, u16 pid, int ts_type,
694 dvb_demux_feed_add(feed); 691 dvb_demux_feed_add(feed);
695 692
696 feed->pid = pid; 693 feed->pid = pid;
697 feed->buffer_size = circular_buffer_size;
698 feed->timeout = timeout; 694 feed->timeout = timeout;
699 feed->ts_type = ts_type; 695 feed->ts_type = ts_type;
700 feed->pes_type = pes_type; 696 feed->pes_type = pes_type;
701 697
702 if (feed->buffer_size) {
703#ifdef NOBUFS
704 feed->buffer = NULL;
705#else
706 feed->buffer = vmalloc(feed->buffer_size);
707 if (!feed->buffer) {
708 mutex_unlock(&demux->mutex);
709 return -ENOMEM;
710 }
711#endif
712 }
713
714 feed->state = DMX_STATE_READY; 698 feed->state = DMX_STATE_READY;
715 mutex_unlock(&demux->mutex); 699 mutex_unlock(&demux->mutex);
716 700
@@ -799,7 +783,6 @@ static int dvbdmx_allocate_ts_feed(struct dmx_demux *dmx,
799 feed->demux = demux; 783 feed->demux = demux;
800 feed->pid = 0xffff; 784 feed->pid = 0xffff;
801 feed->peslen = 0xfffa; 785 feed->peslen = 0xfffa;
802 feed->buffer = NULL;
803 786
804 (*ts_feed) = &feed->feed.ts; 787 (*ts_feed) = &feed->feed.ts;
805 (*ts_feed)->parent = dmx; 788 (*ts_feed)->parent = dmx;
@@ -836,10 +819,6 @@ static int dvbdmx_release_ts_feed(struct dmx_demux *dmx,
836 mutex_unlock(&demux->mutex); 819 mutex_unlock(&demux->mutex);
837 return -EINVAL; 820 return -EINVAL;
838 } 821 }
839#ifndef NOBUFS
840 vfree(feed->buffer);
841 feed->buffer = NULL;
842#endif
843 822
844 feed->state = DMX_STATE_FREE; 823 feed->state = DMX_STATE_FREE;
845 feed->filter->state = DMX_STATE_FREE; 824 feed->filter->state = DMX_STATE_FREE;
@@ -891,8 +870,7 @@ static int dmx_section_feed_allocate_filter(struct dmx_section_feed *feed,
891} 870}
892 871
893static int dmx_section_feed_set(struct dmx_section_feed *feed, 872static int dmx_section_feed_set(struct dmx_section_feed *feed,
894 u16 pid, size_t circular_buffer_size, 873 u16 pid, int check_crc)
895 int check_crc)
896{ 874{
897 struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)feed; 875 struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)feed;
898 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; 876 struct dvb_demux *dvbdmx = dvbdmxfeed->demux;
@@ -906,19 +884,8 @@ static int dmx_section_feed_set(struct dmx_section_feed *feed,
906 dvb_demux_feed_add(dvbdmxfeed); 884 dvb_demux_feed_add(dvbdmxfeed);
907 885
908 dvbdmxfeed->pid = pid; 886 dvbdmxfeed->pid = pid;
909 dvbdmxfeed->buffer_size = circular_buffer_size;
910 dvbdmxfeed->feed.sec.check_crc = check_crc; 887 dvbdmxfeed->feed.sec.check_crc = check_crc;
911 888
912#ifdef NOBUFS
913 dvbdmxfeed->buffer = NULL;
914#else
915 dvbdmxfeed->buffer = vmalloc(dvbdmxfeed->buffer_size);
916 if (!dvbdmxfeed->buffer) {
917 mutex_unlock(&dvbdmx->mutex);
918 return -ENOMEM;
919 }
920#endif
921
922 dvbdmxfeed->state = DMX_STATE_READY; 889 dvbdmxfeed->state = DMX_STATE_READY;
923 mutex_unlock(&dvbdmx->mutex); 890 mutex_unlock(&dvbdmx->mutex);
924 return 0; 891 return 0;
@@ -1077,7 +1044,6 @@ static int dvbdmx_allocate_section_feed(struct dmx_demux *demux,
1077 dvbdmxfeed->feed.sec.secbufp = dvbdmxfeed->feed.sec.seclen = 0; 1044 dvbdmxfeed->feed.sec.secbufp = dvbdmxfeed->feed.sec.seclen = 0;
1078 dvbdmxfeed->feed.sec.tsfeedp = 0; 1045 dvbdmxfeed->feed.sec.tsfeedp = 0;
1079 dvbdmxfeed->filter = NULL; 1046 dvbdmxfeed->filter = NULL;
1080 dvbdmxfeed->buffer = NULL;
1081 1047
1082 (*feed) = &dvbdmxfeed->feed.sec; 1048 (*feed) = &dvbdmxfeed->feed.sec;
1083 (*feed)->is_filtering = 0; 1049 (*feed)->is_filtering = 0;
@@ -1106,10 +1072,6 @@ static int dvbdmx_release_section_feed(struct dmx_demux *demux,
1106 mutex_unlock(&dvbdmx->mutex); 1072 mutex_unlock(&dvbdmx->mutex);
1107 return -EINVAL; 1073 return -EINVAL;
1108 } 1074 }
1109#ifndef NOBUFS
1110 vfree(dvbdmxfeed->buffer);
1111 dvbdmxfeed->buffer = NULL;
1112#endif
1113 dvbdmxfeed->state = DMX_STATE_FREE; 1075 dvbdmxfeed->state = DMX_STATE_FREE;
1114 1076
1115 dvb_demux_feed_del(dvbdmxfeed); 1077 dvb_demux_feed_del(dvbdmxfeed);
diff --git a/drivers/media/dvb-core/dvb_demux.h b/drivers/media/dvb-core/dvb_demux.h
index 5ed3cab4ad28..9235b008ea0a 100644
--- a/drivers/media/dvb-core/dvb_demux.h
+++ b/drivers/media/dvb-core/dvb_demux.h
@@ -80,8 +80,6 @@ struct dvb_demux_feed {
80 int type; 80 int type;
81 int state; 81 int state;
82 u16 pid; 82 u16 pid;
83 u8 *buffer;
84 int buffer_size;
85 83
86 ktime_t timeout; 84 ktime_t timeout;
87 struct dvb_demux_filter *filter; 85 struct dvb_demux_filter *filter;
diff --git a/drivers/media/dvb-core/dvb_net.c b/drivers/media/dvb-core/dvb_net.c
index 063f63563919..b9a46d5a1bb5 100644
--- a/drivers/media/dvb-core/dvb_net.c
+++ b/drivers/media/dvb-core/dvb_net.c
@@ -969,7 +969,7 @@ static int dvb_net_feed_start(struct net_device *dev)
969 goto error; 969 goto error;
970 } 970 }
971 971
972 ret = priv->secfeed->set(priv->secfeed, priv->pid, 32768, 1); 972 ret = priv->secfeed->set(priv->secfeed, priv->pid, 1);
973 973
974 if (ret<0) { 974 if (ret<0) {
975 pr_err("%s: could not set section feed\n", dev->name); 975 pr_err("%s: could not set section feed\n", dev->name);
@@ -1023,7 +1023,6 @@ static int dvb_net_feed_start(struct net_device *dev)
1023 priv->pid, /* pid */ 1023 priv->pid, /* pid */
1024 TS_PACKET, /* type */ 1024 TS_PACKET, /* type */
1025 DMX_PES_OTHER, /* pes type */ 1025 DMX_PES_OTHER, /* pes type */
1026 32768, /* circular buffer size */
1027 timeout /* timeout */ 1026 timeout /* timeout */
1028 ); 1027 );
1029 1028