提交 4baee937 编写于 作者: N Neil Armstrong 提交者: David S. Miller

net: dsa: remove DSA link polling

Since no more DSA driver uses the polling callback, and since
the phylib handles the link detection, remove the link polling
work and timer code.
Signed-off-by: NNeil Armstrong <narmstrong@baylibre.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 ad9360b3
......@@ -116,13 +116,6 @@ struct dsa_switch_tree {
s8 cpu_switch;
s8 cpu_port;
/*
* Link state polling.
*/
int link_poll_needed;
struct work_struct link_poll_work;
struct timer_list link_poll_timer;
/*
* Data for the individual switch chips.
*/
......@@ -231,11 +224,6 @@ struct dsa_switch_driver {
int (*phy_write)(struct dsa_switch *ds, int port,
int regnum, u16 val);
/*
* Link state polling and IRQ handling.
*/
void (*poll_link)(struct dsa_switch *ds);
/*
* Link state adjustment (called from libphy)
*/
......
......@@ -508,33 +508,6 @@ static int dsa_switch_resume(struct dsa_switch *ds)
}
#endif
/* link polling *************************************************************/
static void dsa_link_poll_work(struct work_struct *ugly)
{
struct dsa_switch_tree *dst;
int i;
dst = container_of(ugly, struct dsa_switch_tree, link_poll_work);
for (i = 0; i < dst->pd->nr_chips; i++) {
struct dsa_switch *ds = dst->ds[i];
if (ds != NULL && ds->drv->poll_link != NULL)
ds->drv->poll_link(ds);
}
mod_timer(&dst->link_poll_timer, round_jiffies(jiffies + HZ));
}
static void dsa_link_poll_timer(unsigned long _dst)
{
struct dsa_switch_tree *dst = (void *)_dst;
schedule_work(&dst->link_poll_work);
}
/* platform driver init and cleanup *****************************************/
static int dev_is_class(struct device *dev, void *class)
{
......@@ -877,8 +850,6 @@ static int dsa_setup_dst(struct dsa_switch_tree *dst, struct net_device *dev,
}
dst->ds[i] = ds;
if (ds->drv->poll_link != NULL)
dst->link_poll_needed = 1;
++configured;
}
......@@ -897,15 +868,6 @@ static int dsa_setup_dst(struct dsa_switch_tree *dst, struct net_device *dev,
wmb();
dev->dsa_ptr = (void *)dst;
if (dst->link_poll_needed) {
INIT_WORK(&dst->link_poll_work, dsa_link_poll_work);
init_timer(&dst->link_poll_timer);
dst->link_poll_timer.data = (unsigned long)dst;
dst->link_poll_timer.function = dsa_link_poll_timer;
dst->link_poll_timer.expires = round_jiffies(jiffies + HZ);
add_timer(&dst->link_poll_timer);
}
return 0;
}
......@@ -972,11 +934,6 @@ static void dsa_remove_dst(struct dsa_switch_tree *dst)
{
int i;
if (dst->link_poll_needed)
del_timer_sync(&dst->link_poll_timer);
flush_work(&dst->link_poll_work);
for (i = 0; i < dst->pd->nr_chips; i++) {
struct dsa_switch *ds = dst->ds[i];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册