• John W. Linville's avatar
    [PATCH] via-rhine: change mdelay to msleep and remove from ISR path · 6ba98d31
    John W. Linville authored
    Get rid of the mdelay call in rhine_disable_linkmon.  The function
    is called from the via-rhine versions of mdio_read and mdio_write.
    Those functions are indirectly called from rhine_check_media and
    rhine_tx_timeout, both of which can be called in interrupt context.
    
    So, create tx_timeout_task and check_media_task as instances of struct
    work_struct inside of rhine_private.  Then, change rhine_tx_timeout to
    invoke schedule_work for tx_timeout_task (i.e. rhine_tx_timeout_task),
    moving the work to process context.  Also, change rhine_error (invoked
    from rhine_interrupt) to invoke schedule_work for check_media_task
    (i.e. rhine_check_media_task), which simply calls rhine_check media
    in process context.  Finally, add a call to flush_scheduled_work in
    rhine_close to avoid any resource conflicts with pending work items.
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
    6ba98d31
via-rhine.c 57.2 KB