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-next>] [day] [month] [year] [list]
Date:	Sun, 12 Jun 2016 00:53:03 +0200
From:	Henrik Austad <henrik@...tad.us>
To:	linux-kernel@...r.kernel.org
Cc:	linux-media@...r.kernel.org, alsa-devel@...r.kernel.org,
	netdev@...r.kernel.org, henrk@...tad.us,
	"David S. Miller" <davem@...emloft.net>
Subject: Re: [very-RFC 2/8] TSN: Add the standard formerly known as AVB to
 the kernel

clearing up netdev-typo

On Sun, Jun 12, 2016 at 12:22:15AM +0200, Henrik Austad wrote:
> TSN provides a mechanism to create reliable, jitter-free, low latency
> guaranteed bandwidth links over a local network. It does this by
> reserving a path through the network. Support for TSN must be found in
> both the NIC as well as in the network itself.
> 
> This adds required hooks into netdev_ops so that the core TSN driver can
> use this when configuring a new NIC or setting up a new link.
> 
> Cc: "David S. Miller" <davem@...emloft.net>
> Signed-off-by: Henrik Austad <henrik@...tad.us>
> ---
>  include/linux/netdevice.h | 32 ++++++++++++++++++++++++++++++++
>  net/Kconfig               |  1 +
>  net/tsn/Kconfig           | 32 ++++++++++++++++++++++++++++++++
>  3 files changed, 65 insertions(+)
>  create mode 100644 net/tsn/Kconfig
> 
> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
> index f45929c..de025eb 100644
> --- a/include/linux/netdevice.h
> +++ b/include/linux/netdevice.h
> @@ -109,6 +109,13 @@ enum netdev_tx {
>  };
>  typedef enum netdev_tx netdev_tx_t;
>  
> +#if IS_ENABLED(CONFIG_TSN)
> +enum sr_class {
> +	SR_CLASS_A = 1,
> +	SR_CLASS_B = 2,
> +};
> +#endif
> +
>  /*
>   * Current order: NETDEV_TX_MASK > NET_XMIT_MASK >= 0 is significant;
>   * hard_start_xmit() return < NET_XMIT_MASK means skb was consumed.
> @@ -902,6 +909,22 @@ struct tc_to_netdev {
>   *
>   * void (*ndo_poll_controller)(struct net_device *dev);
>   *
> + *	TSN functions (if CONFIG_TSN)
> + *
> + * int (*ndo_tsn_capable)(struct net_device *dev);
> + *	If a particular device is capable of sustaining TSN traffic
> + *	provided current configuration
> + * int (*ndo_tsn_link_configure)(struct net_device *dev,
> + *				 enum sr_class class,
> + *				 u16 framesize,
> + *				 u16 vid);
> + *     - When a new TSN link is either added or removed, this is called to
> + *       update the bandwidth for the particular stream-class
> + *     - The framesize is the size of the _entire_ frame, not just the
> + *       payload since the full size is required to allocate bandwidth through
> + *       the credit based shaper in the NIC
> + *     - the vlan_id is the configured vlan for TSN in this session.
> + *
>   *	SR-IOV management functions.
>   * int (*ndo_set_vf_mac)(struct net_device *dev, int vf, u8* mac);
>   * int (*ndo_set_vf_vlan)(struct net_device *dev, int vf, u16 vlan, u8 qos);
> @@ -1148,6 +1171,15 @@ struct net_device_ops {
>  #ifdef CONFIG_NET_RX_BUSY_POLL
>  	int			(*ndo_busy_poll)(struct napi_struct *dev);
>  #endif
> +
> +#if IS_ENABLED(CONFIG_TSN)
> +	int			(*ndo_tsn_capable)(struct net_device *dev);
> +	int			(*ndo_tsn_link_configure)(struct net_device *dev,
> +							  enum sr_class class,
> +							  u16 framesize,
> +							  u16 vid);
> +#endif	/* CONFIG_TSN */
> +
>  	int			(*ndo_set_vf_mac)(struct net_device *dev,
>  						  int queue, u8 *mac);
>  	int			(*ndo_set_vf_vlan)(struct net_device *dev,
> diff --git a/net/Kconfig b/net/Kconfig
> index ff40562..fa9f691 100644
> --- a/net/Kconfig
> +++ b/net/Kconfig
> @@ -215,6 +215,7 @@ source "net/802/Kconfig"
>  source "net/bridge/Kconfig"
>  source "net/dsa/Kconfig"
>  source "net/8021q/Kconfig"
> +source "net/tsn/Kconfig"
>  source "net/decnet/Kconfig"
>  source "net/llc/Kconfig"
>  source "net/ipx/Kconfig"
> diff --git a/net/tsn/Kconfig b/net/tsn/Kconfig
> new file mode 100644
> index 0000000..1fc3c1d
> --- /dev/null
> +++ b/net/tsn/Kconfig
> @@ -0,0 +1,32 @@
> +#
> +# Configuration for 802.1 Time Sensitive Networking (TSN)
> +#
> +
> +config TSN
> +	tristate "802.1 TSN Support"
> +	depends on VLAN_8021Q && PTP_1588_CLOCK && CONFIGFS_FS
> +	---help---
> +	  Select this if you want to enable TSN on capable interfaces.
> +
> +	  TSN allows you to set up deterministic links on your LAN (only
> +	  L2 is currently supported). Once loaded, the driver will probe
> +	  all available interfaces if they are capable of supporting TSN
> +	  links.
> +
> +	  Once loaded, a directory in configfs called tsn/ will expose
> +	  the capable NICs and allow userspace to create
> +	  links. Userspace must provide us with a StreamID as well as
> +	  reserving bandwidth through the network and once this is done,
> +	  a new link can be created by issuing a mkdir() in configfs and
> +	  updating the attributes for the new link.
> +
> +	  TSN itself does not produce nor consume data, it is dependent
> +	  upon 'shims' doing this, which can be virtually anything. ALSA
> +	  is a good candidate.
> +
> +	  For more information, refer to the TSN-documentation in the
> +	  kernel documentation repository.
> +
> +	  The resulting module will be called 'tsn'
> +
> +	  If unsure, say N.
> -- 
> 2.7.4
> 

-- 
Henrik Austad

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ