|
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 <[email protected]>: don't invert error codes]
[Christophe JAILLET <[email protected]>: fix
switchtec_dev_open() error handling]
Tested-by: Krishna Dhulipala <[email protected]>
Signed-off-by: Logan Gunthorpe <[email protected]>
Signed-off-by: Stephen Bates <[email protected]>
Signed-off-by: Bjorn Helgaas <[email protected]>
Reviewed-by: Wei Zhang <[email protected]>
Reviewed-by: Jens Axboe <[email protected]>
Reviewed-by: Greg Kroah-Hartman <[email protected]>
|