--- old/usr/src/uts/common/io/fibre-channel/fca/oce/oce_utils.c	Mon Aug  5 17:28:22 2019
+++ new/usr/src/uts/common/io/fibre-channel/fca/oce/oce_utils.c	Mon Aug  5 17:28:22 2019
@@ -19,8 +19,13 @@
  * CDDL HEADER END
  */
 
-/* Copyright © 2003-2011 Emulex. All rights reserved.  */
+/*
+ * Copyright (c) 2009-2012 Emulex. All rights reserved.
+ * Use is subject to license terms.
+ */
 
+
+
 /*
  * Source file containing the implementation of the driver
  * helper functions
@@ -28,11 +33,6 @@
 
 #include <oce_impl.h>
 
-static void oce_list_del_node(OCE_LIST_NODE_T *prev_node,
-    OCE_LIST_NODE_T *next_node);
-static void oce_list_remove(OCE_LIST_NODE_T *list_node);
-static void oce_list_insert_node(OCE_LIST_NODE_T  *list_node,
-    OCE_LIST_NODE_T *prev_node, OCE_LIST_NODE_T *next_node);
 /*
  * function to breakup a block of memory into pages and return the address
  * in an array
@@ -51,7 +51,7 @@
 	ASSERT(dbuf != NULL);
 	ASSERT(pa_list != NULL);
 
-	paddr = DBUF_PA(dbuf);
+	paddr = DBUF_PA(*dbuf);
 	for (i = 0; i < list_size; i++) {
 		pa_list[i].lo = ADDR_LO(paddr);
 		pa_list[i].hi = ADDR_HI(paddr);
@@ -60,158 +60,6 @@
 } /* oce_page_list */
 
 void
-oce_list_link_init(OCE_LIST_NODE_T  *list_node)
-{
-	list_node->next = NULL;
-	list_node->prev = NULL;
-}
-
-static inline void
-oce_list_insert_node(OCE_LIST_NODE_T  *list_node, OCE_LIST_NODE_T *prev_node,
-    OCE_LIST_NODE_T *next_node)
-{
-	next_node->prev = list_node;
-	list_node->next = next_node;
-	list_node->prev = prev_node;
-	prev_node->next = list_node;
-}
-
-static inline void
-oce_list_del_node(OCE_LIST_NODE_T *prev_node, OCE_LIST_NODE_T *next_node)
-{
-	next_node->prev = prev_node;
-	prev_node->next = next_node;
-}
-
-static inline void
-oce_list_remove(OCE_LIST_NODE_T *list_node)
-{
-	oce_list_del_node(list_node->prev, list_node->next);
-	list_node->next = list_node->prev = NULL;
-}
-
-void
-oce_list_create(OCE_LIST_T  *list_hdr, void *arg)
-{
-	list_hdr->head.next = list_hdr->head.prev = &list_hdr->head;
-	mutex_init(&list_hdr->list_lock, NULL, MUTEX_DRIVER, arg);
-	list_hdr->nitems = 0;
-}
-
-void
-oce_list_destroy(OCE_LIST_T *list_hdr)
-{
-	ASSERT(list_hdr->nitems == 0);
-	list_hdr->head.next = list_hdr->head.prev = NULL;
-	mutex_destroy(&list_hdr->list_lock);
-
-}
-
-void
-oce_list_insert_tail(OCE_LIST_T *list_hdr, OCE_LIST_NODE_T *list_node)
-{
-	OCE_LIST_NODE_T *head = &list_hdr->head;
-
-	ASSERT(list_hdr != NULL);
-	ASSERT(list_node != NULL);
-
-	mutex_enter(&list_hdr->list_lock);
-	oce_list_insert_node(list_node, head->prev, head);
-	list_hdr->nitems++;
-	mutex_exit(&list_hdr->list_lock);
-}
-
-void
-oce_list_insert_head(OCE_LIST_T *list_hdr, OCE_LIST_NODE_T *list_node)
-{
-	OCE_LIST_NODE_T *head = &list_hdr->head;
-
-	ASSERT(list_hdr != NULL);
-	ASSERT(list_node != NULL);
-
-	mutex_enter(&list_hdr->list_lock);
-	oce_list_insert_node(list_node, head, head->next);
-	list_hdr->nitems++;
-	mutex_exit(&list_hdr->list_lock);
-}
-
-void *
-oce_list_remove_tail(OCE_LIST_T *list_hdr)
-{
-	OCE_LIST_NODE_T *list_node;
-
-	if (list_hdr == NULL) {
-		return (NULL);
-	}
-
-	mutex_enter(&list_hdr->list_lock);
-
-	if (list_hdr->nitems <= 0) {
-		mutex_exit(&list_hdr->list_lock);
-		return (NULL);
-	}
-
-	list_node = list_hdr->head.prev;
-	oce_list_remove(list_node);
-	list_hdr->nitems--;
-	mutex_exit(&list_hdr->list_lock);
-	return (list_node);
-}
-
-void *
-oce_list_remove_head(OCE_LIST_T  *list_hdr)
-{
-	OCE_LIST_NODE_T *list_node;
-
-	if (list_hdr == NULL) {
-		return (NULL);
-	}
-
-	mutex_enter(&list_hdr->list_lock);
-
-	if (list_hdr->nitems <= 0) {
-		mutex_exit(&list_hdr->list_lock);
-		return (NULL);
-	}
-
-	list_node = list_hdr->head.next;
-
-	if (list_node != NULL) {
-		oce_list_remove(list_node);
-		list_hdr->nitems--;
-	}
-
-	mutex_exit(&list_hdr->list_lock);
-	return (list_node);
-}
-
-boolean_t
-oce_list_is_empty(OCE_LIST_T *list_hdr)
-{
-	if (list_hdr == NULL)
-		return (B_TRUE);
-	else
-		return (list_hdr->nitems <= 0);
-}
-
-int
-oce_list_items_avail(OCE_LIST_T *list_hdr)
-{
-	if (list_hdr == NULL)
-		return (0);
-	else
-		return (list_hdr->nitems);
-}
-
-void
-oce_list_remove_node(OCE_LIST_T  *list_hdr, OCE_LIST_NODE_T *list_node)
-{
-	mutex_enter(&list_hdr->list_lock);
-	oce_list_remove(list_node);
-	mutex_exit(&list_hdr->list_lock);
-}
-
-void
 oce_gen_hkey(char *hkey, int key_size)
 {
 	int i;
@@ -241,4 +89,41 @@
 	} while (atomic_cas_32(count_p, oldval, newval) != oldval);
 
 	return (newval);
+}
+
+
+/*
+ * function to insert vtag to packet
+ *
+ * mp - mblk pointer
+ * vlan_tag - tag to be inserted
+ *
+ * return none
+ */
+void
+oce_insert_vtag(mblk_t *mp, uint16_t vlan_tag)
+{
+	struct ether_vlan_header  *evh;
+	(void) memmove(mp->b_rptr - VTAG_SIZE,
+	    mp->b_rptr, 2 * ETHERADDRL);
+	mp->b_rptr -= VTAG_SIZE;
+	evh = (struct ether_vlan_header *)(void *)mp->b_rptr;
+	evh->ether_tpid = htons(VLAN_TPID);
+	evh->ether_tci = htons(vlan_tag);
+}
+
+/*
+ * function to strip  vtag from packet
+ *
+ * mp - mblk pointer
+ *
+ * return none
+ */
+
+void
+oce_remove_vtag(mblk_t *mp)
+{
+	(void) memmove(mp->b_rptr + VTAG_SIZE, mp->b_rptr,
+	    ETHERADDRL * 2);
+	mp->b_rptr += VTAG_SIZE;
 }
