i40e_vsi_setup(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– i40e_vsi_setup(9) β€” a Kernel API Manual moment πŸ’–

okay so bestie, this is a page straight out of the Kernel API Manual, and the star of the show is i40e_vsi_setup(9). she's giving "I set up VSIs by a given type" and honestly? iconic.

✨ NAME ✨

i40e_vsi_setup β€” Set up a VSI by a given type

πŸ¦‹ SYNOPSIS πŸ¦‹

struct i40e_vsi * i40e_vsi_setup (struct i40e_pf *pf , u8 type , u16
uplink_seid , u32 param1 );

like, that's the whole signature, copy it exactly babes, don't freestyle it πŸ’…

πŸŽ€ ARGUMENTS πŸŽ€

here's the cast of characters, no skips:

  • pf β€” the board private structure 🫢
  • type β€” the VSI type
  • uplink_seid β€” the switch element to link to
  • param1 β€” what this one means totally depends on the VSI type. For VF types, it indicates the VF id πŸ‘‘

🌸 DESCRIPTION 🌸

so what does she actually do? she allocates the sw VSI structure and its queue resources, then she adds a VSI to the identified VEB. two jobs, one function, main character energy fr fr.

and the return vibes: she returns a pointer to the successfully allocated and configure VSI sw struct on success β€” otherwise she returns NULL on failure 😭 no cap, check that pointer.

🌈 SEE ALSO 🌈

first up, the kernel file, exactly as written:

Kernel file ./drivers/net/ethernet/intel/i40e/i40e_main.c

and now, the friend group. it's a big friend group. like, huge. every single one of them gets a shoutout because that's what a good bestie does πŸ’–

i40e_hw_to_dev(9), i40e_allocate_dma_mem(9), i40e_free_dma_mem(9), i40e_allocate_virt_mem(9), i40e_free_virt_mem(9), i40e_get_lump(9), i40e_put_lump(9), i40e_find_vsi_from_id(9), i40e_service_event_schedule(9), i40e_tx_timeout(9), i40e_get_vsi_stats_struct(9), i40e_get_netdev_stats_struct_tx(9), i40e_get_netdev_stats_struct(9), i40e_vsi_reset_stats(9), i40e_pf_reset_stats(9), i40e_compute_pci_to_hw_id(9), i40e_stat_update64(9), i40e_stat_update48(9), i40e_stat_update32(9), i40e_stat_update_and_clear32(9), i40e_stats_update_rx_discards(9), i40e_update_eth_stats(9), i40e_update_veb_stats(9), i40e_update_vsi_stats(9), i40e_update_pf_stats(9), i40e_update_stats(9), i40e_count_all_filters(9), i40e_count_active_filters(9), i40e_find_filter(9), i40e_find_mac(9), i40e_is_vsi_in_vlan(9), i40e_correct_mac_vlan_filters(9), i40e_get_vf_new_vlan(9), i40e_correct_vf_mac_vlan_filters(9), i40e_rm_default_mac_filter(9), i40e_add_filter(9), __i40e_del_filter(9), i40e_add_mac_filter(9), i40e_del_mac_filter(9), i40e_set_mac(9), i40e_config_rss_aq(9), i40e_vsi_config_rss(9), i40e_vsi_setup_queue_map_mqprio(9), i40e_vsi_setup_queue_map(9), i40e_addr_sync(9), i40e_addr_unsync(9), i40e_set_rx_mode(9), i40e_undo_del_filter_entries(9), i40e_undo_add_filter_entries(9), i40e_next_filter(9), i40e_update_filter_state(9), i40e_aqc_del_filters(9), i40e_aqc_add_filters(9), i40e_aqc_broadcast_filter(9), i40e_set_promiscuous(9), i40e_sync_vsi_filters(9), i40e_sync_filters_subtask(9), i40e_calculate_vsi_rx_buf_len(9), i40e_max_vsi_frame_size(9), i40e_change_mtu(9), i40e_vlan_stripping_enable(9), i40e_vlan_stripping_disable(9), i40e_add_vlan_all_mac(9), i40e_vsi_add_vlan(9), i40e_rm_vlan_all_mac(9), i40e_vsi_kill_vlan(9), i40e_vlan_rx_add_vid(9), i40e_vlan_rx_add_vid_up(9), i40e_vlan_rx_kill_vid(9), i40e_restore_vlan(9), i40e_vsi_add_pvid(9), i40e_vsi_remove_pvid(9), i40e_vsi_setup_tx_resources(9), i40e_vsi_free_tx_resources(9), i40e_vsi_setup_rx_resources(9), i40e_vsi_free_rx_resources(9), i40e_config_xps_tx_ring(9), i40e_xsk_pool(9), i40e_configure_tx_ring(9), i40e_rx_offset(9), i40e_configure_rx_ring(9), i40e_vsi_configure_tx(9), i40e_vsi_configure_rx(9), i40e_vsi_config_dcb_rings(9), i40e_set_vsi_rx_mode(9), i40e_reset_fdir_filter_cnt(9), i40e_fdir_filter_restore(9), i40e_vsi_configure(9), i40e_vsi_configure_msix(9), i40e_enable_misc_int_causes(9), i40e_configure_msi_and_legacy(9), i40e_irq_dynamic_disable_icr0(9), i40e_irq_dynamic_enable_icr0(9), i40e_msix_clean_rings(9), i40e_irq_affinity_notify(9), i40e_irq_affinity_release(9), i40e_vsi_request_irq_msix(9), i40e_vsi_disable_irq(9), i40e_vsi_enable_irq(9), i40e_free_misc_vector(9), i40e_intr(9), i40e_clean_fdir_tx_irq(9), i40e_fdir_clean_ring(9), i40e_map_vector_to_qp(9), i40e_vsi_map_rings_to_vectors(9), i40e_vsi_request_irq(9), i40e_netpoll(9), i40e_pf_txq_wait(9), i40e_control_tx_q(9), i40e_control_wait_tx_q(9), i40e_vsi_enable_tx(9), i40e_pf_rxq_wait(9), i40e_control_rx_q(9), i40e_control_wait_rx_q(9), i40e_vsi_enable_rx(9), i40e_vsi_start_rings(9), i40e_vsi_stop_rings(9), i40e_vsi_stop_rings_no_wait(9), i40e_vsi_free_irq(9), i40e_free_q_vector(9), i40e_vsi_free_q_vectors(9), i40e_reset_interrupt_capability(9), i40e_clear_interrupt_scheme(9), i40e_napi_enable_all(9), i40e_napi_disable_all(9), i40e_vsi_close(9), i40e_quiesce_vsi(9), i40e_unquiesce_vsi(9), i40e_pf_quiesce_all_vsi(9), i40e_pf_unquiesce_all_vsi(9), i40e_vsi_wait_queues_disabled(9), i40e_pf_wait_queues_disabled(9)

still going, don't scroll away 🧚

i40e_get_iscsi_tc_map(9), i40e_dcb_get_num_tc(9), i40e_dcb_get_enabled_tc(9), i40e_mqprio_get_enabled_tc(9), i40e_pf_get_num_tc(9), i40e_pf_get_tc_map(9), i40e_vsi_get_bw_info(9), i40e_vsi_configure_bw_alloc(9), i40e_vsi_config_netdev_tc(9), i40e_vsi_update_queue_map(9), i40e_update_adq_vsi_queues(9), i40e_vsi_config_tc(9), i40e_vsi_reconfig_tc(9), i40e_get_link_speed(9), i40e_bw_bytes_to_mbits(9), i40e_set_bw_limit(9), i40e_remove_queue_channels(9), i40e_get_max_queues_for_channel(9), i40e_validate_num_queues(9), i40e_vsi_reconfig_rss(9), i40e_channel_setup_queue_map(9), i40e_add_channel(9), i40e_channel_config_tx_ring(9), i40e_setup_hw_channel(9), i40e_setup_channel(9), i40e_validate_and_set_switch_mode(9), i40e_create_queue_channel(9), i40e_configure_queue_channels(9), i40e_veb_config_tc(9), i40e_dcb_reconfigure(9), i40e_resume_port_tx(9), i40e_suspend_port_tx(9), i40e_hw_set_dcb_config(9), i40e_hw_dcb_config(9), i40e_dcb_sw_default_config(9), i40e_init_pf_dcb(9), i40e_print_link_message(9), i40e_up_complete(9), i40e_vsi_reinit_locked(9), i40e_force_link_state(9), i40e_up(9), i40e_down(9), i40e_validate_mqprio_qopt(9), i40e_vsi_set_default_tc_config(9), i40e_del_macvlan_filter(9), i40e_add_macvlan_filter(9), i40e_reset_ch_rings(9), i40e_free_macvlan_channels(9), i40e_fwd_ring_up(9), i40e_setup_macvlans(9), i40e_fwd_add(9), i40e_del_all_macvlans(9), i40e_fwd_del(9), i40e_setup_tc(9), i40e_set_cld_element(9), i40e_add_del_cloud_filter(9), i40e_add_del_cloud_filter_big_buf(9), i40e_parse_cls_flower(9), i40e_handle_tclass(9), i40e_configure_clsflower(9), i40e_find_cloud_filter(9), i40e_delete_clsflower(9), i40e_setup_tc_cls_flower(9), i40e_open(9), i40e_netif_set_realnum_tx_rx_queues(9), i40e_vsi_open(9), i40e_fdir_filter_exit(9), i40e_cloud_filter_exit(9), i40e_close(9), i40e_do_reset(9), i40e_dcb_need_reconfig(9), i40e_handle_lldp_event(9), i40e_do_reset_safe(9), i40e_handle_lan_overflow_event(9), i40e_get_current_fd_count(9), i40e_get_global_fd_count(9), i40e_reenable_fdir_sb(9), i40e_reenable_fdir_atr(9), i40e_delete_invalid_filter(9), i40e_fdir_check_and_reenable(9), i40e_fdir_flush_and_replay(9), i40e_get_current_atr_cnt(9), i40e_fdir_reinit_subtask(9), i40e_vsi_link_event(9), i40e_veb_link_event(9), i40e_link_event(9), i40e_watchdog_subtask(9), i40e_reset_subtask(9), i40e_handle_link_event(9), i40e_clean_adminq_subtask(9), i40e_verify_eeprom(9), i40e_enable_pf_switch_lb(9), i40e_disable_pf_switch_lb(9), i40e_config_bridge_mode(9), i40e_reconstitute_veb(9), i40e_get_capabilities(9), i40e_fdir_sb_setup(9), i40e_fdir_teardown(9), i40e_rebuild_cloud_filters(9), i40e_rebuild_channels(9), i40e_clean_xps_state(9), i40e_prep_for_reset(9), i40e_send_version(9), i40e_get_oem_version(9), i40e_reset(9), i40e_rebuild(9), i40e_reset_and_rebuild(9), i40e_handle_reset_warning(9)

almost there, i promise πŸ’œ

i40e_print_vf_mdd_event(9), i40e_print_vfs_mdd_events(9), i40e_handle_mdd_event(9), i40e_service_task(9), i40e_service_timer(9), i40e_set_num_rings_in_vsi(9), i40e_vsi_alloc_arrays(9), i40e_vsi_mem_alloc(9), i40e_vsi_free_arrays(9), i40e_clear_rss_config_user(9), i40e_vsi_clear(9), i40e_vsi_clear_rings(9), i40e_alloc_rings(9), i40e_reserve_msix_vectors(9), i40e_init_msix(9), i40e_vsi_alloc_q_vector(9), i40e_vsi_alloc_q_vectors(9), i40e_init_interrupt_scheme(9), i40e_restore_interrupt_scheme(9), i40e_setup_misc_vector_for_recovery_mode(9), i40e_setup_misc_vector(9), i40e_get_rss_aq(9), i40e_config_rss_reg(9), i40e_get_rss_reg(9), i40e_config_rss(9), i40e_get_rss(9), i40e_fill_rss_lut(9), i40e_pf_config_rss(9), i40e_reconfig_rss_queues(9), i40e_get_partition_bw_setting(9), i40e_set_partition_bw_setting(9), i40e_is_total_port_shutdown_enabled(9), i40e_sw_init(9), i40e_set_ntuple(9), i40e_clear_rss_lut(9), i40e_set_loopback(9), i40e_set_features(9), i40e_ndo_fdb_add(9), i40e_ndo_bridge_setlink(9), i40e_ndo_bridge_getlink(9), i40e_features_check(9), i40e_xdp_setup(9), i40e_enter_busy_conf(9), i40e_exit_busy_conf(9), i40e_queue_pair_reset_stats(9), i40e_queue_pair_clean_rings(9), i40e_queue_pair_toggle_napi(9), i40e_queue_pair_toggle_rings(9), i40e_queue_pair_enable_irq(9), i40e_queue_pair_disable_irq(9), i40e_queue_pair_disable(9), i40e_queue_pair_enable(9), i40e_xdp(9), i40e_config_netdev(9), i40e_vsi_delete(9), i40e_is_vsi_uplink_mode_veb(9), i40e_add_vsi(9), i40e_vsi_release(9), i40e_vsi_setup_vectors(9), i40e_vsi_reinit_setup(9), i40e_veb_get_bw_info(9), i40e_veb_mem_alloc(9), i40e_switch_branch_release(9), i40e_veb_clear(9), i40e_veb_release(9), i40e_add_veb(9), i40e_veb_setup(9), i40e_setup_pf_switch_element(9), i40e_fetch_switch_configuration(9), i40e_setup_pf_switch(9), i40e_determine_queue_usage(9), i40e_setup_pf_filter_control(9), i40e_get_platform_mac_addr(9), i40e_set_fec_in_flags(9), i40e_check_recovery_mode(9), i40e_pf_loop_reset(9), i40e_check_fw_empr(9), i40e_handle_resets(9), i40e_init_recovery_mode(9), i40e_set_subsystem_device_id(9)

last stretch bestie, you got this πŸ”₯

i40e_probe(9), i40e_remove(9), i40e_enable_mc_magic_wake(9), i40e_io_suspend(9), i40e_io_resume(9), i40e_pci_error_detected(9), i40e_pci_error_slot_reset(9), i40e_pci_error_reset_prepare(9), i40e_pci_error_reset_done(9), i40e_pci_error_resume(9), i40e_shutdown(9), i40e_suspend(9), i40e_resume(9), i40e_init_module(9), i40e_exit_module(9)


okay and that's the whole page 🌟 she lives in the kernel source at ./drivers/net/ethernet/intel/i40e, dated October 2026 β€” that's the version + date, cute sign-off style, mwah πŸ’‹ go set up some VSIs responsibly, ily πŸ«ΆπŸŽ€

πŸ“¦ where this page comes from