Skip to content

Commit

Permalink
net: dsa: remove DSA link polling
Browse files Browse the repository at this point in the history
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: Neil Armstrong <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
superna9999 authored and davem330 committed Dec 7, 2015
1 parent ad9360b commit 4baee93
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 55 deletions.
12 changes: 0 additions & 12 deletions include/net/dsa.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand Down Expand Up @@ -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)
*/
Expand Down
43 changes: 0 additions & 43 deletions net/dsa/dsa.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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;
}
Expand All @@ -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;
}

Expand Down Expand Up @@ -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];

Expand Down

0 comments on commit 4baee93

Please sign in to comment.