I have a goal of trying to get rid of all the tasklets in the rxe driver and with the replacement of the three QP tasklets by workqueues the only remaining one is the tasklet that defers the CQ completion handler. This has been in there since the driver went upstream so the history of why it is there is lost. I notice that the mlx5 driver does have a deferral mechanism for the completion handler but the siw driver does not. I really do not see what advantage, if any, this has for the rxe driver. Perhaps there is some reason it shouldn't run in hard interrupt context but the CQ tasklet is a soft interrupt so the completion handler can't sleep anyway. As an experiment I removed the CQ tasklet in the rxe driver and it runs fine. In fact the performance is slightly better with the completion handler called inline rather than deferred to another tasklet. If we can eliminate this there won't be anymore tasklets in the rxe driver. Does anyone know why the tasklet was put in in the first place? Thanks, Bob