diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/NCSI/ncsi.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/libs/NCSI/ncsi.c b/libs/NCSI/ncsi.c index 3278422..9077a39 100644 --- a/libs/NCSI/ncsi.c +++ b/libs/NCSI/ncsi.c @@ -396,13 +396,21 @@ static void getLinkStatusHandler(NetworkFrame_t* frame) RegSHM_CHANNELNcsiChannelStatus_t linkStatus; linkStatus.r32 = 0; - linkStatus.bits.Linkup = 1; - linkStatus.bits.LinkStatus = SHM_CHANNEL_NCSI_CHANNEL_STATUS_LINK_STATUS_1000BASE_T_FULL_DUPLEX; + linkStatus.bits.Linkup = stat.bits.LinkOK; + linkStatus.bits.LinkStatus = SHM_CHANNEL_NCSI_CHANNEL_STATUS_LINK_STATUS_1000BASE_T_FULL_DUPLEX; // FIXME linkStatus.bits.AutonegotiationEnabled = 1; linkStatus.bits.AutonegotiationComplete = stat.bits.AutoNegotiationComplete; + linkStatus.bits.LinkSpeed1000MFullDuplexCapable = ext_stat.bits._1000BASE_TFullDuplexCapable; linkStatus.bits.LinkSpeed1000MHalfDuplexCapable = ext_stat.bits._1000BASE_THalfDuplexCapable; + linkStatus.bits.LinkSpeed100M_TXFullDuplexCapable = stat.bits._100BASE_XFullDuplexCapable; + linkStatus.bits.LinkSpeed100M_TXHalfDuplexCapable = stat.bits._100BASE_XHalfDuplexCapable; + + linkStatus.bits.LinkSpeed10M_TFullDuplexCapable = stat.bits._10BASE_TFullDuplexCapable; + linkStatus.bits.LinkSpeed10M_THalfDuplexCapable = stat.bits._10BASE_THalfDuplexCapable; + + int ch = frame->controlPacket.ChannelID & CHANNEL_ID_MASK; channel_state_t* channel = &(gPackageState.channel[ch]); channel->shm->NcsiChannelStatus = linkStatus; |