Skip to content

Commit

Permalink
net: gianfar: correctly determine the number of queue groups
Browse files Browse the repository at this point in the history
eTSEC of-nodes may have children which are not queue-group nodes. For
example new-style fixed-phy declarations. These where incorrectly
assumed to be additional queue-groups.

Change the search to filter out any nodes which are not queue-groups,
or have been disabled.

Signed-off-by: Tobias Waldekranz <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
wkz authored and davem330 committed Mar 6, 2015
1 parent 9d73b42 commit f50724c
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions drivers/net/ethernet/freescale/gianfar.c
Original file line number Diff line number Diff line change
Expand Up @@ -747,6 +747,18 @@ static int gfar_parse_group(struct device_node *np,
return 0;
}

static int gfar_of_group_count(struct device_node *np)
{
struct device_node *child;
int num = 0;

for_each_available_child_of_node(np, child)
if (!of_node_cmp(child->name, "queue-group"))
num++;

return num;
}

static int gfar_of_init(struct platform_device *ofdev, struct net_device **pdev)
{
const char *model;
Expand Down Expand Up @@ -784,7 +796,7 @@ static int gfar_of_init(struct platform_device *ofdev, struct net_device **pdev)
num_rx_qs = 1;
} else { /* MQ_MG_MODE */
/* get the actual number of supported groups */
unsigned int num_grps = of_get_available_child_count(np);
unsigned int num_grps = gfar_of_group_count(np);

if (num_grps == 0 || num_grps > MAXGROUPS) {
dev_err(&ofdev->dev, "Invalid # of int groups(%d)\n",
Expand Down Expand Up @@ -851,7 +863,10 @@ static int gfar_of_init(struct platform_device *ofdev, struct net_device **pdev)

/* Parse and initialize group specific information */
if (priv->mode == MQ_MG_MODE) {
for_each_child_of_node(np, child) {
for_each_available_child_of_node(np, child) {
if (of_node_cmp(child->name, "queue-group"))
continue;

err = gfar_parse_group(child, priv, model);
if (err)
goto err_grp_init;
Expand Down

0 comments on commit f50724c

Please sign in to comment.