9614 }
9615
9616 mapping = pci_map_single(bp->pdev, skb->data,
9617 skb_headlen(skb), PCI_DMA_TODEVICE);
9618
9619 tx_bd->addr_hi = cpu_to_le32(U64_HI(mapping));
9620 tx_bd->addr_lo = cpu_to_le32(U64_LO(mapping));
9621 nbd = skb_shinfo(skb)->nr_frags + ((pbd == NULL) ? 1 : 2);
9622 tx_bd->nbd = cpu_to_le16(nbd);
9623 tx_bd->nbytes = cpu_to_le16(skb_headlen(skb));
9624
9625 DP(NETIF_MSG_TX_QUEUED, "first bd @%p addr (%x:%x) nbd %d"
9626 " nbytes %d flags %x vlan %x\n",
9627 tx_bd, tx_bd->addr_hi, tx_bd->addr_lo, le16_to_cpu(tx_bd->nbd),
9628 le16_to_cpu(tx_bd->nbytes), tx_bd->bd_flags.as_bitfield,
9629 le16_to_cpu(tx_bd->vlan));
9630
9631 if (xmit_type & XMIT_GSO) {
9632
9633 DP(NETIF_MSG_TX_QUEUED,
9634 "TSO packet len %d hlen %d total len %d tso size %d\n",
9635 skb->len, hlen, skb_headlen(skb),
9636 skb_shinfo(skb)->gso_size);
9637
9638 tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_SW_LSO;
9639
9640 if (unlikely(skb_headlen(skb) > hlen))
9641 bd_prod = bnx2x_tx_split(bp, fp, &tx_bd, hlen,
9642 bd_prod, ++nbd);
9643
9644 pbd->lso_mss = cpu_to_le16(skb_shinfo(skb)->gso_size);
9645 pbd->tcp_send_seq = swab32(tcp_hdr(skb)->seq);
9646 pbd->tcp_flags = pbd_tcp_flags(skb);
9647
9648 if (xmit_type & XMIT_GSO_V4) {
9649 pbd->ip_id = swab16(ip_hdr(skb)->id);
9650 pbd->tcp_pseudo_csum =
9651 swab16(~csum_tcpudp_magic(ip_hdr(skb)->saddr,
9652 ip_hdr(skb)->daddr,
9653 0, IPPROTO_TCP, 0));
9654