Wolfgang Grandegger wrote:
> On 06/18/2010 11:59 AM, Marc Kleine-Budde wrote:
>> Wolfgang Grandegger wrote:
>>> On 06/17/2010 08:40 PM, Marc Kleine-Budde wrote:
>>>> Wolfgang Grandegger wrote:
>>>>> On 06/17/2010 08:19 PM, Marc Kleine-Budde wrote:
>>>>>> Wolfgang Grandegger wrote:
>>>>>>> On 06/17/2010 06:54 PM, Marc Kleine-Budde wrote:
>>>>>>>> Wolfgang Grandegger wrote:
>>>>>>>>>> Now I try to use more current version (rev 1181) of SocketCAN, 
>>>>>>>>>> because we 
>>>>>>>>>> need netlink CAN control API. Here I see one problem - no error 
>>>>>>>>>> active is 
>>>>>>>>>> indicated. The CAN_ERR_CRTL_UNSPEC error control messages are 
>>>>>>>>>> missed. 
>>>>>>>>>> I observe this problem with both sysfs and netlink variants.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Is it known and wanted behavior, to not indicate CAN_ERR_CRTL_UNSPEC 
>>>>>>>>>> any more?
>>>>>>>>> Yes, this is the current (known) behavior and it has been discussed
>>>>>>>>> before. We only report "increasing" state changes
>>>>>>>>> active->warning->passive->bus-off. I think it's not what we really 
>>>>>>>>> want.
>>>>>>>>> It should be fixed.
>>>>>>>> Have a look at the statemachine in the at91_can driver[1]. I started to
>>>>>>>> make it more generic in order to be usable as a generic component.
>>>>>>>>
>>>>>>>> Cheers, Marc
>>>>>>>>
>>>>>>>> [1] http://lxr.linux.no/#linux+v2.6.34/drivers/net/can/at91_can.c#L757
>>>>>>> I see, we don't have a #define for state changes to error active. I tend
>>>>>>> to rename CAN_ERR_CRTL_UNSPEC to CAN_ERR_CRTL_ACTIVE. But this needs
>>>>>>> some more thoughts and discussion. "CAN_ERR_CTRL" stands for controller
>>>>>>> *problems* and that's what we have implemented. I will have a closer
>>>>>>> look tomorrow.
>>>>>> ACK, I see the need for discussion, too. However, if your time permits,
>>>>>> have a look at the above mentioned state machine. Don't look to close at
>>>>>> the individual bits that are send in the states, they can be discussed
>>>>>> seperately.
>>>>> The AT91 driver uses CAN_ERR_PROT_ACTIVE to signal state changes to
>>>>> error active in a special way. I think it should be handled in a generic
>>>> ACK, if we've defined what to signal, it's easy to implement.
>>>>
>>>>> way like any other state change, e.g. active->warning, passive->warning,
>>>>> etc. We need to fix all other drivers anyway.
>>>> But I wass talking about the state machine in general. Does it make
>>>> sense to use it in other drivers aswell.
>>> A similar state machine is used for other CAN controllers as well. The
>>> only difference I see is setting CAN_ERR_PROT_ACTIVE if the error active
>>> state is entered. Have I missed something?
>> yes similar, but does it make sense so implement a somewhat different
>> state machine in all drivers again?
> 
> We need a similar state machine for *all* drivers. Instead of handling

I tend to say that we need the _same_ state machine for all drivers.

> just increasing error state changes, I would like to support *all*
> changes, which would make your special CAN_ERR_PROT_ACTIVE obsolete.
> Does that make sense, also for the real users?

ACK

Marc

-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Socketcan-users mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/socketcan-users

Reply via email to