Re: Patch for link detection for R8169

2005-09-07 Thread Miroslaw Mieszczak

Francois Romieu napisał(a):


[EMAIL PROTECTED] <[EMAIL PROTECTED]> :
[...]

Ok, thanks for the hint.

Currently one can do 'ifconfig ethX up', check the link status, then try
to DHCP or whatever. Apparently a few drivers do not support tne detection
of link as presented above. So is it anything like a vendor requirement/a
standard (or should it be the new right way (TM)) or does the userspace
needs fixing wrt its expectation ?
 

The main problem with this driver is, that if I do like this, then every 
10 seconds I receive new message from the network card in kernel log.

There is following message:

Sep  4 16:31:43 laptop_mirka eth0: PHY reset until link up
Sep  4 16:31:53 laptop_mirka eth0: PHY reset until link up

Do you think, that this is correct way t do the things? I
In my opinion, the solution, that link status can be checked (if 
hardware allow this) when interface is down is more usefull.



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Patch for link detection for R8169

2005-09-07 Thread Miroslaw Mieszczak

Francois Romieu napisał(a):


[EMAIL PROTECTED] [EMAIL PROTECTED] :
[...]

Ok, thanks for the hint.

Currently one can do 'ifconfig ethX up', check the link status, then try
to DHCP or whatever. Apparently a few drivers do not support tne detection
of link as presented above. So is it anything like a vendor requirement/a
standard (or should it be the new right way (TM)) or does the userspace
needs fixing wrt its expectation ?
 

The main problem with this driver is, that if I do like this, then every 
10 seconds I receive new message from the network card in kernel log.

There is following message:

Sep  4 16:31:43 laptop_mirka eth0: PHY reset until link up
Sep  4 16:31:53 laptop_mirka eth0: PHY reset until link up

Do you think, that this is correct way t do the things? I
In my opinion, the solution, that link status can be checked (if 
hardware allow this) when interface is down is more usefull.



-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Patch for link detection for R8169

2005-09-06 Thread Miroslaw Mieszczak
There is a patch to driver of RLT8169 network card. This match make 
possible detection of the link status even if network interface is down.

This is usefull for laptop users.



--- r8169.c 2005-09-02 15:34:52.0 +0200
+++ linux/drivers/net/r8169.c   2005-09-05 21:11:15.0 +0200
@@ -538,14 +538,27 @@
 
 static unsigned int rtl8169_tbi_link_ok(void __iomem *ioaddr)
 {
-   return RTL_R32(TBICSR) & TBILinkOk;
+   return (RTL_R32(TBICSR) & TBILinkOk) == TBILinkOk ? 1:0;
 }
 
 static unsigned int rtl8169_xmii_link_ok(void __iomem *ioaddr)
 {
-   return RTL_R8(PHYstatus) & LinkStatus;
+   return (RTL_R8(PHYstatus) & LinkStatus) == LinkStatus ? 1:0;
 }
 
+static u32 rtl8169_get_link(struct net_device *dev)
+{
+   struct rtl8169_private *np = netdev_priv(dev);
+   unsigned int result;
+   unsigned long flags;
+  
+   spin_lock_irqsave(>lock, flags);
+   result = np->link_ok(np->mmio_addr);
+   spin_unlock_irqrestore(>lock, flags);
+   return result;
+}
+
+
 static void rtl8169_tbi_reset_enable(void __iomem *ioaddr)
 {
RTL_W32(TBICSR, RTL_R32(TBICSR) | TBIReset);
@@ -577,6 +590,8 @@
spin_unlock_irqrestore(>lock, flags);
 }
 
+
+
 static void rtl8169_link_option(int idx, u8 *autoneg, u16 *speed, u8 *duplex)
 {
struct {
@@ -1010,7 +1025,7 @@
 static struct ethtool_ops rtl8169_ethtool_ops = {
.get_drvinfo= rtl8169_get_drvinfo,
.get_regs_len   = rtl8169_get_regs_len,
-   .get_link   = ethtool_op_get_link,
+   .get_link   = rtl8169_get_link,/*  
ethtool_op_get_link,*/
.get_settings   = rtl8169_get_settings,
.set_settings   = rtl8169_set_settings,
.get_msglevel   = rtl8169_get_msglevel,


Patch for link detection for R8169

2005-09-06 Thread Miroslaw Mieszczak
There is a patch to driver of RLT8169 network card. This match make 
possible detection of the link status even if network interface is down.

This is usefull for laptop users.



--- r8169.c 2005-09-02 15:34:52.0 +0200
+++ linux/drivers/net/r8169.c   2005-09-05 21:11:15.0 +0200
@@ -538,14 +538,27 @@
 
 static unsigned int rtl8169_tbi_link_ok(void __iomem *ioaddr)
 {
-   return RTL_R32(TBICSR)  TBILinkOk;
+   return (RTL_R32(TBICSR)  TBILinkOk) == TBILinkOk ? 1:0;
 }
 
 static unsigned int rtl8169_xmii_link_ok(void __iomem *ioaddr)
 {
-   return RTL_R8(PHYstatus)  LinkStatus;
+   return (RTL_R8(PHYstatus)  LinkStatus) == LinkStatus ? 1:0;
 }
 
+static u32 rtl8169_get_link(struct net_device *dev)
+{
+   struct rtl8169_private *np = netdev_priv(dev);
+   unsigned int result;
+   unsigned long flags;
+  
+   spin_lock_irqsave(np-lock, flags);
+   result = np-link_ok(np-mmio_addr);
+   spin_unlock_irqrestore(np-lock, flags);
+   return result;
+}
+
+
 static void rtl8169_tbi_reset_enable(void __iomem *ioaddr)
 {
RTL_W32(TBICSR, RTL_R32(TBICSR) | TBIReset);
@@ -577,6 +590,8 @@
spin_unlock_irqrestore(tp-lock, flags);
 }
 
+
+
 static void rtl8169_link_option(int idx, u8 *autoneg, u16 *speed, u8 *duplex)
 {
struct {
@@ -1010,7 +1025,7 @@
 static struct ethtool_ops rtl8169_ethtool_ops = {
.get_drvinfo= rtl8169_get_drvinfo,
.get_regs_len   = rtl8169_get_regs_len,
-   .get_link   = ethtool_op_get_link,
+   .get_link   = rtl8169_get_link,/*  
ethtool_op_get_link,*/
.get_settings   = rtl8169_get_settings,
.set_settings   = rtl8169_set_settings,
.get_msglevel   = rtl8169_get_msglevel,