RE: [PATCH net-next-2.6 v5 1/1] can: c_can: Added support for Bosch C_CAN controller
From: Bhupesh SHARMA <hidden>
Date: 2011-02-01 04:29:35
Hello Wolfgang,
...quoted
quoted
quoted
+ /* handle error on the bus */ + lec_type = c_can_has_and_handle_berr(priv); + if (lec_type && (error_type != C_CAN_NO_ERROR)) + work_done += c_can_err(dev, error_type, lec_type);State changes are only reported if berr_reporting is enabled and abusquoted
quoted
error occured. This needs to be fixed.As I mentioned earlier in a response to a review comment, the BusErrorquoted
reporting for C_CAN seems different from sja1000 and flexcanapproaches.quoted
Do you think it will be useful to drop CAN_CTRLMODE_BERR_REPORTINGfromquoted
priv->can.ctrlmode_supported as done by *pch* driver? Or do you have a better idea..You bus error reporting is OK. The problem is that it does not only affect bus errors but also state changes. State change messages should alway be send independent of priv->can.ctrlmode. It's just a matter of moving code to the right location. E.g. the code snippet above inside c_can_err() before you check for bus errors.quoted
quoted
Feel free to send the output of "candump any,0:0,#FFFFFFFF" when sending messages without cable connected and with a bus error provocuted.OK. I will try to cross-compile candump for my arm-v7 architecture and will send the output.
I did some changes to the code to ensure that the state change and lec handling are handled separately and properly. Please find the candump any,0:0,#FFFFFFFF output below: 1. With No-Cable connected, I keep getting: can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME can0 20000004 [8] 00 28 00 00 00 00 00 00 ERRORFRAME 2. With Tx and Rx shorted to simulate bus-error, I get: can0 20000044 [8] 00 20 00 00 00 00 00 00 ERRORFRAME In case 2, when I enable debug messages I get the correct state change sequence: entered error warning state entered error passive state entered bus off state Does this result seem fine to you? Regards, Bhupesh