Print this page
NEX-1890 update oce from source provided by Emulex

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/sys/fibre-channel/fca/oce/oce_buf.h
          +++ new/usr/src/uts/common/sys/fibre-channel/fca/oce/oce_buf.h
↓ open down ↓ 11 lines elided ↑ open up ↑
  12   12   *
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  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      -/* Copyright © 2003-2011 Emulex. All rights reserved.  */
       22 +/*
       23 + * Copyright (c) 2009-2012 Emulex. All rights reserved.
       24 + * Use is subject to license terms.
       25 + */
  23   26  
       27 +
  24   28  /*
  25   29   * Header file defining the driver buffer management interface
  26   30   */
  27   31  
  28   32  #ifndef _OCE_BUF_H_
  29   33  #define _OCE_BUF_H_
  30   34  
  31   35  #ifdef __cplusplus
  32   36  extern "C" {
  33   37  #endif
↓ open down ↓ 28 lines elided ↑ open up ↑
  62   66  typedef struct oce_dma_buf_s {
  63   67          caddr_t         base;
  64   68          uint64_t        addr;
  65   69          ddi_acc_handle_t acc_handle;
  66   70          ddi_dma_handle_t dma_handle;
  67   71          /* size of the memory */
  68   72          size_t          size;
  69   73          size_t          off;
  70   74          size_t          len;
  71   75          uint32_t        num_pages;
       76 +        uint32_t        ncookies;
       77 +        ddi_dma_cookie_t cookie;
  72   78  }oce_dma_buf_t;
  73   79  
  74      -#define DBUF_PA(obj) (((oce_dma_buf_t *)(obj))->addr)
  75      -#define DBUF_VA(obj) (((oce_dma_buf_t *)(obj))->base)
  76      -#define DBUF_DHDL(obj) (((oce_dma_buf_t *)(obj))->dma_handle)
  77      -#define DBUF_AHDL(obj) (((oce_dma_buf_t *)obj))->acc_handle)
  78      -#define DBUF_SYNC(obj, flags)   (void) ddi_dma_sync(DBUF_DHDL(obj), 0,\
  79      -                        0, (flags))
       80 +#define DBUF_PA(obj) ((obj).addr)
       81 +#define DBUF_VA(obj) ((obj).base)
       82 +#define DBUF_DHDL(obj) ((obj).dma_handle)
       83 +#define DBUF_AHDL(obj) ((obj).acc_handle)
       84 +#define DBUF_SYNC(obj, off, len, flags)         \
       85 +        (void) ddi_dma_sync(DBUF_DHDL(obj), off, len, (flags))
  80   86  
  81   87  typedef struct oce_ring_buffer_s {
  82   88          uint16_t    cidx;       /* Get ptr */
  83   89          uint16_t    pidx;       /* Put Ptr */
  84   90          size_t  item_size;      /* Size */
  85   91          size_t  num_items;      /* count */
  86   92          uint32_t  num_used;
  87      -        oce_dma_buf_t   *dbuf;  /* dma buffer */
       93 +        oce_dma_buf_t   dbuf;   /* dma buffer */
  88   94  }oce_ring_buffer_t;
  89   95  
  90   96  typedef struct oce_rq_bdesc_s {
  91      -        oce_dma_buf_t   *rqb;
       97 +        oce_dma_buf_t   rqb;
  92   98          struct oce_rq   *rq;
  93   99          oce_addr64_t    frag_addr;
  94  100          mblk_t          *mp;
  95  101          frtn_t          fr_rtn;
  96      -    uint32_t    ref_cnt;
      102 +        uint32_t        ref_cnt;
  97  103  }oce_rq_bdesc_t;
  98  104  
  99  105  typedef struct oce_wq_bdesc_s {
 100      -        OCE_LIST_NODE_T  link;
 101      -        oce_dma_buf_t   *wqb;
      106 +        oce_dma_buf_t   wqb;
 102  107          oce_addr64_t    frag_addr;
 103  108  } oce_wq_bdesc_t;
 104  109  
 105  110  typedef struct oce_wq_mdesc_s {
 106      -        OCE_LIST_NODE_T         link;
 107  111          ddi_dma_handle_t        dma_handle;
 108  112  } oce_wq_mdesc_t;
 109  113  
 110  114  enum entry_type {
 111  115          HEADER_WQE = 0x1, /* arbitrary value */
 112  116          MAPPED_WQE,
 113  117          COPY_WQE,
 114  118          DUMMY_WQE
 115  119  };
 116  120  
 117  121  typedef struct _oce_handle_s {
 118  122      enum entry_type     type;
 119  123          void            *hdl; /* opaque handle */
 120  124  }oce_handle_t;
 121  125  
 122  126  typedef struct _oce_wqe_desc_s {
 123      -        OCE_LIST_NODE_T  link;
      127 +        list_node_t     link;
 124  128          oce_handle_t    hdesc[OCE_MAX_TX_HDL];
 125  129          struct oce_nic_frag_wqe frag[OCE_TX_MAX_FRAGS];
 126  130          struct oce_wq  *wq;
 127  131          mblk_t          *mp;
 128  132          uint16_t        wqe_cnt;
 129  133          uint16_t        frag_idx;
 130  134          uint16_t        frag_cnt;
 131  135          uint16_t        nhdl;
 132  136  }oce_wqe_desc_t;
 133  137  
 134  138  #pragma pack(1)
 135  139  /* Always keep it 2 mod 4 */
 136  140  typedef struct _oce_rq_buf_hdr_s {
 137  141          void *datap;
 138  142          uint8_t pad[18];
 139  143          /* ether_vlan_header_t vhdr; */
 140  144  } oce_rq_buf_hdr_t;
 141  145  #pragma pack()
 142  146  
 143      -#define OCE_RQE_BUF_HEADROOM    18
      147 +#define OCE_RQE_BUF_HEADROOM    10      /* always 2 mod  4 */
      148 +#define OCE_IP_ALIGN            2       /* Align the IP header */
 144  149  #define MAX_POOL_NAME           32
 145  150  
 146  151  #define RING_NUM_PENDING(ring)  ring->num_used
 147  152  
 148  153  #define RING_NUM_FREE(ring)     \
 149  154          (uint32_t)(ring->num_items - ring->num_used)
 150  155  
 151  156  #define RING_FULL(ring) (ring->num_used == ring->num_items)
 152  157  
 153  158  #define RING_EMPTY(ring) (ring->num_used == 0)
↓ open down ↓ 42 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX