ovs_vport_receive(9)
π ovs_vport_receive(9) π
okay so bestie, welcome to the Kernel API Manual β yes it's a whole kernel manual, and yes this one is a lil function that ~passes a packet up~ π
β¨ NAME β¨
ovs_vport_receive β the girlie that passes up received packet to the datapath for processing π
πΈ SYNOPSIS πΈ
int ovs_vport_receive (struct vport *vport , struct sk_buff *skb , const
struct ip_tunnel_info *tun_info );
like. she takes three things and returns an int. no cap. that's her whole job. π¦
π«Ά ARGUMENTS π«Ά
vportβ thevportthat received the packet, aka the main character of this whole situation πskbβ theskbthat was received, the actual packet bestie, the moment itself β¨tun_infoβ the tunnel (if any) that carried packet, so likeβ¦ if there was a tunnel at all π
π DESCRIPTION π
okay so listen up, this part is important:
Must be called with rcu_read_lock. like, literally, you must. not optional. not "if you feel like it." it's giving mandatory π¨
The packet cannot be shared β nope, nope, not sharing, that's not on the table, don't even try it π
And skb->data should point to the Ethernet header. like that's where it needs to be pointing. periodt. π
β SEE ALSO β
Kernel file ./net/openvswitch/vport.c β and honestly the whole friend group:
ovs_vport_init(9)ovs_vport_exit(9)ovs_vport_locate(9)ovs_vport_alloc(9)ovs_vport_free(9)ovs_vport_add(9)ovs_vport_del(9)ovs_vport_get_stats(9)ovs_vport_get_upcall_stats(9)ovs_vport_set_upcall_portids(9)ovs_vport_get_upcall_portids(9)ovs_vport_find_upcall_portid(9)
go read all of them. iykyk π§π
okay that's literally it, mwah ily, this page lives in ./net/openvswitch and it's dated October 2026 β signed, sealed, slayed. bye bestie!! ππ₯π
π¦ 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