net/smc: introduce System Enterprise ID (SEID)
SMCD version 2 defines a System Enterprise ID (short SEID). This patch contains the SEID creation and adds the callback to retrieve the created SEID. Signed-off-by: Ursula Braun <ubraun@linux.ibm.com> Signed-off-by: Karsten Graul <kgraul@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
3fc6493761
commit
201091ebb2
@@ -21,7 +21,9 @@ struct smcd_dev_list smcd_dev_list = {
|
||||
.mutex = __MUTEX_INITIALIZER(smcd_dev_list.mutex)
|
||||
};
|
||||
|
||||
/* Test if an ISM communication is possible. */
|
||||
bool smc_ism_v2_capable;
|
||||
|
||||
/* Test if an ISM communication is possible - same CPC */
|
||||
int smc_ism_cantalk(u64 peer_gid, unsigned short vlan_id, struct smcd_dev *smcd)
|
||||
{
|
||||
return smcd->ops->query_remote_gid(smcd, peer_gid, vlan_id ? 1 : 0,
|
||||
@@ -39,6 +41,11 @@ int smc_ism_write(struct smcd_dev *smcd, const struct smc_ism_position *pos,
|
||||
return rc < 0 ? rc : 0;
|
||||
}
|
||||
|
||||
void smc_ism_get_system_eid(struct smcd_dev *smcd, u8 **eid)
|
||||
{
|
||||
smcd->ops->get_system_eid(smcd, eid);
|
||||
}
|
||||
|
||||
/* Set a connection using this DMBE. */
|
||||
void smc_ism_set_conn(struct smc_connection *conn)
|
||||
{
|
||||
@@ -319,6 +326,13 @@ EXPORT_SYMBOL_GPL(smcd_alloc_dev);
|
||||
int smcd_register_dev(struct smcd_dev *smcd)
|
||||
{
|
||||
mutex_lock(&smcd_dev_list.mutex);
|
||||
if (list_empty(&smcd_dev_list.list)) {
|
||||
u8 *system_eid = NULL;
|
||||
|
||||
smc_ism_get_system_eid(smcd, &system_eid);
|
||||
if ((*system_eid) + 24 != '0' || (*system_eid) + 28 != '0')
|
||||
smc_ism_v2_capable = true;
|
||||
}
|
||||
list_add_tail(&smcd->list, &smcd_dev_list.list);
|
||||
mutex_unlock(&smcd_dev_list.mutex);
|
||||
|
||||
@@ -399,3 +413,8 @@ void smcd_handle_irq(struct smcd_dev *smcd, unsigned int dmbno)
|
||||
spin_unlock_irqrestore(&smcd->lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(smcd_handle_irq);
|
||||
|
||||
void __init smc_ism_init(void)
|
||||
{
|
||||
smc_ism_v2_capable = false;
|
||||
}
|
||||
|
Reference in New Issue
Block a user