Skip to content

Commit

Permalink
tipc: Fix misleading error code when enabling Ethernet bearers
Browse files Browse the repository at this point in the history
Cause TIPC to return EAGAIN if it is unable to enable a new Ethernet
bearer because one or more recently disabled Ethernet bearers are
temporarily consuming resources during shut down.  (The previous error
code, EDQUOT, is now returned only if all available Ethernet bearer
data structures are fully enabled at the time the request to enable an
additional bearer is received.)

Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Allan Stephens authored and David S. Miller committed Sep 7, 2010
1 parent 9fbfca0 commit d1fb627
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions net/tipc/eth_media.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,16 @@ static int enable_bearer(struct tipc_bearer *tb_ptr)
struct eth_bearer *eb_ptr = &eth_bearers[0];
struct eth_bearer *stop = &eth_bearers[MAX_ETH_BEARERS];
char *driver_name = strchr((const char *)tb_ptr->name, ':') + 1;
int pending_dev = 0;

/* Find unused Ethernet bearer structure */

while (eb_ptr->dev) {
if (!eb_ptr->bearer)
pending_dev++;
if (++eb_ptr == stop)
return pending_dev ? -EAGAIN : -EDQUOT;
}

/* Find device with specified name */

Expand Down

0 comments on commit d1fb627

Please sign in to comment.