aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_adsl.c14
-rw-r--r--package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_vdsl.c13
2 files changed, 27 insertions, 0 deletions
diff --git a/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_adsl.c b/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_adsl.c
index 38001c3171..dc75b12cca 100644
--- a/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_adsl.c
+++ b/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_adsl.c
@@ -43,6 +43,7 @@
#include <linux/ioctl.h>
#include <linux/etherdevice.h>
#include <linux/interrupt.h>
+#include <linux/netdevice.h>
#include <asm/io.h>
/*
@@ -277,6 +278,10 @@ static int g_showtime = 0;
static void ptm_setup(struct net_device *dev, int ndev)
{
+#if defined(CONFIG_IFXMIPS_DSL_CPE_MEI) || defined(CONFIG_IFXMIPS_DSL_CPE_MEI_MODULE)
+ netif_carrier_off(dev);
+#endif
+
/* hook network operations */
dev->netdev_ops = &g_ptm_netdev_ops;
netif_napi_add(dev, &g_ptm_priv_data.itf[ndev].napi, ptm_napi_poll, 25);
@@ -1384,9 +1389,13 @@ static INLINE void init_tables(void)
static int ptm_showtime_enter(struct port_cell_info *port_cell, void *xdata_addr)
{
+ int i;
g_showtime = 1;
+ for ( i = 0; i < ARRAY_SIZE(g_net_dev); i++ )
+ netif_carrier_on(g_net_dev[i]);
+
printk("enter showtime\n");
return 0;
@@ -1394,9 +1403,14 @@ static int ptm_showtime_enter(struct port_cell_info *port_cell, void *xdata_addr
static int ptm_showtime_exit(void)
{
+ int i;
+
if ( !g_showtime )
return -1;
+ for ( i = 0; i < ARRAY_SIZE(g_net_dev); i++ )
+ netif_carrier_off(g_net_dev[i]);
+
g_showtime = 0;
printk("leave showtime\n");
diff --git a/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_vdsl.c b/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_vdsl.c
index 9adeba4d00..41464e6c27 100644
--- a/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_vdsl.c
+++ b/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_vdsl.c
@@ -32,6 +32,7 @@
#include <linux/ioctl.h>
#include <linux/etherdevice.h>
#include <linux/interrupt.h>
+#include <linux/netdevice.h>
#include "ifxmips_ptm_vdsl.h"
#include <lantiq_soc.h>
@@ -136,6 +137,8 @@ unsigned int ifx_ptm_dbg_enable = DBG_ENABLE_MASK_ERR;
static void ptm_setup(struct net_device *dev, int ndev)
{
+ netif_carrier_off(dev);
+
dev->netdev_ops = &g_ptm_netdev_ops;
netif_napi_add(dev, &g_ptm_priv_data.itf[ndev].napi, ptm_napi_poll, 16);
dev->watchdog_timeo = ETH_WATCHDOG_TIMEOUT;
@@ -888,6 +891,8 @@ static inline void clear_tables(void)
static int ptm_showtime_enter(struct port_cell_info *port_cell, void *xdata_addr)
{
+ int i;
+
ASSERT(port_cell != NULL, "port_cell is NULL");
ASSERT(xdata_addr != NULL, "xdata_addr is NULL");
@@ -896,6 +901,9 @@ static int ptm_showtime_enter(struct port_cell_info *port_cell, void *xdata_addr
g_showtime = 1;
+ for ( i = 0; i < ARRAY_SIZE(g_net_dev); i++ )
+ netif_carrier_on(g_net_dev[i]);
+
IFX_REG_W32(0x0F, UTP_CFG);
//#ifdef CONFIG_VR9
@@ -909,6 +917,8 @@ static int ptm_showtime_enter(struct port_cell_info *port_cell, void *xdata_addr
static int ptm_showtime_exit(void)
{
+ int i;
+
if ( !g_showtime )
return -1;
@@ -918,6 +928,9 @@ static int ptm_showtime_exit(void)
IFX_REG_W32(0x00, UTP_CFG);
+ for ( i = 0; i < ARRAY_SIZE(g_net_dev); i++ )
+ netif_carrier_off(g_net_dev[i]);
+
g_showtime = 0;
// TODO: ReTX clean state