@@ -1109,8 +1109,16 @@ impl Switch {
11091109 port. as_qsfp_mut ( ) . unwrap ( ) . transceiver =
11101110 Some ( Transceiver :: Faulted ( FaultReason :: DisabledBySp ) ) ;
11111111 } else if status. failures . modules . is_set ( index) . unwrap ( ) {
1112+ let details = status
1113+ . failures
1114+ . errors
1115+ . get ( usize:: from ( index) )
1116+ . map ( |err| err. to_string ( ) )
1117+ . unwrap_or_else ( || String :: from ( "Unknown error" ) ) ;
11121118 port. as_qsfp_mut ( ) . unwrap ( ) . transceiver =
1113- Some ( Transceiver :: Faulted ( FaultReason :: Failed ) ) ;
1119+ Some ( Transceiver :: Faulted ( FaultReason :: Failed {
1120+ details,
1121+ } ) ) ;
11141122 } else {
11151123 // At this point, the transceiver is present, and so we
11161124 // _can_ check it for support. To do so requires that it be
@@ -1201,7 +1209,13 @@ impl Switch {
12011209 let new_transceiver = if unsupported. is_set ( index) . unwrap ( ) {
12021210 Transceiver :: Unsupported
12031211 } else if new_modules. failed . is_set ( index) . unwrap ( ) {
1204- Transceiver :: Faulted ( FaultReason :: Failed )
1212+ let details = status
1213+ . failures
1214+ . errors
1215+ . get ( usize:: from ( index) )
1216+ . map ( |err| err. to_string ( ) )
1217+ . unwrap_or_else ( || String :: from ( "Unknown error" ) ) ;
1218+ Transceiver :: Faulted ( FaultReason :: Failed { details } )
12051219 } else {
12061220 continue ;
12071221 } ;
@@ -1327,11 +1341,28 @@ impl Switch {
13271341 transceiver. in_reset = None ;
13281342 transceiver. interrupt_pending = None ;
13291343 }
1330- } else if power. failures . modules . is_set ( index) . unwrap ( )
1331- || vendor_info. failures . modules . is_set ( index) . unwrap ( )
1332- {
1344+ } else if power. failures . modules . is_set ( index) . unwrap ( ) {
1345+ let details = power
1346+ . failures
1347+ . errors
1348+ . get ( usize:: from ( index) )
1349+ . map ( |err| err. to_string ( ) )
1350+ . unwrap_or_else ( || String :: from ( "Unknown error" ) ) ;
1351+ port_lock. lock ( ) . await . as_qsfp_mut ( ) . unwrap ( ) . transceiver =
1352+ Some ( Transceiver :: Faulted ( FaultReason :: Failed {
1353+ details,
1354+ } ) ) ;
1355+ } else if vendor_info. failures . modules . is_set ( index) . unwrap ( ) {
1356+ let details = vendor_info
1357+ . failures
1358+ . errors
1359+ . get ( usize:: from ( index) )
1360+ . map ( |err| err. to_string ( ) )
1361+ . unwrap_or_else ( || String :: from ( "Unknown error" ) ) ;
13331362 port_lock. lock ( ) . await . as_qsfp_mut ( ) . unwrap ( ) . transceiver =
1334- Some ( Transceiver :: Faulted ( FaultReason :: Failed ) ) ;
1363+ Some ( Transceiver :: Faulted ( FaultReason :: Failed {
1364+ details,
1365+ } ) ) ;
13351366 }
13361367 }
13371368
0 commit comments