summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/interface/efi/efi_snp.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/interface/efi/efi_snp.c b/src/interface/efi/efi_snp.c
index 4c4998267..4df221c53 100644
--- a/src/interface/efi/efi_snp.c
+++ b/src/interface/efi/efi_snp.c
@@ -1282,8 +1282,21 @@ static int efi_snp_probe ( struct net_device *netdev ) {
*
* @v netdev Network device
*/
-static void efi_snp_notify ( struct net_device *netdev __unused ) {
- /* Nothing to do */
+static void efi_snp_notify ( struct net_device *netdev ) {
+ struct efi_snp_device *snpdev;
+
+ /* Locate SNP device */
+ snpdev = efi_snp_demux ( netdev );
+ if ( ! snpdev ) {
+ DBG ( "SNP skipping non-SNP device %s\n", netdev->name );
+ return;
+ }
+
+ /* Update link state */
+ snpdev->mode.MediaPresent =
+ ( netdev_link_ok ( netdev ) ? TRUE : FALSE );
+ DBGC ( snpdev, "SNPDEV %p link is %s\n", snpdev,
+ ( snpdev->mode.MediaPresent ? "up" : "down" ) );
}
/**