@@ -25,9 +25,10 @@ mod app {
25
25
26
26
use crate :: common:: EthernetPhy ;
27
27
28
+ use ieee802_3_miim:: { phy:: PhySpeed , Phy } ;
28
29
use systick_monotonic:: Systick ;
29
30
30
- use stm32_eth:: { EthernetDMA , RxRingEntry , TxRingEntry } ;
31
+ use stm32_eth:: { mac :: Speed , EthernetDMA , RxRingEntry , TxRingEntry } ;
31
32
32
33
use smoltcp:: {
33
34
iface:: { self , Interface , SocketHandle } ,
@@ -131,8 +132,20 @@ mod app {
131
132
) ;
132
133
133
134
phy. phy_init ( ) ;
135
+
136
+ if let Some ( speed) = phy. speed ( ) . map ( |s| match s {
137
+ PhySpeed :: HalfDuplexBase10T => Speed :: HalfDuplexBase10T ,
138
+ PhySpeed :: FullDuplexBase10T => Speed :: FullDuplexBase10T ,
139
+ PhySpeed :: HalfDuplexBase100Tx => Speed :: HalfDuplexBase100Tx ,
140
+ PhySpeed :: FullDuplexBase100Tx => Speed :: FullDuplexBase100Tx ,
141
+ } ) {
142
+ phy. get_miim ( ) . set_speed ( speed) ;
143
+ defmt:: info!( "Detected link speed: {}" , speed) ;
144
+ } else {
145
+ defmt:: warn!( "Failed to detect link speed." ) ;
146
+ }
134
147
} else {
135
- defmt:: info!( "Not resetting unsupported PHY." ) ;
148
+ defmt:: info!( "Not resetting unsupported PHY. Cannot detect link speed. " ) ;
136
149
}
137
150
138
151
defmt:: info!( "Setup done. Listening at {}" , crate :: ADDRESS ) ;
0 commit comments