@@ -25,9 +25,10 @@ mod app {
2525
2626 use crate :: common:: EthernetPhy ;
2727
28+ use ieee802_3_miim:: { phy:: PhySpeed , Phy } ;
2829 use systick_monotonic:: Systick ;
2930
30- use stm32_eth:: { EthernetDMA , RxRingEntry , TxRingEntry } ;
31+ use stm32_eth:: { mac :: Speed , EthernetDMA , RxRingEntry , TxRingEntry } ;
3132
3233 use smoltcp:: {
3334 iface:: { self , Interface , SocketHandle } ,
@@ -131,8 +132,20 @@ mod app {
131132 ) ;
132133
133134 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+ }
134147 } else {
135- defmt:: info!( "Not resetting unsupported PHY." ) ;
148+ defmt:: info!( "Not resetting unsupported PHY. Cannot detect link speed. " ) ;
136149 }
137150
138151 defmt:: info!( "Setup done. Listening at {}" , crate :: ADDRESS ) ;
0 commit comments