From 297b60346df8beafee954a0fd7c2d64f33f3b9bc Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Sat, 11 May 2024 01:44:05 +0000
Subject: [PATCH] rtl8211F_led_control
---
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