Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (c) 2010 Broadcom Corporation |
| 3 | * |
| 4 | * Permission to use, copy, modify, and/or distribute this software for any |
| 5 | * purpose with or without fee is hereby granted, provided that the above |
| 6 | * copyright notice and this permission notice appear in all copies. |
| 7 | * |
| 8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| 9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| 10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
| 11 | * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| 12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION |
| 13 | * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN |
| 14 | * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| 15 | */ |
| 16 | |
| 17 | #ifndef _linux_osl_h_ |
| 18 | #define _linux_osl_h_ |
| 19 | |
Arend van Spriel | 3be727c | 2010-11-23 22:20:30 +0100 | [diff] [blame] | 20 | #include <linux/skbuff.h> |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 21 | |
Brett Rudley | e69284f | 2010-11-16 15:45:48 -0800 | [diff] [blame] | 22 | extern struct osl_info *osl_attach(void *pdev, uint bustype); |
| 23 | extern void osl_detach(struct osl_info *osh); |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 24 | |
Greg Kroah-Hartman | 66cbd3a | 2010-10-08 11:05:47 -0700 | [diff] [blame] | 25 | extern u32 g_assert_type; |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 26 | |
| 27 | #if defined(BCMDBG_ASSERT) |
| 28 | #define ASSERT(exp) \ |
| 29 | do { if (!(exp)) osl_assert(#exp, __FILE__, __LINE__); } while (0) |
| 30 | extern void osl_assert(char *exp, char *file, int line); |
| 31 | #else |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 32 | #define ASSERT(exp) do {} while (0) |
Brett Rudley | c53d201 | 2010-11-30 15:22:15 -0800 | [diff] [blame] | 33 | #endif /* defined(BCMDBG_ASSERT) */ |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 34 | |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 35 | /* PCI device bus # and slot # */ |
| 36 | #define OSL_PCI_BUS(osh) osl_pci_bus(osh) |
| 37 | #define OSL_PCI_SLOT(osh) osl_pci_slot(osh) |
Brett Rudley | e69284f | 2010-11-16 15:45:48 -0800 | [diff] [blame] | 38 | extern uint osl_pci_bus(struct osl_info *osh); |
| 39 | extern uint osl_pci_slot(struct osl_info *osh); |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 40 | |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 41 | #define BUS_SWAP32(v) (v) |
| 42 | |
Brett Rudley | e69284f | 2010-11-16 15:45:48 -0800 | [diff] [blame] | 43 | extern void *osl_dma_alloc_consistent(struct osl_info *osh, uint size, |
| 44 | u16 align, uint *tot, unsigned long *pap); |
Brett Rudley | 40e5c96 | 2010-10-08 13:57:13 -0700 | [diff] [blame] | 45 | |
| 46 | #ifdef BRCM_FULLMAC |
| 47 | #define DMA_ALLOC_CONSISTENT(osh, size, pap, dmah, alignbits) \ |
| 48 | osl_dma_alloc_consistent((osh), (size), (0), (tot), (pap)) |
| 49 | #else |
| 50 | #define DMA_ALLOC_CONSISTENT(osh, size, align, tot, pap, dmah) \ |
| 51 | osl_dma_alloc_consistent((osh), (size), (align), (tot), (pap)) |
| 52 | #endif /* BRCM_FULLMAC */ |
| 53 | |
Henry Ptasinski | cf2b448 | 2010-09-20 22:33:12 -0700 | [diff] [blame] | 54 | #define DMA_FREE_CONSISTENT(osh, va, size, pa, dmah) \ |
| 55 | osl_dma_free_consistent((osh), (void *)(va), (size), (pa)) |
Brett Rudley | e69284f | 2010-11-16 15:45:48 -0800 | [diff] [blame] | 56 | extern void osl_dma_free_consistent(struct osl_info *osh, void *va, |
| 57 | uint size, unsigned long pa); |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 58 | |
| 59 | /* map/unmap direction */ |
| 60 | #define DMA_TX 1 /* TX direction for DMA */ |
| 61 | #define DMA_RX 2 /* RX direction for DMA */ |
| 62 | |
| 63 | /* map/unmap shared (dma-able) memory */ |
| 64 | #define DMA_MAP(osh, va, size, direction, p, dmah) \ |
| 65 | osl_dma_map((osh), (va), (size), (direction)) |
| 66 | #define DMA_UNMAP(osh, pa, size, direction, p, dmah) \ |
| 67 | osl_dma_unmap((osh), (pa), (size), (direction)) |
Brett Rudley | e69284f | 2010-11-16 15:45:48 -0800 | [diff] [blame] | 68 | extern uint osl_dma_map(struct osl_info *osh, void *va, uint size, |
| 69 | int direction); |
| 70 | extern void osl_dma_unmap(struct osl_info *osh, uint pa, uint size, |
| 71 | int direction); |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 72 | |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 73 | /* register access macros */ |
| 74 | #if defined(BCMSDIO) |
Brett Rudley | 3327989 | 2010-10-01 18:03:27 -0700 | [diff] [blame] | 75 | #ifdef BRCM_FULLMAC |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 76 | #include <bcmsdh.h> |
Brett Rudley | 3327989 | 2010-10-01 18:03:27 -0700 | [diff] [blame] | 77 | #endif |
Greg Kroah-Hartman | f024c48 | 2010-10-21 10:50:21 -0700 | [diff] [blame] | 78 | #define OSL_WRITE_REG(osh, r, v) (bcmsdh_reg_write(NULL, (unsigned long)(r), sizeof(*(r)), (v))) |
| 79 | #define OSL_READ_REG(osh, r) (bcmsdh_reg_read(NULL, (unsigned long)(r), sizeof(*(r)))) |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 80 | #endif |
| 81 | |
| 82 | #if defined(BCMSDIO) |
Brett Rudley | e6a12a0 | 2010-11-16 13:16:59 -0800 | [diff] [blame] | 83 | #define SELECT_BUS_WRITE(osh, mmap_op, bus_op) \ |
| 84 | if (((struct osl_pubinfo *)(osh))->mmbus) \ |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 85 | mmap_op else bus_op |
Brett Rudley | e6a12a0 | 2010-11-16 13:16:59 -0800 | [diff] [blame] | 86 | #define SELECT_BUS_READ(osh, mmap_op, bus_op) \ |
| 87 | (((struct osl_pubinfo *)(osh))->mmbus) ? mmap_op : bus_op |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 88 | #else |
| 89 | #define SELECT_BUS_WRITE(osh, mmap_op, bus_op) mmap_op |
| 90 | #define SELECT_BUS_READ(osh, mmap_op, bus_op) mmap_op |
| 91 | #endif |
| 92 | |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 93 | /* the largest reasonable packet buffer driver uses for ethernet MTU in bytes */ |
| 94 | #define PKTBUFSZ 2048 /* largest reasonable packet buffer, driver uses for ethernet MTU */ |
| 95 | |
Greg Kroah-Hartman | 66cbd3a | 2010-10-08 11:05:47 -0700 | [diff] [blame] | 96 | #define OSL_SYSUPTIME() ((u32)jiffies * (1000 / HZ)) |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 97 | #define printf(fmt, args...) printk(fmt , ## args) |
Brett Rudley | 3327989 | 2010-10-01 18:03:27 -0700 | [diff] [blame] | 98 | #ifdef BRCM_FULLMAC |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 99 | #include <linux/kernel.h> /* for vsn/printf's */ |
| 100 | #include <linux/string.h> /* for mem*, str* */ |
Brett Rudley | 3327989 | 2010-10-01 18:03:27 -0700 | [diff] [blame] | 101 | #endif |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 102 | /* bcopy's: Linux kernel doesn't provide these (anymore) */ |
| 103 | #define bcopy(src, dst, len) memcpy((dst), (src), (len)) |
| 104 | #define bcmp(b1, b2, len) memcmp((b1), (b2), (len)) |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 105 | |
| 106 | /* register access macros */ |
| 107 | #if defined(OSLREGOPS) |
| 108 | #else |
| 109 | #ifndef IL_BIGENDIAN |
| 110 | #ifndef __mips__ |
| 111 | #define R_REG(osh, r) (\ |
Greg Kroah-Hartman | de9bca6 | 2010-10-05 10:23:40 -0700 | [diff] [blame] | 112 | SELECT_BUS_READ(osh, sizeof(*(r)) == sizeof(u8) ? readb((volatile u8*)(r)) : \ |
Greg Kroah-Hartman | 7d4df48 | 2010-10-07 17:04:47 -0700 | [diff] [blame] | 113 | sizeof(*(r)) == sizeof(u16) ? readw((volatile u16*)(r)) : \ |
Greg Kroah-Hartman | 66cbd3a | 2010-10-08 11:05:47 -0700 | [diff] [blame] | 114 | readl((volatile u32*)(r)), OSL_READ_REG(osh, r)) \ |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 115 | ) |
| 116 | #else /* __mips__ */ |
| 117 | #define R_REG(osh, r) (\ |
| 118 | SELECT_BUS_READ(osh, \ |
| 119 | ({ \ |
| 120 | __typeof(*(r)) __osl_v; \ |
| 121 | __asm__ __volatile__("sync"); \ |
| 122 | switch (sizeof(*(r))) { \ |
Greg Kroah-Hartman | de9bca6 | 2010-10-05 10:23:40 -0700 | [diff] [blame] | 123 | case sizeof(u8): \ |
| 124 | __osl_v = readb((volatile u8*)(r)); \ |
Jason Cooper | 6214582 | 2010-09-14 09:45:34 -0400 | [diff] [blame] | 125 | break; \ |
Greg Kroah-Hartman | 7d4df48 | 2010-10-07 17:04:47 -0700 | [diff] [blame] | 126 | case sizeof(u16): \ |
| 127 | __osl_v = readw((volatile u16*)(r)); \ |
Jason Cooper | 6214582 | 2010-09-14 09:45:34 -0400 | [diff] [blame] | 128 | break; \ |
Greg Kroah-Hartman | 66cbd3a | 2010-10-08 11:05:47 -0700 | [diff] [blame] | 129 | case sizeof(u32): \ |
Jason Cooper | 6214582 | 2010-09-14 09:45:34 -0400 | [diff] [blame] | 130 | __osl_v = \ |
Greg Kroah-Hartman | 66cbd3a | 2010-10-08 11:05:47 -0700 | [diff] [blame] | 131 | readl((volatile u32*)(r)); \ |
Jason Cooper | 6214582 | 2010-09-14 09:45:34 -0400 | [diff] [blame] | 132 | break; \ |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 133 | } \ |
| 134 | __asm__ __volatile__("sync"); \ |
| 135 | __osl_v; \ |
| 136 | }), \ |
| 137 | ({ \ |
| 138 | __typeof(*(r)) __osl_v; \ |
| 139 | __asm__ __volatile__("sync"); \ |
| 140 | __osl_v = OSL_READ_REG(osh, r); \ |
| 141 | __asm__ __volatile__("sync"); \ |
| 142 | __osl_v; \ |
| 143 | })) \ |
| 144 | ) |
| 145 | #endif /* __mips__ */ |
| 146 | |
| 147 | #define W_REG(osh, r, v) do { \ |
| 148 | SELECT_BUS_WRITE(osh, \ |
| 149 | switch (sizeof(*(r))) { \ |
Greg Kroah-Hartman | de9bca6 | 2010-10-05 10:23:40 -0700 | [diff] [blame] | 150 | case sizeof(u8): \ |
| 151 | writeb((u8)(v), (volatile u8*)(r)); break; \ |
Greg Kroah-Hartman | 7d4df48 | 2010-10-07 17:04:47 -0700 | [diff] [blame] | 152 | case sizeof(u16): \ |
| 153 | writew((u16)(v), (volatile u16*)(r)); break; \ |
Greg Kroah-Hartman | 66cbd3a | 2010-10-08 11:05:47 -0700 | [diff] [blame] | 154 | case sizeof(u32): \ |
| 155 | writel((u32)(v), (volatile u32*)(r)); break; \ |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 156 | }, \ |
| 157 | (OSL_WRITE_REG(osh, r, v))); \ |
| 158 | } while (0) |
| 159 | #else /* IL_BIGENDIAN */ |
| 160 | #define R_REG(osh, r) (\ |
| 161 | SELECT_BUS_READ(osh, \ |
| 162 | ({ \ |
| 163 | __typeof(*(r)) __osl_v; \ |
| 164 | switch (sizeof(*(r))) { \ |
Greg Kroah-Hartman | de9bca6 | 2010-10-05 10:23:40 -0700 | [diff] [blame] | 165 | case sizeof(u8): \ |
Jason Cooper | 6214582 | 2010-09-14 09:45:34 -0400 | [diff] [blame] | 166 | __osl_v = \ |
Greg Kroah-Hartman | 3acf41c | 2010-10-12 13:18:17 -0700 | [diff] [blame] | 167 | readb((volatile u8*)((r)^3)); \ |
Jason Cooper | 6214582 | 2010-09-14 09:45:34 -0400 | [diff] [blame] | 168 | break; \ |
Greg Kroah-Hartman | 7d4df48 | 2010-10-07 17:04:47 -0700 | [diff] [blame] | 169 | case sizeof(u16): \ |
Jason Cooper | 6214582 | 2010-09-14 09:45:34 -0400 | [diff] [blame] | 170 | __osl_v = \ |
Greg Kroah-Hartman | 3acf41c | 2010-10-12 13:18:17 -0700 | [diff] [blame] | 171 | readw((volatile u16*)((r)^2)); \ |
Jason Cooper | 6214582 | 2010-09-14 09:45:34 -0400 | [diff] [blame] | 172 | break; \ |
Greg Kroah-Hartman | 66cbd3a | 2010-10-08 11:05:47 -0700 | [diff] [blame] | 173 | case sizeof(u32): \ |
| 174 | __osl_v = readl((volatile u32*)(r)); \ |
Jason Cooper | 6214582 | 2010-09-14 09:45:34 -0400 | [diff] [blame] | 175 | break; \ |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 176 | } \ |
| 177 | __osl_v; \ |
| 178 | }), \ |
| 179 | OSL_READ_REG(osh, r)) \ |
| 180 | ) |
| 181 | #define W_REG(osh, r, v) do { \ |
| 182 | SELECT_BUS_WRITE(osh, \ |
| 183 | switch (sizeof(*(r))) { \ |
Greg Kroah-Hartman | de9bca6 | 2010-10-05 10:23:40 -0700 | [diff] [blame] | 184 | case sizeof(u8): \ |
| 185 | writeb((u8)(v), \ |
Greg Kroah-Hartman | 3acf41c | 2010-10-12 13:18:17 -0700 | [diff] [blame] | 186 | (volatile u8*)((r)^3)); break; \ |
Greg Kroah-Hartman | 7d4df48 | 2010-10-07 17:04:47 -0700 | [diff] [blame] | 187 | case sizeof(u16): \ |
| 188 | writew((u16)(v), \ |
Greg Kroah-Hartman | 3acf41c | 2010-10-12 13:18:17 -0700 | [diff] [blame] | 189 | (volatile u16*)((r)^2)); break; \ |
Greg Kroah-Hartman | 66cbd3a | 2010-10-08 11:05:47 -0700 | [diff] [blame] | 190 | case sizeof(u32): \ |
| 191 | writel((u32)(v), \ |
| 192 | (volatile u32*)(r)); break; \ |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 193 | }, \ |
| 194 | (OSL_WRITE_REG(osh, r, v))); \ |
| 195 | } while (0) |
| 196 | #endif /* IL_BIGENDIAN */ |
| 197 | |
| 198 | #endif /* OSLREGOPS */ |
| 199 | |
| 200 | #define AND_REG(osh, r, v) W_REG(osh, (r), R_REG(osh, r) & (v)) |
| 201 | #define OR_REG(osh, r, v) W_REG(osh, (r), R_REG(osh, r) | (v)) |
| 202 | |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 203 | #define bcopy(src, dst, len) memcpy((dst), (src), (len)) |
| 204 | #define bcmp(b1, b2, len) memcmp((b1), (b2), (len)) |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 205 | |
| 206 | /* uncached/cached virtual address */ |
| 207 | #ifdef __mips__ |
| 208 | #include <asm/addrspace.h> |
| 209 | #define OSL_UNCACHED(va) ((void *)KSEG1ADDR((va))) |
| 210 | #define OSL_CACHED(va) ((void *)KSEG0ADDR((va))) |
| 211 | #else |
| 212 | #define OSL_UNCACHED(va) ((void *)va) |
| 213 | #define OSL_CACHED(va) ((void *)va) |
| 214 | #endif /* mips */ |
| 215 | |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 216 | /* map/unmap physical to virtual I/O */ |
| 217 | #if !defined(CONFIG_MMC_MSM7X00A) |
| 218 | #define REG_MAP(pa, size) ioremap_nocache((unsigned long)(pa), (unsigned long)(size)) |
| 219 | #else |
| 220 | #define REG_MAP(pa, size) (void *)(0) |
| 221 | #endif /* !defined(CONFIG_MMC_MSM7X00A */ |
| 222 | #define REG_UNMAP(va) iounmap((va)) |
| 223 | |
Jason Cooper | 0d706ef | 2010-09-14 09:45:39 -0400 | [diff] [blame] | 224 | #define R_SM(r) (*(r)) |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 225 | #define W_SM(r, v) (*(r) = (v)) |
| 226 | #define BZERO_SM(r, len) memset((r), '\0', (len)) |
| 227 | |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 228 | /* packet primitives */ |
Arend van Spriel | 54991ad | 2010-11-23 14:06:24 +0100 | [diff] [blame] | 229 | #define PKTGET(osh, len, send) osl_pktget((osh), (len)) |
| 230 | #define PKTFREE(osh, skb, send) osl_pktfree((osh), (skb), (send)) |
Arend van Spriel | 3be727c | 2010-11-23 22:20:30 +0100 | [diff] [blame] | 231 | |
Brett Rudley | e69284f | 2010-11-16 15:45:48 -0800 | [diff] [blame] | 232 | extern void *osl_pktget(struct osl_info *osh, uint len); |
| 233 | extern void osl_pktfree(struct osl_info *osh, void *skb, bool send); |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 234 | |
Henry Ptasinski | cf2b448 | 2010-09-20 22:33:12 -0700 | [diff] [blame] | 235 | #ifdef BRCM_FULLMAC |
Greg Kroah-Hartman | 2d956e2 | 2010-10-05 09:40:02 -0700 | [diff] [blame] | 236 | static inline void * |
Brett Rudley | e6a12a0 | 2010-11-16 13:16:59 -0800 | [diff] [blame] | 237 | osl_pkt_frmnative(struct osl_pubinfo *osh, struct sk_buff *skb) |
Henry Ptasinski | cf2b448 | 2010-09-20 22:33:12 -0700 | [diff] [blame] | 238 | { |
| 239 | struct sk_buff *nskb; |
| 240 | |
Henry Ptasinski | cf2b448 | 2010-09-20 22:33:12 -0700 | [diff] [blame] | 241 | for (nskb = skb; nskb; nskb = nskb->next) |
| 242 | osh->pktalloced++; |
| 243 | |
| 244 | return (void *)skb; |
| 245 | } |
| 246 | #define PKTFRMNATIVE(osh, skb) \ |
Brett Rudley | e6a12a0 | 2010-11-16 13:16:59 -0800 | [diff] [blame] | 247 | osl_pkt_frmnative(((struct osl_pubinfo *)osh), (struct sk_buff*)(skb)) |
Henry Ptasinski | cf2b448 | 2010-09-20 22:33:12 -0700 | [diff] [blame] | 248 | |
Greg Kroah-Hartman | 2d956e2 | 2010-10-05 09:40:02 -0700 | [diff] [blame] | 249 | static inline struct sk_buff * |
Brett Rudley | e6a12a0 | 2010-11-16 13:16:59 -0800 | [diff] [blame] | 250 | osl_pkt_tonative(struct osl_pubinfo *osh, void *pkt) |
Henry Ptasinski | cf2b448 | 2010-09-20 22:33:12 -0700 | [diff] [blame] | 251 | { |
| 252 | struct sk_buff *nskb; |
| 253 | |
Henry Ptasinski | cf2b448 | 2010-09-20 22:33:12 -0700 | [diff] [blame] | 254 | for (nskb = (struct sk_buff *)pkt; nskb; nskb = nskb->next) |
| 255 | osh->pktalloced--; |
| 256 | |
| 257 | return (struct sk_buff *)pkt; |
| 258 | } |
| 259 | #define PKTTONATIVE(osh, pkt) \ |
Brett Rudley | e6a12a0 | 2010-11-16 13:16:59 -0800 | [diff] [blame] | 260 | osl_pkt_tonative((struct osl_pubinfo *)(osh), (pkt)) |
Henry Ptasinski | cf2b448 | 2010-09-20 22:33:12 -0700 | [diff] [blame] | 261 | #else /* !BRCM_FULLMAC */ |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 262 | #define PKTSETSKIPCT(osh, skb) |
| 263 | #define PKTCLRSKIPCT(osh, skb) |
| 264 | #define PKTSKIPCT(osh, skb) |
Henry Ptasinski | cf2b448 | 2010-09-20 22:33:12 -0700 | [diff] [blame] | 265 | #endif /* BRCM_FULLMAC */ |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 266 | |
Greg Kroah-Hartman | 1a3bf74 | 2010-10-07 16:34:51 -0700 | [diff] [blame] | 267 | #define PKTSUMNEEDED(skb) (((struct sk_buff *)(skb))->ip_summed == CHECKSUM_PARTIAL) |
Jason Cooper | 39dcff3 | 2010-09-14 09:45:41 -0400 | [diff] [blame] | 268 | #define PKTSETSUMGOOD(skb, x) (((struct sk_buff *)(skb))->ip_summed = \ |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 269 | ((x) ? CHECKSUM_UNNECESSARY : CHECKSUM_NONE)) |
| 270 | /* PKTSETSUMNEEDED and PKTSUMGOOD are not possible because skb->ip_summed is overloaded */ |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 271 | |
Henry Ptasinski | a9533e7 | 2010-09-08 21:04:42 -0700 | [diff] [blame] | 272 | #endif /* _linux_osl_h_ */ |