In the default case eth_get_headlen() won't be called, it will happen only if PF administrator changes the mode from default to L4.
In L4 mode, we need to copy all the packet headers including L4, do you know of a better/cheaper way for doing that? Thanks, Hadar On Tue, Jul 26, 2016 at 3:54 AM, David Miller <da...@davemloft.net> wrote: > From: Saeed Mahameed <sae...@mellanox.com> > Date: Sun, 24 Jul 2016 16:12:38 +0300 > >> This small series from Hadar adds the support for minimum inline >> header mode query in mlx5e NIC driver. >> >> Today on TX the driver copies to the HW descriptor only up to L2 >> header which is the default required mode and sufficient for today's >> needs. >> >> The header in the HW descriptor is used for HW loopback steering >> decision, without it packets will go directly to the wire with no >> questions asked. >> >> For TX loopback steering according to L2/L3/L4 headers, ConnectX-4 >> requires to copy the corresponding headers into the send queue(SQ) >> WQE HW descriptor so it can decide whether to loop it back or to >> forward to wire. >> >> For legacy E-Switch mode only L2 headers copy is required. For >> advanced steering (E-Switch offloads) more header layers may be >> required to be copied, the required mode will be advertised by FW to >> each VF and PF according to the corresponding E-Switch >> configuration. >> >> Changes V2: >> - Allocate query_nic_vport_context_out on the stack > > Applied, but even doing an eth_get_headlen() every transmitted packet > it really too expensive. > > You shouldn't be touching networking headers so much when forwarding > frames.