Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: DVB-CI question



On Thu, Apr 22, 2004 at 12:09:56PM +0100, Andrew de Quincey wrote:
> On Monday 19 April 2004 17:07, Johannes Stezenbach wrote:
> > Hi,
> >
> > I'm trying to finish my work on the V4 CI API. After a bit of thinking
> > I made the following changes which I just comitted to CVS:
> >
> > - one device node for all slots on one CI controller
> > - define API protocol units to be "raw, unfragmented TPDUs", i.e.
> >   slightly above link level but not interpreted by the driver, so
> >   the transport level must be implemented in user space;
> >   this is the status quo of the V3 API and I think it makes much sense
> >   to keep it that way
> > - define poll(2) semantics; link/pyhsical layer polling is entirely
> >   handled within the driver
> >
> > (this is not TOFU -- please read down below)
> 
> I have no real preference on whether read/write or the IOCTL interface is 
> used.. but here are my thoughts on it:
> 
> * We're using the read/write interface at the moment.  Is there any real 
> advantage to swapping to the IOCTL interface?

No, I just thought it would make the code more explicit. But I guess
V3 was only confusing because we had both read/write and ioctl, and
the packet format for read/write was undefined.

I guess I remove the ioctls and settle with read/write in V4.


> * If we supported more than just link level packets, we would have to extend 
> the read/write interface anyway as we would need a way to specify the type of 
> packet. However, another way of doing this would be for the driver to specify 
> what type of packet must be used on a particular slot in the _caps structure. 
> The userspace app then just sends the corresponding protocol structure on the 
> read/write interface.

I think if we want to implement higher level protocols we need
additional ioctls or message types, e.g. for the transport layer
we'd need a notification for terminated transport connections.

All in all I think that's not worth it, and we should just support
the current link layer interface.


> * It would be good to add the max. size of a TPDU (or whatever protocol is in 
> use) as a field to dvb_ci_capability. At the moment, everyone is hardcoding 
> it to 2048 bytes because that is what is necessary for the av7110 cards. But 
> this isn't the case with the budget-ci, so it would be nice to have the 
> limits explicitly returned by the driver.

This might be a good idea, however it means that some drivers are
inherently broken, as the standard does not allow for such limitations?


> * Is DVB_CI_CAM_IOERR useful? The budget-ci driver returns -EIO if a write 
> operation failed, and automatically restarts the link initialisation 
> protocol. I suppose it would be useful if the renegotiation fails multiple 
> times though... perhaps it should just be called DVB_CI_CAM_FATAL_ERR (or 
> something), and used to indicate when the CAM appears to have locked up and 
> needs a reset.

Yes, the intention is to mark the CAM as broken, not to return error
information for individual TPDUs. One could just time out waiting for
DVB_CI_CAM_READY after the cam has been inserted, but DVB_CI_CAM_IOERR
is more explicit. Maybe a better name is DVB_CI_CAM_ERROR?


> * I assume we would have the protocol structures to be sent over read/write 
> (if used) defined in the ci.h header.
> 
> * As for whether we need to support different types of protocol, I cannot 
> comment... to quote Ralph's original message:
> 
> > If you keep the interfaces between layers general enough it should
> > also be no problem to support drivers with other interfaces (like the
> > av7110 cards or also the Twinhan cards with even higher level interface) 
> > with the same code. 
> 
> What these "higher level" interfaces are was never discussed. I assume higher 
> level in EN50221, but I may be wrong.

The ancient av7110 DVB driver/firmware used a "high level" protocol
for CI, with partial application layer support via special messages
(see CI_MSG* and CI_CMD* in drivers/media/dvb/ttpci/av7110_hw.h).

However, this protocol is so proprietary that I don't see how to map it
into a standard API, so I don't think we should worry about it.


Thanks for your comments,
Johannes


-- 
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index