
On Jun 4, 2010, at 4:01 PM, Timur Tabi wrote:
Andy Fleming wrote:
The old way continued even if one of the tsecs failed to initialize. Let's preserve the original behavior in that sense:
for (i = 0; i < num; i++) { ret = tsec_initialize(bis, &tsecs[i]); if (ret >= 0) count++; }
This code has multiple levels to it. board_eth_init() calls tsec_eth_init(), pci_eth_init(), and maybe some other functions. tsec_eth_init() calls tsec_initialize(). tsec_initialize() calls init_phy(). Are we always going to ignore an error return code? Why don't we just eliminate the possibility of returning a negative number at all levels?
You just noted that tsec_eth_init should return the number of tsecs initialized successfully. Therefore, the callers can check that number, and respond accordingly. tsec_initialize() can report the error. If we want more elaborate error handling, we can devise something. But with the new scheme, an error in one tsec (like a riser card not being plugged in) will cause all of the tsecs to not be initialized, which seems silly.
Andy