Print this page
NEX-1890 update oce from source provided by Emulex
@@ -17,12 +17,16 @@
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
-/* Copyright © 2003-2011 Emulex. All rights reserved. */
+/*
+ * Copyright (c) 2009-2012 Emulex. All rights reserved.
+ * Use is subject to license terms.
+ */
+
/*
* Header file defining the driver buffer management interface
*/
#ifndef _OCE_BUF_H_
@@ -67,45 +71,45 @@
/* size of the memory */
size_t size;
size_t off;
size_t len;
uint32_t num_pages;
+ uint32_t ncookies;
+ ddi_dma_cookie_t cookie;
}oce_dma_buf_t;
-#define DBUF_PA(obj) (((oce_dma_buf_t *)(obj))->addr)
-#define DBUF_VA(obj) (((oce_dma_buf_t *)(obj))->base)
-#define DBUF_DHDL(obj) (((oce_dma_buf_t *)(obj))->dma_handle)
-#define DBUF_AHDL(obj) (((oce_dma_buf_t *)obj))->acc_handle)
-#define DBUF_SYNC(obj, flags) (void) ddi_dma_sync(DBUF_DHDL(obj), 0,\
- 0, (flags))
+#define DBUF_PA(obj) ((obj).addr)
+#define DBUF_VA(obj) ((obj).base)
+#define DBUF_DHDL(obj) ((obj).dma_handle)
+#define DBUF_AHDL(obj) ((obj).acc_handle)
+#define DBUF_SYNC(obj, off, len, flags) \
+ (void) ddi_dma_sync(DBUF_DHDL(obj), off, len, (flags))
typedef struct oce_ring_buffer_s {
uint16_t cidx; /* Get ptr */
uint16_t pidx; /* Put Ptr */
size_t item_size; /* Size */
size_t num_items; /* count */
uint32_t num_used;
- oce_dma_buf_t *dbuf; /* dma buffer */
+ oce_dma_buf_t dbuf; /* dma buffer */
}oce_ring_buffer_t;
typedef struct oce_rq_bdesc_s {
- oce_dma_buf_t *rqb;
+ oce_dma_buf_t rqb;
struct oce_rq *rq;
oce_addr64_t frag_addr;
mblk_t *mp;
frtn_t fr_rtn;
uint32_t ref_cnt;
}oce_rq_bdesc_t;
typedef struct oce_wq_bdesc_s {
- OCE_LIST_NODE_T link;
- oce_dma_buf_t *wqb;
+ oce_dma_buf_t wqb;
oce_addr64_t frag_addr;
} oce_wq_bdesc_t;
typedef struct oce_wq_mdesc_s {
- OCE_LIST_NODE_T link;
ddi_dma_handle_t dma_handle;
} oce_wq_mdesc_t;
enum entry_type {
HEADER_WQE = 0x1, /* arbitrary value */
@@ -118,11 +122,11 @@
enum entry_type type;
void *hdl; /* opaque handle */
}oce_handle_t;
typedef struct _oce_wqe_desc_s {
- OCE_LIST_NODE_T link;
+ list_node_t link;
oce_handle_t hdesc[OCE_MAX_TX_HDL];
struct oce_nic_frag_wqe frag[OCE_TX_MAX_FRAGS];
struct oce_wq *wq;
mblk_t *mp;
uint16_t wqe_cnt;
@@ -138,11 +142,12 @@
uint8_t pad[18];
/* ether_vlan_header_t vhdr; */
} oce_rq_buf_hdr_t;
#pragma pack()
-#define OCE_RQE_BUF_HEADROOM 18
+#define OCE_RQE_BUF_HEADROOM 10 /* always 2 mod 4 */
+#define OCE_IP_ALIGN 2 /* Align the IP header */
#define MAX_POOL_NAME 32
#define RING_NUM_PENDING(ring) ring->num_used
#define RING_NUM_FREE(ring) \