qeth: remove needless IPA-commands in offline
If a qeth device is set offline, data and control subchannels are cleared, which means removal of all IP Assist Primitive settings implicitly. There is no need to delete those settings explicitly. This patch removes all IP Assist invocations from offline. Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com> Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
4c93fbb062
commit
70919e23ac
@@ -302,12 +302,15 @@ static void qeth_issue_ipa_msg(struct qeth_ipa_cmd *cmd, int rc,
|
||||
int com = cmd->hdr.command;
|
||||
ipa_name = qeth_get_ipa_cmd_name(com);
|
||||
if (rc)
|
||||
QETH_DBF_MESSAGE(2, "IPA: %s(x%X) for %s returned x%X \"%s\"\n",
|
||||
ipa_name, com, QETH_CARD_IFNAME(card),
|
||||
rc, qeth_get_ipa_msg(rc));
|
||||
QETH_DBF_MESSAGE(2, "IPA: %s(x%X) for %s/%s returned "
|
||||
"x%X \"%s\"\n",
|
||||
ipa_name, com, dev_name(&card->gdev->dev),
|
||||
QETH_CARD_IFNAME(card), rc,
|
||||
qeth_get_ipa_msg(rc));
|
||||
else
|
||||
QETH_DBF_MESSAGE(5, "IPA: %s(x%X) for %s succeeded\n",
|
||||
ipa_name, com, QETH_CARD_IFNAME(card));
|
||||
QETH_DBF_MESSAGE(5, "IPA: %s(x%X) for %s/%s succeeded\n",
|
||||
ipa_name, com, dev_name(&card->gdev->dev),
|
||||
QETH_CARD_IFNAME(card));
|
||||
}
|
||||
|
||||
static struct qeth_ipa_cmd *qeth_check_ipa_data(struct qeth_card *card,
|
||||
@@ -1083,7 +1086,6 @@ static int qeth_setup_card(struct qeth_card *card)
|
||||
card->data.state = CH_STATE_DOWN;
|
||||
card->state = CARD_STATE_DOWN;
|
||||
card->lan_online = 0;
|
||||
card->use_hard_stop = 0;
|
||||
card->read_or_write_problem = 0;
|
||||
card->dev = NULL;
|
||||
spin_lock_init(&card->vlanlock);
|
||||
@@ -1732,20 +1734,22 @@ int qeth_send_control_data(struct qeth_card *card, int len,
|
||||
};
|
||||
}
|
||||
|
||||
if (reply->rc == -EIO)
|
||||
goto error;
|
||||
rc = reply->rc;
|
||||
qeth_put_reply(reply);
|
||||
return rc;
|
||||
|
||||
time_err:
|
||||
reply->rc = -ETIME;
|
||||
spin_lock_irqsave(&reply->card->lock, flags);
|
||||
list_del_init(&reply->list);
|
||||
spin_unlock_irqrestore(&reply->card->lock, flags);
|
||||
reply->rc = -ETIME;
|
||||
atomic_inc(&reply->received);
|
||||
error:
|
||||
atomic_set(&card->write.irq_pending, 0);
|
||||
qeth_release_buffer(iob->channel, iob);
|
||||
card->write.buf_no = (card->write.buf_no + 1) % QETH_CMD_BUFFER_NO;
|
||||
wake_up(&reply->wait_q);
|
||||
rc = reply->rc;
|
||||
qeth_put_reply(reply);
|
||||
return rc;
|
||||
@@ -2490,45 +2494,19 @@ int qeth_send_ipa_cmd(struct qeth_card *card, struct qeth_cmd_buffer *iob,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(qeth_send_ipa_cmd);
|
||||
|
||||
static int qeth_send_startstoplan(struct qeth_card *card,
|
||||
enum qeth_ipa_cmds ipacmd, enum qeth_prot_versions prot)
|
||||
int qeth_send_startlan(struct qeth_card *card)
|
||||
{
|
||||
int rc;
|
||||
struct qeth_cmd_buffer *iob;
|
||||
|
||||
iob = qeth_get_ipacmd_buffer(card, ipacmd, prot);
|
||||
rc = qeth_send_ipa_cmd(card, iob, NULL, NULL);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
int qeth_send_startlan(struct qeth_card *card)
|
||||
{
|
||||
int rc;
|
||||
|
||||
QETH_DBF_TEXT(SETUP, 2, "strtlan");
|
||||
|
||||
rc = qeth_send_startstoplan(card, IPA_CMD_STARTLAN, 0);
|
||||
iob = qeth_get_ipacmd_buffer(card, IPA_CMD_STARTLAN, 0);
|
||||
rc = qeth_send_ipa_cmd(card, iob, NULL, NULL);
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(qeth_send_startlan);
|
||||
|
||||
int qeth_send_stoplan(struct qeth_card *card)
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
/*
|
||||
* TODO: according to the IPA format document page 14,
|
||||
* TCP/IP (we!) never issue a STOPLAN
|
||||
* is this right ?!?
|
||||
*/
|
||||
QETH_DBF_TEXT(SETUP, 2, "stoplan");
|
||||
|
||||
rc = qeth_send_startstoplan(card, IPA_CMD_STOPLAN, 0);
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(qeth_send_stoplan);
|
||||
|
||||
int qeth_default_setadapterparms_cb(struct qeth_card *card,
|
||||
struct qeth_reply *reply, unsigned long data)
|
||||
{
|
||||
|
Reference in New Issue
Block a user