diff options
author | Eric Dumazet <edumazet@google.com> | 2014-10-05 05:35:18 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-10-06 01:04:15 -0400 |
commit | e533ac7ea00c39f5ef4ab0976dd2662d50fa42a1 (patch) | |
tree | 496ebf72408cab29e8f348125d9fbf32b3972e54 | |
parent | b9d8839a44092cb4268ef2813c34d5dbf3363603 (diff) |
net/mlx4_en: Use local var for skb_headlen(skb)
Access skb_headlen() once in tx flow
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/en_tx.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c index aa05b09a0d0e..e00841aa03c3 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c | |||
@@ -612,6 +612,7 @@ static void build_inline_wqe(struct mlx4_en_tx_desc *tx_desc, | |||
612 | { | 612 | { |
613 | struct mlx4_wqe_inline_seg *inl = &tx_desc->inl; | 613 | struct mlx4_wqe_inline_seg *inl = &tx_desc->inl; |
614 | int spc = MLX4_INLINE_ALIGN - CTRL_SIZE - sizeof *inl; | 614 | int spc = MLX4_INLINE_ALIGN - CTRL_SIZE - sizeof *inl; |
615 | unsigned int hlen = skb_headlen(skb); | ||
615 | 616 | ||
616 | if (skb->len <= spc) { | 617 | if (skb->len <= spc) { |
617 | if (likely(skb->len >= MIN_PKT_LEN)) { | 618 | if (likely(skb->len >= MIN_PKT_LEN)) { |
@@ -621,19 +622,19 @@ static void build_inline_wqe(struct mlx4_en_tx_desc *tx_desc, | |||
621 | memset(((void *)(inl + 1)) + skb->len, 0, | 622 | memset(((void *)(inl + 1)) + skb->len, 0, |
622 | MIN_PKT_LEN - skb->len); | 623 | MIN_PKT_LEN - skb->len); |
623 | } | 624 | } |
624 | skb_copy_from_linear_data(skb, inl + 1, skb_headlen(skb)); | 625 | skb_copy_from_linear_data(skb, inl + 1, hlen); |
625 | if (shinfo->nr_frags) | 626 | if (shinfo->nr_frags) |
626 | memcpy(((void *)(inl + 1)) + skb_headlen(skb), fragptr, | 627 | memcpy(((void *)(inl + 1)) + hlen, fragptr, |
627 | skb_frag_size(&shinfo->frags[0])); | 628 | skb_frag_size(&shinfo->frags[0])); |
628 | 629 | ||
629 | } else { | 630 | } else { |
630 | inl->byte_count = cpu_to_be32(1 << 31 | spc); | 631 | inl->byte_count = cpu_to_be32(1 << 31 | spc); |
631 | if (skb_headlen(skb) <= spc) { | 632 | if (hlen <= spc) { |
632 | skb_copy_from_linear_data(skb, inl + 1, skb_headlen(skb)); | 633 | skb_copy_from_linear_data(skb, inl + 1, hlen); |
633 | if (skb_headlen(skb) < spc) { | 634 | if (hlen < spc) { |
634 | memcpy(((void *)(inl + 1)) + skb_headlen(skb), | 635 | memcpy(((void *)(inl + 1)) + hlen, |
635 | fragptr, spc - skb_headlen(skb)); | 636 | fragptr, spc - hlen); |
636 | fragptr += spc - skb_headlen(skb); | 637 | fragptr += spc - hlen; |
637 | } | 638 | } |
638 | inl = (void *) (inl + 1) + spc; | 639 | inl = (void *) (inl + 1) + spc; |
639 | memcpy(((void *)(inl + 1)), fragptr, skb->len - spc); | 640 | memcpy(((void *)(inl + 1)), fragptr, skb->len - spc); |
@@ -641,9 +642,9 @@ static void build_inline_wqe(struct mlx4_en_tx_desc *tx_desc, | |||
641 | skb_copy_from_linear_data(skb, inl + 1, spc); | 642 | skb_copy_from_linear_data(skb, inl + 1, spc); |
642 | inl = (void *) (inl + 1) + spc; | 643 | inl = (void *) (inl + 1) + spc; |
643 | skb_copy_from_linear_data_offset(skb, spc, inl + 1, | 644 | skb_copy_from_linear_data_offset(skb, spc, inl + 1, |
644 | skb_headlen(skb) - spc); | 645 | hlen - spc); |
645 | if (shinfo->nr_frags) | 646 | if (shinfo->nr_frags) |
646 | memcpy(((void *)(inl + 1)) + skb_headlen(skb) - spc, | 647 | memcpy(((void *)(inl + 1)) + hlen - spc, |
647 | fragptr, | 648 | fragptr, |
648 | skb_frag_size(&shinfo->frags[0])); | 649 | skb_frag_size(&shinfo->frags[0])); |
649 | } | 650 | } |