wimax/i2400m: use -EL3RST to indicate device reset instead of -ERESTARTSYS
authorCindy H Kao <cindy.h.kao@intel.com>
Thu, 11 Jun 2009 00:06:19 +0000 (17:06 -0700)
committerInaky Perez-Gonzalez <inaky@linux.intel.com>
Thu, 11 Jun 2009 10:30:26 +0000 (03:30 -0700)
When the i2400m device resets, the driver code will force some
functions to return a -ERESTARTSYS error code, which can is used by
the caller to determine which recovery actions to take.

However, in certain situations the only thing that can be done is to
bubble up said error code to user space, for handling.

However, -ERESTARSYS was a poor choice, as it is supposed to be used
by the kernel only.

As such, replace -ERESTARTSYS with -EL3RST; as well, in
i2400m_msg_to_dev(), when the device is in boot mode (following a
recent reset), return -EL3RST instead of -ENODEV (meaning the device
is in bootrom mode after a reset, not that the device was
disconnected, and thus, normal commands cannot be executed).

Signed-off-by: Cindy H Kao <cindy.h.kao@intel.com>
drivers/net/wimax/i2400m/control.c
drivers/net/wimax/i2400m/driver.c

index f9399f2597f39b23ec2c315c493627a79f6d4bd9..07308686dbcf69f8fd9a90a2c05cef8641d5d9cf 100644 (file)
@@ -697,7 +697,7 @@ struct sk_buff *i2400m_msg_to_dev(struct i2400m *i2400m,
 
        rmb();          /* Make sure we see what i2400m_dev_reset_handle() */
        if (i2400m->boot_mode)
-               return ERR_PTR(-ENODEV);
+               return ERR_PTR(-EL3RST);
 
        msg_l3l4_hdr = buf;
        /* Check msg & payload consistency */
index 2a093c5768cc15b0e524c32b291d45fde9d27035..304f0443ca4bc7e739b7ad567557686c77987d8d 100644 (file)
@@ -453,7 +453,7 @@ error_rx_setup:
        i2400m_tx_release(i2400m);
 error_tx_setup:
 error_bootstrap:
-       if (result == -ERESTARTSYS && times-- > 0) {
+       if (result == -EL3RST && times-- > 0) {
                flags = I2400M_BRI_SOFT|I2400M_BRI_MAC_REINIT;
                goto retry;
        }
@@ -560,7 +560,7 @@ void __i2400m_dev_reset_handle(struct work_struct *ws)
                 * i2400m_dev_stop() [we are shutting down anyway, so
                 * ignore it] or we are resetting somewhere else. */
                dev_err(dev, "device rebooted\n");
-               i2400m_msg_to_dev_cancel_wait(i2400m, -ERESTARTSYS);
+               i2400m_msg_to_dev_cancel_wait(i2400m, -EL3RST);
                complete(&i2400m->msg_completion);
                goto out;
        }