A word on the internals of tasklet invocation: we understand that the tasklet softirq runs via tasklet_schedule(). This API ends up invoking the kernel's internal __tasklet_schedule_common() function (https://elixir.bootlin.com/linux/v5.4/source/kernel/softirq.c#L471), which internally calls raise_softirq_irqoff(softirq_nr) (https://elixir.bootlin.com/linux/v5.4/source/kernel/softirq.c#L423). This raises the softirq_nr softirq; for a regular tasklet, this value is TASKLET_SOFTIRQ, whereas when the tasklet is scheduled via the tasklet_hi_schedule() API, is value is HI_SOFTIRQ, the highest priority softirq! Use it rarely, if ever.
We now know that the "schedule" functionality has set up the softirq; here, the actual execution takes place when the softirqs at that priority level (0 or 6 here) actually run. The function that runs softirqs is called do_softirq(); for the regular tasklet, it ends up calling...