Print this page
MFV: illumos-omnios@aea0472ecb9ee91fa70556d6f6a941c10c989f1d
Add support for Emulex Corporation Lancer Gen6: LPe32000 FC Host Adapter
Author: Andy Fiddaman <omnios@citrus-it.co.uk>
NEX-1878 update emlxs from source provided by Emulex

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_mem.c
          +++ new/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_mem.c
↓ open down ↓ 14 lines elided ↑ open up ↑
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright (c) 2004-2011 Emulex. All rights reserved.
  24   24   * Use is subject to license terms.
       25 + * Copyright 2018 OmniOS Community Edition (OmniOSce) Association.
  25   26   */
  26   27  
  27   28  #include <emlxs.h>
  28   29  
  29   30  /* #define EMLXS_POOL_DEBUG */
  30   31  
  31   32  EMLXS_MSG_DEF(EMLXS_MEM_C);
  32   33  
  33   34  
  34   35  static uint32_t emlxs_mem_pool_alloc(emlxs_hba_t *hba, MEMSEG *seg,
↓ open down ↓ 119 lines elided ↑ open up ↑
 154  155                              sizeof (seg->fc_label));
 155  156                          seg->fc_memtag  = MEM_CTBUF;
 156  157                          seg->fc_memsize = MEM_CTBUF_SIZE;
 157  158                          seg->fc_memflag = FC_MBUF_DMA | FC_MBUF_SNGLSG;
 158  159                          seg->fc_memalign = 32;
 159  160                          seg->fc_hi_water = MEM_CTBUF_COUNT;
 160  161                          seg->fc_lo_water = MEM_CTBUF_COUNT;
 161  162                          seg->fc_step = 1;
 162  163                          break;
 163  164  
      165 +                case MEM_SGL1K:
      166 +                        (void) strlcpy(seg->fc_label, "1K SGL Pool",
      167 +                            sizeof (seg->fc_label));
      168 +                        seg->fc_memtag  = MEM_SGL1K;
      169 +                        seg->fc_memsize = 0x400;
      170 +                        seg->fc_memflag = FC_MBUF_DMA | FC_MBUF_SNGLSG;
      171 +                        seg->fc_memalign = 32;
      172 +                        seg->fc_hi_water = 0x5000;
      173 +                        seg->fc_lo_water = 0;
      174 +                        seg->fc_step = 0x100;
      175 +                        break;
      176 +
      177 +                case MEM_SGL2K:
      178 +                        (void) strlcpy(seg->fc_label, "2K SGL Pool",
      179 +                            sizeof (seg->fc_label));
      180 +                        seg->fc_memtag  = MEM_SGL2K;
      181 +                        seg->fc_memsize = 0x800;
      182 +                        seg->fc_memflag = FC_MBUF_DMA | FC_MBUF_SNGLSG;
      183 +                        seg->fc_memalign = 32;
      184 +                        seg->fc_hi_water = 0x5000;
      185 +                        seg->fc_lo_water = 0;
      186 +                        seg->fc_step = 0x100;
      187 +                        break;
      188 +
      189 +                case MEM_SGL4K:
      190 +                        (void) strlcpy(seg->fc_label, "4K SGL Pool",
      191 +                            sizeof (seg->fc_label));
      192 +                        seg->fc_memtag  = MEM_SGL4K;
      193 +                        seg->fc_memsize = 0x1000;
      194 +                        seg->fc_memflag = FC_MBUF_DMA | FC_MBUF_SNGLSG;
      195 +                        seg->fc_memalign = 32;
      196 +                        seg->fc_hi_water = 0x5000;
      197 +                        seg->fc_lo_water = 0;
      198 +                        seg->fc_step = 0x100;
      199 +                        break;
      200 +
 164  201  #ifdef SFCT_SUPPORT
 165  202                  case MEM_FCTBUF:
 166  203                          /* These are the unsolicited FCT buffers. */
 167  204                          if (!(port->flag & EMLXS_TGT_ENABLED)) {
 168  205                                  continue;
 169  206                          }
 170  207  
 171  208                          (void) strlcpy(seg->fc_label, "FCTBUF Pool",
 172  209                              sizeof (seg->fc_label));
 173  210                          seg->fc_memtag  = MEM_FCTBUF;
↓ open down ↓ 527 lines elided ↑ open up ↑
 701  738                          seg->fc_step = 1;
 702  739                  }
 703  740          } else {
 704  741                  seg->fc_step = 0;
 705  742          }
 706  743  
 707  744          seg->fc_numblks = 0;
 708  745          seg->fc_total_memsize = 0;
 709  746          seg->fc_low = 0;
 710  747  
 711      -        (void) emlxs_mem_pool_alloc(hba, seg,  seg->fc_lo_water);
      748 +        (void) emlxs_mem_pool_alloc(hba, seg, seg->fc_lo_water);
 712  749  
 713  750          seg->fc_memflag |= (FC_MEMSEG_PUT_ENABLED|FC_MEMSEG_GET_ENABLED);
 714  751  
 715  752          mutex_exit(&EMLXS_MEMPUT_LOCK);
 716  753          mutex_exit(&EMLXS_MEMGET_LOCK);
 717  754  
 718  755          return (seg->fc_numblks);
 719  756  
 720  757  } /* emlxs_mem_pool_create() */
 721  758  
↓ open down ↓ 324 lines elided ↑ open up ↑
1046 1083  
1047 1084                  EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_mem_alloc_failed_msg,
1048 1085                      "MEM_BUF_ALLOC DMA buffer.");
1049 1086  
1050 1087                  /* Free the mp object */
1051 1088                  bzero(buf_info, sizeof (MBUF_INFO));
1052 1089                  buf_info->size = sizeof (MATCHMAP);
1053 1090                  buf_info->virt = (void *)mp;
1054 1091                  emlxs_mem_free(hba, buf_info);
1055 1092  
1056      -                return (0);
     1093 +                return (NULL);
1057 1094          }
1058 1095          bp = (uint8_t *)buf_info->virt;
1059 1096          bzero(bp, buf_info->size);
1060 1097  
1061 1098          mp->virt = buf_info->virt;
1062 1099          mp->phys = buf_info->phys;
1063 1100          mp->size = buf_info->size;
1064 1101          mp->dma_handle = buf_info->dma_handle;
1065 1102          mp->data_handle = buf_info->data_handle;
1066 1103          mp->tag = MEM_BUF;
↓ open down ↓ 490 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX