From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 32C67C43461 for ; Mon, 14 Sep 2020 09:03:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E14C521741 for ; Mon, 14 Sep 2020 09:03:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1600074226; bh=Zw9W1+amdegwYUXpErBc4E+AxdH3bMvY1OFaDGkbQ00=; h=From:Cc:Subject:Date:In-Reply-To:References:To:List-ID:From; b=QOjexN+BAZnTuS10nfN2tCtxPvyqi2BB7i7reSVZ+Uux3RughH1bjRTUZb7/qdSgV kjYUPIn2bSp+Ig9XV2g7M1P0f4ZvzpgMMeCSoPC6ao8p5Serau2lhyfFVmncGGh6a4 Hr/sjt6OdtwhhLqLpaX0eIUNbrzSkyHORP9GbYwc= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726257AbgINJDo (ORCPT ); Mon, 14 Sep 2020 05:03:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:37752 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726205AbgINJDc (ORCPT ); Mon, 14 Sep 2020 05:03:32 -0400 Received: from mail.kernel.org (ip5f5ad5d8.dynamic.kabel-deutschland.de [95.90.213.216]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D026122204; Mon, 14 Sep 2020 09:03:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1600074212; bh=Zw9W1+amdegwYUXpErBc4E+AxdH3bMvY1OFaDGkbQ00=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WXL9tfmwiy0chbrtPHG0uJ6XcHylhfF0jSwByKqMF936C20EzLEjujlqlMyGODmDL drjFz1az2uNp7OLUkqhbCat6Wsst4PFY3LZd54jlSrvbtDYXA6vWw+CIg1U5wYxFXN ewT6qN4KiV4TsGfBfKdQWPgU6XZvU+njrIvmclVI= Received: from mchehab by mail.kernel.org with local (Exim 4.94) (envelope-from ) id 1kHkOW-002dzq-8Z; Mon, 14 Sep 2020 11:03:28 +0200 From: Mauro Carvalho Chehab Cc: Mauro Carvalho Chehab , "Daniel W. S. Almeida" , Mauro Carvalho Chehab , linux-kernel@vger.kernel.org, linux-media@vger.kernel.org Subject: [PATCH RFC 11/11] media: vidtv: increment byte and block counters Date: Mon, 14 Sep 2020 11:03:26 +0200 Message-Id: <20aa6d0916d8475bb57539743963bba97d929eb9.1600073975.git.mchehab+huawei@kernel.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit To: unlisted-recipients:; (no To-header on input) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add support for incrementing DVBv5 stats for block counters and post/pre BER byte counts. For now, the errors won't be incremented yet. Signed-off-by: Mauro Carvalho Chehab --- drivers/media/test-drivers/vidtv/vidtv_bridge.c | 2 +- drivers/media/test-drivers/vidtv/vidtv_bridge.h | 3 +++ drivers/media/test-drivers/vidtv/vidtv_mux.c | 16 +++++++++++++++- drivers/media/test-drivers/vidtv/vidtv_mux.h | 6 +++++- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/drivers/media/test-drivers/vidtv/vidtv_bridge.c b/drivers/media/test-drivers/vidtv/vidtv_bridge.c index cb32f82f88f9..108e7937e9c1 100644 --- a/drivers/media/test-drivers/vidtv/vidtv_bridge.c +++ b/drivers/media/test-drivers/vidtv/vidtv_bridge.c @@ -172,7 +172,7 @@ static int vidtv_start_streaming(struct vidtv_dvb *dvb) mux_args.priv = dvb; dvb->streaming = true; - dvb->mux = vidtv_mux_init(dev, mux_args); + dvb->mux = vidtv_mux_init(dvb->fe[0], dev, mux_args); vidtv_mux_start_thread(dvb->mux); dev_dbg_ratelimited(dev, "Started streaming\n"); diff --git a/drivers/media/test-drivers/vidtv/vidtv_bridge.h b/drivers/media/test-drivers/vidtv/vidtv_bridge.h index fd65f9838b10..78fe8472fa37 100644 --- a/drivers/media/test-drivers/vidtv/vidtv_bridge.h +++ b/drivers/media/test-drivers/vidtv/vidtv_bridge.h @@ -12,6 +12,9 @@ #ifndef VIDTV_BRIDGE_H #define VIDTV_BRIDGE_H +/* + * For now, only one frontend is supported. See vidtv_start_streaming() + */ #define NUM_FE 1 #include diff --git a/drivers/media/test-drivers/vidtv/vidtv_mux.c b/drivers/media/test-drivers/vidtv/vidtv_mux.c index d1db9dc6dc89..5d1a275d504b 100644 --- a/drivers/media/test-drivers/vidtv/vidtv_mux.c +++ b/drivers/media/test-drivers/vidtv/vidtv_mux.c @@ -381,6 +381,7 @@ static void vidtv_mux_tick(struct work_struct *work) struct vidtv_mux *m = container_of(work, struct vidtv_mux, mpeg_thread); + struct dtv_frontend_properties *c = &m->fe->dtv_property_cache; u32 nbytes; u32 npkts; @@ -411,6 +412,17 @@ static void vidtv_mux_tick(struct work_struct *work) vidtv_mux_clear(m); + /* + * Update bytes and packet counts at DVBv5 stats + * + * For now, both pre and post bit counts are identical, + * but post BER count can be lower than pre BER, if the error + * correction logic discards packages. + */ + c->pre_bit_count.stat[0].uvalue = nbytes; + c->post_bit_count.stat[0].uvalue = nbytes; + c->block_count.stat[0].uvalue += npkts; + usleep_range(VIDTV_SLEEP_USECS, VIDTV_MAX_SLEEP_USECS); } } @@ -435,12 +447,14 @@ void vidtv_mux_stop_thread(struct vidtv_mux *m) } } -struct vidtv_mux *vidtv_mux_init(struct device *dev, +struct vidtv_mux *vidtv_mux_init(struct dvb_frontend *fe, + struct device *dev, struct vidtv_mux_init_args args) { struct vidtv_mux *m = kzalloc(sizeof(*m), GFP_KERNEL); m->dev = dev; + m->fe = fe; m->timing.pcr_period_usecs = args.pcr_period_usecs; m->timing.si_period_usecs = args.si_period_usecs; diff --git a/drivers/media/test-drivers/vidtv/vidtv_mux.h b/drivers/media/test-drivers/vidtv/vidtv_mux.h index 67de85fd50aa..2caa60623e97 100644 --- a/drivers/media/test-drivers/vidtv/vidtv_mux.h +++ b/drivers/media/test-drivers/vidtv/vidtv_mux.h @@ -18,6 +18,8 @@ #include #include #include +#include + #include "vidtv_psi.h" /** @@ -100,6 +102,7 @@ struct vidtv_mux_pid_ctx { * @priv: Private data. */ struct vidtv_mux { + struct dvb_frontend *fe; struct device *dev; struct vidtv_mux_timing timing; @@ -153,7 +156,8 @@ struct vidtv_mux_init_args { void *priv; }; -struct vidtv_mux *vidtv_mux_init(struct device *dev, +struct vidtv_mux *vidtv_mux_init(struct dvb_frontend *fe, + struct device *dev, struct vidtv_mux_init_args args); void vidtv_mux_destroy(struct vidtv_mux *m); -- 2.26.2