mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 12:43:55 +08:00
s390/qeth: extract bridgeport cmd builder
Consolidation of duplicated code, no functional change. Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cef6ff2202
commit
d65626ad7c
@ -1724,11 +1724,26 @@ static int qeth_bridgeport_makerc(struct qeth_card *card,
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int ipa_cmd_sbp(struct qeth_card *card)
|
static struct qeth_cmd_buffer *qeth_sbp_build_cmd(struct qeth_card *card,
|
||||||
|
enum qeth_ipa_sbp_cmd sbp_cmd,
|
||||||
|
unsigned int cmd_length)
|
||||||
{
|
{
|
||||||
return (card->info.type == QETH_CARD_TYPE_IQD) ?
|
enum qeth_ipa_cmds ipa_cmd = (card->info.type == QETH_CARD_TYPE_IQD) ?
|
||||||
IPA_CMD_SETBRIDGEPORT_IQD :
|
IPA_CMD_SETBRIDGEPORT_IQD :
|
||||||
IPA_CMD_SETBRIDGEPORT_OSA;
|
IPA_CMD_SETBRIDGEPORT_OSA;
|
||||||
|
struct qeth_cmd_buffer *iob;
|
||||||
|
struct qeth_ipa_cmd *cmd;
|
||||||
|
|
||||||
|
iob = qeth_get_ipacmd_buffer(card, ipa_cmd, 0);
|
||||||
|
if (!iob)
|
||||||
|
return iob;
|
||||||
|
cmd = (struct qeth_ipa_cmd *)(iob->data+IPA_PDU_HEADER_SIZE);
|
||||||
|
cmd->data.sbp.hdr.cmdlength = sizeof(struct qeth_ipacmd_sbp_hdr) +
|
||||||
|
cmd_length;
|
||||||
|
cmd->data.sbp.hdr.command_code = sbp_cmd;
|
||||||
|
cmd->data.sbp.hdr.used_total = 1;
|
||||||
|
cmd->data.sbp.hdr.seq_no = 1;
|
||||||
|
return iob;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qeth_bridgeport_query_support_cb(struct qeth_card *card,
|
static int qeth_bridgeport_query_support_cb(struct qeth_card *card,
|
||||||
@ -1758,21 +1773,13 @@ static int qeth_bridgeport_query_support_cb(struct qeth_card *card,
|
|||||||
static void qeth_bridgeport_query_support(struct qeth_card *card)
|
static void qeth_bridgeport_query_support(struct qeth_card *card)
|
||||||
{
|
{
|
||||||
struct qeth_cmd_buffer *iob;
|
struct qeth_cmd_buffer *iob;
|
||||||
struct qeth_ipa_cmd *cmd;
|
|
||||||
struct _qeth_sbp_cbctl cbctl;
|
struct _qeth_sbp_cbctl cbctl;
|
||||||
|
|
||||||
QETH_CARD_TEXT(card, 2, "brqsuppo");
|
QETH_CARD_TEXT(card, 2, "brqsuppo");
|
||||||
iob = qeth_get_ipacmd_buffer(card, ipa_cmd_sbp(card), 0);
|
iob = qeth_sbp_build_cmd(card, IPA_SBP_QUERY_COMMANDS_SUPPORTED,
|
||||||
|
sizeof(struct qeth_sbp_query_cmds_supp));
|
||||||
if (!iob)
|
if (!iob)
|
||||||
return;
|
return;
|
||||||
cmd = (struct qeth_ipa_cmd *)(iob->data+IPA_PDU_HEADER_SIZE);
|
|
||||||
cmd->data.sbp.hdr.cmdlength =
|
|
||||||
sizeof(struct qeth_ipacmd_sbp_hdr) +
|
|
||||||
sizeof(struct qeth_sbp_query_cmds_supp);
|
|
||||||
cmd->data.sbp.hdr.command_code =
|
|
||||||
IPA_SBP_QUERY_COMMANDS_SUPPORTED;
|
|
||||||
cmd->data.sbp.hdr.used_total = 1;
|
|
||||||
cmd->data.sbp.hdr.seq_no = 1;
|
|
||||||
if (qeth_send_ipa_cmd(card, iob, qeth_bridgeport_query_support_cb,
|
if (qeth_send_ipa_cmd(card, iob, qeth_bridgeport_query_support_cb,
|
||||||
(void *)&cbctl) ||
|
(void *)&cbctl) ||
|
||||||
qeth_bridgeport_makerc(card, &cbctl,
|
qeth_bridgeport_makerc(card, &cbctl,
|
||||||
@ -1826,7 +1833,6 @@ int qeth_bridgeport_query_ports(struct qeth_card *card,
|
|||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
struct qeth_cmd_buffer *iob;
|
struct qeth_cmd_buffer *iob;
|
||||||
struct qeth_ipa_cmd *cmd;
|
|
||||||
struct _qeth_sbp_cbctl cbctl = {
|
struct _qeth_sbp_cbctl cbctl = {
|
||||||
.data = {
|
.data = {
|
||||||
.qports = {
|
.qports = {
|
||||||
@ -1839,16 +1845,9 @@ int qeth_bridgeport_query_ports(struct qeth_card *card,
|
|||||||
QETH_CARD_TEXT(card, 2, "brqports");
|
QETH_CARD_TEXT(card, 2, "brqports");
|
||||||
if (!(card->options.sbp.supported_funcs & IPA_SBP_QUERY_BRIDGE_PORTS))
|
if (!(card->options.sbp.supported_funcs & IPA_SBP_QUERY_BRIDGE_PORTS))
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
iob = qeth_get_ipacmd_buffer(card, ipa_cmd_sbp(card), 0);
|
iob = qeth_sbp_build_cmd(card, IPA_SBP_QUERY_BRIDGE_PORTS, 0);
|
||||||
if (!iob)
|
if (!iob)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
cmd = (struct qeth_ipa_cmd *)(iob->data+IPA_PDU_HEADER_SIZE);
|
|
||||||
cmd->data.sbp.hdr.cmdlength =
|
|
||||||
sizeof(struct qeth_ipacmd_sbp_hdr);
|
|
||||||
cmd->data.sbp.hdr.command_code =
|
|
||||||
IPA_SBP_QUERY_BRIDGE_PORTS;
|
|
||||||
cmd->data.sbp.hdr.used_total = 1;
|
|
||||||
cmd->data.sbp.hdr.seq_no = 1;
|
|
||||||
rc = qeth_send_ipa_cmd(card, iob, qeth_bridgeport_query_ports_cb,
|
rc = qeth_send_ipa_cmd(card, iob, qeth_bridgeport_query_ports_cb,
|
||||||
(void *)&cbctl);
|
(void *)&cbctl);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
@ -1880,7 +1879,6 @@ int qeth_bridgeport_setrole(struct qeth_card *card, enum qeth_sbp_roles role)
|
|||||||
int rc = 0;
|
int rc = 0;
|
||||||
int cmdlength;
|
int cmdlength;
|
||||||
struct qeth_cmd_buffer *iob;
|
struct qeth_cmd_buffer *iob;
|
||||||
struct qeth_ipa_cmd *cmd;
|
|
||||||
struct _qeth_sbp_cbctl cbctl;
|
struct _qeth_sbp_cbctl cbctl;
|
||||||
enum qeth_ipa_sbp_cmd setcmd;
|
enum qeth_ipa_sbp_cmd setcmd;
|
||||||
|
|
||||||
@ -1888,32 +1886,24 @@ int qeth_bridgeport_setrole(struct qeth_card *card, enum qeth_sbp_roles role)
|
|||||||
switch (role) {
|
switch (role) {
|
||||||
case QETH_SBP_ROLE_NONE:
|
case QETH_SBP_ROLE_NONE:
|
||||||
setcmd = IPA_SBP_RESET_BRIDGE_PORT_ROLE;
|
setcmd = IPA_SBP_RESET_BRIDGE_PORT_ROLE;
|
||||||
cmdlength = sizeof(struct qeth_ipacmd_sbp_hdr) +
|
cmdlength = sizeof(struct qeth_sbp_reset_role);
|
||||||
sizeof(struct qeth_sbp_reset_role);
|
|
||||||
break;
|
break;
|
||||||
case QETH_SBP_ROLE_PRIMARY:
|
case QETH_SBP_ROLE_PRIMARY:
|
||||||
setcmd = IPA_SBP_SET_PRIMARY_BRIDGE_PORT;
|
setcmd = IPA_SBP_SET_PRIMARY_BRIDGE_PORT;
|
||||||
cmdlength = sizeof(struct qeth_ipacmd_sbp_hdr) +
|
cmdlength = sizeof(struct qeth_sbp_set_primary);
|
||||||
sizeof(struct qeth_sbp_set_primary);
|
|
||||||
break;
|
break;
|
||||||
case QETH_SBP_ROLE_SECONDARY:
|
case QETH_SBP_ROLE_SECONDARY:
|
||||||
setcmd = IPA_SBP_SET_SECONDARY_BRIDGE_PORT;
|
setcmd = IPA_SBP_SET_SECONDARY_BRIDGE_PORT;
|
||||||
cmdlength = sizeof(struct qeth_ipacmd_sbp_hdr) +
|
cmdlength = sizeof(struct qeth_sbp_set_secondary);
|
||||||
sizeof(struct qeth_sbp_set_secondary);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
if (!(card->options.sbp.supported_funcs & setcmd))
|
if (!(card->options.sbp.supported_funcs & setcmd))
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
iob = qeth_get_ipacmd_buffer(card, ipa_cmd_sbp(card), 0);
|
iob = qeth_sbp_build_cmd(card, setcmd, cmdlength);
|
||||||
if (!iob)
|
if (!iob)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
cmd = (struct qeth_ipa_cmd *)(iob->data+IPA_PDU_HEADER_SIZE);
|
|
||||||
cmd->data.sbp.hdr.cmdlength = cmdlength;
|
|
||||||
cmd->data.sbp.hdr.command_code = setcmd;
|
|
||||||
cmd->data.sbp.hdr.used_total = 1;
|
|
||||||
cmd->data.sbp.hdr.seq_no = 1;
|
|
||||||
rc = qeth_send_ipa_cmd(card, iob, qeth_bridgeport_set_cb,
|
rc = qeth_send_ipa_cmd(card, iob, qeth_bridgeport_set_cb,
|
||||||
(void *)&cbctl);
|
(void *)&cbctl);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user