That's right, 'extern' is unnecessary, I'll remove it soon. Looking forward for more advise. Thanks.
+extern struct workqueue_struct *smc_tcp_ls_wq; /* wq for tcp listen work */I don't think this extern is needed, the work queue is only used within af_smc.c, right? Even the smc_hs_wq would not need to be extern, but this would be a future cleanup.extern struct workqueue_struct *smc_hs_wq; /* wq for handshake work */ extern struct workqueue_struct *smc_close_wq; /* wq for close work */