public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@s-opensource.com>
To: "Honza Petrouš" <jpetrous@gmail.com>
Cc: Linux Doc Mailing List <linux-doc@vger.kernel.org>,
	Linux Media Mailing List <linux-media@vger.kernel.org>,
	Mauro Carvalho Chehab <mchehab@infradead.org>,
	linux-kernel@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>
Subject: Re: [PATCH v2 00/26] Improve DVB documentation and reduce its gap
Date: Sun, 3 Sep 2017 22:17:38 -0300	[thread overview]
Message-ID: <20170903221738.1b4b2e28@vento.lan> (raw)
In-Reply-To: <CAJbz7-29pV9u0UZUC+sUtncsCbqbjNToA-yANJ7hExLRFw_tiQ@mail.gmail.com>

Em Sun, 3 Sep 2017 22:05:23 +0200
Honza Petrouš <jpetrous@gmail.com> escreveu:

> > There is still a gap at the CA API, as there are three ioctls that are used
> > only by a few drivers and whose structs are not properly documented:
> > CA_GET_MSG, CA_SEND_MSG and CA_SET_DESCR.
> >
> > The first two ones seem to be related to a way that a few drivers
> > provide to send/receive messages.  
> 
> I never seen usage of such R/W ioctls, all drivers I have access to
> are using read()/write() variant of communication.

Yeah, the normal usage is to use R/W syscalls.

> BTW, I just remembered dvblast app, part of videolan.org:
> 
> http://www.videolan.org/projects/dvblast.html
> 
> which is using CA_GET_MSG/CA_SEND_MSG:
> 
> https://code.videolan.org/videolan/dvblast/blob/master/en50221.c

>From the ca_msg struct:

	/* a message to/from a CI-CAM */
	struct ca_msg {
		unsigned int index;
		unsigned int type;
		unsigned int length;
		unsigned char msg[256];
	};

It only uses length and msg fields. Describing those seem
quite obvious. However, what "index" and "type" means?

Within the Kernel, only two drivers implement it:

	$ git grep -l ca_msg drivers/
	drivers/media/firewire/firedtv-ci.c
	drivers/media/pci/bt8xx/dst_ca.c

At the dst_ca driver, checking for those fields don't give any
useful result:
	$ grep index drivers/media/pci/bt8xx/dst_ca.c
	(nothing)
	$ grep type drivers/media/pci/bt8xx/dst_ca.c
	// Copy application_type, application_manufacturer and manufacturer_code
	p_ca_caps->slot_type = 1;
	p_ca_caps->descr_type = 1;
		p_ca_slot_info->type = CA_CI;
		p_ca_slot_info->type = CA_CI;

(btw, using "1" for slot_type and descr_type there seems a very bad
thing)

The code at ca_get_message(), handle_dst_tag(), ca_set_pmt(), etc also
doesn't seem to be using neither one of those fields.

The same happens at firedtv-ci: it also doesn't seem to be using
none of those fields.

It should be noticed that, the dst_ca seems to allow more than one
descrambler:

	p_ca_caps->descr_num = slot_cap[7];

Yet, the index is not used. So, it doesn't seem to be related to
the descrambler index (or there's an implementation bug there - and
at dvblast - as none uses it).

What *I* suspect is that this were meant to be used for either
CA index/type or DESCR index/type, but, when this got implemented,
people discovered that this would be useless and never actually
used those fields. Yet, I may be completely wrong and those were
added to mean something else.

If so, then we could just change the struct to:

	struct ca_msg {
		unsigned int reserved[2];
		unsigned int length;
		unsigned char msg[256];
	};

And document just length and msg.

Thanks,
Mauro

  parent reply	other threads:[~2017-09-04  1:17 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-01 13:24 [PATCH v2 00/26] Improve DVB documentation and reduce its gap Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 01/27] media: ca.h: split typedefs from structs Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 02/27] media: dmx.h: " Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 03/27] media: dvb/intro: use the term Digital TV to refer to the system Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 04/27] media: dvb/intro: update references for TV standards Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 05/27] media: dvb/intro: update the history part of the document Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 06/27] media: dvb/intro: adjust the notices about optional hardware Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 07/27] media: dvb/frontend.h: move out a private internal structure Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 08/27] media: dvb/frontend.h: document the uAPI file Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 09/27] media: dvb frontend docs: use kernel-doc documentation Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 10/27] media: fe_property_parameters.rst: better define properties usage Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 11/27] media: fe_property_parameters.rst: better document bandwidth Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 12/27] media: dmx.h: get rid of unused DMX_KERNEL_CLIENT Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 13/27] media: dmx.h: get rid of DMX_GET_CAPS Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 14/27] media: dmx.h: get rid of DMX_SET_SOURCE Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 15/27] media: dmx.h: get rid of GET_DMX_EVENT Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 16/27] media: dmx.h: add kernel-doc markups and use it at Documentation/ Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 17/27] media: net.rst: Fix the level of a section of the net chapter Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 18/27] media: ca.h: get rid of CA_SET_PID Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 19/27] media: ca.h: document most CA data types Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 20/27] media: dst_ca: return a proper error code from CA errors Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 21/27] media: ca-reset.rst: add some description to this ioctl Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 22/27] media: ca-get-cap.rst: document " Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 23/27] media: ca-get-slot-info.rst: " Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 24/27] media: ca-get-descr-info.rst: " Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 25/27] media: dvb CA docs: place undocumented data together with ioctls Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 26/27] media: dvb rst: identify the documentation gap at the API Mauro Carvalho Chehab
2017-09-01 13:24 ` [PATCH v2 27/27] media: dst_ca: remove CA_SET_DESCR boilerplate Mauro Carvalho Chehab
2017-09-03 20:05 ` [PATCH v2 00/26] Improve DVB documentation and reduce its gap Honza Petrouš
2017-09-04  0:54   ` Mauro Carvalho Chehab
2017-09-04  7:12     ` Honza Petrouš
2017-09-04  9:06       ` Mauro Carvalho Chehab
2017-09-04  9:40         ` Honza Petrouš
2017-09-04 11:46           ` Mauro Carvalho Chehab
2017-09-04  1:17   ` Mauro Carvalho Chehab [this message]
2017-09-03 20:31 ` Honza Petrouš

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170903221738.1b4b2e28@vento.lan \
    --to=mchehab@s-opensource.com \
    --cc=corbet@lwn.net \
    --cc=jpetrous@gmail.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox