A search through the Illumos fiber-channel device code for ENODEV shows 13 uses of ENODEV in the source code that originated as OpenSolaris.
Of those instances, I suspect this is the one most likely to cause your "No device" errors:
pd = fctl_hold_remote_port_by_pwwn(port, &pwwn);
if (pd == NULL) {
fcio->fcio_errno = FC_BADDEV;
return (ENODEV);
}
That code is in the fp_fcio_login() function, where the code appears to be trying to login to a remote WWN. It seems appropriate to assume a bad cable could prevent that from happening. Note that fiber-channel error code is FC_BADDEV, which also seems appropriate for a bad cable.
In short, a review of the source code indicates that ENODEV errors are consistent a bad cable.
You can use dTrace to more closely identify the association if necessary. Given that both hard and transport errors occur about 5 or 6 orders of magnitude more frequently, IMO that effort isn't necessary until the ENODEV errors occur after the other errors are addressed and no longer occur.