From f875da7fe4e842cc229871313c740dfb61b1784f Mon Sep 17 00:00:00 2001 From: Evan Lojewski Date: Wed, 5 Jun 2019 19:05:13 -0600 Subject: Update the NCSI link status command to use the linkOK bit from hardware. --- libs/NCSI/ncsi.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'libs/NCSI') 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; -- cgit v1.2.1