netif_wake_queue(9)
β¨ netif_wake_queue π β the "okay bestie, you can send again" function
so like, we're in the Kernel API Manual, section 9 (that's the kernel-API section, iykyk), and today's main character is netif_wake_queue. she's small. she's one line. she's iconic. π
πΈ NAME πΈ
netif_wake_queue β restart transmit π¦
like literally. you stopped it, and now you're un-stopping it. the queue is awake. she's up. she's caffeinated. β¨
π¦ SYNOPSIS π¦
void netif_wake_queue (struct net_device *dev );
yeah that's it. that's the whole function. no return value, no drama, no cap. π
π ARGUMENTS π
devβ the network device π₯οΈ β the actual NIC-adjacent struct you're trying to wake back up. she's astruct net_device *. that's the whole argument list. one (1) argument. we love a low-maintenance signature.
π DESCRIPTION π
okay so here's the vibe: this lets the upper layers call the device's hard_start_xmit routine again. π₯
that's it. that's the function.
it's for flow control β specifically, you use it when transmit resources are available. so your driver does the thing where it runs out of TX descriptors (or whatever resource situation, no judgment), calls the stop-queue sibling, and then when the resources free up it hits netif_wake_queue and the stack goes "oh word? we're back?" and starts feeding you packets again. π
ngl the funniest part is how much chaos one void function can prevent. flow control is literally the whole plot and she's out here with zero return values. queen behavior. π
π SEE ALSO π
okay this is the part where the manpage goes absolutely feral and lists basically the entire networking header. buckle up bestie, we're going through all of them. π«Ά
- the Kernel file
./include/linux/netdevice.hπ struct gro_node(9)napi_is_scheduled(9)napi_schedule(9)napi_schedule_irqoff(9)napi_complete_done(9)napi_synchronize(9)napi_if_scheduled_mark_missed(9)enum netdev_priv_flags(9)struct net_device(9)netdev_priv(9)netdev_from_priv(9)netif_napi_add(9)netif_napi_add_config(9)netif_napi_add_tx(9)__netif_napi_del(9)netif_napi_del(9)netif_start_queue(9)netif_stop_queue(9)netif_queue_stopped(9)netdev_queue_set_dql_min_limit(9)netdev_txq_bql_enqueue_prefetchw(9)netdev_txq_bql_complete_prefetchw(9)netdev_tx_sent_queue(9)netdev_sent_queue(9)netdev_tx_completed_queue(9)netdev_completed_queue(9)netdev_tx_reset_subqueue(9)netdev_reset_queue(9)netdev_cap_txqueue(9)netif_running(9)netif_start_subqueue(9)netif_stop_subqueue(9)__netif_subqueue_stopped(9)netif_subqueue_stopped(9)netif_wake_subqueue(9)netif_attr_test_mask(9)netif_attr_test_online(9)netif_attrmask_next(9)netif_attrmask_next_and(9)netif_is_multiqueue(9)dev_hold(9)dev_put(9)linkwatch_sync_dev(9)netif_carrier_ok(9)netif_dormant_on(9)netif_dormant_off(9)netif_dormant(9)netif_testing_on(9)netif_testing_off(9)netif_testing(9)netif_oper_up(9)netif_device_present(9)netif_tx_lock(9)__dev_uc_sync(9)__dev_uc_unsync(9)__dev_mc_sync(9)__dev_mc_unsync(9)
like I said. the whole friend group showed up to the party. π§β¨
and that's the page!! ty for coming to my ted talk π this little icon was brought to you by the fine people at ./include/linux, and the version tag says October 2026 β so yeah, she's got a date stamp and everything, very official, very demure. mwah ππ¦
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms