s390/qeth: pass TSO header length to fill_buffer()
The TSO code already calculates the length of its header element, no need to duplicate this in the low-level code again. Use this opportunity to make hd_len unsigned, and for TSO match its calculation to what tso_fill_header() does. 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:

committed by
David S. Miller

parent
ae79fe03ae
commit
13ddacb526
@@ -2637,6 +2637,7 @@ static netdev_tx_t qeth_l3_hard_start_xmit(struct sk_buff *skb,
|
||||
qeth_get_priority_queue(card, skb, ipv, cast_type) :
|
||||
card->qdio.default_out_queue];
|
||||
int tx_bytes = skb->len;
|
||||
unsigned int hd_len = 0;
|
||||
bool use_tso;
|
||||
int data_offset = -1;
|
||||
unsigned int nr_frags;
|
||||
@@ -2756,16 +2757,18 @@ static netdev_tx_t qeth_l3_hard_start_xmit(struct sk_buff *skb,
|
||||
|
||||
if (card->info.type != QETH_CARD_TYPE_IQD) {
|
||||
int len;
|
||||
if (use_tso)
|
||||
len = ((unsigned long)tcp_hdr(new_skb) +
|
||||
tcp_hdrlen(new_skb)) -
|
||||
(unsigned long)new_skb->data;
|
||||
else
|
||||
if (use_tso) {
|
||||
hd_len = sizeof(struct qeth_hdr_tso) +
|
||||
ip_hdrlen(new_skb) + tcp_hdrlen(new_skb);
|
||||
len = hd_len;
|
||||
} else {
|
||||
len = sizeof(struct qeth_hdr_layer3);
|
||||
}
|
||||
|
||||
if (qeth_hdr_chk_and_bounce(new_skb, &hdr, len))
|
||||
goto tx_drop;
|
||||
rc = qeth_do_send_packet(card, queue, new_skb, hdr, elements);
|
||||
rc = qeth_do_send_packet(card, queue, new_skb, hdr, hd_len,
|
||||
elements);
|
||||
} else
|
||||
rc = qeth_do_send_packet_fast(card, queue, new_skb, hdr,
|
||||
data_offset, 0);
|
||||
|
Reference in New Issue
Block a user