Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 74467
b: refs/heads/master
c: 9f74ffd
h: refs/heads/master
i:
  74465: 899f678
  74463: b56692d
v: v3
  • Loading branch information
Sreenivasa Honnur authored and Jeff Garzik committed Dec 1, 2007
1 parent 4c4da11 commit d599491
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 85b161a826f1954e9605deb3e6faa4be4d285a34
refs/heads/master: 9f74ffdebf3f81cb69e6c90026c6cff89e57c262
32 changes: 23 additions & 9 deletions trunk/drivers/net/s2io.c
Original file line number Diff line number Diff line change
Expand Up @@ -1081,7 +1081,7 @@ static int init_nic(struct s2io_nic *nic)
/* to set the swapper controle on the card */
if(s2io_set_swapper(nic)) {
DBG_PRINT(ERR_DBG,"ERROR: Setting Swapper failed\n");
return -1;
return -EIO;
}

/*
Expand Down Expand Up @@ -1503,7 +1503,7 @@ static int init_nic(struct s2io_nic *nic)
DBG_PRINT(ERR_DBG, "%s: failed rts ds steering",
dev->name);
DBG_PRINT(ERR_DBG, "set on codepoint %d\n", i);
return FAILURE;
return -ENODEV;
}
}

Expand Down Expand Up @@ -1570,7 +1570,7 @@ static int init_nic(struct s2io_nic *nic)
if (time > 10) {
DBG_PRINT(ERR_DBG, "%s: TTI init Failed\n",
dev->name);
return -1;
return -ENODEV;
}
msleep(50);
time++;
Expand Down Expand Up @@ -1623,7 +1623,7 @@ static int init_nic(struct s2io_nic *nic)
if (time > 10) {
DBG_PRINT(ERR_DBG, "%s: RTI init Failed\n",
dev->name);
return -1;
return -ENODEV;
}
time++;
msleep(50);
Expand Down Expand Up @@ -3914,6 +3914,12 @@ static int s2io_close(struct net_device *dev)
{
struct s2io_nic *sp = dev->priv;

/* Return if the device is already closed *
* Can happen when s2io_card_up failed in change_mtu *
*/
if (!is_s2io_card_up(sp))
return 0;

netif_stop_queue(dev);
napi_disable(&sp->napi);
/* Reset card, kill tasklet and free Tx and Rx buffers. */
Expand Down Expand Up @@ -6355,6 +6361,7 @@ static int s2io_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
static int s2io_change_mtu(struct net_device *dev, int new_mtu)
{
struct s2io_nic *sp = dev->priv;
int ret = 0;

if ((new_mtu < MIN_MTU) || (new_mtu > S2IO_JUMBO_SIZE)) {
DBG_PRINT(ERR_DBG, "%s: MTU size is invalid.\n",
Expand All @@ -6366,9 +6373,11 @@ static int s2io_change_mtu(struct net_device *dev, int new_mtu)
if (netif_running(dev)) {
s2io_card_down(sp);
netif_stop_queue(dev);
if (s2io_card_up(sp)) {
ret = s2io_card_up(sp);
if (ret) {
DBG_PRINT(ERR_DBG, "%s: Device bring up failed\n",
__FUNCTION__);
return ret;
}
if (netif_queue_stopped(dev))
netif_wake_queue(dev);
Expand All @@ -6379,7 +6388,7 @@ static int s2io_change_mtu(struct net_device *dev, int new_mtu)
writeq(vBIT(val64, 2, 14), &bar0->rmac_max_pyld_len);
}

return 0;
return ret;
}

/**
Expand Down Expand Up @@ -6777,6 +6786,9 @@ static void do_s2io_card_down(struct s2io_nic * sp, int do_io)
unsigned long flags;
register u64 val64 = 0;

if (!is_s2io_card_up(sp))
return;

del_timer_sync(&sp->alarm_timer);
/* If s2io_set_link task is executing, wait till it completes. */
while (test_and_set_bit(__S2IO_STATE_LINK_TASK, &(sp->state))) {
Expand Down Expand Up @@ -6850,11 +6862,13 @@ static int s2io_card_up(struct s2io_nic * sp)
u16 interruptible;

/* Initialize the H/W I/O registers */
if (init_nic(sp) != 0) {
ret = init_nic(sp);
if (ret != 0) {
DBG_PRINT(ERR_DBG, "%s: H/W initialization failed\n",
dev->name);
s2io_reset(sp);
return -ENODEV;
if (ret != -EIO)
s2io_reset(sp);
return ret;
}

/*
Expand Down

0 comments on commit d599491

Please sign in to comment.