While initializing the interface if we are not able to setup the command
to UP the link then we release everything and return the error code.

Signed-off-by: Sudip Mukherjee <[email protected]>
---
 drivers/staging/slicoss/slicoss.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/slicoss/slicoss.c 
b/drivers/staging/slicoss/slicoss.c
index b1a8b4b..fb663c8 100644
--- a/drivers/staging/slicoss/slicoss.c
+++ b/drivers/staging/slicoss/slicoss.c
@@ -2379,7 +2379,22 @@ static int slic_if_init(struct adapter *adapter, 
unsigned long *flags)
        slic_reg32_write(&slic_regs->slic_icr, ICR_INT_ON, FLUSH);
 
        slic_link_config(adapter, LINK_AUTOSPEED, LINK_AUTOD);
-       slic_link_event_handler(adapter);
+       rc = slic_link_event_handler(adapter);
+       if (rc) {
+               /* disable interrupts then clear pending events */
+               slic_reg32_write(&slic_regs->slic_icr, ICR_INT_OFF, FLUSH);
+               slic_reg32_write(&slic_regs->slic_isr, 0, FLUSH);
+               if (adapter->pingtimerset) {
+                       del_timer(&adapter->pingtimer);
+                       adapter->pingtimerset = 0;
+               }
+               if (card->loadtimerset) {
+                       del_timer(&card->loadtimer);
+                       card->loadtimerset = 0;
+               }
+               adapter->state = ADAPT_DOWN;
+               slic_adapter_freeresources(adapter);
+       }
 
 err:
        return rc;
-- 
1.9.1

_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to