lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20150825.155108.983138344238637012.davem@davemloft.net>
Date:	Tue, 25 Aug 2015 15:51:08 -0700 (PDT)
From:	David Miller <davem@...emloft.net>
To:	dsa@...ulusnetworks.com
Cc:	netdev@...r.kernel.org, shm@...ulusnetworks.com
Subject: Re: [PATCH net-next] vrf: Add ethernet header for pass through VRF
 device

From: David Ahern <dsa@...ulusnetworks.com>
Date: Tue, 25 Aug 2015 15:37:55 -0700

> On 8/25/15 2:02 PM, David Miller wrote:
>> From: David Ahern <dsa@...ulusnetworks.com>
>> Date: Sun, 23 Aug 2015 12:41:00 -0600
>>
>>> @@ -250,6 +253,17 @@ static netdev_tx_t vrf_xmit(struct sk_buff *skb,
>>> struct net_device *dev)
>>>
>>>   static netdev_tx_t vrf_finish(struct sock *sk, struct sk_buff *skb)
>>>   {
>>> +	int err;
>>> +
>>> +	__skb_pull(skb, skb_network_offset(skb));
>>> +	err = dev_hard_header(skb, skb->dev, ntohs(skb->protocol),
>>> +			      NULL, NULL, skb->len);
>>> +
>>> +	if (err < 0) {
>>> +		vrf_tx_error(skb->dev, skb);
>>> +		return -EINVAL;
>>> +	}
>>> +
>>>   	return dev_queue_xmit(skb);
>>
>> This is expensive and rediculous to do for every TX frame.
>>
>> You'll need to find another way.
>>
> 
> The packet is directed here from the IP layer via the custom dst, so
> there is no L2 header on the skb. So while the push and pop of the
> header seems silly it is part and parcel of the feature to run tcpdump
> on the VRF device. I don't see how it could be done any other way.

You're losing a significant optimization on the transmit path by not
using the neighbour table entry hard header cache.

That's what I want you to fix.

See dst_neigh_output() and in particular neigh_hh_output().
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ