# --------------------------------------------
# 02/09/28	jgarzik@mandrakesoft.com	1.699
# [net drivers] MII lib update:
# * add boolean 'init_media' arg to mii_check_media
# * update all callers (just 8139cp, for now)
# --------------------------------------------
#
diff -Nru a/drivers/net/8139cp.c b/drivers/net/8139cp.c
--- a/drivers/net/8139cp.c	Sun Sep 29 19:35:50 2002
+++ b/drivers/net/8139cp.c	Sun Sep 29 19:35:50 2002
@@ -107,6 +107,11 @@
 
 #define PFX			DRV_NAME ": "
 
+#ifndef TRUE
+#define FALSE 0
+#define TRUE (!FALSE)
+#endif
+
 #define CP_DEF_MSG_ENABLE	(NETIF_MSG_DRV		| \
 				 NETIF_MSG_PROBE 	| \
 				 NETIF_MSG_LINK)
@@ -678,7 +683,7 @@
 	if (status & (TxOK | TxErr | TxEmpty | SWInt))
 		cp_tx(cp);
 	if (status & LinkChg)
-		mii_check_media(&cp->mii_if, netif_msg_link(cp));
+		mii_check_media(&cp->mii_if, netif_msg_link(cp), FALSE);
 
 	if (status & PciErr) {
 		u16 pci_status;
@@ -1193,7 +1198,7 @@
 		goto err_out_hw;
 
 	netif_carrier_off(dev);
-	mii_check_media(&cp->mii_if, netif_msg_link(cp));
+	mii_check_media(&cp->mii_if, netif_msg_link(cp), TRUE);
 	netif_start_queue(dev);
 
 	return 0;
diff -Nru a/drivers/net/mii.c b/drivers/net/mii.c
--- a/drivers/net/mii.c	Sun Sep 29 19:35:50 2002
+++ b/drivers/net/mii.c	Sun Sep 29 19:35:50 2002
@@ -3,7 +3,7 @@
 	mii.c: MII interface library
 
 	Maintained by Jeff Garzik <jgarzik@mandrakesoft.com>
-	Copyright 2001 Jeff Garzik
+	Copyright 2001,2002 Jeff Garzik
 
  */
 
@@ -178,7 +178,9 @@
 		netif_carrier_off(mii->dev);
 }
 
-unsigned int mii_check_media (struct mii_if_info *mii, unsigned int ok_to_print)
+unsigned int mii_check_media (struct mii_if_info *mii,
+			      unsigned int ok_to_print,
+			      unsigned int init_media)
 {
 	unsigned int old_carrier, new_carrier;
 	int advertise, lpa, media, duplex;
@@ -194,7 +196,7 @@
 	/* if carrier state did not change, this is a "bounce",
 	 * just exit as everything is already set correctly
 	 */
-	if (old_carrier == new_carrier)
+	if ((!init_media) && (old_carrier == new_carrier))
 		return 0; /* duplex did not change */
 
 	/* no carrier, nothing much to do */
@@ -211,7 +213,7 @@
 	netif_carrier_on(mii->dev);
 
 	/* get MII advertise and LPA values */
-	if (mii->advertising)
+	if ((!init_media) && (mii->advertising))
 		advertise = mii->advertising;
 	else {
 		advertise = mii->mdio_read(mii->dev, mii->phy_id, MII_ADVERTISE);
@@ -231,7 +233,7 @@
 		       duplex ? "full" : "half",
 		       lpa);
 
-	if (mii->full_duplex != duplex) {
+	if ((init_media) || (mii->full_duplex != duplex)) {
 		mii->full_duplex = duplex;
 		return 1; /* duplex changed */
 	}
diff -Nru a/include/linux/mii.h b/include/linux/mii.h
--- a/include/linux/mii.h	Sun Sep 29 19:35:50 2002
+++ b/include/linux/mii.h	Sun Sep 29 19:35:50 2002
@@ -123,7 +123,9 @@
 extern int mii_ethtool_gset(struct mii_if_info *mii, struct ethtool_cmd *ecmd);
 extern int mii_ethtool_sset(struct mii_if_info *mii, struct ethtool_cmd *ecmd);
 extern void mii_check_link (struct mii_if_info *mii);
-extern unsigned int mii_check_media (struct mii_if_info *mii, unsigned int ok_to_print);
+extern unsigned int mii_check_media (struct mii_if_info *mii,
+				     unsigned int ok_to_print,
+				     unsigned int init_media);
 
 
 /* This structure is used in all SIOCxMIIxxx ioctl calls */
