]> git.baikalelectronics.ru Git - kernel.git/commit
MicroSemi Switchtec management interface driver
authorLogan Gunthorpe <logang@deltatee.com>
Tue, 7 Mar 2017 00:30:54 +0000 (18:30 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 7 Mar 2017 00:33:34 +0000 (18:33 -0600)
commit1293aa328c733b3e8e8486c2f1441d94c6e9ad60
tree72a20cad07f6cad6ddd437af46616fd53e0f78c5
parent8a17c7afe9fb246fbdf434a8c4a84cdc5bada8cb
MicroSemi Switchtec management interface driver

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

Add a 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 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

[Dan Carpenter <dan.carpenter@oracle.com>: don't invert error codes]
[Christophe JAILLET <christophe.jaillet@wanadoo.fr>: fix
switchtec_dev_open() error handling]
Tested-by: Krishna Dhulipala <krishnad@fb.com>
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Stephen Bates <stephen.bates@microsemi.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Wei Zhang <wzhang@fb.com>
Reviewed-by: Jens Axboe <axboe@fb.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
MAINTAINERS
drivers/pci/Kconfig
drivers/pci/Makefile
drivers/pci/switch/Kconfig [new file with mode: 0644]
drivers/pci/switch/Makefile [new file with mode: 0644]
drivers/pci/switch/switchtec.c [new file with mode: 0644]