net/smc: Refactor smc ism v2 capability handling
Encapsulate the smc ism v2 capability boolean value in a function for better information hiding. Signed-off-by: Guvenc Gulce <guvenc@linux.ibm.com> Signed-off-by: Karsten Graul <kgraul@linux.ibm.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Родитель
6443b2f60e
Коммит
49407ae2bc
|
@ -668,7 +668,7 @@ static int smc_find_proposal_devices(struct smc_sock *smc,
|
||||||
ini->smc_type_v1 = SMC_TYPE_N;
|
ini->smc_type_v1 = SMC_TYPE_N;
|
||||||
} /* else RDMA is supported for this connection */
|
} /* else RDMA is supported for this connection */
|
||||||
}
|
}
|
||||||
if (smc_ism_v2_capable && smc_find_ism_v2_device_clnt(smc, ini))
|
if (smc_ism_is_v2_capable() && smc_find_ism_v2_device_clnt(smc, ini))
|
||||||
ini->smc_type_v2 = SMC_TYPE_N;
|
ini->smc_type_v2 = SMC_TYPE_N;
|
||||||
|
|
||||||
/* if neither ISM nor RDMA are supported, fallback */
|
/* if neither ISM nor RDMA are supported, fallback */
|
||||||
|
@ -920,7 +920,7 @@ static int smc_connect_check_aclc(struct smc_init_info *ini,
|
||||||
/* perform steps before actually connecting */
|
/* perform steps before actually connecting */
|
||||||
static int __smc_connect(struct smc_sock *smc)
|
static int __smc_connect(struct smc_sock *smc)
|
||||||
{
|
{
|
||||||
u8 version = smc_ism_v2_capable ? SMC_V2 : SMC_V1;
|
u8 version = smc_ism_is_v2_capable() ? SMC_V2 : SMC_V1;
|
||||||
struct smc_clc_msg_accept_confirm_v2 *aclc2;
|
struct smc_clc_msg_accept_confirm_v2 *aclc2;
|
||||||
struct smc_clc_msg_accept_confirm *aclc;
|
struct smc_clc_msg_accept_confirm *aclc;
|
||||||
struct smc_init_info *ini = NULL;
|
struct smc_init_info *ini = NULL;
|
||||||
|
@ -945,9 +945,9 @@ static int __smc_connect(struct smc_sock *smc)
|
||||||
version);
|
version);
|
||||||
|
|
||||||
ini->smcd_version = SMC_V1;
|
ini->smcd_version = SMC_V1;
|
||||||
ini->smcd_version |= smc_ism_v2_capable ? SMC_V2 : 0;
|
ini->smcd_version |= smc_ism_is_v2_capable() ? SMC_V2 : 0;
|
||||||
ini->smc_type_v1 = SMC_TYPE_B;
|
ini->smc_type_v1 = SMC_TYPE_B;
|
||||||
ini->smc_type_v2 = smc_ism_v2_capable ? SMC_TYPE_D : SMC_TYPE_N;
|
ini->smc_type_v2 = smc_ism_is_v2_capable() ? SMC_TYPE_D : SMC_TYPE_N;
|
||||||
|
|
||||||
/* get vlan id from IP device */
|
/* get vlan id from IP device */
|
||||||
if (smc_vlan_by_tcpsk(smc->clcsock, ini)) {
|
if (smc_vlan_by_tcpsk(smc->clcsock, ini)) {
|
||||||
|
@ -1355,7 +1355,7 @@ static int smc_listen_v2_check(struct smc_sock *new_smc,
|
||||||
rc = SMC_CLC_DECL_PEERNOSMC;
|
rc = SMC_CLC_DECL_PEERNOSMC;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if (!smc_ism_v2_capable) {
|
if (!smc_ism_is_v2_capable()) {
|
||||||
ini->smcd_version &= ~SMC_V2;
|
ini->smcd_version &= ~SMC_V2;
|
||||||
rc = SMC_CLC_DECL_NOISM2SUPP;
|
rc = SMC_CLC_DECL_NOISM2SUPP;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -1681,7 +1681,7 @@ static void smc_listen_work(struct work_struct *work)
|
||||||
{
|
{
|
||||||
struct smc_sock *new_smc = container_of(work, struct smc_sock,
|
struct smc_sock *new_smc = container_of(work, struct smc_sock,
|
||||||
smc_listen_work);
|
smc_listen_work);
|
||||||
u8 version = smc_ism_v2_capable ? SMC_V2 : SMC_V1;
|
u8 version = smc_ism_is_v2_capable() ? SMC_V2 : SMC_V1;
|
||||||
struct socket *newclcsock = new_smc->clcsock;
|
struct socket *newclcsock = new_smc->clcsock;
|
||||||
struct smc_clc_msg_accept_confirm *cclc;
|
struct smc_clc_msg_accept_confirm *cclc;
|
||||||
struct smc_clc_msg_proposal_area *buf;
|
struct smc_clc_msg_proposal_area *buf;
|
||||||
|
|
|
@ -21,7 +21,7 @@ struct smcd_dev_list smcd_dev_list = {
|
||||||
.mutex = __MUTEX_INITIALIZER(smcd_dev_list.mutex)
|
.mutex = __MUTEX_INITIALIZER(smcd_dev_list.mutex)
|
||||||
};
|
};
|
||||||
|
|
||||||
bool smc_ism_v2_capable;
|
static bool smc_ism_v2_capable;
|
||||||
|
|
||||||
/* Test if an ISM communication is possible - same CPC */
|
/* Test if an ISM communication is possible - same CPC */
|
||||||
int smc_ism_cantalk(u64 peer_gid, unsigned short vlan_id, struct smcd_dev *smcd)
|
int smc_ism_cantalk(u64 peer_gid, unsigned short vlan_id, struct smcd_dev *smcd)
|
||||||
|
@ -51,6 +51,12 @@ u16 smc_ism_get_chid(struct smcd_dev *smcd)
|
||||||
return smcd->ops->get_chid(smcd);
|
return smcd->ops->get_chid(smcd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* HW supports ISM V2 and thus System EID is defined */
|
||||||
|
bool smc_ism_is_v2_capable(void)
|
||||||
|
{
|
||||||
|
return smc_ism_v2_capable;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set a connection using this DMBE. */
|
/* Set a connection using this DMBE. */
|
||||||
void smc_ism_set_conn(struct smc_connection *conn)
|
void smc_ism_set_conn(struct smc_connection *conn)
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#define SMCD_ISM_H
|
#define SMCD_ISM_H
|
||||||
|
|
||||||
#include <linux/uio.h>
|
#include <linux/uio.h>
|
||||||
|
#include <linux/types.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
|
|
||||||
#include "smc.h"
|
#include "smc.h"
|
||||||
|
@ -20,9 +21,6 @@ struct smcd_dev_list { /* List of SMCD devices */
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct smcd_dev_list smcd_dev_list; /* list of smcd devices */
|
extern struct smcd_dev_list smcd_dev_list; /* list of smcd devices */
|
||||||
extern bool smc_ism_v2_capable; /* HW supports ISM V2 and thus
|
|
||||||
* System EID is defined
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct smc_ism_vlanid { /* VLAN id set on ISM device */
|
struct smc_ism_vlanid { /* VLAN id set on ISM device */
|
||||||
struct list_head list;
|
struct list_head list;
|
||||||
|
@ -52,5 +50,6 @@ int smc_ism_write(struct smcd_dev *dev, const struct smc_ism_position *pos,
|
||||||
int smc_ism_signal_shutdown(struct smc_link_group *lgr);
|
int smc_ism_signal_shutdown(struct smc_link_group *lgr);
|
||||||
void smc_ism_get_system_eid(struct smcd_dev *dev, u8 **eid);
|
void smc_ism_get_system_eid(struct smcd_dev *dev, u8 **eid);
|
||||||
u16 smc_ism_get_chid(struct smcd_dev *dev);
|
u16 smc_ism_get_chid(struct smcd_dev *dev);
|
||||||
|
bool smc_ism_is_v2_capable(void);
|
||||||
void smc_ism_init(void);
|
void smc_ism_init(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
Загрузка…
Ссылка в новой задаче