From d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 11 Dec 2023 02:45:28 +0000
Subject: [PATCH] add boot partition  size

---
 kernel/drivers/net/wireless/rockchip_wlan/cywdhd/bcmdhd/include/linux_osl.h |  827 +++++++++++-----------------------------------------------
 1 files changed, 159 insertions(+), 668 deletions(-)

diff --git a/kernel/drivers/net/wireless/rockchip_wlan/cywdhd/bcmdhd/include/linux_osl.h b/kernel/drivers/net/wireless/rockchip_wlan/cywdhd/bcmdhd/include/linux_osl.h
index daab557..6c87ae5 100644
--- a/kernel/drivers/net/wireless/rockchip_wlan/cywdhd/bcmdhd/include/linux_osl.h
+++ b/kernel/drivers/net/wireless/rockchip_wlan/cywdhd/bcmdhd/include/linux_osl.h
@@ -1,15 +1,16 @@
-/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * Linux OS Independent Layer
  *
- * Copyright (C) 1999-2019, Broadcom Corporation
- * 
+ * Portions of this code are copyright (c) 2022 Cypress Semiconductor Corporation
+ *
+ * Copyright (C) 1999-2017, Broadcom Corporation
+ *
  *      Unless you and Broadcom execute a separate written software license
  * agreement governing use of this software, this software is licensed to you
  * under the terms of the GNU General Public License version 2 (the "GPL"),
  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
  * following added to such license:
- * 
+ *
  *      As a special exception, the copyright holders of this software give you
  * permission to link this software with independent modules, and to copy and
  * distribute the resulting executable under terms of your choice, provided that
@@ -17,7 +18,7 @@
  * the license of that module.  An independent module is a module which is not
  * derived from this software.  The special exception does not apply to any
  * modifications of the software.
- * 
+ *
  *      Notwithstanding the above, under no circumstances may you combine this
  * software in any way with any other Broadcom software provided under a license
  * other than the GPL, without Broadcom's express prior written consent.
@@ -25,7 +26,7 @@
  *
  * <<Broadcom-WL-IPTag/Open:>>
  *
- * $Id: linux_osl.h 606142 2015-12-14 14:34:29Z $
+ * $Id: linux_osl.h 692391 2017-03-28 00:29:04Z $
  */
 
 #ifndef _linux_osl_h_
@@ -33,7 +34,6 @@
 
 #include <typedefs.h>
 #define DECLSPEC_ALIGN(x)	__attribute__ ((aligned(x)))
-
 /* Linux Kernel: File Operations: start */
 extern void * osl_os_open_image(char * filename);
 extern int osl_os_get_image_block(char * buf, int len, void * image);
@@ -44,17 +44,19 @@
 #ifdef BCMDRIVER
 
 /* OSL initialization */
-#ifdef SHARED_OSL_CMN
-extern osl_t *osl_attach(void *pdev, uint bustype, bool pkttag, void **osh_cmn);
-#else
 extern osl_t *osl_attach(void *pdev, uint bustype, bool pkttag);
-#endif /* SHARED_OSL_CMN */
 
 extern void osl_detach(osl_t *osh);
 extern int osl_static_mem_init(osl_t *osh, void *adapter);
 extern int osl_static_mem_deinit(osl_t *osh, void *adapter);
 extern void osl_set_bus_handle(osl_t *osh, void *bus_handle);
 extern void* osl_get_bus_handle(osl_t *osh);
+#ifdef DHD_MAP_LOGGING
+extern void osl_dma_map_dump(osl_t *osh);
+#define OSL_DMA_MAP_DUMP(osh)	osl_dma_map_dump(osh)
+#else
+#define OSL_DMA_MAP_DUMP(osh)	do {} while (0)
+#endif /* DHD_MAP_LOGGING */
 
 /* Global ASSERT type */
 extern uint32 g_assert_type;
@@ -71,6 +73,7 @@
 #define PRI_FMT_d       "d"
 #endif /* CONFIG_PHYS_ADDR_T_64BIT */
 /* ASSERT */
+#ifndef ASSERT
 #if defined(BCMASSERT_LOG)
 	#define ASSERT(exp) \
 	  do { if (!(exp)) osl_assert(#exp, __FILE__, __LINE__); } while (0)
@@ -86,7 +89,8 @@
 			#define ASSERT(exp)
 		#endif /* GCC_VERSION > 30100 */
 	#endif /* __GNUC__ */
-#endif 
+#endif // endif
+#endif /* ASSERT */
 
 /* bcm_prefetch_32B */
 static inline void bcm_prefetch_32B(const uint8 *addr, const int cachelines_32B)
@@ -98,7 +102,7 @@
 		case 2: __asm__ __volatile__("pld\t%a0" :: "p"(addr + 32) : "cc");
 		case 1: __asm__ __volatile__("pld\t%a0" :: "p"(addr +  0) : "cc");
 	}
-#endif 
+#endif // endif
 }
 
 /* microsecond delay */
@@ -144,6 +148,8 @@
 	pktfree_cb_fn_t tx_fn;  /**< Callback function for PKTFREE */
 	void *tx_ctx;		/**< Context to the callback function */
 	void	*unused[3];
+	void (*rx_fn)(void *rx_ctx, void *p);
+	void *rx_ctx;
 } osl_pubinfo_t;
 
 extern void osl_flag_set(osl_t *osh, uint32 mask);
@@ -156,20 +162,30 @@
 	   ((osl_pubinfo_t*)osh)->tx_ctx = _tx_ctx;	\
 	} while (0)
 
+#define PKTFREESETRXCB(osh, _rx_fn, _rx_ctx)		\
+	do {						\
+	   ((osl_pubinfo_t*)osh)->rx_fn = _rx_fn;	\
+	   ((osl_pubinfo_t*)osh)->rx_ctx = _rx_ctx;	\
+	} while (0)
 
 /* host/bus architecture-specific byte swap */
 #define BUS_SWAP32(v)		(v)
 	#define MALLOC(osh, size)	osl_malloc((osh), (size))
 	#define MALLOCZ(osh, size)	osl_mallocz((osh), (size))
 	#define MFREE(osh, addr, size)	osl_mfree((osh), (addr), (size))
+	#define VMALLOC(osh, size)	osl_vmalloc((osh), (size))
+	#define VMALLOCZ(osh, size)	osl_vmallocz((osh), (size))
+	#define VMFREE(osh, addr, size)	osl_vmfree((osh), (addr), (size))
 	#define MALLOCED(osh)		osl_malloced((osh))
 	#define MEMORY_LEFTOVER(osh) osl_check_memleak(osh)
 	extern void *osl_malloc(osl_t *osh, uint size);
 	extern void *osl_mallocz(osl_t *osh, uint size);
 	extern void osl_mfree(osl_t *osh, void *addr, uint size);
+	extern void *osl_vmalloc(osl_t *osh, uint size);
+	extern void *osl_vmallocz(osl_t *osh, uint size);
+	extern void osl_vmfree(osl_t *osh, void *addr, uint size);
 	extern uint osl_malloced(osl_t *osh);
 	extern uint osl_check_memleak(osl_t *osh);
-
 
 #define	MALLOC_FAILED(osh)	osl_malloc_failed((osh))
 extern uint osl_malloc_failed(osl_t *osh);
@@ -199,9 +215,20 @@
 /* map/unmap shared (dma-able) memory */
 #define	DMA_UNMAP(osh, pa, size, direction, p, dmah) \
 	osl_dma_unmap((osh), (pa), (size), (direction))
+extern void osl_dma_flush(osl_t *osh, void *va, uint size, int direction, void *p,
+	hnddma_seg_map_t *txp_dmah);
 extern dmaaddr_t osl_dma_map(osl_t *osh, void *va, uint size, int direction, void *p,
 	hnddma_seg_map_t *txp_dmah);
-extern void osl_dma_unmap(osl_t *osh, uint pa, uint size, int direction);
+extern void osl_dma_unmap(osl_t *osh, dmaaddr_t pa, uint size, int direction);
+
+#ifndef PHYS_TO_VIRT
+#define	PHYS_TO_VIRT(pa)	osl_phys_to_virt(pa)
+#endif // endif
+#ifndef VIRT_TO_PHYS
+#define	VIRT_TO_PHYS(va)	osl_virt_to_phys(va)
+#endif // endif
+extern void * osl_phys_to_virt(void * pa);
+extern void * osl_virt_to_phys(void * va);
 
 /* API for DMA addressing capability */
 #define OSL_DMADDRWIDTH(osh, addrwidth) ({BCM_REFERENCE(osh); BCM_REFERENCE(addrwidth);})
@@ -212,15 +239,20 @@
 extern void osl_cpu_relax(void);
 #define OSL_CPU_RELAX() osl_cpu_relax()
 
+extern void osl_preempt_disable(osl_t *osh);
+extern void osl_preempt_enable(osl_t *osh);
+#define OSL_DISABLE_PREEMPTION(osh)	osl_preempt_disable(osh)
+#define OSL_ENABLE_PREEMPTION(osh)	osl_preempt_enable(osh)
+
 #if (!defined(DHD_USE_COHERENT_MEM_FOR_RING) && defined(__ARM_ARCH_7A__)) || \
-	(defined(STBLINUX) && defined(__ARM_ARCH_7A__))
+	defined(STB_SOC_WIFI)
 	extern void osl_cache_flush(void *va, uint size);
 	extern void osl_cache_inv(void *va, uint size);
 	extern void osl_prefetch(const void *ptr);
 	#define OSL_CACHE_FLUSH(va, len)	osl_cache_flush((void *)(va), len)
 	#define OSL_CACHE_INV(va, len)		osl_cache_inv((void *)(va), len)
 	#define OSL_PREFETCH(ptr)			osl_prefetch(ptr)
-#if defined(__ARM_ARCH_7A__)
+#if defined(__ARM_ARCH_7A__) || defined(STB_SOC_WIFI)
 	extern int osl_arch_is_coherent(void);
 	#define OSL_ARCH_IS_COHERENT()		osl_arch_is_coherent()
 	extern int osl_acp_war_enab(void);
@@ -236,7 +268,16 @@
 
 	#define OSL_ARCH_IS_COHERENT()		NULL
 	#define OSL_ACP_WAR_ENAB()			NULL
-#endif 
+#endif // endif
+
+#ifdef BCM_BACKPLANE_TIMEOUT
+extern void osl_set_bpt_cb(osl_t *osh, void *bpt_cb, void *bpt_ctx);
+extern void osl_bpt_rreg(osl_t *osh, ulong addr, volatile void *v, uint size);
+#endif /* BCM_BACKPLANE_TIMEOUT */
+
+#if (defined(STB) && defined(__arm__))
+extern void osl_pcie_rreg(osl_t *osh, ulong addr, volatile void *v, uint size);
+#endif // endif
 
 /* register access macros */
 #if defined(BCMSDIO)
@@ -245,21 +286,26 @@
 		(uintptr)(r), sizeof(*(r)), (v)))
 	#define OSL_READ_REG(osh, r) (bcmsdh_reg_read(osl_get_bus_handle(osh), \
 		(uintptr)(r), sizeof(*(r))))
-#elif (defined(STB) && defined(__arm__))
-extern void osl_pcie_rreg(osl_t *osh, ulong addr, void *v, uint size);
-
+#elif defined(BCM_BACKPLANE_TIMEOUT)
 #define OSL_READ_REG(osh, r) \
 	({\
 		__typeof(*(r)) __osl_v; \
-		osl_pcie_rreg(osh, (uintptr)(r), (void *)&__osl_v, sizeof(*(r))); \
+		osl_bpt_rreg(osh, (uintptr)(r), &__osl_v, sizeof(*(r))); \
 		__osl_v; \
 	})
-#endif 
+#elif (defined(STB) && defined(__arm__))
+#define OSL_READ_REG(osh, r) \
+	({\
+		__typeof(*(r)) __osl_v; \
+		osl_pcie_rreg(osh, (uintptr)(r), &__osl_v, sizeof(*(r))); \
+		__osl_v; \
+	})
+#endif // endif
 
-#if (defined(STB) && defined(__arm__))
+#if defined(BCM_BACKPLANE_TIMEOUT) || (defined(STB) && defined(__arm__))
 	#define SELECT_BUS_WRITE(osh, mmap_op, bus_op) ({BCM_REFERENCE(osh); mmap_op;})
 	#define SELECT_BUS_READ(osh, mmap_op, bus_op) ({BCM_REFERENCE(osh); bus_op;})
-#else /* !BCM47XX_CA9 */
+#else /* !BCM47XX_CA9 && !BCM_BACKPLANE_TIMEOUT && !(STB && __arm__) */
 #if defined(BCMSDIO)
 	#define SELECT_BUS_WRITE(osh, mmap_op, bus_op) if (((osl_pubinfo_t*)(osh))->mmbus) \
 		mmap_op else bus_op
@@ -268,8 +314,8 @@
 #else
 	#define SELECT_BUS_WRITE(osh, mmap_op, bus_op) ({BCM_REFERENCE(osh); mmap_op;})
 	#define SELECT_BUS_READ(osh, mmap_op, bus_op) ({BCM_REFERENCE(osh); mmap_op;})
-#endif 
-#endif 
+#endif // endif
+#endif // endif
 
 #define OSL_ERROR(bcmerror)	osl_error(bcmerror)
 extern int osl_error(int bcmerror);
@@ -286,27 +332,35 @@
 #include <linuxver.h>           /* use current 2.4.x calling conventions */
 #include <linux/kernel.h>       /* for vsn/printf's */
 #include <linux/string.h>       /* for mem*, str* */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 29)
+extern uint64 osl_sysuptime_us(void);
 #define OSL_SYSUPTIME()		((uint32)jiffies_to_msecs(jiffies))
-#else
-#define OSL_SYSUPTIME()		((uint32)jiffies * (1000 / HZ))
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 29) */
+#define OSL_SYSUPTIME_US()	osl_sysuptime_us()
+extern uint64 osl_localtime_ns(void);
+extern void osl_get_localtime(uint64 *sec, uint64 *usec);
+extern uint64 osl_systztime_us(void);
+#define OSL_LOCALTIME_NS()	osl_localtime_ns()
+#define OSL_GET_LOCALTIME(sec, usec)	osl_get_localtime((sec), (usec))
+#define OSL_SYSTZTIME_US()	osl_systztime_us()
 #define	printf(fmt, args...)	printk(fmt , ## args)
 #include <linux/kernel.h>	/* for vsn/printf's */
 #include <linux/string.h>	/* for mem*, str* */
 /* bcopy's: Linux kernel doesn't provide these (anymore) */
+#define	bcopy_hw(src, dst, len)		memcpy((dst), (src), (len))
+#define	bcopy_hw_async(src, dst, len)	memcpy((dst), (src), (len))
+#define	bcopy_hw_poll_for_completion()
 #define	bcopy(src, dst, len)	memcpy((dst), (src), (len))
 #define	bcmp(b1, b2, len)	memcmp((b1), (b2), (len))
 #define	bzero(b, len)		memset((b), '\0', (len))
 
 /* register access macros */
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 1)) && defined(CONFIG_64BIT) && \
-	defined(CONFIG_X86)
+#ifdef CONFIG_64BIT
+/* readq is defined only for 64 bit platform */
 #define R_REG(osh, r) (\
 	SELECT_BUS_READ(osh, \
 		({ \
-			__typeof(*(r)) __osl_v; \
+			__typeof(*(r)) __osl_v = 0; \
+			BCM_REFERENCE(osh);	\
 			switch (sizeof(*(r))) { \
 				case sizeof(uint8):	__osl_v = \
 					readb((volatile uint8*)(r)); break; \
@@ -315,17 +369,17 @@
 				case sizeof(uint32):	__osl_v = \
 					readl((volatile uint32*)(r)); break; \
 				case sizeof(uint64):	__osl_v = \
-					readq((volatile uint64*)(r)); break;  \
+					readq((volatile uint64*)(r)); break; \
 			} \
 			__osl_v; \
 		}), \
 		OSL_READ_REG(osh, r)) \
 )
-#else
+#else /* !CONFIG_64BIT */
 #define R_REG(osh, r) (\
 	SELECT_BUS_READ(osh, \
 		({ \
-			__typeof(*(r)) __osl_v; \
+			__typeof(*(r)) __osl_v = 0; \
 			switch (sizeof(*(r))) { \
 				case sizeof(uint8):	__osl_v = \
 					readb((volatile uint8*)(r)); break; \
@@ -338,9 +392,10 @@
 		}), \
 		OSL_READ_REG(osh, r)) \
 )
-#endif /* KERNEL_VERSION(3, 11, 1)) && defined(CONFIG_64BIT) && defined(CONFIG_X86) */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 1)) && defined(CONFIG_64BIT) && \
-	defined(CONFIG_X86)
+#endif /* CONFIG_64BIT */
+
+#ifdef CONFIG_64BIT
+/* writeq is defined only for 64 bit platform */
 #define W_REG(osh, r, v) do { \
 	SELECT_BUS_WRITE(osh, \
 		switch (sizeof(*(r))) { \
@@ -351,7 +406,8 @@
 		}, \
 		(OSL_WRITE_REG(osh, r, v))); \
 	} while (0)
-#else
+
+#else /* !CONFIG_64BIT */
 #define W_REG(osh, r, v) do { \
 	SELECT_BUS_WRITE(osh, \
 		switch (sizeof(*(r))) { \
@@ -361,7 +417,7 @@
 		}, \
 		(OSL_WRITE_REG(osh, r, v))); \
 	} while (0)
-#endif  /* KERNEL_VERSION(3, 11, 1)) && defined(CONFIG_64BIT) && defined(CONFIG_X86) */
+#endif /* CONFIG_64BIT */
 
 #define	AND_REG(osh, r, v)		W_REG(osh, (r), R_REG(osh, r) & (v))
 #define	OR_REG(osh, r, v)		W_REG(osh, (r), R_REG(osh, r) | (v))
@@ -383,14 +439,18 @@
 #define	OSL_GETCYCLES(x)	rdtscl((x))
 #else
 #define OSL_GETCYCLES(x)	((x) = 0)
-#endif 
+#endif // endif
 
 /* dereference an address that may cause a bus exception */
 #define	BUSPROBE(val, addr)	({ (val) = R_REG(NULL, (addr)); 0; })
 
 /* map/unmap physical to virtual I/O */
 #if !defined(CONFIG_MMC_MSM7X00A)
-#define	REG_MAP(pa, size)	ioremap((unsigned long)(pa), (unsigned long)(size))
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0))
+#define	REG_MAP(pa, size)	ioremap_nocache((unsigned long)(pa), (unsigned long)(size))
+#else
+#define REG_MAP(pa, size)	ioremap((unsigned long)(pa), (unsigned long)(size))
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0) */
 #else
 #define REG_MAP(pa, size)       (void *)(0)
 #endif /* !defined(CONFIG_MMC_MSM7X00A */
@@ -406,629 +466,17 @@
  */
 #include <linuxver.h>		/* use current 2.4.x calling conventions */
 
-/* packet primitives */
-#ifdef BCMDBG_CTRACE
-#define	PKTGET(osh, len, send)		osl_pktget((osh), (len), __LINE__, __FILE__)
-#define	PKTDUP(osh, skb)		osl_pktdup((osh), (skb), __LINE__, __FILE__)
-#else
-#ifdef BCM_OBJECT_TRACE
-#define	PKTGET(osh, len, send)		osl_pktget((osh), (len), __LINE__, __FUNCTION__)
-#define	PKTDUP(osh, skb)		osl_pktdup((osh), (skb), __LINE__, __FUNCTION__)
-#else
-#define	PKTGET(osh, len, send)		osl_pktget((osh), (len))
-#define	PKTDUP(osh, skb)		osl_pktdup((osh), (skb))
-#endif /* BCM_OBJECT_TRACE */
-#endif /* BCMDBG_CTRACE */
-#define PKTLIST_DUMP(osh, buf)		BCM_REFERENCE(osh)
-#define PKTDBG_TRACE(osh, pkt, bit)	BCM_REFERENCE(osh)
-#if defined(BCM_OBJECT_TRACE)
-#define	PKTFREE(osh, skb, send)		osl_pktfree((osh), (skb), (send), __LINE__, __FUNCTION__)
-#else
-#define	PKTFREE(osh, skb, send)		osl_pktfree((osh), (skb), (send))
-#endif /* BCM_OBJECT_TRACE */
-#ifdef CONFIG_DHD_USE_STATIC_BUF
-#define	PKTGET_STATIC(osh, len, send)		osl_pktget_static((osh), (len))
-#define	PKTFREE_STATIC(osh, skb, send)		osl_pktfree_static((osh), (skb), (send))
-#else
-#define	PKTGET_STATIC	PKTGET
-#define	PKTFREE_STATIC	PKTFREE
-#endif /* CONFIG_DHD_USE_STATIC_BUF */
-#define	PKTDATA(osh, skb)		({BCM_REFERENCE(osh); (((struct sk_buff*)(skb))->data);})
-#define	PKTLEN(osh, skb)		({BCM_REFERENCE(osh); (((struct sk_buff*)(skb))->len);})
-#define PKTHEADROOM(osh, skb)		(PKTDATA(osh, skb)-(((struct sk_buff*)(skb))->head))
-#define PKTEXPHEADROOM(osh, skb, b)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 skb_realloc_headroom((struct sk_buff*)(skb), (b)); \
-	 })
-#define PKTTAILROOM(osh, skb)		\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 skb_tailroom((struct sk_buff*)(skb)); \
-	 })
-#define PKTPADTAILROOM(osh, skb, padlen) \
-	({ \
-	 BCM_REFERENCE(osh); \
-	 skb_pad((struct sk_buff*)(skb), (padlen)); \
-	 })
-#define	PKTNEXT(osh, skb)		({BCM_REFERENCE(osh); (((struct sk_buff*)(skb))->next);})
-#define	PKTSETNEXT(osh, skb, x)		\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->next = (struct sk_buff*)(x)); \
-	 })
-#define	PKTSETLEN(osh, skb, len)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 __skb_trim((struct sk_buff*)(skb), (len)); \
-	 })
-#define	PKTPUSH(osh, skb, bytes)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 skb_push((struct sk_buff*)(skb), (bytes)); \
-	 })
-#define	PKTPULL(osh, skb, bytes)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 skb_pull((struct sk_buff*)(skb), (bytes)); \
-	 })
-#define	PKTTAG(skb)			((void*)(((struct sk_buff*)(skb))->cb))
-#define PKTSETPOOL(osh, skb, x, y)	BCM_REFERENCE(osh)
-#define	PKTPOOL(osh, skb)		({BCM_REFERENCE(osh); BCM_REFERENCE(skb); FALSE;})
-#define PKTFREELIST(skb)        PKTLINK(skb)
-#define PKTSETFREELIST(skb, x)  PKTSETLINK((skb), (x))
-#define PKTPTR(skb)             (skb)
-#define PKTID(skb)              ({BCM_REFERENCE(skb); 0;})
-#define PKTSETID(skb, id)       ({BCM_REFERENCE(skb); BCM_REFERENCE(id);})
-#define PKTSHRINK(osh, m)		({BCM_REFERENCE(osh); m;})
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)) && defined(TSQ_MULTIPLIER)
-#define PKTORPHAN(skb)          osl_pkt_orphan_partial(skb)
-extern void osl_pkt_orphan_partial(struct sk_buff *skb);
-#else
-#define PKTORPHAN(skb)          ({BCM_REFERENCE(skb); 0;})
-#endif /* LINUX VERSION >= 3.6 */
-
-
-#ifdef BCMDBG_CTRACE
-#define	DEL_CTRACE(zosh, zskb) { \
-	unsigned long zflags; \
-	spin_lock_irqsave(&(zosh)->ctrace_lock, zflags); \
-	list_del(&(zskb)->ctrace_list); \
-	(zosh)->ctrace_num--; \
-	(zskb)->ctrace_start = 0; \
-	(zskb)->ctrace_count = 0; \
-	spin_unlock_irqrestore(&(zosh)->ctrace_lock, zflags); \
-}
-
-#define	UPDATE_CTRACE(zskb, zfile, zline) { \
-	struct sk_buff *_zskb = (struct sk_buff *)(zskb); \
-	if (_zskb->ctrace_count < CTRACE_NUM) { \
-		_zskb->func[_zskb->ctrace_count] = zfile; \
-		_zskb->line[_zskb->ctrace_count] = zline; \
-		_zskb->ctrace_count++; \
-	} \
-	else { \
-		_zskb->func[_zskb->ctrace_start] = zfile; \
-		_zskb->line[_zskb->ctrace_start] = zline; \
-		_zskb->ctrace_start++; \
-		if (_zskb->ctrace_start >= CTRACE_NUM) \
-			_zskb->ctrace_start = 0; \
-	} \
-}
-
-#define	ADD_CTRACE(zosh, zskb, zfile, zline) { \
-	unsigned long zflags; \
-	spin_lock_irqsave(&(zosh)->ctrace_lock, zflags); \
-	list_add(&(zskb)->ctrace_list, &(zosh)->ctrace_list); \
-	(zosh)->ctrace_num++; \
-	UPDATE_CTRACE(zskb, zfile, zline); \
-	spin_unlock_irqrestore(&(zosh)->ctrace_lock, zflags); \
-}
-
-#define PKTCALLER(zskb)	UPDATE_CTRACE((struct sk_buff *)zskb, (char *)__FUNCTION__, __LINE__)
-#endif /* BCMDBG_CTRACE */
-
-#ifdef CTFPOOL
-#define	CTFPOOL_REFILL_THRESH	3
-typedef struct ctfpool {
-	void		*head;
-	spinlock_t	lock;
-	osl_t		*osh;
-	uint		max_obj;
-	uint		curr_obj;
-	uint		obj_size;
-	uint		refills;
-	uint		fast_allocs;
-	uint 		fast_frees;
-	uint 		slow_allocs;
-} ctfpool_t;
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36)
-#define	FASTBUF	(1 << 0)
-#define	PKTSETFAST(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 ((((struct sk_buff*)(skb))->pktc_flags) |= FASTBUF); \
-	 })
-#define	PKTCLRFAST(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 ((((struct sk_buff*)(skb))->pktc_flags) &= (~FASTBUF)); \
-	 })
-#define	PKTISFAST(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 ((((struct sk_buff*)(skb))->pktc_flags) & FASTBUF); \
-	 })
-#define	PKTFAST(osh, skb)	(((struct sk_buff*)(skb))->pktc_flags)
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
-#define	FASTBUF	(1 << 16)
-#define	PKTSETFAST(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 ((((struct sk_buff*)(skb))->mac_len) |= FASTBUF); \
-	 })
-#define	PKTCLRFAST(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 ((((struct sk_buff*)(skb))->mac_len) &= (~FASTBUF)); \
-	 })
-#define	PKTISFAST(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 ((((struct sk_buff*)(skb))->mac_len) & FASTBUF); \
-	 })
-#define	PKTFAST(osh, skb)	(((struct sk_buff*)(skb))->mac_len)
-#else
-#define	FASTBUF	(1 << 0)
-#define	PKTSETFAST(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 ((((struct sk_buff*)(skb))->__unused) |= FASTBUF); \
-	 })
-#define	PKTCLRFAST(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 ((((struct sk_buff*)(skb))->__unused) &= (~FASTBUF)); \
-	 })
-#define	PKTISFAST(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 ((((struct sk_buff*)(skb))->__unused) & FASTBUF); \
-	 })
-#define	PKTFAST(osh, skb)	(((struct sk_buff*)(skb))->__unused)
-#endif /* 2.6.22 */
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
-#define	CTFPOOLPTR(osh, skb)	(((struct sk_buff*)(skb))->ctfpool)
-#define	CTFPOOLHEAD(osh, skb)	(((ctfpool_t *)((struct sk_buff*)(skb))->ctfpool)->head)
-#else
-#define	CTFPOOLPTR(osh, skb)	(((struct sk_buff*)(skb))->sk)
-#define	CTFPOOLHEAD(osh, skb)	(((ctfpool_t *)((struct sk_buff*)(skb))->sk)->head)
-#endif
-
-extern void *osl_ctfpool_add(osl_t *osh);
-extern void osl_ctfpool_replenish(osl_t *osh, uint thresh);
-extern int32 osl_ctfpool_init(osl_t *osh, uint numobj, uint size);
-extern void osl_ctfpool_cleanup(osl_t *osh);
-extern void osl_ctfpool_stats(osl_t *osh, void *b);
-#else /* CTFPOOL */
-#define	PKTSETFAST(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb);})
-#define	PKTCLRFAST(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb);})
-#define	PKTISFAST(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb); FALSE;})
-#endif /* CTFPOOL */
-
-#define	PKTSETCTF(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb);})
-#define	PKTCLRCTF(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb);})
-#define	PKTISCTF(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb); FALSE;})
-
-#ifdef HNDCTF
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36)
-#define	SKIPCT	(1 << 2)
-#define	CHAINED	(1 << 3)
-#define	PKTSETSKIPCT(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->pktc_flags |= SKIPCT); \
-	 })
-#define	PKTCLRSKIPCT(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->pktc_flags &= (~SKIPCT)); \
-	 })
-#define	PKTSKIPCT(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->pktc_flags & SKIPCT); \
-	 })
-#define	PKTSETCHAINED(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->pktc_flags |= CHAINED); \
-	 })
-#define	PKTCLRCHAINED(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->pktc_flags &= (~CHAINED)); \
-	 })
-#define	PKTISCHAINED(skb)	(((struct sk_buff*)(skb))->pktc_flags & CHAINED)
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
-#define	SKIPCT	(1 << 18)
-#define	CHAINED	(1 << 19)
-#define	PKTSETSKIPCT(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->mac_len |= SKIPCT); \
-	 })
-#define	PKTCLRSKIPCT(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->mac_len &= (~SKIPCT)); \
-	 })
-#define	PKTSKIPCT(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->mac_len & SKIPCT); \
-	 })
-#define	PKTSETCHAINED(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->mac_len |= CHAINED); \
-	 })
-#define	PKTCLRCHAINED(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->mac_len &= (~CHAINED)); \
-	 })
-#define	PKTISCHAINED(skb)	(((struct sk_buff*)(skb))->mac_len & CHAINED)
-#else /* 2.6.22 */
-#define	SKIPCT	(1 << 2)
-#define	CHAINED	(1 << 3)
-#define	PKTSETSKIPCT(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->__unused |= SKIPCT); \
-	 })
-#define	PKTCLRSKIPCT(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->__unused &= (~SKIPCT)); \
-	 })
-#define	PKTSKIPCT(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->__unused & SKIPCT); \
-	 })
-#define	PKTSETCHAINED(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->__unused |= CHAINED); \
-	 })
-#define	PKTCLRCHAINED(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->__unused &= (~CHAINED)); \
-	 })
-#define	PKTISCHAINED(skb)	(((struct sk_buff*)(skb))->__unused & CHAINED)
-#endif /* 2.6.22 */
-typedef struct ctf_mark {
-	uint32	value;
-}	ctf_mark_t;
-#define CTF_MARK(m)				(m.value)
-#else /* HNDCTF */
-#define	PKTSETSKIPCT(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb);})
-#define	PKTCLRSKIPCT(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb);})
-#define	PKTSKIPCT(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb);})
-#define CTF_MARK(m)		({BCM_REFERENCE(m); 0;})
-#endif /* HNDCTF */
-
-#if defined(BCM_GMAC3)
-
-/** pktalloced accounting in devices using GMAC Bulk Forwarding to DHD */
-
-/* Account for packets delivered to downstream forwarder by GMAC interface. */
-extern void osl_pkt_tofwder(osl_t *osh, void *skbs, int skb_cnt);
-#define PKTTOFWDER(osh, skbs, skb_cnt)  \
-	osl_pkt_tofwder(((osl_t *)osh), (void *)(skbs), (skb_cnt))
-
-/* Account for packets received from downstream forwarder. */
-#if defined(BCMDBG_CTRACE) /* pkt logging */
-extern void osl_pkt_frmfwder(osl_t *osh, void *skbs, int skb_cnt,
-                             int line, char *file);
-#define PKTFRMFWDER(osh, skbs, skb_cnt) \
-	osl_pkt_frmfwder(((osl_t *)osh), (void *)(skbs), (skb_cnt), \
-	                 __LINE__, __FILE__)
-#else  /* ! (BCMDBG_PKT || BCMDBG_CTRACE) */
-extern void osl_pkt_frmfwder(osl_t *osh, void *skbs, int skb_cnt);
-#define PKTFRMFWDER(osh, skbs, skb_cnt) \
-	osl_pkt_frmfwder(((osl_t *)osh), (void *)(skbs), (skb_cnt))
-#endif 
-
-
-/** GMAC Forwarded packet tagging for reduced cache flush/invalidate.
- * In FWDERBUF tagged packet, only FWDER_PKTMAPSZ amount of data would have
- * been accessed in the GMAC forwarder. This may be used to limit the number of
- * cachelines that need to be flushed or invalidated.
- * Packets sent to the DHD from a GMAC forwarder will be tagged w/ FWDERBUF.
- * DHD may clear the FWDERBUF tag, if more than FWDER_PKTMAPSZ was accessed.
- * Likewise, a debug print of a packet payload in say the ethernet driver needs
- * to be accompanied with a clear of the FWDERBUF tag.
- */
-
-/** Forwarded packets, have a GMAC_FWDER_HWRXOFF sized rx header (etc.h) */
-#define FWDER_HWRXOFF       (18)
-
-/** Maximum amount of a pkt data that a downstream forwarder (GMAC) may have
- * read into the L1 cache (not dirty). This may be used in reduced cache ops.
- *
- * Max 56: ET HWRXOFF[30] + BRCMHdr[4] + EtherHdr[14] + VlanHdr[4] + IP[4]
- * Min 32: GMAC_FWDER_HWRXOFF[18] + EtherHdr[14]
- */
-#define FWDER_MINMAPSZ      (FWDER_HWRXOFF + 14)
-#define FWDER_MAXMAPSZ      (FWDER_HWRXOFF + 4 + 14 + 4 + 4)
-#define FWDER_PKTMAPSZ      (FWDER_MINMAPSZ)
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36)
-
-#define FWDERBUF            (1 << 4)
-#define PKTSETFWDERBUF(osh, skb) \
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->pktc_flags |= FWDERBUF); \
-	 })
-#define PKTCLRFWDERBUF(osh, skb) \
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->pktc_flags &= (~FWDERBUF)); \
-	 })
-#define PKTISFWDERBUF(osh, skb) \
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->pktc_flags & FWDERBUF); \
-	 })
-
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
-
-#define FWDERBUF	        (1 << 20)
-#define PKTSETFWDERBUF(osh, skb) \
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->mac_len |= FWDERBUF); \
-	 })
-#define PKTCLRFWDERBUF(osh, skb)  \
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->mac_len &= (~FWDERBUF)); \
-	 })
-#define PKTISFWDERBUF(osh, skb) \
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->mac_len & FWDERBUF); \
-	 })
-
-#else /* 2.6.22 */
-
-#define FWDERBUF            (1 << 4)
-#define PKTSETFWDERBUF(osh, skb)  \
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->__unused |= FWDERBUF); \
-	 })
-#define PKTCLRFWDERBUF(osh, skb)  \
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->__unused &= (~FWDERBUF)); \
-	 })
-#define PKTISFWDERBUF(osh, skb) \
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->__unused & FWDERBUF); \
-	 })
-
-#endif /* 2.6.22 */
-
-#else  /* ! BCM_GMAC3 */
-
-#define PKTSETFWDERBUF(osh, skb)  ({ BCM_REFERENCE(osh); BCM_REFERENCE(skb); })
-#define PKTCLRFWDERBUF(osh, skb)  ({ BCM_REFERENCE(osh); BCM_REFERENCE(skb); })
-#define PKTISFWDERBUF(osh, skb)   ({ BCM_REFERENCE(osh); BCM_REFERENCE(skb); FALSE;})
-
-#endif /* ! BCM_GMAC3 */
-
-
-#ifdef HNDCTF
-/* For broadstream iqos */
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36)
-#define	TOBR		(1 << 5)
-#define	PKTSETTOBR(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->pktc_flags |= TOBR); \
-	 })
-#define	PKTCLRTOBR(osh, skb)	\
-	({ \
-	 BCM_REFERENCE(osh); \
-	 (((struct sk_buff*)(skb))->pktc_flags &= (~TOBR)); \
-	 })
-#define	PKTISTOBR(skb)	(((struct sk_buff*)(skb))->pktc_flags & TOBR)
-#define	PKTSETCTFIPCTXIF(skb, ifp)	(((struct sk_buff*)(skb))->ctf_ipc_txif = ifp)
-#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
-#define	PKTSETTOBR(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb);})
-#define	PKTCLRTOBR(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb);})
-#define	PKTISTOBR(skb)	({BCM_REFERENCE(skb); FALSE;})
-#define	PKTSETCTFIPCTXIF(skb, ifp)	({BCM_REFERENCE(skb); BCM_REFERENCE(ifp);})
-#else /* 2.6.22 */
-#define	PKTSETTOBR(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb);})
-#define	PKTCLRTOBR(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb);})
-#define	PKTISTOBR(skb)	({BCM_REFERENCE(skb); FALSE;})
-#define	PKTSETCTFIPCTXIF(skb, ifp)	({BCM_REFERENCE(skb); BCM_REFERENCE(ifp);})
-#endif /* 2.6.22 */
-#else /* HNDCTF */
-#define	PKTSETTOBR(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb);})
-#define	PKTCLRTOBR(osh, skb)	({BCM_REFERENCE(osh); BCM_REFERENCE(skb);})
-#define	PKTISTOBR(skb)	({BCM_REFERENCE(skb); FALSE;})
-#endif /* HNDCTF */
-
-
-#ifdef BCMFA
-#ifdef BCMFA_HW_HASH
-#define PKTSETFAHIDX(skb, idx)	(((struct sk_buff*)(skb))->napt_idx = idx)
-#else
-#define PKTSETFAHIDX(skb, idx)	({BCM_REFERENCE(skb); BCM_REFERENCE(idx);})
-#endif /* BCMFA_SW_HASH */
-#define PKTGETFAHIDX(skb)	(((struct sk_buff*)(skb))->napt_idx)
-#define PKTSETFADEV(skb, imp)	(((struct sk_buff*)(skb))->dev = imp)
-#define PKTSETRXDEV(skb)	(((struct sk_buff*)(skb))->rxdev = ((struct sk_buff*)(skb))->dev)
-
-#define	AUX_TCP_FIN_RST	(1 << 0)
-#define	AUX_FREED	(1 << 1)
-#define PKTSETFAAUX(skb)	(((struct sk_buff*)(skb))->napt_flags |= AUX_TCP_FIN_RST)
-#define	PKTCLRFAAUX(skb)	(((struct sk_buff*)(skb))->napt_flags &= (~AUX_TCP_FIN_RST))
-#define	PKTISFAAUX(skb)		(((struct sk_buff*)(skb))->napt_flags & AUX_TCP_FIN_RST)
-#define PKTSETFAFREED(skb)	(((struct sk_buff*)(skb))->napt_flags |= AUX_FREED)
-#define	PKTCLRFAFREED(skb)	(((struct sk_buff*)(skb))->napt_flags &= (~AUX_FREED))
-#define	PKTISFAFREED(skb)	(((struct sk_buff*)(skb))->napt_flags & AUX_FREED)
-#define	PKTISFABRIDGED(skb)	PKTISFAAUX(skb)
-#else
-#define	PKTISFAAUX(skb)		({BCM_REFERENCE(skb); FALSE;})
-#define	PKTISFABRIDGED(skb)	({BCM_REFERENCE(skb); FALSE;})
-#define	PKTISFAFREED(skb)	({BCM_REFERENCE(skb); FALSE;})
-
-#define	PKTCLRFAAUX(skb)	BCM_REFERENCE(skb)
-#define PKTSETFAFREED(skb)	BCM_REFERENCE(skb)
-#define	PKTCLRFAFREED(skb)	BCM_REFERENCE(skb)
-#endif /* BCMFA */
-
-#if defined(BCM_OBJECT_TRACE)
-extern void osl_pktfree(osl_t *osh, void *skb, bool send, int line, const char *caller);
-#else
-extern void osl_pktfree(osl_t *osh, void *skb, bool send);
-#endif /* BCM_OBJECT_TRACE */
-extern void *osl_pktget_static(osl_t *osh, uint len);
-extern void osl_pktfree_static(osl_t *osh, void *skb, bool send);
-extern void osl_pktclone(osl_t *osh, void **pkt);
-
-#ifdef BCMDBG_CTRACE
-#define PKT_CTRACE_DUMP(osh, b)	osl_ctrace_dump((osh), (b))
-extern void *osl_pktget(osl_t *osh, uint len, int line, char *file);
-extern void *osl_pkt_frmnative(osl_t *osh, void *skb, int line, char *file);
-extern int osl_pkt_is_frmnative(osl_t *osh, struct sk_buff *pkt);
-extern void *osl_pktdup(osl_t *osh, void *skb, int line, char *file);
-struct bcmstrbuf;
-extern void osl_ctrace_dump(osl_t *osh, struct bcmstrbuf *b);
-#else
-#ifdef BCM_OBJECT_TRACE
-extern void *osl_pktget(osl_t *osh, uint len, int line, const char *caller);
-extern void *osl_pktdup(osl_t *osh, void *skb, int line, const char *caller);
-#else
-extern void *osl_pktget(osl_t *osh, uint len);
-extern void *osl_pktdup(osl_t *osh, void *skb);
-#endif /* BCM_OBJECT_TRACE */
-extern void *osl_pkt_frmnative(osl_t *osh, void *skb);
-#endif /* BCMDBG_CTRACE */
-extern struct sk_buff *osl_pkt_tonative(osl_t *osh, void *pkt);
-#ifdef BCMDBG_CTRACE
-#define PKTFRMNATIVE(osh, skb)  osl_pkt_frmnative(((osl_t *)osh), \
-				(struct sk_buff*)(skb), __LINE__, __FILE__)
-#define	PKTISFRMNATIVE(osh, skb) osl_pkt_is_frmnative((osl_t *)(osh), (struct sk_buff *)(skb))
-#else
-#define PKTFRMNATIVE(osh, skb)	osl_pkt_frmnative(((osl_t *)osh), (struct sk_buff*)(skb))
-#endif /* BCMDBG_CTRACE */
-#define PKTTONATIVE(osh, pkt)		osl_pkt_tonative((osl_t *)(osh), (pkt))
-
-#define	PKTLINK(skb)			(((struct sk_buff*)(skb))->prev)
-#define	PKTSETLINK(skb, x)		(((struct sk_buff*)(skb))->prev = (struct sk_buff*)(x))
-#define	PKTPRIO(skb)			(((struct sk_buff*)(skb))->priority)
-#define	PKTSETPRIO(skb, x)		(((struct sk_buff*)(skb))->priority = (x))
-#define PKTSUMNEEDED(skb)		(((struct sk_buff*)(skb))->ip_summed == CHECKSUM_HW)
-#define PKTSETSUMGOOD(skb, x)		(((struct sk_buff*)(skb))->ip_summed = \
-						((x) ? CHECKSUM_UNNECESSARY : CHECKSUM_NONE))
-/* PKTSETSUMNEEDED and PKTSUMGOOD are not possible because skb->ip_summed is overloaded */
-#define PKTSHARED(skb)                  (((struct sk_buff*)(skb))->cloned)
-
-#ifdef CONFIG_NF_CONNTRACK_MARK
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0))
-#define PKTMARK(p)                     (((struct sk_buff *)(p))->mark)
-#define PKTSETMARK(p, m)               ((struct sk_buff *)(p))->mark = (m)
-#else /* !2.6.0 */
-#define PKTMARK(p)                     (((struct sk_buff *)(p))->nfmark)
-#define PKTSETMARK(p, m)               ((struct sk_buff *)(p))->nfmark = (m)
-#endif /* 2.6.0 */
-#else /* CONFIG_NF_CONNTRACK_MARK */
-#define PKTMARK(p)                     0
-#define PKTSETMARK(p, m)
-#endif /* CONFIG_NF_CONNTRACK_MARK */
-
-#define PKTALLOCED(osh)		osl_pktalloced(osh)
-extern uint osl_pktalloced(osl_t *osh);
-
 #define OSL_RAND()		osl_rand()
 extern uint32 osl_rand(void);
 
+#define	DMA_FLUSH(osh, va, size, direction, p, dmah) \
+	osl_dma_flush((osh), (va), (size), (direction), (p), (dmah))
 #if !defined(BCM_SECURE_DMA)
 #define	DMA_MAP(osh, va, size, direction, p, dmah) \
 	osl_dma_map((osh), (va), (size), (direction), (p), (dmah))
 #endif /* !(defined(BCM_SECURE_DMA)) */
 
-#ifdef PKTC
-/* Use 8 bytes of skb tstamp field to store below info */
-struct chain_node {
-	struct sk_buff	*link;
-	unsigned int	flags:3, pkts:9, bytes:20;
-};
-
-#define CHAIN_NODE(skb)		((struct chain_node*)(((struct sk_buff*)skb)->pktc_cb))
-
-#define	PKTCSETATTR(s, f, p, b)	({CHAIN_NODE(s)->flags = (f); CHAIN_NODE(s)->pkts = (p); \
-	                         CHAIN_NODE(s)->bytes = (b);})
-#define	PKTCCLRATTR(s)		({CHAIN_NODE(s)->flags = CHAIN_NODE(s)->pkts = \
-	                         CHAIN_NODE(s)->bytes = 0;})
-#define	PKTCGETATTR(s)		(CHAIN_NODE(s)->flags << 29 | CHAIN_NODE(s)->pkts << 20 | \
-	                         CHAIN_NODE(s)->bytes)
-#define	PKTCCNT(skb)		(CHAIN_NODE(skb)->pkts)
-#define	PKTCLEN(skb)		(CHAIN_NODE(skb)->bytes)
-#define	PKTCGETFLAGS(skb)	(CHAIN_NODE(skb)->flags)
-#define	PKTCSETFLAGS(skb, f)	(CHAIN_NODE(skb)->flags = (f))
-#define	PKTCCLRFLAGS(skb)	(CHAIN_NODE(skb)->flags = 0)
-#define	PKTCFLAGS(skb)		(CHAIN_NODE(skb)->flags)
-#define	PKTCSETCNT(skb, c)	(CHAIN_NODE(skb)->pkts = (c))
-#define	PKTCINCRCNT(skb)	(CHAIN_NODE(skb)->pkts++)
-#define	PKTCADDCNT(skb, c)	(CHAIN_NODE(skb)->pkts += (c))
-#define	PKTCSETLEN(skb, l)	(CHAIN_NODE(skb)->bytes = (l))
-#define	PKTCADDLEN(skb, l)	(CHAIN_NODE(skb)->bytes += (l))
-#define	PKTCSETFLAG(skb, fb)	(CHAIN_NODE(skb)->flags |= (fb))
-#define	PKTCCLRFLAG(skb, fb)	(CHAIN_NODE(skb)->flags &= ~(fb))
-#define	PKTCLINK(skb)		(CHAIN_NODE(skb)->link)
-#define	PKTSETCLINK(skb, x)	(CHAIN_NODE(skb)->link = (struct sk_buff*)(x))
-#define FOREACH_CHAINED_PKT(skb, nskb) \
-	for (; (skb) != NULL; (skb) = (nskb)) \
-		if ((nskb) = (PKTISCHAINED(skb) ? PKTCLINK(skb) : NULL), \
-		    PKTSETCLINK((skb), NULL), 1)
-#define	PKTCFREE(osh, skb, send) \
-do { \
-	void *nskb; \
-	ASSERT((skb) != NULL); \
-	FOREACH_CHAINED_PKT((skb), nskb) { \
-		PKTCLRCHAINED((osh), (skb)); \
-		PKTCCLRFLAGS((skb)); \
-		PKTFREE((osh), (skb), (send)); \
-	} \
-} while (0)
-#define PKTCENQTAIL(h, t, p) \
-do { \
-	if ((t) == NULL) { \
-		(h) = (t) = (p); \
-	} else { \
-		PKTSETCLINK((t), (p)); \
-		(t) = (p); \
-	} \
-} while (0)
-#endif /* PKTC */
-
 #else /* ! BCMDRIVER */
-
 
 /* ASSERT */
 	#define ASSERT(exp)	do {} while (0)
@@ -1050,20 +498,10 @@
 extern void bzero(void *b, size_t len);
 #endif /* ! BCMDRIVER */
 
-
 /* Current STB 7445D1 doesn't use ACP and it is non-coherrent.
  * Adding these dummy values for build apss only
  * When we revisit need to change these.
  */
-#if defined(STBLINUX)
-
-#if defined(__ARM_ARCH_7A__)
-#define ACP_WAR_ENAB() 0
-#define ACP_WIN_LIMIT 1
-#define arch_is_coherent() 0
-#endif /* __ARM_ARCH_7A__ */
-
-#endif /* STBLINUX */
 
 #ifdef BCM_SECURE_DMA
 
@@ -1096,6 +534,9 @@
 #define CMA_DMA_DESC_MEMBLOCK	(SEC_CMA_COHERENT_BLK * SEC_CMA_COHERENT_MAX)
 #define CMA_DMA_DATA_MEMBLOCK	(CMA_BUFSIZE_4K*CMA_BUFNUM)
 #define	CMA_MEMBLOCK		(CMA_DMA_DESC_MEMBLOCK + CMA_DMA_DATA_MEMBLOCK)
+#define CONT_REGION	0x02		/* Region CMA */
+#else
+#define CONT_REGION	0x00		/* To access the MIPs mem, Not yet... */
 #endif /* !defined __ARM_ARCH_7A__ */
 
 #define SEC_DMA_ALIGN	(1<<16)
@@ -1129,4 +570,54 @@
 #define PKTLIST_UNLINK(x, y)	skb_unlink((struct sk_buff *)(y), (struct sk_buff_head *)(x))
 #define PKTLIST_FINI(x)		skb_queue_purge((struct sk_buff_head *)(x))
 
+#ifndef _linuxver_h_
+typedef struct timer_list_compat timer_list_compat_t;
+#endif /* _linuxver_h_ */
+typedef struct osl_timer {
+	timer_list_compat_t *timer;
+	bool   set;
+} osl_timer_t;
+
+typedef void (*linux_timer_fn)(ulong arg);
+
+extern osl_timer_t * osl_timer_init(osl_t *osh, const char *name, void (*fn)(void *arg), void *arg);
+extern void osl_timer_add(osl_t *osh, osl_timer_t *t, uint32 ms, bool periodic);
+extern void osl_timer_update(osl_t *osh, osl_timer_t *t, uint32 ms, bool periodic);
+extern bool osl_timer_del(osl_t *osh, osl_timer_t *t);
+
+typedef atomic_t osl_atomic_t;
+#define OSL_ATOMIC_SET(osh, v, x)	atomic_set(v, x)
+#define OSL_ATOMIC_INIT(osh, v)		atomic_set(v, 0)
+#define OSL_ATOMIC_INC(osh, v)		atomic_inc(v)
+#define OSL_ATOMIC_INC_RETURN(osh, v)	atomic_inc_return(v)
+#define OSL_ATOMIC_DEC(osh, v)		atomic_dec(v)
+#define OSL_ATOMIC_DEC_RETURN(osh, v)	atomic_dec_return(v)
+#define OSL_ATOMIC_READ(osh, v)		atomic_read(v)
+#define OSL_ATOMIC_ADD(osh, v, x)	atomic_add(v, x)
+
+#ifndef atomic_set_mask
+#define OSL_ATOMIC_OR(osh, v, x)	atomic_or(x, v)
+#define OSL_ATOMIC_AND(osh, v, x)	atomic_and(x, v)
+#else
+#define OSL_ATOMIC_OR(osh, v, x)	atomic_set_mask(x, v)
+#define OSL_ATOMIC_AND(osh, v, x)	atomic_clear_mask(~x, v)
+#endif // endif
+
+#include <linux/rbtree.h>
+
+typedef struct rb_node osl_rb_node_t;
+typedef struct rb_root osl_rb_root_t;
+
+#define OSL_RB_ENTRY(ptr, type, member)		rb_entry(ptr, type, member)
+#define OSL_RB_INSERT_COLOR(root, node)		rb_insert_color(root, node)
+#define OSL_RB_ERASE(node, root)		rb_erase(node, root)
+#define OSL_RB_FIRST(root)			rb_first(root)
+#define OSL_RB_LAST(root)			rb_last(root)
+#define OSL_RB_LINK_NODE(node, parent, rb_link) \
+	rb_link_node(node, parent, rb_link)
+
+extern void *osl_spin_lock_init(osl_t *osh);
+extern void osl_spin_lock_deinit(osl_t *osh, void *lock);
+extern unsigned long osl_spin_lock(void *lock);
+extern void osl_spin_unlock(void *lock, unsigned long flags);
 #endif	/* _linux_osl_h_ */

--
Gitblit v1.6.2