Print this page
3014 Intel X540 Support

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/ixgbe/ixgbe_tx.c
          +++ new/usr/src/uts/common/io/ixgbe/ixgbe_tx.c
↓ open down ↓ 17 lines elided ↑ open up ↑
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright(c) 2007-2010 Intel Corporation. All rights reserved.
  24   24   */
  25   25  
  26   26  /*
  27   27   * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
       28 + * Copyright 2012 Nexenta Systems, Inc. All rights reserved.
  28   29   */
  29   30  
  30   31  #include "ixgbe_sw.h"
  31   32  
  32   33  static int ixgbe_tx_copy(ixgbe_tx_ring_t *, tx_control_block_t *, mblk_t *,
  33   34      uint32_t, boolean_t);
  34   35  static int ixgbe_tx_bind(ixgbe_tx_ring_t *, tx_control_block_t *, mblk_t *,
  35   36      uint32_t);
  36   37  static int ixgbe_tx_fill_ring(ixgbe_tx_ring_t *, link_list_t *,
  37   38      ixgbe_tx_context_t *, size_t);
↓ open down ↓ 1033 lines elided ↑ open up ↑
1071 1072                   * the first tx control block.
1072 1073                   */
1073 1074                  first_tcb->desc_num++;
1074 1075          }
1075 1076          first_tcb->last_index = PREV_INDEX(index, 1, tx_ring->ring_size);
1076 1077  
1077 1078          /*
1078 1079           * The Insert Ethernet CRC (IFCS) bit and the checksum fields are only
1079 1080           * valid in the first descriptor of the packet.
1080 1081           * Setting paylen in every first_tbd for all parts.
1081      -         * 82599 requires the packet length in paylen field with or without
1082      -         * LSO and 82598 will ignore it in non-LSO mode.
     1082 +         * 82599 and X540 require the packet length in paylen field with or
     1083 +         * without LSO and 82598 will ignore it in non-LSO mode.
1083 1084           */
1084 1085          ASSERT(first_tbd != NULL);
1085 1086          first_tbd->read.cmd_type_len |= IXGBE_ADVTXD_DCMD_IFCS;
1086 1087  
1087 1088          switch (hw->mac.type) {
1088 1089          case ixgbe_mac_82598EB:
1089 1090                  if (ctx != NULL && ctx->lso_flag) {
1090 1091                          first_tbd->read.cmd_type_len |= IXGBE_ADVTXD_DCMD_TSE;
1091 1092                          first_tbd->read.olinfo_status |=
1092 1093                              (mbsize - ctx->mac_hdr_len - ctx->ip_hdr_len
1093 1094                              - ctx->l4_hdr_len) << IXGBE_ADVTXD_PAYLEN_SHIFT;
1094 1095                  }
1095 1096                  break;
1096 1097  
1097 1098          case ixgbe_mac_82599EB:
     1099 +        case ixgbe_mac_X540:
1098 1100                  if (ctx != NULL && ctx->lso_flag) {
1099 1101                          first_tbd->read.cmd_type_len |= IXGBE_ADVTXD_DCMD_TSE;
1100 1102                          first_tbd->read.olinfo_status |=
1101 1103                              (mbsize - ctx->mac_hdr_len - ctx->ip_hdr_len
1102 1104                              - ctx->l4_hdr_len) << IXGBE_ADVTXD_PAYLEN_SHIFT;
1103 1105                  } else {
1104 1106                          first_tbd->read.olinfo_status |=
1105 1107                              (mbsize << IXGBE_ADVTXD_PAYLEN_SHIFT);
1106 1108                  }
1107 1109                  break;
↓ open down ↓ 510 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX