aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/net/qeth_l2_main.c
diff options
context:
space:
mode:
authorFrank Blaschka <frank.blaschka@de.ibm.com>2010-06-21 18:57:10 -0400
committerDavid S. Miller <davem@davemloft.net>2010-06-23 16:16:36 -0400
commit51aa165c9f27bbfff498e4d56f3eadf17d74c476 (patch)
treec2af4e7f534c697f1fc8c14e053f679596a507bf /drivers/s390/net/qeth_l2_main.c
parent43a65303fe530afe4daf1c0fd6875fdba7090f91 (diff)
qeth: fix page breaks in hw headers
Turning on memory debugging showed there could be page breaks in hardware headers. OSA does not allow this so we had to add code to bounce the header in case there is a page break. This patch also fixes a problem in case the skb->data part of a fragmented skb spreads multiple pages. 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/qeth_l2_main.c')
-rw-r--r--drivers/s390/net/qeth_l2_main.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c
index e7942ccab987..32d07c2dcc67 100644
--- a/drivers/s390/net/qeth_l2_main.c
+++ b/drivers/s390/net/qeth_l2_main.c
@@ -712,10 +712,13 @@ static int qeth_l2_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
712 goto tx_drop; 712 goto tx_drop;
713 } 713 }
714 714
715 if (card->info.type != QETH_CARD_TYPE_IQD) 715 if (card->info.type != QETH_CARD_TYPE_IQD) {
716 if (qeth_hdr_chk_and_bounce(new_skb,
717 sizeof(struct qeth_hdr_layer2)))
718 goto tx_drop;
716 rc = qeth_do_send_packet(card, queue, new_skb, hdr, 719 rc = qeth_do_send_packet(card, queue, new_skb, hdr,
717 elements); 720 elements);
718 else 721 } else
719 rc = qeth_do_send_packet_fast(card, queue, new_skb, hdr, 722 rc = qeth_do_send_packet_fast(card, queue, new_skb, hdr,
720 elements, data_offset, hd_len); 723 elements, data_offset, hd_len);
721 if (!rc) { 724 if (!rc) {