Lines Matching refs:dhd
40 dhd_lb_set_default_cpus(dhd_info_t *dhd) in dhd_lb_set_default_cpus() argument
43 atomic_set(&dhd->rx_napi_cpu, 1); in dhd_lb_set_default_cpus()
44 atomic_set(&dhd->rx_compl_cpu, 2); in dhd_lb_set_default_cpus()
45 atomic_set(&dhd->tx_compl_cpu, 2); in dhd_lb_set_default_cpus()
46 atomic_set(&dhd->tx_cpu, 2); in dhd_lb_set_default_cpus()
47 atomic_set(&dhd->net_tx_cpu, 0); in dhd_lb_set_default_cpus()
51 dhd_cpumasks_deinit(dhd_info_t *dhd) in dhd_cpumasks_deinit() argument
53 free_cpumask_var(dhd->cpumask_curr_avail); in dhd_cpumasks_deinit()
54 free_cpumask_var(dhd->cpumask_primary); in dhd_cpumasks_deinit()
55 free_cpumask_var(dhd->cpumask_primary_new); in dhd_cpumasks_deinit()
56 free_cpumask_var(dhd->cpumask_secondary); in dhd_cpumasks_deinit()
57 free_cpumask_var(dhd->cpumask_secondary_new); in dhd_cpumasks_deinit()
61 dhd_cpumasks_init(dhd_info_t *dhd) in dhd_cpumasks_init() argument
70 if (!alloc_cpumask_var(&dhd->cpumask_curr_avail, GFP_KERNEL) || in dhd_cpumasks_init()
71 !alloc_cpumask_var(&dhd->cpumask_primary, GFP_KERNEL) || in dhd_cpumasks_init()
72 !alloc_cpumask_var(&dhd->cpumask_primary_new, GFP_KERNEL) || in dhd_cpumasks_init()
73 !alloc_cpumask_var(&dhd->cpumask_secondary, GFP_KERNEL) || in dhd_cpumasks_init()
74 !alloc_cpumask_var(&dhd->cpumask_secondary_new, GFP_KERNEL)) { in dhd_cpumasks_init()
80 cpumask_copy(dhd->cpumask_curr_avail, cpu_online_mask); in dhd_cpumasks_init()
81 cpumask_clear(dhd->cpumask_primary); in dhd_cpumasks_init()
82 cpumask_clear(dhd->cpumask_secondary); in dhd_cpumasks_init()
92 cpumask_set_cpu(id, dhd->cpumask_primary); in dhd_cpumasks_init()
98 cpumask_set_cpu(id, dhd->cpumask_secondary); in dhd_cpumasks_init()
103 dhd_cpumasks_deinit(dhd); in dhd_cpumasks_init()
131 void dhd_select_cpu_candidacy(dhd_info_t *dhd) in dhd_select_cpu_candidacy() argument
139 cpumask_clear(dhd->cpumask_primary_new); in dhd_select_cpu_candidacy()
140 cpumask_clear(dhd->cpumask_secondary_new); in dhd_select_cpu_candidacy()
147 cpumask_and(dhd->cpumask_primary_new, dhd->cpumask_primary, in dhd_select_cpu_candidacy()
148 dhd->cpumask_curr_avail); in dhd_select_cpu_candidacy()
150 cpumask_and(dhd->cpumask_secondary_new, dhd->cpumask_secondary, in dhd_select_cpu_candidacy()
151 dhd->cpumask_curr_avail); in dhd_select_cpu_candidacy()
153 primary_available_cpus = cpumask_weight(dhd->cpumask_primary_new); in dhd_select_cpu_candidacy()
156 napi_cpu = cpumask_first(dhd->cpumask_primary_new); in dhd_select_cpu_candidacy()
161 tx_cpu = cpumask_next(napi_cpu, dhd->cpumask_primary_new); in dhd_select_cpu_candidacy()
166 compl_cpu = cpumask_next(tx_cpu, dhd->cpumask_primary_new); in dhd_select_cpu_candidacy()
175 secondary_available_cpus = cpumask_weight(dhd->cpumask_secondary_new); in dhd_select_cpu_candidacy()
185 napi_cpu = cpumask_first(dhd->cpumask_secondary_new); in dhd_select_cpu_candidacy()
186 tx_cpu = cpumask_next(napi_cpu, dhd->cpumask_secondary_new); in dhd_select_cpu_candidacy()
187 compl_cpu = cpumask_next(tx_cpu, dhd->cpumask_secondary_new); in dhd_select_cpu_candidacy()
189 tx_cpu = cpumask_first(dhd->cpumask_secondary_new); in dhd_select_cpu_candidacy()
190 compl_cpu = cpumask_next(tx_cpu, dhd->cpumask_secondary_new); in dhd_select_cpu_candidacy()
192 compl_cpu = cpumask_first(dhd->cpumask_secondary_new); in dhd_select_cpu_candidacy()
218 atomic_set(&dhd->rx_napi_cpu, napi_cpu); in dhd_select_cpu_candidacy()
219 atomic_set(&dhd->tx_compl_cpu, compl_cpu); in dhd_select_cpu_candidacy()
220 atomic_set(&dhd->rx_compl_cpu, compl_cpu); in dhd_select_cpu_candidacy()
221 atomic_set(&dhd->tx_cpu, tx_cpu); in dhd_select_cpu_candidacy()
236 dhd_info_t *dhd = g_dhd_pub->info; in dhd_cpu_startup_callback() local
239 DHD_LB_STATS_INCR(dhd->cpu_online_cnt[cpu]); in dhd_cpu_startup_callback()
240 cpumask_set_cpu(cpu, dhd->cpumask_curr_avail); in dhd_cpu_startup_callback()
241 dhd_select_cpu_candidacy(dhd); in dhd_cpu_startup_callback()
248 dhd_info_t *dhd = g_dhd_pub->info; in dhd_cpu_teardown_callback() local
251 DHD_LB_STATS_INCR(dhd->cpu_offline_cnt[cpu]); in dhd_cpu_teardown_callback()
252 cpumask_clear_cpu(cpu, dhd->cpumask_curr_avail); in dhd_cpu_teardown_callback()
253 dhd_select_cpu_candidacy(dhd); in dhd_cpu_teardown_callback()
267 dhd_info_t *dhd = container_of(nfb, dhd_info_t, cpu_notifier); in dhd_cpu_callback() local
272 if (!dhd || !(dhd->dhd_state & DHD_ATTACH_STATE_LB_ATTACH_DONE)) { in dhd_cpu_callback()
282 DHD_LB_STATS_INCR(dhd->cpu_online_cnt[cpu]); in dhd_cpu_callback()
283 cpumask_set_cpu(cpu, dhd->cpumask_curr_avail); in dhd_cpu_callback()
284 dhd_select_cpu_candidacy(dhd); in dhd_cpu_callback()
289 DHD_LB_STATS_INCR(dhd->cpu_offline_cnt[cpu]); in dhd_cpu_callback()
290 cpumask_clear_cpu(cpu, dhd->cpumask_curr_avail); in dhd_cpu_callback()
291 dhd_select_cpu_candidacy(dhd); in dhd_cpu_callback()
301 int dhd_register_cpuhp_callback(dhd_info_t *dhd) in dhd_register_cpuhp_callback() argument
318 dhd->cpu_notifier.notifier_call = dhd_cpu_callback; in dhd_register_cpuhp_callback()
319 register_hotcpu_notifier(&dhd->cpu_notifier); /* Register a callback */ in dhd_register_cpuhp_callback()
324 int dhd_unregister_cpuhp_callback(dhd_info_t *dhd) in dhd_unregister_cpuhp_callback() argument
331 if (dhd->cpu_notifier.notifier_call != NULL) { in dhd_unregister_cpuhp_callback()
332 unregister_cpu_notifier(&dhd->cpu_notifier); in dhd_unregister_cpuhp_callback()
341 dhd_info_t *dhd; in dhd_lb_stats_init() local
351 dhd = dhdp->info; in dhd_lb_stats_init()
352 if (dhd == NULL) { in dhd_lb_stats_init()
357 DHD_LB_STATS_CLR(dhd->dhd_dpc_cnt); in dhd_lb_stats_init()
358 DHD_LB_STATS_CLR(dhd->napi_sched_cnt); in dhd_lb_stats_init()
360 dhd->napi_percpu_run_cnt = (uint32 *)MALLOC(dhdp->osh, alloc_size); in dhd_lb_stats_init()
361 if (!dhd->napi_percpu_run_cnt) { in dhd_lb_stats_init()
367 DHD_LB_STATS_CLR(dhd->napi_percpu_run_cnt[i]); in dhd_lb_stats_init()
369 DHD_LB_STATS_CLR(dhd->rxc_sched_cnt); in dhd_lb_stats_init()
371 dhd->rxc_percpu_run_cnt = (uint32 *)MALLOC(dhdp->osh, alloc_size); in dhd_lb_stats_init()
372 if (!dhd->rxc_percpu_run_cnt) { in dhd_lb_stats_init()
378 DHD_LB_STATS_CLR(dhd->rxc_percpu_run_cnt[i]); in dhd_lb_stats_init()
380 DHD_LB_STATS_CLR(dhd->txc_sched_cnt); in dhd_lb_stats_init()
382 dhd->txc_percpu_run_cnt = (uint32 *)MALLOC(dhdp->osh, alloc_size); in dhd_lb_stats_init()
383 if (!dhd->txc_percpu_run_cnt) { in dhd_lb_stats_init()
389 DHD_LB_STATS_CLR(dhd->txc_percpu_run_cnt[i]); in dhd_lb_stats_init()
391 dhd->cpu_online_cnt = (uint32 *)MALLOC(dhdp->osh, alloc_size); in dhd_lb_stats_init()
392 if (!dhd->cpu_online_cnt) { in dhd_lb_stats_init()
398 DHD_LB_STATS_CLR(dhd->cpu_online_cnt[i]); in dhd_lb_stats_init()
400 dhd->cpu_offline_cnt = (uint32 *)MALLOC(dhdp->osh, alloc_size); in dhd_lb_stats_init()
401 if (!dhd->cpu_offline_cnt) { in dhd_lb_stats_init()
407 DHD_LB_STATS_CLR(dhd->cpu_offline_cnt[i]); in dhd_lb_stats_init()
409 dhd->txp_percpu_run_cnt = (uint32 *)MALLOC(dhdp->osh, alloc_size); in dhd_lb_stats_init()
410 if (!dhd->txp_percpu_run_cnt) { in dhd_lb_stats_init()
416 DHD_LB_STATS_CLR(dhd->txp_percpu_run_cnt[i]); in dhd_lb_stats_init()
418 dhd->tx_start_percpu_run_cnt = (uint32 *)MALLOC(dhdp->osh, alloc_size); in dhd_lb_stats_init()
419 if (!dhd->tx_start_percpu_run_cnt) { in dhd_lb_stats_init()
425 DHD_LB_STATS_CLR(dhd->tx_start_percpu_run_cnt[i]); in dhd_lb_stats_init()
428 dhd->napi_rx_hist[j] = (uint32 *)MALLOC(dhdp->osh, alloc_size); in dhd_lb_stats_init()
429 if (!dhd->napi_rx_hist[j]) { in dhd_lb_stats_init()
435 DHD_LB_STATS_CLR(dhd->napi_rx_hist[j][i]); in dhd_lb_stats_init()
440 dhd->txc_hist[j] = (uint32 *)MALLOC(dhdp->osh, alloc_size); in dhd_lb_stats_init()
441 if (!dhd->txc_hist[j]) { in dhd_lb_stats_init()
447 DHD_LB_STATS_CLR(dhd->txc_hist[j][i]); in dhd_lb_stats_init()
453 dhd->rxc_hist[j] = (uint32 *)MALLOC(dhdp->osh, alloc_size); in dhd_lb_stats_init()
454 if (!dhd->rxc_hist[j]) { in dhd_lb_stats_init()
460 DHD_LB_STATS_CLR(dhd->rxc_hist[j][i]); in dhd_lb_stats_init()
469 dhd_info_t *dhd; in dhd_lb_stats_deinit() local
479 dhd = dhdp->info; in dhd_lb_stats_deinit()
480 if (dhd == NULL) { in dhd_lb_stats_deinit()
485 if (dhd->napi_percpu_run_cnt) { in dhd_lb_stats_deinit()
486 MFREE(dhdp->osh, dhd->napi_percpu_run_cnt, alloc_size); in dhd_lb_stats_deinit()
487 dhd->napi_percpu_run_cnt = NULL; in dhd_lb_stats_deinit()
489 if (dhd->rxc_percpu_run_cnt) { in dhd_lb_stats_deinit()
490 MFREE(dhdp->osh, dhd->rxc_percpu_run_cnt, alloc_size); in dhd_lb_stats_deinit()
491 dhd->rxc_percpu_run_cnt = NULL; in dhd_lb_stats_deinit()
493 if (dhd->txc_percpu_run_cnt) { in dhd_lb_stats_deinit()
494 MFREE(dhdp->osh, dhd->txc_percpu_run_cnt, alloc_size); in dhd_lb_stats_deinit()
495 dhd->txc_percpu_run_cnt = NULL; in dhd_lb_stats_deinit()
497 if (dhd->cpu_online_cnt) { in dhd_lb_stats_deinit()
498 MFREE(dhdp->osh, dhd->cpu_online_cnt, alloc_size); in dhd_lb_stats_deinit()
499 dhd->cpu_online_cnt = NULL; in dhd_lb_stats_deinit()
501 if (dhd->cpu_offline_cnt) { in dhd_lb_stats_deinit()
502 MFREE(dhdp->osh, dhd->cpu_offline_cnt, alloc_size); in dhd_lb_stats_deinit()
503 dhd->cpu_offline_cnt = NULL; in dhd_lb_stats_deinit()
506 if (dhd->txp_percpu_run_cnt) { in dhd_lb_stats_deinit()
507 MFREE(dhdp->osh, dhd->txp_percpu_run_cnt, alloc_size); in dhd_lb_stats_deinit()
508 dhd->txp_percpu_run_cnt = NULL; in dhd_lb_stats_deinit()
510 if (dhd->tx_start_percpu_run_cnt) { in dhd_lb_stats_deinit()
511 MFREE(dhdp->osh, dhd->tx_start_percpu_run_cnt, alloc_size); in dhd_lb_stats_deinit()
512 dhd->tx_start_percpu_run_cnt = NULL; in dhd_lb_stats_deinit()
516 if (dhd->napi_rx_hist[j]) { in dhd_lb_stats_deinit()
517 MFREE(dhdp->osh, dhd->napi_rx_hist[j], alloc_size); in dhd_lb_stats_deinit()
518 dhd->napi_rx_hist[j] = NULL; in dhd_lb_stats_deinit()
521 if (dhd->txc_hist[j]) { in dhd_lb_stats_deinit()
522 MFREE(dhdp->osh, dhd->txc_hist[j], alloc_size); in dhd_lb_stats_deinit()
523 dhd->txc_hist[j] = NULL; in dhd_lb_stats_deinit()
527 if (dhd->rxc_hist[j]) { in dhd_lb_stats_deinit()
528 MFREE(dhdp->osh, dhd->rxc_hist[j], alloc_size); in dhd_lb_stats_deinit()
529 dhd->rxc_hist[j] = NULL; in dhd_lb_stats_deinit()
600 dhd_info_t *dhd; in dhd_lb_stats_dump() local
608 dhd = dhdp->info; in dhd_lb_stats_dump()
609 if (dhd == NULL) { in dhd_lb_stats_dump()
615 dhd_lb_stats_dump_cpu_array(strbuf, dhd->cpu_online_cnt); in dhd_lb_stats_dump()
618 dhd_lb_stats_dump_cpu_array(strbuf, dhd->cpu_offline_cnt); in dhd_lb_stats_dump()
621 dhd->dhd_dpc_cnt, dhd->napi_sched_cnt, dhd->rxc_sched_cnt, in dhd_lb_stats_dump()
622 dhd->txc_sched_cnt); in dhd_lb_stats_dump()
626 dhd_lb_stats_dump_cpu_array(strbuf, dhd->napi_percpu_run_cnt); in dhd_lb_stats_dump()
628 dhd_lb_stats_dump_histo(dhdp, strbuf, dhd->napi_rx_hist); in dhd_lb_stats_dump()
633 dhd_lb_stats_dump_cpu_array(strbuf, dhd->rxc_percpu_run_cnt); in dhd_lb_stats_dump()
635 dhd_lb_stats_dump_histo(dhdp, strbuf, dhd->rxc_hist); in dhd_lb_stats_dump()
640 dhd_lb_stats_dump_cpu_array(strbuf, dhd->txc_percpu_run_cnt); in dhd_lb_stats_dump()
642 dhd_lb_stats_dump_histo(dhdp, strbuf, dhd->txc_hist); in dhd_lb_stats_dump()
647 dhd_lb_stats_dump_cpu_array(strbuf, dhd->txp_percpu_run_cnt); in dhd_lb_stats_dump()
650 dhd_lb_stats_dump_cpu_array(strbuf, dhd->tx_start_percpu_run_cnt); in dhd_lb_stats_dump()
692 dhd_info_t *dhd = dhdp->info; in dhd_lb_stats_update_napi_histo() local
696 dhd_lb_stats_update_histo(dhd->napi_rx_hist, count, cpu); in dhd_lb_stats_update_napi_histo()
704 dhd_info_t *dhd = dhdp->info; in dhd_lb_stats_update_txc_histo() local
708 dhd_lb_stats_update_histo(dhd->txc_hist, count, cpu); in dhd_lb_stats_update_txc_histo()
716 dhd_info_t *dhd = dhdp->info; in dhd_lb_stats_update_rxc_histo() local
720 dhd_lb_stats_update_histo(dhd->rxc_hist, count, cpu); in dhd_lb_stats_update_rxc_histo()
727 dhd_info_t *dhd = dhdp->info; in dhd_lb_stats_txc_percpu_cnt_incr() local
728 DHD_LB_STATS_PERCPU_ARR_INCR(dhd->txc_percpu_run_cnt); in dhd_lb_stats_txc_percpu_cnt_incr()
733 dhd_info_t *dhd = dhdp->info; in dhd_lb_stats_rxc_percpu_cnt_incr() local
734 DHD_LB_STATS_PERCPU_ARR_INCR(dhd->rxc_percpu_run_cnt); in dhd_lb_stats_rxc_percpu_cnt_incr()
792 dhd_info_t *dhd = dhdp->info; in dhd_lb_tx_compl_dispatch() local
795 if (dhd->rx_napi_netdev == NULL) { in dhd_lb_tx_compl_dispatch()
800 DHD_LB_STATS_INCR(dhd->txc_sched_cnt); in dhd_lb_tx_compl_dispatch()
808 on_cpu = atomic_read(&dhd->tx_compl_cpu); in dhd_lb_tx_compl_dispatch()
811 dhd_tasklet_schedule(&dhd->tx_compl_tasklet); in dhd_lb_tx_compl_dispatch()
813 schedule_work(&dhd->tx_compl_dispatcher_work); in dhd_lb_tx_compl_dispatch()
819 struct dhd_info *dhd = in dhd_tx_compl_dispatcher_fn() local
824 cpu = atomic_read(&dhd->tx_compl_cpu); in dhd_tx_compl_dispatcher_fn()
826 dhd_tasklet_schedule(&dhd->tx_compl_tasklet); in dhd_tx_compl_dispatcher_fn()
828 dhd_tasklet_schedule_on(&dhd->tx_compl_tasklet, cpu); in dhd_tx_compl_dispatcher_fn()
845 dhd_info_t *dhd = dhdp->info; in dhd_lb_rx_compl_dispatch() local
848 if (dhd->rx_napi_netdev == NULL) { in dhd_lb_rx_compl_dispatch()
853 DHD_LB_STATS_INCR(dhd->rxc_sched_cnt); in dhd_lb_rx_compl_dispatch()
860 on_cpu = atomic_read(&dhd->rx_compl_cpu); in dhd_lb_rx_compl_dispatch()
863 dhd_tasklet_schedule(&dhd->rx_compl_tasklet); in dhd_lb_rx_compl_dispatch()
865 schedule_work(&dhd->rx_compl_dispatcher_work); in dhd_lb_rx_compl_dispatch()
871 struct dhd_info *dhd = in dhd_rx_compl_dispatcher_fn() local
876 cpu = atomic_read(&dhd->rx_compl_cpu); in dhd_rx_compl_dispatcher_fn()
878 dhd_tasklet_schedule(&dhd->rx_compl_tasklet); in dhd_rx_compl_dispatcher_fn()
880 dhd_tasklet_schedule_on(&dhd->rx_compl_tasklet, cpu); in dhd_rx_compl_dispatcher_fn()
893 struct dhd_info *dhd = in dhd_tx_dispatcher_work() local
898 dhd_tasklet_schedule(&dhd->tx_tasklet); in dhd_tx_dispatcher_work()
905 dhd_info_t *dhd = dhdp->info; in dhd_tx_dispatcher_fn() local
908 cpu = atomic_read(&dhd->tx_cpu); in dhd_tx_dispatcher_fn()
909 net_tx_cpu = atomic_read(&dhd->net_tx_cpu); in dhd_tx_dispatcher_fn()
917 cpu = atomic_read(&dhd->tx_compl_cpu); in dhd_tx_dispatcher_fn()
924 dhd_tasklet_schedule(&dhd->tx_tasklet); in dhd_tx_dispatcher_fn()
930 dhd_work_schedule_on(&dhd->tx_dispatcher_work, cpu); in dhd_tx_dispatcher_fn()
945 dhd_info_t *dhd = dhdp->info; in dhd_lb_tx_dispatch() local
952 atomic_set(&dhd->net_tx_cpu, curr_cpu); in dhd_lb_tx_dispatch()
980 struct dhd_info *dhd; in dhd_napi_poll() local
988 dhd = container_of(napi, struct dhd_info, rx_napi_struct); in dhd_napi_poll()
994 __FUNCTION__, skb_queue_len(&dhd->rx_napi_queue), budget)); in dhd_napi_poll()
998 spin_lock_irqsave(&dhd->rx_napi_queue.lock, flags); in dhd_napi_poll()
999 skb_queue_splice_tail_init(&dhd->rx_napi_queue, &rx_process_queue); in dhd_napi_poll()
1000 spin_unlock_irqrestore(&dhd->rx_napi_queue.lock, flags); in dhd_napi_poll()
1010 dhd_rx_frame(&dhd->pub, ifid, skb, pkt_count, chan); in dhd_napi_poll()
1014 DHD_LB_STATS_UPDATE_NAPI_HISTO(&dhd->pub, processed); in dhd_napi_poll()
1035 dhd_info_t *dhd = (dhd_info_t *)info; in dhd_napi_schedule() local
1038 __FUNCTION__, &dhd->rx_napi_struct, atomic_read(&dhd->rx_napi_cpu))); in dhd_napi_schedule()
1041 if (napi_schedule_prep(&dhd->rx_napi_struct)) { in dhd_napi_schedule()
1042 __napi_schedule(&dhd->rx_napi_struct); in dhd_napi_schedule()
1064 dhd_napi_schedule_on(dhd_info_t *dhd, int on_cpu) in dhd_napi_schedule_on() argument
1068 __FUNCTION__, dhd, &dhd->rx_napi_struct, on_cpu)); in dhd_napi_schedule_on()
1070 if (smp_call_function_single(on_cpu, dhd_napi_schedule, dhd, wait)) { in dhd_napi_schedule_on()
1075 DHD_LB_STATS_INCR(dhd->napi_sched_cnt); in dhd_napi_schedule_on()
1112 struct dhd_info *dhd = in dhd_rx_napi_dispatcher_fn() local
1120 cpu = atomic_read(&dhd->rx_napi_cpu); in dhd_rx_napi_dispatcher_fn()
1123 dhd_napi_schedule(dhd); in dhd_rx_napi_dispatcher_fn()
1125 dhd_napi_schedule_on(dhd, cpu); in dhd_rx_napi_dispatcher_fn()
1141 dhd_info_t *dhd = dhdp->info; local
1148 if (dhd->rx_napi_netdev == NULL) {
1154 skb_queue_len(&dhd->rx_napi_queue), skb_queue_len(&dhd->rx_pend_queue)));
1157 spin_lock_irqsave(&dhd->rx_napi_queue.lock, flags);
1158 skb_queue_splice_tail_init(&dhd->rx_pend_queue, &dhd->rx_napi_queue);
1159 spin_unlock_irqrestore(&dhd->rx_napi_queue.lock, flags);
1161 DHD_LB_STATS_PERCPU_ARR_INCR(dhd->napi_percpu_run_cnt);
1164 if (atomic_read(&dhd->lb_rxp_active) == 0) {
1165 dhd_napi_schedule(dhd);
1177 on_cpu = atomic_read(&dhd->rx_napi_cpu);
1179 if (cpumask_and(&cpus, cpumask_of(curr_cpu), dhd->cpumask_primary) ||
1185 curr_cpu, *cpumask_bits(dhd->cpumask_primary)));
1186 dhd_napi_schedule(dhd);
1189 __FUNCTION__, curr_cpu, *cpumask_bits(dhd->cpumask_primary)));
1190 schedule_work(&dhd->rx_napi_dispatcher_work);
1191 DHD_LB_STATS_INCR(dhd->napi_sched_cnt);
1202 dhd_info_t *dhd = dhdp->info; local
1205 pkt, ifidx, skb_queue_len(&dhd->rx_pend_queue)));
1207 __skb_queue_tail(&dhd->rx_pend_queue, pkt);
1243 dhd_lb_sendpkt(dhd_info_t *dhd, struct net_device *net, argument
1246 DHD_LB_STATS_PERCPU_ARR_INCR(dhd->tx_start_percpu_run_cnt);
1249 if (atomic_read(&dhd->lb_txp_active) == 0) {
1250 DHD_LB_STATS_PERCPU_ARR_INCR(dhd->txp_percpu_run_cnt);
1251 return __dhd_sendpkt(&dhd->pub, ifidx, skb);
1259 skb_queue_tail(&dhd->tx_pend_queue, skb);
1264 dhd_lb_tx_dispatch(&dhd->pub);
1276 dhd_lb_tx_process(dhd_info_t *dhd) argument
1285 if (dhd == NULL) {
1292 DHD_LB_STATS_PERCPU_ARR_INCR(dhd->txp_percpu_run_cnt);
1296 skb = skb_dequeue(&dhd->tx_pend_queue);
1309 __dhd_sendpkt(&dhd->pub, ifidx, skb);
1326 dhd_info_t *dhd = (dhd_info_t *)data; local
1328 if (dhd_lb_tx_process(dhd)) {
1329 dhd_tasklet_schedule(&dhd->tx_tasklet);