|
@@ -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);
|