diff options
author | Ursula Braun <ursula.braun@de.ibm.com> | 2011-02-02 06:04:33 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-02-02 15:00:00 -0800 |
commit | 8b2e18f662939fb3d9b0ffe5da953ba56d259e3a (patch) | |
tree | 3cd4bab1b27b8efdacf2818a8aaaec89fff42cec /drivers/s390/net | |
parent | 9853b97bccbd2b08ce5fef497f21fa7395f68823 (diff) | |
download | kernel_samsung_smdk4412-8b2e18f662939fb3d9b0ffe5da953ba56d259e3a.zip kernel_samsung_smdk4412-8b2e18f662939fb3d9b0ffe5da953ba56d259e3a.tar.gz kernel_samsung_smdk4412-8b2e18f662939fb3d9b0ffe5da953ba56d259e3a.tar.bz2 |
qeth: allow HiperSockets framesize change in suspend
For HiperSockets the framesize-definition determines the selected
mtu-size and the size of the allocated qdio buffers.
A framesize-change may occur while a Linux system with probed
HiperSockets device is in suspend state. This patch enables proper
resuming of a HiperSockets device in this case.
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>
Diffstat (limited to 'drivers/s390/net')
-rw-r--r-- | drivers/s390/net/qeth_core_main.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c index ddeef41..eca3e09 100644 --- a/drivers/s390/net/qeth_core_main.c +++ b/drivers/s390/net/qeth_core_main.c @@ -1887,8 +1887,16 @@ static int qeth_ulp_enable_cb(struct qeth_card *card, struct qeth_reply *reply, QETH_DBF_TEXT_(SETUP, 2, " rc%d", iob->rc); return 0; } - card->info.max_mtu = mtu; + if (card->info.initial_mtu && (card->info.initial_mtu != mtu)) { + /* frame size has changed */ + if (card->dev && + ((card->dev->mtu == card->info.initial_mtu) || + (card->dev->mtu > mtu))) + card->dev->mtu = mtu; + qeth_free_qdio_buffers(card); + } card->info.initial_mtu = mtu; + card->info.max_mtu = mtu; card->qdio.in_buf_size = mtu + 2 * PAGE_SIZE; } else { card->info.initial_mtu = qeth_get_initial_mtu_for_card(card); |