ntb_hw_switchtec: Allow using Switchtec NTB in multi-partition setups
authorKelvin Cao <kelvin.cao@microsemi.com>
Wed, 29 Nov 2017 17:55:24 +0000 (10:55 -0700)
committerJon Mason <jdmason@kudzu.us>
Mon, 29 Jan 2018 03:17:23 +0000 (22:17 -0500)
commit3df54c870f52b4c47b53eead8d22a109f741b91c
tree2d5a63d9462ff3533eb56bf4f0e200d6f508303f
parent2dd0f6a64a36bf7176c6055c919da3f53b7924f3
ntb_hw_switchtec: Allow using Switchtec NTB in multi-partition setups

Allow using Switchtec NTB in setups that have more than two partitions.
Note: this does not enable having multi-host communication, it only
allows for a single NTB link between two hosts in a network that might
have more than two.

Use following logic to determine the NT peer partition:

1) If there are 2 partitions, and the target vector is set in
   the Switchtec configuration, use the partition specified in target
   vector.
2) If there are 2 partitions and target vector is unset
   use the only other partition as specified in the NT EP map.
3) If there are more than 2 partitions and target vector is set
   use the other partition specified in target vector.
4) If there are more than 2 partitions and target vector is unset,
   this is invalid and report an error.

Signed-off-by: Kelvin Cao <kelvin.cao@microsemi.com>
[logang@deltatee.com: commit message fleshed out]
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
drivers/ntb/hw/mscc/ntb_hw_switchtec.c
include/linux/switchtec.h