• Arnd Bergmann's avatar
    bnad: fix work_queue type mismatch · 5d07e432
    Arnd Bergmann authored
    clang-16 warns about a function pointer cast:
    
    drivers/net/ethernet/brocade/bna/bnad.c:1995:4: error: cast from 'void (*)(struct delayed_work *)' to 'work_func_t' (aka 'void (*)(struct work_struct *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
     1995 |                         (work_func_t)bnad_tx_cleanup);
    drivers/net/ethernet/brocade/bna/bnad.c:2252:4: error: cast from 'void (*)(void *)' to 'work_func_t' (aka 'void (*)(struct work_struct *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
     2252 |                         (work_func_t)(bnad_rx_cleanup));
    
    The problem here is mixing up work_struct and delayed_work, which relies
    the former being the first member of the latter.
    
    Change the code to use consistent types here to address the warning and
    make it more robust against workqueue interface changes.
    
    Side note: the use of a delayed workqueue for cleaning up TX descriptors
    is probably a bad idea since this introduces a noticeable delay. The
    driver currently does not appear to use BQL, but if one wanted to add
    that, this would have to be changed as well.
    
    Fixes: 01b54b14 ("bna: tx rx cleanup fix")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    5d07e432
bnad.c 91.7 KB