Re: [PATCH 1/1] MicroSemi Switchtec management interface driver

From: Greg Kroah-Hartman
Date: Tue Jan 31 2017 - 12:30:08 EST


On Tue, Jan 31, 2017 at 10:03:24AM -0700, Logan Gunthorpe wrote:
> Microsemi's "Switchtec" line of PCI switch devices is already well
> supported by the kernel with standard PCI switch drivers. However, the
> Switchtec device advertises a special management endpoint with a separate
> PCI function address and class code. This endpoint enables some additional
> functionality which includes:
>
> * Packet and Byte Counters
> * Switch Firmware Upgrades
> * Event and Error logs
> * Querying port link status
> * Custom user firmware commands
>
> This patch introduces the switchtec kernel module which provides
> PCI driver that exposes a char device. The char device provides
> userspace access to this interface through read, write and (optionally)
> poll calls. A couple of special IOCTLs are provided to:
>
> * Inform userspace of firmware partition locations
> * Pass event counts and allow userspace to wait on events
>
> A short text file is provided which documents the switchtec driver,
> outlines the semantics of using the char device and describes the
> IOCTLs.
>
> The device also exposes a few read-only sysfs attributes which provide
> some device information component names and versions which is provided
> by the hardware. These are documented in
> Documentation/ABI/testing/sysfs-class-switchtec
>
> A userspace tool and library which utilizes this interface is available
> at [1]. This tool takes inspiration (and borrows some code) from
> nvme-cli [2]. The tool is largely complete at this time but additional
> features may be added in the future.
>
> [1] https://github.com/sbates130272/switchtec-user
> [2] https://github.com/linux-nvme/nvme-cli
>
> Signed-off-by: Logan Gunthorpe <logang@xxxxxxxxxxxx>
> Signed-off-by: Stephen Bates <stephen.bates@xxxxxxxxxxxxx>
> ---
> Documentation/ABI/testing/sysfs-class-switchtec | 96 ++
> Documentation/ioctl/ioctl-number.txt | 1 +
> Documentation/switchtec.txt | 80 ++
> MAINTAINERS | 11 +
> drivers/pci/Kconfig | 1 +
> drivers/pci/Makefile | 1 +
> drivers/pci/switch/Kconfig | 13 +
> drivers/pci/switch/Makefile | 1 +
> drivers/pci/switch/switchtec.c | 1320 +++++++++++++++++++++++
> drivers/pci/switch/switchtec.h | 266 +++++

Why a .h file for a single .c file?

Also, why a whole new directory?

thanks,

greg k-h