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: <20130429.134244.1920449745404305505.davem@davemloft.net>
Date:	Mon, 29 Apr 2013 13:42:44 -0400 (EDT)
From:	David Miller <davem@...emloft.net>
To:	alexander.h.duyck@...el.com
Cc:	netdev@...r.kernel.org, eric.dumazet@...il.com,
	bhutchings@...arflare.com, shemminger@...tta.com
Subject: Re: Question on the use of ETH_P_CONTROL

From: Alexander Duyck <alexander.h.duyck@...el.com>
Date: Wed, 24 Apr 2013 11:17:50 -0700

> I have a wired Ethernet driver that will need to support a user space
> application with UIO access and a network device.  The network device
> will need a way to send raw frames with some descriptor data to and from
> the user space application.  The frames are not meant to be routed and
> are not meant for this host, only for the user space application.  After
> doing some digging I came across the definition for ETH_P_CONTROL, which
> seems to be a good solution for my current issue.
> 
> My thought is to do something like this for Rx control frames:
> 	eth_type_trans(skb);
> 	skb->protocol = htons(ETH_P_CONTROL);
> 	skb->mac_header -= sizeof(struct desc_hdr);
> 	desc_hdr = (struct desc_hdr *)skb_mac_header(skb);
> 	desc_hdr->val = val;
> 
> For frames received from the user space application I would essentially
> just leave the descriptor header on and notify the hardware that it is
> present for any frames received that have ETH_P_CONTROL as their protocol.
> 
> Then all that is left is for the user space to allocate a raw packet
> socket and bind it to our interface specifying the control protocol so
> that it can send and receive just the control frames.
> 
> I'm looking for any thoughts, issues, or concerns with this approach.

I looked this over briefly a few nights ago, and the only other place I
see this used is the hostap driver.  hostap is a big body of code that
does lot of things in unique and rather ad-hoc ways.

hostap was written in an environment where interfaces and
infrastructure for what it wanted to do didn't exist, so the author
just did his own thing in each and every such instance.

I want to encourage you to steer away from that kind of approach.

Although I'm cautiously skeptical, you may not end up being the only
other person trying to push descriptors into the kernel from userspace
and then trigger device TX/RX.  If every driver makes it's own control
plane for this, wait for troubles...
--
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