Print this page
6064 ixgbe needs X550 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 ↓ 18 lines elided ↑ open up ↑
  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   28   * Copyright 2012 Nexenta Systems, Inc. All rights reserved.
       29 + * Copyright 2016 OmniTI Computer Consulting, Inc. All rights reserved.
  29   30   */
  30   31  
  31   32  #include "ixgbe_sw.h"
  32   33  
  33   34  static int ixgbe_tx_copy(ixgbe_tx_ring_t *, tx_control_block_t *, mblk_t *,
  34   35      uint32_t, boolean_t);
  35   36  static int ixgbe_tx_bind(ixgbe_tx_ring_t *, tx_control_block_t *, mblk_t *,
  36   37      uint32_t);
  37   38  static int ixgbe_tx_fill_ring(ixgbe_tx_ring_t *, link_list_t *,
  38   39      ixgbe_tx_context_t *, size_t);
↓ open down ↓ 1035 lines elided ↑ open up ↑
1074 1075                   * the first tx control block.
1075 1076                   */
1076 1077                  first_tcb->desc_num++;
1077 1078          }
1078 1079          first_tcb->last_index = PREV_INDEX(index, 1, tx_ring->ring_size);
1079 1080  
1080 1081          /*
1081 1082           * The Insert Ethernet CRC (IFCS) bit and the checksum fields are only
1082 1083           * valid in the first descriptor of the packet.
1083 1084           * Setting paylen in every first_tbd for all parts.
1084      -         * 82599 and X540 require the packet length in paylen field with or
1085      -         * without LSO and 82598 will ignore it in non-LSO mode.
     1085 +         * 82599, X540 and X550 require the packet length in paylen field
     1086 +         * with or without LSO and 82598 will ignore it in non-LSO mode.
1086 1087           */
1087 1088          ASSERT(first_tbd != NULL);
1088 1089          first_tbd->read.cmd_type_len |= IXGBE_ADVTXD_DCMD_IFCS;
1089 1090  
1090 1091          switch (hw->mac.type) {
1091 1092          case ixgbe_mac_82598EB:
1092 1093                  if (ctx != NULL && ctx->lso_flag) {
1093 1094                          first_tbd->read.cmd_type_len |= IXGBE_ADVTXD_DCMD_TSE;
1094 1095                          first_tbd->read.olinfo_status |=
1095 1096                              (mbsize - ctx->mac_hdr_len - ctx->ip_hdr_len
1096 1097                              - ctx->l4_hdr_len) << IXGBE_ADVTXD_PAYLEN_SHIFT;
1097 1098                  }
1098 1099                  break;
1099 1100  
1100 1101          case ixgbe_mac_82599EB:
1101 1102          case ixgbe_mac_X540:
     1103 +        case ixgbe_mac_X550:
     1104 +        case ixgbe_mac_X550EM_x:
1102 1105                  if (ctx != NULL && ctx->lso_flag) {
1103 1106                          first_tbd->read.cmd_type_len |= IXGBE_ADVTXD_DCMD_TSE;
1104 1107                          first_tbd->read.olinfo_status |=
1105 1108                              (mbsize - ctx->mac_hdr_len - ctx->ip_hdr_len
1106 1109                              - ctx->l4_hdr_len) << IXGBE_ADVTXD_PAYLEN_SHIFT;
1107 1110                  } else {
1108 1111                          first_tbd->read.olinfo_status |=
1109 1112                              (mbsize << IXGBE_ADVTXD_PAYLEN_SHIFT);
1110 1113                  }
1111 1114                  break;
↓ open down ↓ 510 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX