mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 13:44:26 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1446 commits) macvlan: fix panic if lowerdev in a bond tg3: Add braces around 5906 workaround. tg3: Fix NETIF_F_LOOPBACK error macvlan: remove one synchronize_rcu() call networking: NET_CLS_ROUTE4 depends on INET irda: Fix error propagation in ircomm_lmp_connect_response() irda: Kill set but unused variable 'bytes' in irlan_check_command_param() irda: Kill set but unused variable 'clen' in ircomm_connect_indication() rxrpc: Fix set but unused variable 'usage' in rxrpc_get_transport() be2net: Kill set but unused variable 'req' in lancer_fw_download() irda: Kill set but unused vars 'saddr' and 'daddr' in irlan_provider_connect_indication() atl1c: atl1c_resume() is only used when CONFIG_PM_SLEEP is defined. rxrpc: Fix set but unused variable 'usage' in rxrpc_get_peer(). rxrpc: Kill set but unused variable 'local' in rxrpc_UDP_error_handler() rxrpc: Kill set but unused variable 'sp' in rxrpc_process_connection() rxrpc: Kill set but unused variable 'sp' in rxrpc_rotate_tx_window() pkt_sched: Kill set but unused variable 'protocol' in tc_classify() isdn: capi: Use pr_debug() instead of ifdefs. tg3: Update version to 3.119 tg3: Apply rx_discards fix to 5719/5720 ... Fix up trivial conflicts in arch/x86/Kconfig and net/mac80211/agg-tx.c as per Davem.
This commit is contained in:
commit
06f4e926d2
1198 changed files with 126873 additions and 79635 deletions
|
|
@ -23,6 +23,13 @@
|
|||
|
||||
struct ath9k_platform_data {
|
||||
u16 eeprom_data[ATH9K_PLAT_EEP_MAX_WORDS];
|
||||
u8 *macaddr;
|
||||
|
||||
int led_pin;
|
||||
u32 gpio_mask;
|
||||
u32 gpio_val;
|
||||
|
||||
bool is_clk_25mhz;
|
||||
};
|
||||
|
||||
#endif /* _LINUX_ATH9K_PLATFORM_H */
|
||||
|
|
|
|||
224
include/linux/bcma/bcma.h
Normal file
224
include/linux/bcma/bcma.h
Normal file
|
|
@ -0,0 +1,224 @@
|
|||
#ifndef LINUX_BCMA_H_
|
||||
#define LINUX_BCMA_H_
|
||||
|
||||
#include <linux/pci.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
|
||||
#include <linux/bcma/bcma_driver_chipcommon.h>
|
||||
#include <linux/bcma/bcma_driver_pci.h>
|
||||
|
||||
#include "bcma_regs.h"
|
||||
|
||||
struct bcma_device;
|
||||
struct bcma_bus;
|
||||
|
||||
enum bcma_hosttype {
|
||||
BCMA_HOSTTYPE_NONE,
|
||||
BCMA_HOSTTYPE_PCI,
|
||||
BCMA_HOSTTYPE_SDIO,
|
||||
};
|
||||
|
||||
struct bcma_chipinfo {
|
||||
u16 id;
|
||||
u8 rev;
|
||||
u8 pkg;
|
||||
};
|
||||
|
||||
struct bcma_host_ops {
|
||||
u8 (*read8)(struct bcma_device *core, u16 offset);
|
||||
u16 (*read16)(struct bcma_device *core, u16 offset);
|
||||
u32 (*read32)(struct bcma_device *core, u16 offset);
|
||||
void (*write8)(struct bcma_device *core, u16 offset, u8 value);
|
||||
void (*write16)(struct bcma_device *core, u16 offset, u16 value);
|
||||
void (*write32)(struct bcma_device *core, u16 offset, u32 value);
|
||||
/* Agent ops */
|
||||
u32 (*aread32)(struct bcma_device *core, u16 offset);
|
||||
void (*awrite32)(struct bcma_device *core, u16 offset, u32 value);
|
||||
};
|
||||
|
||||
/* Core manufacturers */
|
||||
#define BCMA_MANUF_ARM 0x43B
|
||||
#define BCMA_MANUF_MIPS 0x4A7
|
||||
#define BCMA_MANUF_BCM 0x4BF
|
||||
|
||||
/* Core class values. */
|
||||
#define BCMA_CL_SIM 0x0
|
||||
#define BCMA_CL_EROM 0x1
|
||||
#define BCMA_CL_CORESIGHT 0x9
|
||||
#define BCMA_CL_VERIF 0xB
|
||||
#define BCMA_CL_OPTIMO 0xD
|
||||
#define BCMA_CL_GEN 0xE
|
||||
#define BCMA_CL_PRIMECELL 0xF
|
||||
|
||||
/* Core-ID values. */
|
||||
#define BCMA_CORE_OOB_ROUTER 0x367 /* Out of band */
|
||||
#define BCMA_CORE_INVALID 0x700
|
||||
#define BCMA_CORE_CHIPCOMMON 0x800
|
||||
#define BCMA_CORE_ILINE20 0x801
|
||||
#define BCMA_CORE_SRAM 0x802
|
||||
#define BCMA_CORE_SDRAM 0x803
|
||||
#define BCMA_CORE_PCI 0x804
|
||||
#define BCMA_CORE_MIPS 0x805
|
||||
#define BCMA_CORE_ETHERNET 0x806
|
||||
#define BCMA_CORE_V90 0x807
|
||||
#define BCMA_CORE_USB11_HOSTDEV 0x808
|
||||
#define BCMA_CORE_ADSL 0x809
|
||||
#define BCMA_CORE_ILINE100 0x80A
|
||||
#define BCMA_CORE_IPSEC 0x80B
|
||||
#define BCMA_CORE_UTOPIA 0x80C
|
||||
#define BCMA_CORE_PCMCIA 0x80D
|
||||
#define BCMA_CORE_INTERNAL_MEM 0x80E
|
||||
#define BCMA_CORE_MEMC_SDRAM 0x80F
|
||||
#define BCMA_CORE_OFDM 0x810
|
||||
#define BCMA_CORE_EXTIF 0x811
|
||||
#define BCMA_CORE_80211 0x812
|
||||
#define BCMA_CORE_PHY_A 0x813
|
||||
#define BCMA_CORE_PHY_B 0x814
|
||||
#define BCMA_CORE_PHY_G 0x815
|
||||
#define BCMA_CORE_MIPS_3302 0x816
|
||||
#define BCMA_CORE_USB11_HOST 0x817
|
||||
#define BCMA_CORE_USB11_DEV 0x818
|
||||
#define BCMA_CORE_USB20_HOST 0x819
|
||||
#define BCMA_CORE_USB20_DEV 0x81A
|
||||
#define BCMA_CORE_SDIO_HOST 0x81B
|
||||
#define BCMA_CORE_ROBOSWITCH 0x81C
|
||||
#define BCMA_CORE_PARA_ATA 0x81D
|
||||
#define BCMA_CORE_SATA_XORDMA 0x81E
|
||||
#define BCMA_CORE_ETHERNET_GBIT 0x81F
|
||||
#define BCMA_CORE_PCIE 0x820
|
||||
#define BCMA_CORE_PHY_N 0x821
|
||||
#define BCMA_CORE_SRAM_CTL 0x822
|
||||
#define BCMA_CORE_MINI_MACPHY 0x823
|
||||
#define BCMA_CORE_ARM_1176 0x824
|
||||
#define BCMA_CORE_ARM_7TDMI 0x825
|
||||
#define BCMA_CORE_PHY_LP 0x826
|
||||
#define BCMA_CORE_PMU 0x827
|
||||
#define BCMA_CORE_PHY_SSN 0x828
|
||||
#define BCMA_CORE_SDIO_DEV 0x829
|
||||
#define BCMA_CORE_ARM_CM3 0x82A
|
||||
#define BCMA_CORE_PHY_HT 0x82B
|
||||
#define BCMA_CORE_MIPS_74K 0x82C
|
||||
#define BCMA_CORE_MAC_GBIT 0x82D
|
||||
#define BCMA_CORE_DDR12_MEM_CTL 0x82E
|
||||
#define BCMA_CORE_PCIE_RC 0x82F /* PCIe Root Complex */
|
||||
#define BCMA_CORE_OCP_OCP_BRIDGE 0x830
|
||||
#define BCMA_CORE_SHARED_COMMON 0x831
|
||||
#define BCMA_CORE_OCP_AHB_BRIDGE 0x832
|
||||
#define BCMA_CORE_SPI_HOST 0x833
|
||||
#define BCMA_CORE_I2S 0x834
|
||||
#define BCMA_CORE_SDR_DDR1_MEM_CTL 0x835 /* SDR/DDR1 memory controller core */
|
||||
#define BCMA_CORE_SHIM 0x837 /* SHIM component in ubus/6362 */
|
||||
#define BCMA_CORE_DEFAULT 0xFFF
|
||||
|
||||
#define BCMA_MAX_NR_CORES 16
|
||||
|
||||
struct bcma_device {
|
||||
struct bcma_bus *bus;
|
||||
struct bcma_device_id id;
|
||||
|
||||
struct device dev;
|
||||
bool dev_registered;
|
||||
|
||||
u8 core_index;
|
||||
|
||||
u32 addr;
|
||||
u32 wrap;
|
||||
|
||||
void *drvdata;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
static inline void *bcma_get_drvdata(struct bcma_device *core)
|
||||
{
|
||||
return core->drvdata;
|
||||
}
|
||||
static inline void bcma_set_drvdata(struct bcma_device *core, void *drvdata)
|
||||
{
|
||||
core->drvdata = drvdata;
|
||||
}
|
||||
|
||||
struct bcma_driver {
|
||||
const char *name;
|
||||
const struct bcma_device_id *id_table;
|
||||
|
||||
int (*probe)(struct bcma_device *dev);
|
||||
void (*remove)(struct bcma_device *dev);
|
||||
int (*suspend)(struct bcma_device *dev, pm_message_t state);
|
||||
int (*resume)(struct bcma_device *dev);
|
||||
void (*shutdown)(struct bcma_device *dev);
|
||||
|
||||
struct device_driver drv;
|
||||
};
|
||||
extern
|
||||
int __bcma_driver_register(struct bcma_driver *drv, struct module *owner);
|
||||
static inline int bcma_driver_register(struct bcma_driver *drv)
|
||||
{
|
||||
return __bcma_driver_register(drv, THIS_MODULE);
|
||||
}
|
||||
extern void bcma_driver_unregister(struct bcma_driver *drv);
|
||||
|
||||
struct bcma_bus {
|
||||
/* The MMIO area. */
|
||||
void __iomem *mmio;
|
||||
|
||||
const struct bcma_host_ops *ops;
|
||||
|
||||
enum bcma_hosttype hosttype;
|
||||
union {
|
||||
/* Pointer to the PCI bus (only for BCMA_HOSTTYPE_PCI) */
|
||||
struct pci_dev *host_pci;
|
||||
/* Pointer to the SDIO device (only for BCMA_HOSTTYPE_SDIO) */
|
||||
struct sdio_func *host_sdio;
|
||||
};
|
||||
|
||||
struct bcma_chipinfo chipinfo;
|
||||
|
||||
struct bcma_device *mapped_core;
|
||||
struct list_head cores;
|
||||
u8 nr_cores;
|
||||
|
||||
struct bcma_drv_cc drv_cc;
|
||||
struct bcma_drv_pci drv_pci;
|
||||
};
|
||||
|
||||
extern inline u32 bcma_read8(struct bcma_device *core, u16 offset)
|
||||
{
|
||||
return core->bus->ops->read8(core, offset);
|
||||
}
|
||||
extern inline u32 bcma_read16(struct bcma_device *core, u16 offset)
|
||||
{
|
||||
return core->bus->ops->read16(core, offset);
|
||||
}
|
||||
extern inline u32 bcma_read32(struct bcma_device *core, u16 offset)
|
||||
{
|
||||
return core->bus->ops->read32(core, offset);
|
||||
}
|
||||
extern inline
|
||||
void bcma_write8(struct bcma_device *core, u16 offset, u32 value)
|
||||
{
|
||||
core->bus->ops->write8(core, offset, value);
|
||||
}
|
||||
extern inline
|
||||
void bcma_write16(struct bcma_device *core, u16 offset, u32 value)
|
||||
{
|
||||
core->bus->ops->write16(core, offset, value);
|
||||
}
|
||||
extern inline
|
||||
void bcma_write32(struct bcma_device *core, u16 offset, u32 value)
|
||||
{
|
||||
core->bus->ops->write32(core, offset, value);
|
||||
}
|
||||
extern inline u32 bcma_aread32(struct bcma_device *core, u16 offset)
|
||||
{
|
||||
return core->bus->ops->aread32(core, offset);
|
||||
}
|
||||
extern inline
|
||||
void bcma_awrite32(struct bcma_device *core, u16 offset, u32 value)
|
||||
{
|
||||
core->bus->ops->awrite32(core, offset, value);
|
||||
}
|
||||
|
||||
extern bool bcma_core_is_enabled(struct bcma_device *core);
|
||||
extern int bcma_core_enable(struct bcma_device *core, u32 flags);
|
||||
|
||||
#endif /* LINUX_BCMA_H_ */
|
||||
302
include/linux/bcma/bcma_driver_chipcommon.h
Normal file
302
include/linux/bcma/bcma_driver_chipcommon.h
Normal file
|
|
@ -0,0 +1,302 @@
|
|||
#ifndef LINUX_BCMA_DRIVER_CC_H_
|
||||
#define LINUX_BCMA_DRIVER_CC_H_
|
||||
|
||||
/** ChipCommon core registers. **/
|
||||
#define BCMA_CC_ID 0x0000
|
||||
#define BCMA_CC_ID_ID 0x0000FFFF
|
||||
#define BCMA_CC_ID_ID_SHIFT 0
|
||||
#define BCMA_CC_ID_REV 0x000F0000
|
||||
#define BCMA_CC_ID_REV_SHIFT 16
|
||||
#define BCMA_CC_ID_PKG 0x00F00000
|
||||
#define BCMA_CC_ID_PKG_SHIFT 20
|
||||
#define BCMA_CC_ID_NRCORES 0x0F000000
|
||||
#define BCMA_CC_ID_NRCORES_SHIFT 24
|
||||
#define BCMA_CC_ID_TYPE 0xF0000000
|
||||
#define BCMA_CC_ID_TYPE_SHIFT 28
|
||||
#define BCMA_CC_CAP 0x0004 /* Capabilities */
|
||||
#define BCMA_CC_CAP_NRUART 0x00000003 /* # of UARTs */
|
||||
#define BCMA_CC_CAP_MIPSEB 0x00000004 /* MIPS in BigEndian Mode */
|
||||
#define BCMA_CC_CAP_UARTCLK 0x00000018 /* UART clock select */
|
||||
#define BCMA_CC_CAP_UARTCLK_INT 0x00000008 /* UARTs are driven by internal divided clock */
|
||||
#define BCMA_CC_CAP_UARTGPIO 0x00000020 /* UARTs on GPIO 15-12 */
|
||||
#define BCMA_CC_CAP_EXTBUS 0x000000C0 /* External buses present */
|
||||
#define BCMA_CC_CAP_FLASHT 0x00000700 /* Flash Type */
|
||||
#define BCMA_CC_FLASHT_NONE 0x00000000 /* No flash */
|
||||
#define BCMA_CC_FLASHT_STSER 0x00000100 /* ST serial flash */
|
||||
#define BCMA_CC_FLASHT_ATSER 0x00000200 /* Atmel serial flash */
|
||||
#define BCMA_CC_FLASHT_PARA 0x00000700 /* Parallel flash */
|
||||
#define BCMA_CC_CAP_PLLT 0x00038000 /* PLL Type */
|
||||
#define BCMA_PLLTYPE_NONE 0x00000000
|
||||
#define BCMA_PLLTYPE_1 0x00010000 /* 48Mhz base, 3 dividers */
|
||||
#define BCMA_PLLTYPE_2 0x00020000 /* 48Mhz, 4 dividers */
|
||||
#define BCMA_PLLTYPE_3 0x00030000 /* 25Mhz, 2 dividers */
|
||||
#define BCMA_PLLTYPE_4 0x00008000 /* 48Mhz, 4 dividers */
|
||||
#define BCMA_PLLTYPE_5 0x00018000 /* 25Mhz, 4 dividers */
|
||||
#define BCMA_PLLTYPE_6 0x00028000 /* 100/200 or 120/240 only */
|
||||
#define BCMA_PLLTYPE_7 0x00038000 /* 25Mhz, 4 dividers */
|
||||
#define BCMA_CC_CAP_PCTL 0x00040000 /* Power Control */
|
||||
#define BCMA_CC_CAP_OTPS 0x00380000 /* OTP size */
|
||||
#define BCMA_CC_CAP_OTPS_SHIFT 19
|
||||
#define BCMA_CC_CAP_OTPS_BASE 5
|
||||
#define BCMA_CC_CAP_JTAGM 0x00400000 /* JTAG master present */
|
||||
#define BCMA_CC_CAP_BROM 0x00800000 /* Internal boot ROM active */
|
||||
#define BCMA_CC_CAP_64BIT 0x08000000 /* 64-bit Backplane */
|
||||
#define BCMA_CC_CAP_PMU 0x10000000 /* PMU available (rev >= 20) */
|
||||
#define BCMA_CC_CAP_ECI 0x20000000 /* ECI available (rev >= 20) */
|
||||
#define BCMA_CC_CAP_SPROM 0x40000000 /* SPROM present */
|
||||
#define BCMA_CC_CORECTL 0x0008
|
||||
#define BCMA_CC_CORECTL_UARTCLK0 0x00000001 /* Drive UART with internal clock */
|
||||
#define BCMA_CC_CORECTL_SE 0x00000002 /* sync clk out enable (corerev >= 3) */
|
||||
#define BCMA_CC_CORECTL_UARTCLKEN 0x00000008 /* UART clock enable (rev >= 21) */
|
||||
#define BCMA_CC_BIST 0x000C
|
||||
#define BCMA_CC_OTPS 0x0010 /* OTP status */
|
||||
#define BCMA_CC_OTPS_PROGFAIL 0x80000000
|
||||
#define BCMA_CC_OTPS_PROTECT 0x00000007
|
||||
#define BCMA_CC_OTPS_HW_PROTECT 0x00000001
|
||||
#define BCMA_CC_OTPS_SW_PROTECT 0x00000002
|
||||
#define BCMA_CC_OTPS_CID_PROTECT 0x00000004
|
||||
#define BCMA_CC_OTPC 0x0014 /* OTP control */
|
||||
#define BCMA_CC_OTPC_RECWAIT 0xFF000000
|
||||
#define BCMA_CC_OTPC_PROGWAIT 0x00FFFF00
|
||||
#define BCMA_CC_OTPC_PRW_SHIFT 8
|
||||
#define BCMA_CC_OTPC_MAXFAIL 0x00000038
|
||||
#define BCMA_CC_OTPC_VSEL 0x00000006
|
||||
#define BCMA_CC_OTPC_SELVL 0x00000001
|
||||
#define BCMA_CC_OTPP 0x0018 /* OTP prog */
|
||||
#define BCMA_CC_OTPP_COL 0x000000FF
|
||||
#define BCMA_CC_OTPP_ROW 0x0000FF00
|
||||
#define BCMA_CC_OTPP_ROW_SHIFT 8
|
||||
#define BCMA_CC_OTPP_READERR 0x10000000
|
||||
#define BCMA_CC_OTPP_VALUE 0x20000000
|
||||
#define BCMA_CC_OTPP_READ 0x40000000
|
||||
#define BCMA_CC_OTPP_START 0x80000000
|
||||
#define BCMA_CC_OTPP_BUSY 0x80000000
|
||||
#define BCMA_CC_IRQSTAT 0x0020
|
||||
#define BCMA_CC_IRQMASK 0x0024
|
||||
#define BCMA_CC_IRQ_GPIO 0x00000001 /* gpio intr */
|
||||
#define BCMA_CC_IRQ_EXT 0x00000002 /* ro: ext intr pin (corerev >= 3) */
|
||||
#define BCMA_CC_IRQ_WDRESET 0x80000000 /* watchdog reset occurred */
|
||||
#define BCMA_CC_CHIPCTL 0x0028 /* Rev >= 11 only */
|
||||
#define BCMA_CC_CHIPSTAT 0x002C /* Rev >= 11 only */
|
||||
#define BCMA_CC_JCMD 0x0030 /* Rev >= 10 only */
|
||||
#define BCMA_CC_JCMD_START 0x80000000
|
||||
#define BCMA_CC_JCMD_BUSY 0x80000000
|
||||
#define BCMA_CC_JCMD_PAUSE 0x40000000
|
||||
#define BCMA_CC_JCMD0_ACC_MASK 0x0000F000
|
||||
#define BCMA_CC_JCMD0_ACC_IRDR 0x00000000
|
||||
#define BCMA_CC_JCMD0_ACC_DR 0x00001000
|
||||
#define BCMA_CC_JCMD0_ACC_IR 0x00002000
|
||||
#define BCMA_CC_JCMD0_ACC_RESET 0x00003000
|
||||
#define BCMA_CC_JCMD0_ACC_IRPDR 0x00004000
|
||||
#define BCMA_CC_JCMD0_ACC_PDR 0x00005000
|
||||
#define BCMA_CC_JCMD0_IRW_MASK 0x00000F00
|
||||
#define BCMA_CC_JCMD_ACC_MASK 0x000F0000 /* Changes for corerev 11 */
|
||||
#define BCMA_CC_JCMD_ACC_IRDR 0x00000000
|
||||
#define BCMA_CC_JCMD_ACC_DR 0x00010000
|
||||
#define BCMA_CC_JCMD_ACC_IR 0x00020000
|
||||
#define BCMA_CC_JCMD_ACC_RESET 0x00030000
|
||||
#define BCMA_CC_JCMD_ACC_IRPDR 0x00040000
|
||||
#define BCMA_CC_JCMD_ACC_PDR 0x00050000
|
||||
#define BCMA_CC_JCMD_IRW_MASK 0x00001F00
|
||||
#define BCMA_CC_JCMD_IRW_SHIFT 8
|
||||
#define BCMA_CC_JCMD_DRW_MASK 0x0000003F
|
||||
#define BCMA_CC_JIR 0x0034 /* Rev >= 10 only */
|
||||
#define BCMA_CC_JDR 0x0038 /* Rev >= 10 only */
|
||||
#define BCMA_CC_JCTL 0x003C /* Rev >= 10 only */
|
||||
#define BCMA_CC_JCTL_FORCE_CLK 4 /* Force clock */
|
||||
#define BCMA_CC_JCTL_EXT_EN 2 /* Enable external targets */
|
||||
#define BCMA_CC_JCTL_EN 1 /* Enable Jtag master */
|
||||
#define BCMA_CC_FLASHCTL 0x0040
|
||||
#define BCMA_CC_FLASHCTL_START 0x80000000
|
||||
#define BCMA_CC_FLASHCTL_BUSY BCMA_CC_FLASHCTL_START
|
||||
#define BCMA_CC_FLASHADDR 0x0044
|
||||
#define BCMA_CC_FLASHDATA 0x0048
|
||||
#define BCMA_CC_BCAST_ADDR 0x0050
|
||||
#define BCMA_CC_BCAST_DATA 0x0054
|
||||
#define BCMA_CC_GPIOPULLUP 0x0058 /* Rev >= 20 only */
|
||||
#define BCMA_CC_GPIOPULLDOWN 0x005C /* Rev >= 20 only */
|
||||
#define BCMA_CC_GPIOIN 0x0060
|
||||
#define BCMA_CC_GPIOOUT 0x0064
|
||||
#define BCMA_CC_GPIOOUTEN 0x0068
|
||||
#define BCMA_CC_GPIOCTL 0x006C
|
||||
#define BCMA_CC_GPIOPOL 0x0070
|
||||
#define BCMA_CC_GPIOIRQ 0x0074
|
||||
#define BCMA_CC_WATCHDOG 0x0080
|
||||
#define BCMA_CC_GPIOTIMER 0x0088 /* LED powersave (corerev >= 16) */
|
||||
#define BCMA_CC_GPIOTIMER_OFFTIME 0x0000FFFF
|
||||
#define BCMA_CC_GPIOTIMER_OFFTIME_SHIFT 0
|
||||
#define BCMA_CC_GPIOTIMER_ONTIME 0xFFFF0000
|
||||
#define BCMA_CC_GPIOTIMER_ONTIME_SHIFT 16
|
||||
#define BCMA_CC_GPIOTOUTM 0x008C /* LED powersave (corerev >= 16) */
|
||||
#define BCMA_CC_CLOCK_N 0x0090
|
||||
#define BCMA_CC_CLOCK_SB 0x0094
|
||||
#define BCMA_CC_CLOCK_PCI 0x0098
|
||||
#define BCMA_CC_CLOCK_M2 0x009C
|
||||
#define BCMA_CC_CLOCK_MIPS 0x00A0
|
||||
#define BCMA_CC_CLKDIV 0x00A4 /* Rev >= 3 only */
|
||||
#define BCMA_CC_CLKDIV_SFLASH 0x0F000000
|
||||
#define BCMA_CC_CLKDIV_SFLASH_SHIFT 24
|
||||
#define BCMA_CC_CLKDIV_OTP 0x000F0000
|
||||
#define BCMA_CC_CLKDIV_OTP_SHIFT 16
|
||||
#define BCMA_CC_CLKDIV_JTAG 0x00000F00
|
||||
#define BCMA_CC_CLKDIV_JTAG_SHIFT 8
|
||||
#define BCMA_CC_CLKDIV_UART 0x000000FF
|
||||
#define BCMA_CC_CAP_EXT 0x00AC /* Capabilities */
|
||||
#define BCMA_CC_PLLONDELAY 0x00B0 /* Rev >= 4 only */
|
||||
#define BCMA_CC_FREFSELDELAY 0x00B4 /* Rev >= 4 only */
|
||||
#define BCMA_CC_SLOWCLKCTL 0x00B8 /* 6 <= Rev <= 9 only */
|
||||
#define BCMA_CC_SLOWCLKCTL_SRC 0x00000007 /* slow clock source mask */
|
||||
#define BCMA_CC_SLOWCLKCTL_SRC_LPO 0x00000000 /* source of slow clock is LPO */
|
||||
#define BCMA_CC_SLOWCLKCTL_SRC_XTAL 0x00000001 /* source of slow clock is crystal */
|
||||
#define BCMA_CC_SLOECLKCTL_SRC_PCI 0x00000002 /* source of slow clock is PCI */
|
||||
#define BCMA_CC_SLOWCLKCTL_LPOFREQ 0x00000200 /* LPOFreqSel, 1: 160Khz, 0: 32KHz */
|
||||
#define BCMA_CC_SLOWCLKCTL_LPOPD 0x00000400 /* LPOPowerDown, 1: LPO is disabled, 0: LPO is enabled */
|
||||
#define BCMA_CC_SLOWCLKCTL_FSLOW 0x00000800 /* ForceSlowClk, 1: sb/cores running on slow clock, 0: power logic control */
|
||||
#define BCMA_CC_SLOWCLKCTL_IPLL 0x00001000 /* IgnorePllOffReq, 1/0: power logic ignores/honors PLL clock disable requests from core */
|
||||
#define BCMA_CC_SLOWCLKCTL_ENXTAL 0x00002000 /* XtalControlEn, 1/0: power logic does/doesn't disable crystal when appropriate */
|
||||
#define BCMA_CC_SLOWCLKCTL_XTALPU 0x00004000 /* XtalPU (RO), 1/0: crystal running/disabled */
|
||||
#define BCMA_CC_SLOWCLKCTL_CLKDIV 0xFFFF0000 /* ClockDivider (SlowClk = 1/(4+divisor)) */
|
||||
#define BCMA_CC_SLOWCLKCTL_CLKDIV_SHIFT 16
|
||||
#define BCMA_CC_SYSCLKCTL 0x00C0 /* Rev >= 3 only */
|
||||
#define BCMA_CC_SYSCLKCTL_IDLPEN 0x00000001 /* ILPen: Enable Idle Low Power */
|
||||
#define BCMA_CC_SYSCLKCTL_ALPEN 0x00000002 /* ALPen: Enable Active Low Power */
|
||||
#define BCMA_CC_SYSCLKCTL_PLLEN 0x00000004 /* ForcePLLOn */
|
||||
#define BCMA_CC_SYSCLKCTL_FORCEALP 0x00000008 /* Force ALP (or HT if ALPen is not set */
|
||||
#define BCMA_CC_SYSCLKCTL_FORCEHT 0x00000010 /* Force HT */
|
||||
#define BCMA_CC_SYSCLKCTL_CLKDIV 0xFFFF0000 /* ClkDiv (ILP = 1/(4+divisor)) */
|
||||
#define BCMA_CC_SYSCLKCTL_CLKDIV_SHIFT 16
|
||||
#define BCMA_CC_CLKSTSTR 0x00C4 /* Rev >= 3 only */
|
||||
#define BCMA_CC_EROM 0x00FC
|
||||
#define BCMA_CC_PCMCIA_CFG 0x0100
|
||||
#define BCMA_CC_PCMCIA_MEMWAIT 0x0104
|
||||
#define BCMA_CC_PCMCIA_ATTRWAIT 0x0108
|
||||
#define BCMA_CC_PCMCIA_IOWAIT 0x010C
|
||||
#define BCMA_CC_IDE_CFG 0x0110
|
||||
#define BCMA_CC_IDE_MEMWAIT 0x0114
|
||||
#define BCMA_CC_IDE_ATTRWAIT 0x0118
|
||||
#define BCMA_CC_IDE_IOWAIT 0x011C
|
||||
#define BCMA_CC_PROG_CFG 0x0120
|
||||
#define BCMA_CC_PROG_WAITCNT 0x0124
|
||||
#define BCMA_CC_FLASH_CFG 0x0128
|
||||
#define BCMA_CC_FLASH_WAITCNT 0x012C
|
||||
#define BCMA_CC_CLKCTLST 0x01E0 /* Clock control and status (rev >= 20) */
|
||||
#define BCMA_CC_CLKCTLST_FORCEALP 0x00000001 /* Force ALP request */
|
||||
#define BCMA_CC_CLKCTLST_FORCEHT 0x00000002 /* Force HT request */
|
||||
#define BCMA_CC_CLKCTLST_FORCEILP 0x00000004 /* Force ILP request */
|
||||
#define BCMA_CC_CLKCTLST_HAVEALPREQ 0x00000008 /* ALP available request */
|
||||
#define BCMA_CC_CLKCTLST_HAVEHTREQ 0x00000010 /* HT available request */
|
||||
#define BCMA_CC_CLKCTLST_HWCROFF 0x00000020 /* Force HW clock request off */
|
||||
#define BCMA_CC_CLKCTLST_HAVEHT 0x00010000 /* HT available */
|
||||
#define BCMA_CC_CLKCTLST_HAVEALP 0x00020000 /* APL available */
|
||||
#define BCMA_CC_HW_WORKAROUND 0x01E4 /* Hardware workaround (rev >= 20) */
|
||||
#define BCMA_CC_UART0_DATA 0x0300
|
||||
#define BCMA_CC_UART0_IMR 0x0304
|
||||
#define BCMA_CC_UART0_FCR 0x0308
|
||||
#define BCMA_CC_UART0_LCR 0x030C
|
||||
#define BCMA_CC_UART0_MCR 0x0310
|
||||
#define BCMA_CC_UART0_LSR 0x0314
|
||||
#define BCMA_CC_UART0_MSR 0x0318
|
||||
#define BCMA_CC_UART0_SCRATCH 0x031C
|
||||
#define BCMA_CC_UART1_DATA 0x0400
|
||||
#define BCMA_CC_UART1_IMR 0x0404
|
||||
#define BCMA_CC_UART1_FCR 0x0408
|
||||
#define BCMA_CC_UART1_LCR 0x040C
|
||||
#define BCMA_CC_UART1_MCR 0x0410
|
||||
#define BCMA_CC_UART1_LSR 0x0414
|
||||
#define BCMA_CC_UART1_MSR 0x0418
|
||||
#define BCMA_CC_UART1_SCRATCH 0x041C
|
||||
/* PMU registers (rev >= 20) */
|
||||
#define BCMA_CC_PMU_CTL 0x0600 /* PMU control */
|
||||
#define BCMA_CC_PMU_CTL_ILP_DIV 0xFFFF0000 /* ILP div mask */
|
||||
#define BCMA_CC_PMU_CTL_ILP_DIV_SHIFT 16
|
||||
#define BCMA_CC_PMU_CTL_NOILPONW 0x00000200 /* No ILP on wait */
|
||||
#define BCMA_CC_PMU_CTL_HTREQEN 0x00000100 /* HT req enable */
|
||||
#define BCMA_CC_PMU_CTL_ALPREQEN 0x00000080 /* ALP req enable */
|
||||
#define BCMA_CC_PMU_CTL_XTALFREQ 0x0000007C /* Crystal freq */
|
||||
#define BCMA_CC_PMU_CTL_XTALFREQ_SHIFT 2
|
||||
#define BCMA_CC_PMU_CTL_ILPDIVEN 0x00000002 /* ILP div enable */
|
||||
#define BCMA_CC_PMU_CTL_LPOSEL 0x00000001 /* LPO sel */
|
||||
#define BCMA_CC_PMU_CAP 0x0604 /* PMU capabilities */
|
||||
#define BCMA_CC_PMU_CAP_REVISION 0x000000FF /* Revision mask */
|
||||
#define BCMA_CC_PMU_STAT 0x0608 /* PMU status */
|
||||
#define BCMA_CC_PMU_STAT_INTPEND 0x00000040 /* Interrupt pending */
|
||||
#define BCMA_CC_PMU_STAT_SBCLKST 0x00000030 /* Backplane clock status? */
|
||||
#define BCMA_CC_PMU_STAT_HAVEALP 0x00000008 /* ALP available */
|
||||
#define BCMA_CC_PMU_STAT_HAVEHT 0x00000004 /* HT available */
|
||||
#define BCMA_CC_PMU_STAT_RESINIT 0x00000003 /* Res init */
|
||||
#define BCMA_CC_PMU_RES_STAT 0x060C /* PMU res status */
|
||||
#define BCMA_CC_PMU_RES_PEND 0x0610 /* PMU res pending */
|
||||
#define BCMA_CC_PMU_TIMER 0x0614 /* PMU timer */
|
||||
#define BCMA_CC_PMU_MINRES_MSK 0x0618 /* PMU min res mask */
|
||||
#define BCMA_CC_PMU_MAXRES_MSK 0x061C /* PMU max res mask */
|
||||
#define BCMA_CC_PMU_RES_TABSEL 0x0620 /* PMU res table sel */
|
||||
#define BCMA_CC_PMU_RES_DEPMSK 0x0624 /* PMU res dep mask */
|
||||
#define BCMA_CC_PMU_RES_UPDNTM 0x0628 /* PMU res updown timer */
|
||||
#define BCMA_CC_PMU_RES_TIMER 0x062C /* PMU res timer */
|
||||
#define BCMA_CC_PMU_CLKSTRETCH 0x0630 /* PMU clockstretch */
|
||||
#define BCMA_CC_PMU_WATCHDOG 0x0634 /* PMU watchdog */
|
||||
#define BCMA_CC_PMU_RES_REQTS 0x0640 /* PMU res req timer sel */
|
||||
#define BCMA_CC_PMU_RES_REQT 0x0644 /* PMU res req timer */
|
||||
#define BCMA_CC_PMU_RES_REQM 0x0648 /* PMU res req mask */
|
||||
#define BCMA_CC_CHIPCTL_ADDR 0x0650
|
||||
#define BCMA_CC_CHIPCTL_DATA 0x0654
|
||||
#define BCMA_CC_REGCTL_ADDR 0x0658
|
||||
#define BCMA_CC_REGCTL_DATA 0x065C
|
||||
#define BCMA_CC_PLLCTL_ADDR 0x0660
|
||||
#define BCMA_CC_PLLCTL_DATA 0x0664
|
||||
|
||||
/* Data for the PMU, if available.
|
||||
* Check availability with ((struct bcma_chipcommon)->capabilities & BCMA_CC_CAP_PMU)
|
||||
*/
|
||||
struct bcma_chipcommon_pmu {
|
||||
u8 rev; /* PMU revision */
|
||||
u32 crystalfreq; /* The active crystal frequency (in kHz) */
|
||||
};
|
||||
|
||||
struct bcma_drv_cc {
|
||||
struct bcma_device *core;
|
||||
u32 status;
|
||||
u32 capabilities;
|
||||
u32 capabilities_ext;
|
||||
/* Fast Powerup Delay constant */
|
||||
u16 fast_pwrup_delay;
|
||||
struct bcma_chipcommon_pmu pmu;
|
||||
};
|
||||
|
||||
/* Register access */
|
||||
#define bcma_cc_read32(cc, offset) \
|
||||
bcma_read32((cc)->core, offset)
|
||||
#define bcma_cc_write32(cc, offset, val) \
|
||||
bcma_write32((cc)->core, offset, val)
|
||||
|
||||
#define bcma_cc_mask32(cc, offset, mask) \
|
||||
bcma_cc_write32(cc, offset, bcma_cc_read32(cc, offset) & (mask))
|
||||
#define bcma_cc_set32(cc, offset, set) \
|
||||
bcma_cc_write32(cc, offset, bcma_cc_read32(cc, offset) | (set))
|
||||
#define bcma_cc_maskset32(cc, offset, mask, set) \
|
||||
bcma_cc_write32(cc, offset, (bcma_cc_read32(cc, offset) & (mask)) | (set))
|
||||
|
||||
extern void bcma_core_chipcommon_init(struct bcma_drv_cc *cc);
|
||||
|
||||
extern void bcma_chipco_suspend(struct bcma_drv_cc *cc);
|
||||
extern void bcma_chipco_resume(struct bcma_drv_cc *cc);
|
||||
|
||||
extern void bcma_chipco_watchdog_timer_set(struct bcma_drv_cc *cc,
|
||||
u32 ticks);
|
||||
|
||||
void bcma_chipco_irq_mask(struct bcma_drv_cc *cc, u32 mask, u32 value);
|
||||
|
||||
u32 bcma_chipco_irq_status(struct bcma_drv_cc *cc, u32 mask);
|
||||
|
||||
/* Chipcommon GPIO pin access. */
|
||||
u32 bcma_chipco_gpio_in(struct bcma_drv_cc *cc, u32 mask);
|
||||
u32 bcma_chipco_gpio_out(struct bcma_drv_cc *cc, u32 mask, u32 value);
|
||||
u32 bcma_chipco_gpio_outen(struct bcma_drv_cc *cc, u32 mask, u32 value);
|
||||
u32 bcma_chipco_gpio_control(struct bcma_drv_cc *cc, u32 mask, u32 value);
|
||||
u32 bcma_chipco_gpio_intmask(struct bcma_drv_cc *cc, u32 mask, u32 value);
|
||||
u32 bcma_chipco_gpio_polarity(struct bcma_drv_cc *cc, u32 mask, u32 value);
|
||||
|
||||
/* PMU support */
|
||||
extern void bcma_pmu_init(struct bcma_drv_cc *cc);
|
||||
|
||||
#endif /* LINUX_BCMA_DRIVER_CC_H_ */
|
||||
89
include/linux/bcma/bcma_driver_pci.h
Normal file
89
include/linux/bcma/bcma_driver_pci.h
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
#ifndef LINUX_BCMA_DRIVER_PCI_H_
|
||||
#define LINUX_BCMA_DRIVER_PCI_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct pci_dev;
|
||||
|
||||
/** PCI core registers. **/
|
||||
#define BCMA_CORE_PCI_CTL 0x0000 /* PCI Control */
|
||||
#define BCMA_CORE_PCI_CTL_RST_OE 0x00000001 /* PCI_RESET Output Enable */
|
||||
#define BCMA_CORE_PCI_CTL_RST 0x00000002 /* PCI_RESET driven out to pin */
|
||||
#define BCMA_CORE_PCI_CTL_CLK_OE 0x00000004 /* Clock gate Output Enable */
|
||||
#define BCMA_CORE_PCI_CTL_CLK 0x00000008 /* Gate for clock driven out to pin */
|
||||
#define BCMA_CORE_PCI_ARBCTL 0x0010 /* PCI Arbiter Control */
|
||||
#define BCMA_CORE_PCI_ARBCTL_INTERN 0x00000001 /* Use internal arbiter */
|
||||
#define BCMA_CORE_PCI_ARBCTL_EXTERN 0x00000002 /* Use external arbiter */
|
||||
#define BCMA_CORE_PCI_ARBCTL_PARKID 0x00000006 /* Mask, selects which agent is parked on an idle bus */
|
||||
#define BCMA_CORE_PCI_ARBCTL_PARKID_LAST 0x00000000 /* Last requestor */
|
||||
#define BCMA_CORE_PCI_ARBCTL_PARKID_4710 0x00000002 /* 4710 */
|
||||
#define BCMA_CORE_PCI_ARBCTL_PARKID_EXT0 0x00000004 /* External requestor 0 */
|
||||
#define BCMA_CORE_PCI_ARBCTL_PARKID_EXT1 0x00000006 /* External requestor 1 */
|
||||
#define BCMA_CORE_PCI_ISTAT 0x0020 /* Interrupt status */
|
||||
#define BCMA_CORE_PCI_ISTAT_INTA 0x00000001 /* PCI INTA# */
|
||||
#define BCMA_CORE_PCI_ISTAT_INTB 0x00000002 /* PCI INTB# */
|
||||
#define BCMA_CORE_PCI_ISTAT_SERR 0x00000004 /* PCI SERR# (write to clear) */
|
||||
#define BCMA_CORE_PCI_ISTAT_PERR 0x00000008 /* PCI PERR# (write to clear) */
|
||||
#define BCMA_CORE_PCI_ISTAT_PME 0x00000010 /* PCI PME# */
|
||||
#define BCMA_CORE_PCI_IMASK 0x0024 /* Interrupt mask */
|
||||
#define BCMA_CORE_PCI_IMASK_INTA 0x00000001 /* PCI INTA# */
|
||||
#define BCMA_CORE_PCI_IMASK_INTB 0x00000002 /* PCI INTB# */
|
||||
#define BCMA_CORE_PCI_IMASK_SERR 0x00000004 /* PCI SERR# */
|
||||
#define BCMA_CORE_PCI_IMASK_PERR 0x00000008 /* PCI PERR# */
|
||||
#define BCMA_CORE_PCI_IMASK_PME 0x00000010 /* PCI PME# */
|
||||
#define BCMA_CORE_PCI_MBOX 0x0028 /* Backplane to PCI Mailbox */
|
||||
#define BCMA_CORE_PCI_MBOX_F0_0 0x00000100 /* PCI function 0, INT 0 */
|
||||
#define BCMA_CORE_PCI_MBOX_F0_1 0x00000200 /* PCI function 0, INT 1 */
|
||||
#define BCMA_CORE_PCI_MBOX_F1_0 0x00000400 /* PCI function 1, INT 0 */
|
||||
#define BCMA_CORE_PCI_MBOX_F1_1 0x00000800 /* PCI function 1, INT 1 */
|
||||
#define BCMA_CORE_PCI_MBOX_F2_0 0x00001000 /* PCI function 2, INT 0 */
|
||||
#define BCMA_CORE_PCI_MBOX_F2_1 0x00002000 /* PCI function 2, INT 1 */
|
||||
#define BCMA_CORE_PCI_MBOX_F3_0 0x00004000 /* PCI function 3, INT 0 */
|
||||
#define BCMA_CORE_PCI_MBOX_F3_1 0x00008000 /* PCI function 3, INT 1 */
|
||||
#define BCMA_CORE_PCI_BCAST_ADDR 0x0050 /* Backplane Broadcast Address */
|
||||
#define BCMA_CORE_PCI_BCAST_ADDR_MASK 0x000000FF
|
||||
#define BCMA_CORE_PCI_BCAST_DATA 0x0054 /* Backplane Broadcast Data */
|
||||
#define BCMA_CORE_PCI_GPIO_IN 0x0060 /* rev >= 2 only */
|
||||
#define BCMA_CORE_PCI_GPIO_OUT 0x0064 /* rev >= 2 only */
|
||||
#define BCMA_CORE_PCI_GPIO_ENABLE 0x0068 /* rev >= 2 only */
|
||||
#define BCMA_CORE_PCI_GPIO_CTL 0x006C /* rev >= 2 only */
|
||||
#define BCMA_CORE_PCI_SBTOPCI0 0x0100 /* Backplane to PCI translation 0 (sbtopci0) */
|
||||
#define BCMA_CORE_PCI_SBTOPCI0_MASK 0xFC000000
|
||||
#define BCMA_CORE_PCI_SBTOPCI1 0x0104 /* Backplane to PCI translation 1 (sbtopci1) */
|
||||
#define BCMA_CORE_PCI_SBTOPCI1_MASK 0xFC000000
|
||||
#define BCMA_CORE_PCI_SBTOPCI2 0x0108 /* Backplane to PCI translation 2 (sbtopci2) */
|
||||
#define BCMA_CORE_PCI_SBTOPCI2_MASK 0xC0000000
|
||||
#define BCMA_CORE_PCI_PCICFG0 0x0400 /* PCI config space 0 (rev >= 8) */
|
||||
#define BCMA_CORE_PCI_PCICFG1 0x0500 /* PCI config space 1 (rev >= 8) */
|
||||
#define BCMA_CORE_PCI_PCICFG2 0x0600 /* PCI config space 2 (rev >= 8) */
|
||||
#define BCMA_CORE_PCI_PCICFG3 0x0700 /* PCI config space 3 (rev >= 8) */
|
||||
#define BCMA_CORE_PCI_SPROM(wordoffset) (0x0800 + ((wordoffset) * 2)) /* SPROM shadow area (72 bytes) */
|
||||
|
||||
/* SBtoPCIx */
|
||||
#define BCMA_CORE_PCI_SBTOPCI_MEM 0x00000000
|
||||
#define BCMA_CORE_PCI_SBTOPCI_IO 0x00000001
|
||||
#define BCMA_CORE_PCI_SBTOPCI_CFG0 0x00000002
|
||||
#define BCMA_CORE_PCI_SBTOPCI_CFG1 0x00000003
|
||||
#define BCMA_CORE_PCI_SBTOPCI_PREF 0x00000004 /* Prefetch enable */
|
||||
#define BCMA_CORE_PCI_SBTOPCI_BURST 0x00000008 /* Burst enable */
|
||||
#define BCMA_CORE_PCI_SBTOPCI_MRM 0x00000020 /* Memory Read Multiple */
|
||||
#define BCMA_CORE_PCI_SBTOPCI_RC 0x00000030 /* Read Command mask (rev >= 11) */
|
||||
#define BCMA_CORE_PCI_SBTOPCI_RC_READ 0x00000000 /* Memory read */
|
||||
#define BCMA_CORE_PCI_SBTOPCI_RC_READL 0x00000010 /* Memory read line */
|
||||
#define BCMA_CORE_PCI_SBTOPCI_RC_READM 0x00000020 /* Memory read multiple */
|
||||
|
||||
/* PCIcore specific boardflags */
|
||||
#define BCMA_CORE_PCI_BFL_NOPCI 0x00000400 /* Board leaves PCI floating */
|
||||
|
||||
struct bcma_drv_pci {
|
||||
struct bcma_device *core;
|
||||
u8 setup_done:1;
|
||||
};
|
||||
|
||||
/* Register access */
|
||||
#define pcicore_read32(pc, offset) bcma_read32((pc)->core, offset)
|
||||
#define pcicore_write32(pc, offset, val) bcma_write32((pc)->core, offset, val)
|
||||
|
||||
extern void bcma_core_pci_init(struct bcma_drv_pci *pc);
|
||||
|
||||
#endif /* LINUX_BCMA_DRIVER_PCI_H_ */
|
||||
34
include/linux/bcma/bcma_regs.h
Normal file
34
include/linux/bcma/bcma_regs.h
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
#ifndef LINUX_BCMA_REGS_H_
|
||||
#define LINUX_BCMA_REGS_H_
|
||||
|
||||
/* Agent registers (common for every core) */
|
||||
#define BCMA_IOCTL 0x0408
|
||||
#define BCMA_IOCTL_CLK 0x0001
|
||||
#define BCMA_IOCTL_FGC 0x0002
|
||||
#define BCMA_IOCTL_CORE_BITS 0x3FFC
|
||||
#define BCMA_IOCTL_PME_EN 0x4000
|
||||
#define BCMA_IOCTL_BIST_EN 0x8000
|
||||
#define BCMA_RESET_CTL 0x0800
|
||||
#define BCMA_RESET_CTL_RESET 0x0001
|
||||
|
||||
/* BCMA PCI config space registers. */
|
||||
#define BCMA_PCI_PMCSR 0x44
|
||||
#define BCMA_PCI_PE 0x100
|
||||
#define BCMA_PCI_BAR0_WIN 0x80 /* Backplane address space 0 */
|
||||
#define BCMA_PCI_BAR1_WIN 0x84 /* Backplane address space 1 */
|
||||
#define BCMA_PCI_SPROMCTL 0x88 /* SPROM control */
|
||||
#define BCMA_PCI_SPROMCTL_WE 0x10 /* SPROM write enable */
|
||||
#define BCMA_PCI_BAR1_CONTROL 0x8c /* Address space 1 burst control */
|
||||
#define BCMA_PCI_IRQS 0x90 /* PCI interrupts */
|
||||
#define BCMA_PCI_IRQMASK 0x94 /* PCI IRQ control and mask (pcirev >= 6 only) */
|
||||
#define BCMA_PCI_BACKPLANE_IRQS 0x98 /* Backplane Interrupts */
|
||||
#define BCMA_PCI_BAR0_WIN2 0xAC
|
||||
#define BCMA_PCI_GPIO_IN 0xB0 /* GPIO Input (pcirev >= 3 only) */
|
||||
#define BCMA_PCI_GPIO_OUT 0xB4 /* GPIO Output (pcirev >= 3 only) */
|
||||
#define BCMA_PCI_GPIO_OUT_ENABLE 0xB8 /* GPIO Output Enable/Disable (pcirev >= 3 only) */
|
||||
#define BCMA_PCI_GPIO_SCS 0x10 /* PCI config space bit 4 for 4306c0 slow clock source */
|
||||
#define BCMA_PCI_GPIO_HWRAD 0x20 /* PCI config space GPIO 13 for hw radio disable */
|
||||
#define BCMA_PCI_GPIO_XTAL 0x40 /* PCI config space GPIO 14 for Xtal powerup */
|
||||
#define BCMA_PCI_GPIO_PLL 0x80 /* PCI config space GPIO 15 for PLL powerdown */
|
||||
|
||||
#endif /* LINUX_BCMA_REGS_H_ */
|
||||
|
|
@ -44,8 +44,8 @@ struct can_proto {
|
|||
|
||||
/* function prototypes for the CAN networklayer core (af_can.c) */
|
||||
|
||||
extern int can_proto_register(struct can_proto *cp);
|
||||
extern void can_proto_unregister(struct can_proto *cp);
|
||||
extern int can_proto_register(const struct can_proto *cp);
|
||||
extern void can_proto_unregister(const struct can_proto *cp);
|
||||
|
||||
extern int can_rx_register(struct net_device *dev, canid_t can_id,
|
||||
canid_t mask,
|
||||
|
|
|
|||
|
|
@ -24,7 +24,10 @@ struct ethtool_cmd {
|
|||
__u32 cmd;
|
||||
__u32 supported; /* Features this interface supports */
|
||||
__u32 advertising; /* Features this interface advertises */
|
||||
__u16 speed; /* The forced speed, 10Mb, 100Mb, gigabit */
|
||||
__u16 speed; /* The forced speed (lower bits) in
|
||||
* Mbps. Please use
|
||||
* ethtool_cmd_speed()/_set() to
|
||||
* access it */
|
||||
__u8 duplex; /* Duplex, half or full */
|
||||
__u8 port; /* Which connector port */
|
||||
__u8 phy_address;
|
||||
|
|
@ -33,7 +36,10 @@ struct ethtool_cmd {
|
|||
__u8 mdio_support;
|
||||
__u32 maxtxpkt; /* Tx pkts before generating tx int */
|
||||
__u32 maxrxpkt; /* Rx pkts before generating rx int */
|
||||
__u16 speed_hi;
|
||||
__u16 speed_hi; /* The forced speed (upper
|
||||
* bits) in Mbps. Please use
|
||||
* ethtool_cmd_speed()/_set() to
|
||||
* access it */
|
||||
__u8 eth_tp_mdix;
|
||||
__u8 reserved2;
|
||||
__u32 lp_advertising; /* Features the link partner advertises */
|
||||
|
|
@ -41,14 +47,14 @@ struct ethtool_cmd {
|
|||
};
|
||||
|
||||
static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
|
||||
__u32 speed)
|
||||
__u32 speed)
|
||||
{
|
||||
|
||||
ep->speed = (__u16)speed;
|
||||
ep->speed_hi = (__u16)(speed >> 16);
|
||||
}
|
||||
|
||||
static inline __u32 ethtool_cmd_speed(struct ethtool_cmd *ep)
|
||||
static inline __u32 ethtool_cmd_speed(const struct ethtool_cmd *ep)
|
||||
{
|
||||
return (ep->speed_hi << 16) | ep->speed;
|
||||
}
|
||||
|
|
@ -229,6 +235,34 @@ struct ethtool_ringparam {
|
|||
__u32 tx_pending;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_channels - configuring number of network channel
|
||||
* @cmd: ETHTOOL_{G,S}CHANNELS
|
||||
* @max_rx: Read only. Maximum number of receive channel the driver support.
|
||||
* @max_tx: Read only. Maximum number of transmit channel the driver support.
|
||||
* @max_other: Read only. Maximum number of other channel the driver support.
|
||||
* @max_combined: Read only. Maximum number of combined channel the driver
|
||||
* support. Set of queues RX, TX or other.
|
||||
* @rx_count: Valid values are in the range 1 to the max_rx.
|
||||
* @tx_count: Valid values are in the range 1 to the max_tx.
|
||||
* @other_count: Valid values are in the range 1 to the max_other.
|
||||
* @combined_count: Valid values are in the range 1 to the max_combined.
|
||||
*
|
||||
* This can be used to configure RX, TX and other channels.
|
||||
*/
|
||||
|
||||
struct ethtool_channels {
|
||||
__u32 cmd;
|
||||
__u32 max_rx;
|
||||
__u32 max_tx;
|
||||
__u32 max_other;
|
||||
__u32 max_combined;
|
||||
__u32 rx_count;
|
||||
__u32 tx_count;
|
||||
__u32 other_count;
|
||||
__u32 combined_count;
|
||||
};
|
||||
|
||||
/* for configuring link flow control parameters */
|
||||
struct ethtool_pauseparam {
|
||||
__u32 cmd; /* ETHTOOL_{G,S}PAUSEPARAM */
|
||||
|
|
@ -380,27 +414,42 @@ struct ethtool_usrip4_spec {
|
|||
__u8 proto;
|
||||
};
|
||||
|
||||
union ethtool_flow_union {
|
||||
struct ethtool_tcpip4_spec tcp_ip4_spec;
|
||||
struct ethtool_tcpip4_spec udp_ip4_spec;
|
||||
struct ethtool_tcpip4_spec sctp_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec ah_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec esp_ip4_spec;
|
||||
struct ethtool_usrip4_spec usr_ip4_spec;
|
||||
struct ethhdr ether_spec;
|
||||
__u8 hdata[60];
|
||||
};
|
||||
|
||||
struct ethtool_flow_ext {
|
||||
__be16 vlan_etype;
|
||||
__be16 vlan_tci;
|
||||
__be32 data[2];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_rx_flow_spec - specification for RX flow filter
|
||||
* @flow_type: Type of match to perform, e.g. %TCP_V4_FLOW
|
||||
* @h_u: Flow fields to match (dependent on @flow_type)
|
||||
* @m_u: Masks for flow field bits to be ignored
|
||||
* @h_ext: Additional fields to match
|
||||
* @m_u: Masks for flow field bits to be matched
|
||||
* @m_ext: Masks for additional field bits to be matched
|
||||
* Note, all additional fields must be ignored unless @flow_type
|
||||
* includes the %FLOW_EXT flag.
|
||||
* @ring_cookie: RX ring/queue index to deliver to, or %RX_CLS_FLOW_DISC
|
||||
* if packets should be discarded
|
||||
* @location: Index of filter in hardware table
|
||||
*/
|
||||
struct ethtool_rx_flow_spec {
|
||||
__u32 flow_type;
|
||||
union {
|
||||
struct ethtool_tcpip4_spec tcp_ip4_spec;
|
||||
struct ethtool_tcpip4_spec udp_ip4_spec;
|
||||
struct ethtool_tcpip4_spec sctp_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec ah_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec esp_ip4_spec;
|
||||
struct ethtool_usrip4_spec usr_ip4_spec;
|
||||
struct ethhdr ether_spec;
|
||||
__u8 hdata[72];
|
||||
} h_u, m_u;
|
||||
union ethtool_flow_union h_u;
|
||||
struct ethtool_flow_ext h_ext;
|
||||
union ethtool_flow_union m_u;
|
||||
struct ethtool_flow_ext m_ext;
|
||||
__u64 ring_cookie;
|
||||
__u32 location;
|
||||
};
|
||||
|
|
@ -458,16 +507,10 @@ struct ethtool_rxnfc {
|
|||
|
||||
struct compat_ethtool_rx_flow_spec {
|
||||
u32 flow_type;
|
||||
union {
|
||||
struct ethtool_tcpip4_spec tcp_ip4_spec;
|
||||
struct ethtool_tcpip4_spec udp_ip4_spec;
|
||||
struct ethtool_tcpip4_spec sctp_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec ah_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec esp_ip4_spec;
|
||||
struct ethtool_usrip4_spec usr_ip4_spec;
|
||||
struct ethhdr ether_spec;
|
||||
u8 hdata[72];
|
||||
} h_u, m_u;
|
||||
union ethtool_flow_union h_u;
|
||||
struct ethtool_flow_ext h_ext;
|
||||
union ethtool_flow_union m_u;
|
||||
struct ethtool_flow_ext m_ext;
|
||||
compat_u64 ring_cookie;
|
||||
u32 location;
|
||||
};
|
||||
|
|
@ -558,6 +601,26 @@ struct ethtool_flash {
|
|||
char data[ETHTOOL_FLASH_MAX_FILENAME];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_dump - used for retrieving, setting device dump
|
||||
* @cmd: Command number - %ETHTOOL_GET_DUMP_FLAG, %ETHTOOL_GET_DUMP_DATA, or
|
||||
* %ETHTOOL_SET_DUMP
|
||||
* @version: FW version of the dump, filled in by driver
|
||||
* @flag: driver dependent flag for dump setting, filled in by driver during
|
||||
* get and filled in by ethtool for set operation
|
||||
* @len: length of dump data, used as the length of the user buffer on entry to
|
||||
* %ETHTOOL_GET_DUMP_DATA and this is returned as dump length by driver
|
||||
* for %ETHTOOL_GET_DUMP_FLAG command
|
||||
* @data: data collected for get dump data operation
|
||||
*/
|
||||
struct ethtool_dump {
|
||||
__u32 cmd;
|
||||
__u32 version;
|
||||
__u32 flag;
|
||||
__u32 len;
|
||||
__u8 data[0];
|
||||
};
|
||||
|
||||
/* for returning and changing feature sets */
|
||||
|
||||
/**
|
||||
|
|
@ -663,6 +726,22 @@ struct ethtool_rx_ntuple_list {
|
|||
unsigned int count;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_phys_id_state - indicator state for physical identification
|
||||
* @ETHTOOL_ID_INACTIVE: Physical ID indicator should be deactivated
|
||||
* @ETHTOOL_ID_ACTIVE: Physical ID indicator should be activated
|
||||
* @ETHTOOL_ID_ON: LED should be turned on (used iff %ETHTOOL_ID_ACTIVE
|
||||
* is not supported)
|
||||
* @ETHTOOL_ID_OFF: LED should be turned off (used iff %ETHTOOL_ID_ACTIVE
|
||||
* is not supported)
|
||||
*/
|
||||
enum ethtool_phys_id_state {
|
||||
ETHTOOL_ID_INACTIVE,
|
||||
ETHTOOL_ID_ACTIVE,
|
||||
ETHTOOL_ID_ON,
|
||||
ETHTOOL_ID_OFF
|
||||
};
|
||||
|
||||
struct net_device;
|
||||
|
||||
/* Some generic methods drivers may use in their ethtool_ops */
|
||||
|
|
@ -683,63 +762,131 @@ void ethtool_ntuple_flush(struct net_device *dev);
|
|||
bool ethtool_invalid_flags(struct net_device *dev, u32 data, u32 supported);
|
||||
|
||||
/**
|
||||
* ðtool_ops - Alter and report network device settings
|
||||
* get_settings: Get device-specific settings
|
||||
* set_settings: Set device-specific settings
|
||||
* get_drvinfo: Report driver information
|
||||
* get_regs: Get device registers
|
||||
* get_wol: Report whether Wake-on-Lan is enabled
|
||||
* set_wol: Turn Wake-on-Lan on or off
|
||||
* get_msglevel: Report driver message level
|
||||
* set_msglevel: Set driver message level
|
||||
* nway_reset: Restart autonegotiation
|
||||
* get_link: Get link status
|
||||
* get_eeprom: Read data from the device EEPROM
|
||||
* set_eeprom: Write data to the device EEPROM
|
||||
* get_coalesce: Get interrupt coalescing parameters
|
||||
* set_coalesce: Set interrupt coalescing parameters
|
||||
* get_ringparam: Report ring sizes
|
||||
* set_ringparam: Set ring sizes
|
||||
* get_pauseparam: Report pause parameters
|
||||
* set_pauseparam: Set pause parameters
|
||||
* get_rx_csum: Report whether receive checksums are turned on or off
|
||||
* set_rx_csum: Turn receive checksum on or off
|
||||
* get_tx_csum: Report whether transmit checksums are turned on or off
|
||||
* set_tx_csum: Turn transmit checksums on or off
|
||||
* get_sg: Report whether scatter-gather is enabled
|
||||
* set_sg: Turn scatter-gather on or off
|
||||
* get_tso: Report whether TCP segmentation offload is enabled
|
||||
* set_tso: Turn TCP segmentation offload on or off
|
||||
* get_ufo: Report whether UDP fragmentation offload is enabled
|
||||
* set_ufo: Turn UDP fragmentation offload on or off
|
||||
* self_test: Run specified self-tests
|
||||
* get_strings: Return a set of strings that describe the requested objects
|
||||
* phys_id: Identify the device
|
||||
* get_stats: Return statistics about the device
|
||||
* get_flags: get 32-bit flags bitmap
|
||||
* set_flags: set 32-bit flags bitmap
|
||||
*
|
||||
* Description:
|
||||
*
|
||||
* get_settings:
|
||||
* @get_settings is passed an ðtool_cmd to fill in. It returns
|
||||
* an negative errno or zero.
|
||||
*
|
||||
* set_settings:
|
||||
* @set_settings is passed an ðtool_cmd and should attempt to set
|
||||
* all the settings this device supports. It may return an error value
|
||||
* if something goes wrong (otherwise 0).
|
||||
*
|
||||
* get_eeprom:
|
||||
* struct ethtool_ops - optional netdev operations
|
||||
* @get_settings: Get various device settings including Ethernet link
|
||||
* settings. The @cmd parameter is expected to have been cleared
|
||||
* before get_settings is called. Returns a negative error code or
|
||||
* zero.
|
||||
* @set_settings: Set various device settings including Ethernet link
|
||||
* settings. Returns a negative error code or zero.
|
||||
* @get_drvinfo: Report driver/device information. Should only set the
|
||||
* @driver, @version, @fw_version and @bus_info fields. If not
|
||||
* implemented, the @driver and @bus_info fields will be filled in
|
||||
* according to the netdev's parent device.
|
||||
* @get_regs_len: Get buffer length required for @get_regs
|
||||
* @get_regs: Get device registers
|
||||
* @get_wol: Report whether Wake-on-Lan is enabled
|
||||
* @set_wol: Turn Wake-on-Lan on or off. Returns a negative error code
|
||||
* or zero.
|
||||
* @get_msglevel: Report driver message level. This should be the value
|
||||
* of the @msg_enable field used by netif logging functions.
|
||||
* @set_msglevel: Set driver message level
|
||||
* @nway_reset: Restart autonegotiation. Returns a negative error code
|
||||
* or zero.
|
||||
* @get_link: Report whether physical link is up. Will only be called if
|
||||
* the netdev is up. Should usually be set to ethtool_op_get_link(),
|
||||
* which uses netif_carrier_ok().
|
||||
* @get_eeprom: Read data from the device EEPROM.
|
||||
* Should fill in the magic field. Don't need to check len for zero
|
||||
* or wraparound. Fill in the data argument with the eeprom values
|
||||
* from offset to offset + len. Update len to the amount read.
|
||||
* Returns an error or zero.
|
||||
*
|
||||
* set_eeprom:
|
||||
* @set_eeprom: Write data to the device EEPROM.
|
||||
* Should validate the magic field. Don't need to check len for zero
|
||||
* or wraparound. Update len to the amount written. Returns an error
|
||||
* or zero.
|
||||
* @get_coalesce: Get interrupt coalescing parameters. Returns a negative
|
||||
* error code or zero.
|
||||
* @set_coalesce: Set interrupt coalescing parameters. Returns a negative
|
||||
* error code or zero.
|
||||
* @get_ringparam: Report ring sizes
|
||||
* @set_ringparam: Set ring sizes. Returns a negative error code or zero.
|
||||
* @get_pauseparam: Report pause parameters
|
||||
* @set_pauseparam: Set pause parameters. Returns a negative error code
|
||||
* or zero.
|
||||
* @get_rx_csum: Deprecated in favour of the netdev feature %NETIF_F_RXCSUM.
|
||||
* Report whether receive checksums are turned on or off.
|
||||
* @set_rx_csum: Deprecated in favour of generic netdev features. Turn
|
||||
* receive checksum on or off. Returns a negative error code or zero.
|
||||
* @get_tx_csum: Deprecated as redundant. Report whether transmit checksums
|
||||
* are turned on or off.
|
||||
* @set_tx_csum: Deprecated in favour of generic netdev features. Turn
|
||||
* transmit checksums on or off. Returns a egative error code or zero.
|
||||
* @get_sg: Deprecated as redundant. Report whether scatter-gather is
|
||||
* enabled.
|
||||
* @set_sg: Deprecated in favour of generic netdev features. Turn
|
||||
* scatter-gather on or off. Returns a negative error code or zero.
|
||||
* @get_tso: Deprecated as redundant. Report whether TCP segmentation
|
||||
* offload is enabled.
|
||||
* @set_tso: Deprecated in favour of generic netdev features. Turn TCP
|
||||
* segmentation offload on or off. Returns a negative error code or zero.
|
||||
* @self_test: Run specified self-tests
|
||||
* @get_strings: Return a set of strings that describe the requested objects
|
||||
* @set_phys_id: Identify the physical devices, e.g. by flashing an LED
|
||||
* attached to it. The implementation may update the indicator
|
||||
* asynchronously or synchronously, but in either case it must return
|
||||
* quickly. It is initially called with the argument %ETHTOOL_ID_ACTIVE,
|
||||
* and must either activate asynchronous updates and return zero, return
|
||||
* a negative error or return a positive frequency for synchronous
|
||||
* indication (e.g. 1 for one on/off cycle per second). If it returns
|
||||
* a frequency then it will be called again at intervals with the
|
||||
* argument %ETHTOOL_ID_ON or %ETHTOOL_ID_OFF and should set the state of
|
||||
* the indicator accordingly. Finally, it is called with the argument
|
||||
* %ETHTOOL_ID_INACTIVE and must deactivate the indicator. Returns a
|
||||
* negative error code or zero.
|
||||
* @get_ethtool_stats: Return extended statistics about the device.
|
||||
* This is only useful if the device maintains statistics not
|
||||
* included in &struct rtnl_link_stats64.
|
||||
* @begin: Function to be called before any other operation. Returns a
|
||||
* negative error code or zero.
|
||||
* @complete: Function to be called after any other operation except
|
||||
* @begin. Will be called even if the other operation failed.
|
||||
* @get_ufo: Deprecated as redundant. Report whether UDP fragmentation
|
||||
* offload is enabled.
|
||||
* @set_ufo: Deprecated in favour of generic netdev features. Turn UDP
|
||||
* fragmentation offload on or off. Returns a negative error code or zero.
|
||||
* @get_flags: Deprecated as redundant. Report features included in
|
||||
* &enum ethtool_flags that are enabled.
|
||||
* @set_flags: Deprecated in favour of generic netdev features. Turn
|
||||
* features included in &enum ethtool_flags on or off. Returns a
|
||||
* negative error code or zero.
|
||||
* @get_priv_flags: Report driver-specific feature flags.
|
||||
* @set_priv_flags: Set driver-specific feature flags. Returns a negative
|
||||
* error code or zero.
|
||||
* @get_sset_count: Get number of strings that @get_strings will write.
|
||||
* @get_rxnfc: Get RX flow classification rules. Returns a negative
|
||||
* error code or zero.
|
||||
* @set_rxnfc: Set RX flow classification rules. Returns a negative
|
||||
* error code or zero.
|
||||
* @flash_device: Write a firmware image to device's flash memory.
|
||||
* Returns a negative error code or zero.
|
||||
* @reset: Reset (part of) the device, as specified by a bitmask of
|
||||
* flags from &enum ethtool_reset_flags. Returns a negative
|
||||
* error code or zero.
|
||||
* @set_rx_ntuple: Set an RX n-tuple rule. Returns a negative error code
|
||||
* or zero.
|
||||
* @get_rx_ntuple: Deprecated.
|
||||
* @get_rxfh_indir: Get the contents of the RX flow hash indirection table.
|
||||
* Returns a negative error code or zero.
|
||||
* @set_rxfh_indir: Set the contents of the RX flow hash indirection table.
|
||||
* Returns a negative error code or zero.
|
||||
* @get_channels: Get number of channels.
|
||||
* @set_channels: Set number of channels. Returns a negative error code or
|
||||
* zero.
|
||||
* @get_dump_flag: Get dump flag indicating current dump length, version,
|
||||
* and flag of the device.
|
||||
* @get_dump_data: Get dump data.
|
||||
* @set_dump: Set dump specific flags to the device.
|
||||
*
|
||||
* All operations are optional (i.e. the function pointer may be set
|
||||
* to %NULL) and callers must take this into account. Callers must
|
||||
* hold the RTNL, except that for @get_drvinfo the caller may or may
|
||||
* not hold the RTNL.
|
||||
*
|
||||
* See the structures used by these operations for further documentation.
|
||||
*
|
||||
* See &struct net_device and &struct net_device_ops for documentation
|
||||
* of the generic netdev features interface.
|
||||
*/
|
||||
struct ethtool_ops {
|
||||
int (*get_settings)(struct net_device *, struct ethtool_cmd *);
|
||||
|
|
@ -778,7 +925,7 @@ struct ethtool_ops {
|
|||
int (*set_tso)(struct net_device *, u32);
|
||||
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
|
||||
void (*get_strings)(struct net_device *, u32 stringset, u8 *);
|
||||
int (*phys_id)(struct net_device *, u32);
|
||||
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
|
||||
void (*get_ethtool_stats)(struct net_device *,
|
||||
struct ethtool_stats *, u64 *);
|
||||
int (*begin)(struct net_device *);
|
||||
|
|
@ -802,6 +949,13 @@ struct ethtool_ops {
|
|||
struct ethtool_rxfh_indir *);
|
||||
int (*set_rxfh_indir)(struct net_device *,
|
||||
const struct ethtool_rxfh_indir *);
|
||||
void (*get_channels)(struct net_device *, struct ethtool_channels *);
|
||||
int (*set_channels)(struct net_device *, struct ethtool_channels *);
|
||||
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
|
||||
int (*get_dump_data)(struct net_device *,
|
||||
struct ethtool_dump *, void *);
|
||||
int (*set_dump)(struct net_device *, struct ethtool_dump *);
|
||||
|
||||
};
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
|
@ -870,6 +1024,11 @@ struct ethtool_ops {
|
|||
|
||||
#define ETHTOOL_GFEATURES 0x0000003a /* Get device offload settings */
|
||||
#define ETHTOOL_SFEATURES 0x0000003b /* Change device offload settings */
|
||||
#define ETHTOOL_GCHANNELS 0x0000003c /* Get no of channels */
|
||||
#define ETHTOOL_SCHANNELS 0x0000003d /* Set no of channels */
|
||||
#define ETHTOOL_SET_DUMP 0x0000003e /* Set dump settings */
|
||||
#define ETHTOOL_GET_DUMP_FLAG 0x0000003f /* Get dump settings */
|
||||
#define ETHTOOL_GET_DUMP_DATA 0x00000040 /* Get dump data */
|
||||
|
||||
/* compatibility with older code */
|
||||
#define SPARC_ETH_GSET ETHTOOL_GSET
|
||||
|
|
@ -897,6 +1056,8 @@ struct ethtool_ops {
|
|||
#define SUPPORTED_10000baseKX4_Full (1 << 18)
|
||||
#define SUPPORTED_10000baseKR_Full (1 << 19)
|
||||
#define SUPPORTED_10000baseR_FEC (1 << 20)
|
||||
#define SUPPORTED_20000baseMLD2_Full (1 << 21)
|
||||
#define SUPPORTED_20000baseKR2_Full (1 << 22)
|
||||
|
||||
/* Indicates what features are advertised by the interface. */
|
||||
#define ADVERTISED_10baseT_Half (1 << 0)
|
||||
|
|
@ -920,6 +1081,8 @@ struct ethtool_ops {
|
|||
#define ADVERTISED_10000baseKX4_Full (1 << 18)
|
||||
#define ADVERTISED_10000baseKR_Full (1 << 19)
|
||||
#define ADVERTISED_10000baseR_FEC (1 << 20)
|
||||
#define ADVERTISED_20000baseMLD2_Full (1 << 21)
|
||||
#define ADVERTISED_20000baseKR2_Full (1 << 22)
|
||||
|
||||
/* The following are all involved in forcing a particular link
|
||||
* mode for the device for setting things. When getting the
|
||||
|
|
@ -992,6 +1155,8 @@ struct ethtool_ops {
|
|||
#define IPV4_FLOW 0x10 /* hash only */
|
||||
#define IPV6_FLOW 0x11 /* hash only */
|
||||
#define ETHER_FLOW 0x12 /* spec only (ether_spec) */
|
||||
/* Flag to enable additional fields in struct ethtool_rx_flow_spec */
|
||||
#define FLOW_EXT 0x80000000
|
||||
|
||||
/* L3-L4 network traffic flow hash options */
|
||||
#define RXH_L2DA (1 << 1)
|
||||
|
|
|
|||
|
|
@ -135,6 +135,8 @@ struct sk_filter
|
|||
{
|
||||
atomic_t refcnt;
|
||||
unsigned int len; /* Number of filter blocks */
|
||||
unsigned int (*bpf_func)(const struct sk_buff *skb,
|
||||
const struct sock_filter *filter);
|
||||
struct rcu_head rcu;
|
||||
struct sock_filter insns[0];
|
||||
};
|
||||
|
|
@ -153,6 +155,80 @@ extern unsigned int sk_run_filter(const struct sk_buff *skb,
|
|||
extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk);
|
||||
extern int sk_detach_filter(struct sock *sk);
|
||||
extern int sk_chk_filter(struct sock_filter *filter, int flen);
|
||||
|
||||
#ifdef CONFIG_BPF_JIT
|
||||
extern void bpf_jit_compile(struct sk_filter *fp);
|
||||
extern void bpf_jit_free(struct sk_filter *fp);
|
||||
#define SK_RUN_FILTER(FILTER, SKB) (*FILTER->bpf_func)(SKB, FILTER->insns)
|
||||
#else
|
||||
static inline void bpf_jit_compile(struct sk_filter *fp)
|
||||
{
|
||||
}
|
||||
static inline void bpf_jit_free(struct sk_filter *fp)
|
||||
{
|
||||
}
|
||||
#define SK_RUN_FILTER(FILTER, SKB) sk_run_filter(SKB, FILTER->insns)
|
||||
#endif
|
||||
|
||||
enum {
|
||||
BPF_S_RET_K = 1,
|
||||
BPF_S_RET_A,
|
||||
BPF_S_ALU_ADD_K,
|
||||
BPF_S_ALU_ADD_X,
|
||||
BPF_S_ALU_SUB_K,
|
||||
BPF_S_ALU_SUB_X,
|
||||
BPF_S_ALU_MUL_K,
|
||||
BPF_S_ALU_MUL_X,
|
||||
BPF_S_ALU_DIV_X,
|
||||
BPF_S_ALU_AND_K,
|
||||
BPF_S_ALU_AND_X,
|
||||
BPF_S_ALU_OR_K,
|
||||
BPF_S_ALU_OR_X,
|
||||
BPF_S_ALU_LSH_K,
|
||||
BPF_S_ALU_LSH_X,
|
||||
BPF_S_ALU_RSH_K,
|
||||
BPF_S_ALU_RSH_X,
|
||||
BPF_S_ALU_NEG,
|
||||
BPF_S_LD_W_ABS,
|
||||
BPF_S_LD_H_ABS,
|
||||
BPF_S_LD_B_ABS,
|
||||
BPF_S_LD_W_LEN,
|
||||
BPF_S_LD_W_IND,
|
||||
BPF_S_LD_H_IND,
|
||||
BPF_S_LD_B_IND,
|
||||
BPF_S_LD_IMM,
|
||||
BPF_S_LDX_W_LEN,
|
||||
BPF_S_LDX_B_MSH,
|
||||
BPF_S_LDX_IMM,
|
||||
BPF_S_MISC_TAX,
|
||||
BPF_S_MISC_TXA,
|
||||
BPF_S_ALU_DIV_K,
|
||||
BPF_S_LD_MEM,
|
||||
BPF_S_LDX_MEM,
|
||||
BPF_S_ST,
|
||||
BPF_S_STX,
|
||||
BPF_S_JMP_JA,
|
||||
BPF_S_JMP_JEQ_K,
|
||||
BPF_S_JMP_JEQ_X,
|
||||
BPF_S_JMP_JGE_K,
|
||||
BPF_S_JMP_JGE_X,
|
||||
BPF_S_JMP_JGT_K,
|
||||
BPF_S_JMP_JGT_X,
|
||||
BPF_S_JMP_JSET_K,
|
||||
BPF_S_JMP_JSET_X,
|
||||
/* Ancillary data */
|
||||
BPF_S_ANC_PROTOCOL,
|
||||
BPF_S_ANC_PKTTYPE,
|
||||
BPF_S_ANC_IFINDEX,
|
||||
BPF_S_ANC_NLATTR,
|
||||
BPF_S_ANC_NLATTR_NEST,
|
||||
BPF_S_ANC_MARK,
|
||||
BPF_S_ANC_QUEUE,
|
||||
BPF_S_ANC_HATYPE,
|
||||
BPF_S_ANC_RXHASH,
|
||||
BPF_S_ANC_CPU,
|
||||
};
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __LINUX_FILTER_H__ */
|
||||
|
|
|
|||
|
|
@ -884,6 +884,15 @@ struct ieee80211_ht_cap {
|
|||
#define IEEE80211_HT_CAP_40MHZ_INTOLERANT 0x4000
|
||||
#define IEEE80211_HT_CAP_LSIG_TXOP_PROT 0x8000
|
||||
|
||||
/* 802.11n HT extended capabilities masks (for extended_ht_cap_info) */
|
||||
#define IEEE80211_HT_EXT_CAP_PCO 0x0001
|
||||
#define IEEE80211_HT_EXT_CAP_PCO_TIME 0x0006
|
||||
#define IEEE80211_HT_EXT_CAP_PCO_TIME_SHIFT 1
|
||||
#define IEEE80211_HT_EXT_CAP_MCS_FB 0x0300
|
||||
#define IEEE80211_HT_EXT_CAP_MCS_FB_SHIFT 8
|
||||
#define IEEE80211_HT_EXT_CAP_HTC_SUP 0x0400
|
||||
#define IEEE80211_HT_EXT_CAP_RD_RESPONDER 0x0800
|
||||
|
||||
/* 802.11n HT capability AMPDU settings (for ampdu_params_info) */
|
||||
#define IEEE80211_HT_AMPDU_PARM_FACTOR 0x03
|
||||
#define IEEE80211_HT_AMPDU_PARM_DENSITY 0x1C
|
||||
|
|
@ -993,6 +1002,11 @@ struct ieee80211_ht_info {
|
|||
|
||||
#define WLAN_CAPABILITY_ESS (1<<0)
|
||||
#define WLAN_CAPABILITY_IBSS (1<<1)
|
||||
|
||||
/* A mesh STA sets the ESS and IBSS capability bits to zero */
|
||||
#define WLAN_CAPABILITY_IS_MBSS(cap) \
|
||||
(!((cap) & (WLAN_CAPABILITY_ESS | WLAN_CAPABILITY_IBSS)))
|
||||
|
||||
#define WLAN_CAPABILITY_CF_POLLABLE (1<<2)
|
||||
#define WLAN_CAPABILITY_CF_POLL_REQUEST (1<<3)
|
||||
#define WLAN_CAPABILITY_PRIVACY (1<<4)
|
||||
|
|
@ -1252,9 +1266,8 @@ enum ieee80211_category {
|
|||
WLAN_CATEGORY_MULTIHOP_ACTION = 14,
|
||||
WLAN_CATEGORY_SELF_PROTECTED = 15,
|
||||
WLAN_CATEGORY_WMM = 17,
|
||||
/* TODO: remove MESH_PLINK and MESH_PATH_SEL after */
|
||||
/* mesh is updated to current 802.11s draft */
|
||||
WLAN_CATEGORY_MESH_PLINK = 30,
|
||||
/* TODO: remove MESH_PATH_SEL after mesh is updated
|
||||
* to current 802.11s draft */
|
||||
WLAN_CATEGORY_MESH_PATH_SEL = 32,
|
||||
WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
|
||||
WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
|
||||
|
|
@ -1507,6 +1520,7 @@ static inline bool ieee80211_is_robust_mgmt_frame(struct ieee80211_hdr *hdr)
|
|||
category = ((u8 *) hdr) + 24;
|
||||
return *category != WLAN_CATEGORY_PUBLIC &&
|
||||
*category != WLAN_CATEGORY_HT &&
|
||||
*category != WLAN_CATEGORY_SELF_PROTECTED &&
|
||||
*category != WLAN_CATEGORY_VENDOR_SPECIFIC;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@ int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr);
|
|||
extern struct ctl_table ether_table[];
|
||||
#endif
|
||||
|
||||
int mac_pton(const char *s, u8 *mac);
|
||||
extern ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int len);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -86,7 +86,6 @@ struct vlan_group {
|
|||
* the vlan is attached to.
|
||||
*/
|
||||
unsigned int nr_vlans;
|
||||
int killall;
|
||||
struct hlist_node hlist; /* linked list */
|
||||
struct net_device **vlan_devices_arrays[VLAN_GROUP_ARRAY_SPLIT_PARTS];
|
||||
struct rcu_head rcu;
|
||||
|
|
@ -132,7 +131,8 @@ extern u16 vlan_dev_vlan_id(const struct net_device *dev);
|
|||
|
||||
extern int __vlan_hwaccel_rx(struct sk_buff *skb, struct vlan_group *grp,
|
||||
u16 vlan_tci, int polling);
|
||||
extern bool vlan_hwaccel_do_receive(struct sk_buff **skb);
|
||||
extern bool vlan_do_receive(struct sk_buff **skb);
|
||||
extern struct sk_buff *vlan_untag(struct sk_buff *skb);
|
||||
extern gro_result_t
|
||||
vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp,
|
||||
unsigned int vlan_tci, struct sk_buff *skb);
|
||||
|
|
@ -166,13 +166,18 @@ static inline int __vlan_hwaccel_rx(struct sk_buff *skb, struct vlan_group *grp,
|
|||
return NET_XMIT_SUCCESS;
|
||||
}
|
||||
|
||||
static inline bool vlan_hwaccel_do_receive(struct sk_buff **skb)
|
||||
static inline bool vlan_do_receive(struct sk_buff **skb)
|
||||
{
|
||||
if ((*skb)->vlan_tci & VLAN_VID_MASK)
|
||||
(*skb)->pkt_type = PACKET_OTHERHOST;
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline struct sk_buff *vlan_untag(struct sk_buff *skb)
|
||||
{
|
||||
return skb;
|
||||
}
|
||||
|
||||
static inline gro_result_t
|
||||
vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp,
|
||||
unsigned int vlan_tci, struct sk_buff *skb)
|
||||
|
|
|
|||
|
|
@ -382,6 +382,23 @@ struct ssb_device_id {
|
|||
#define SSB_ANY_ID 0xFFFF
|
||||
#define SSB_ANY_REV 0xFF
|
||||
|
||||
/* Broadcom's specific AMBA core, see drivers/bcma/ */
|
||||
struct bcma_device_id {
|
||||
__u16 manuf;
|
||||
__u16 id;
|
||||
__u8 rev;
|
||||
__u8 class;
|
||||
};
|
||||
#define BCMA_CORE(_manuf, _id, _rev, _class) \
|
||||
{ .manuf = _manuf, .id = _id, .rev = _rev, .class = _class, }
|
||||
#define BCMA_CORETABLE_END \
|
||||
{ 0, },
|
||||
|
||||
#define BCMA_ANY_MANUF 0xFFFF
|
||||
#define BCMA_ANY_ID 0xFFFF
|
||||
#define BCMA_ANY_REV 0xFF
|
||||
#define BCMA_ANY_CLASS 0xFF
|
||||
|
||||
struct virtio_device_id {
|
||||
__u32 device;
|
||||
__u32 vendor;
|
||||
|
|
|
|||
|
|
@ -244,6 +244,7 @@ struct mfc_cache {
|
|||
#ifdef __KERNEL__
|
||||
struct rtmsg;
|
||||
extern int ipmr_get_route(struct net *net, struct sk_buff *skb,
|
||||
__be32 saddr, __be32 daddr,
|
||||
struct rtmsg *rtm, int nowait);
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
#define SYS_RECVMSG 17 /* sys_recvmsg(2) */
|
||||
#define SYS_ACCEPT4 18 /* sys_accept4(2) */
|
||||
#define SYS_RECVMMSG 19 /* sys_recvmmsg(2) */
|
||||
#define SYS_SENDMMSG 20 /* sys_sendmmsg(2) */
|
||||
|
||||
typedef enum {
|
||||
SS_FREE = 0, /* not allocated */
|
||||
|
|
|
|||
|
|
@ -1020,9 +1020,6 @@ struct net_device {
|
|||
* part of the usual set specified in Space.c.
|
||||
*/
|
||||
|
||||
unsigned char if_port; /* Selectable AUI, TP,..*/
|
||||
unsigned char dma; /* DMA channel */
|
||||
|
||||
unsigned long state;
|
||||
|
||||
struct list_head dev_list;
|
||||
|
|
@ -1035,7 +1032,7 @@ struct net_device {
|
|||
u32 hw_features;
|
||||
/* user-requested features */
|
||||
u32 wanted_features;
|
||||
/* VLAN feature mask */
|
||||
/* mask of features inheritable by VLAN devices */
|
||||
u32 vlan_features;
|
||||
|
||||
/* Net device feature bits; if you change something,
|
||||
|
|
@ -1066,6 +1063,8 @@ struct net_device {
|
|||
#define NETIF_F_NTUPLE (1 << 27) /* N-tuple filters supported */
|
||||
#define NETIF_F_RXHASH (1 << 28) /* Receive hashing offload */
|
||||
#define NETIF_F_RXCSUM (1 << 29) /* Receive checksumming offload */
|
||||
#define NETIF_F_NOCACHE_COPY (1 << 30) /* Use no-cache copyfromuser */
|
||||
#define NETIF_F_LOOPBACK (1 << 31) /* Enable loopback */
|
||||
|
||||
/* Segmentation offload features */
|
||||
#define NETIF_F_GSO_SHIFT 16
|
||||
|
|
@ -1079,9 +1078,9 @@ struct net_device {
|
|||
|
||||
/* Features valid for ethtool to change */
|
||||
/* = all defined minus driver/device-class-related */
|
||||
#define NETIF_F_NEVER_CHANGE (NETIF_F_HIGHDMA | NETIF_F_VLAN_CHALLENGED | \
|
||||
#define NETIF_F_NEVER_CHANGE (NETIF_F_VLAN_CHALLENGED | \
|
||||
NETIF_F_LLTX | NETIF_F_NETNS_LOCAL)
|
||||
#define NETIF_F_ETHTOOL_BITS (0x3f3fffff & ~NETIF_F_NEVER_CHANGE)
|
||||
#define NETIF_F_ETHTOOL_BITS (0xff3fffff & ~NETIF_F_NEVER_CHANGE)
|
||||
|
||||
/* List of features with software fallbacks. */
|
||||
#define NETIF_F_GSO_SOFTWARE (NETIF_F_TSO | NETIF_F_TSO_ECN | \
|
||||
|
|
@ -1095,9 +1094,14 @@ struct net_device {
|
|||
|
||||
#define NETIF_F_ALL_TSO (NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_TSO_ECN)
|
||||
|
||||
#define NETIF_F_ALL_FCOE (NETIF_F_FCOE_CRC | NETIF_F_FCOE_MTU | \
|
||||
NETIF_F_FSO)
|
||||
|
||||
#define NETIF_F_ALL_TX_OFFLOADS (NETIF_F_ALL_CSUM | NETIF_F_SG | \
|
||||
NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \
|
||||
NETIF_F_SCTP_CSUM | NETIF_F_FCOE_CRC)
|
||||
NETIF_F_HIGHDMA | \
|
||||
NETIF_F_SCTP_CSUM | \
|
||||
NETIF_F_ALL_FCOE)
|
||||
|
||||
/*
|
||||
* If one device supports one of these features, then enable them
|
||||
|
|
@ -1105,7 +1109,12 @@ struct net_device {
|
|||
*/
|
||||
#define NETIF_F_ONE_FOR_ALL (NETIF_F_GSO_SOFTWARE | NETIF_F_GSO_ROBUST | \
|
||||
NETIF_F_SG | NETIF_F_HIGHDMA | \
|
||||
NETIF_F_FRAGLIST)
|
||||
NETIF_F_FRAGLIST | NETIF_F_VLAN_CHALLENGED)
|
||||
/*
|
||||
* If one device doesn't support one of these features, then disable it
|
||||
* for all in netdev_increment_features.
|
||||
*/
|
||||
#define NETIF_F_ALL_FOR_ALL (NETIF_F_NOCACHE_COPY | NETIF_F_FSO)
|
||||
|
||||
/* changeable features with no special hardware requirements */
|
||||
#define NETIF_F_SOFT_FEATURES (NETIF_F_GSO | NETIF_F_GRO)
|
||||
|
|
@ -1134,13 +1143,16 @@ struct net_device {
|
|||
const struct header_ops *header_ops;
|
||||
|
||||
unsigned int flags; /* interface flags (a la BSD) */
|
||||
unsigned int priv_flags; /* Like 'flags' but invisible to userspace. */
|
||||
unsigned short gflags;
|
||||
unsigned int priv_flags; /* Like 'flags' but invisible to userspace. */
|
||||
unsigned short padded; /* How much padding added by alloc_netdev() */
|
||||
|
||||
unsigned char operstate; /* RFC2863 operstate */
|
||||
unsigned char link_mode; /* mapping policy to operstate */
|
||||
|
||||
unsigned char if_port; /* Selectable AUI, TP,..*/
|
||||
unsigned char dma; /* DMA channel */
|
||||
|
||||
unsigned int mtu; /* interface MTU value */
|
||||
unsigned short type; /* interface hardware type */
|
||||
unsigned short hard_header_len; /* hardware hdr length */
|
||||
|
|
@ -1281,7 +1293,9 @@ struct net_device {
|
|||
NETREG_UNREGISTERED, /* completed unregister todo */
|
||||
NETREG_RELEASED, /* called free_netdev */
|
||||
NETREG_DUMMY, /* dummy device for NAPI poll */
|
||||
} reg_state:16;
|
||||
} reg_state:8;
|
||||
|
||||
bool dismantle; /* device is going do be freed */
|
||||
|
||||
enum {
|
||||
RTNL_LINK_INITIALIZED,
|
||||
|
|
@ -2513,6 +2527,7 @@ extern struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
|
|||
extern int netdev_max_backlog;
|
||||
extern int netdev_tstamp_prequeue;
|
||||
extern int weight_p;
|
||||
extern int bpf_jit_enable;
|
||||
extern int netdev_set_master(struct net_device *dev, struct net_device *master);
|
||||
extern int netdev_set_bond_master(struct net_device *dev,
|
||||
struct net_device *master);
|
||||
|
|
@ -2550,7 +2565,9 @@ static inline u32 netdev_get_wanted_features(struct net_device *dev)
|
|||
}
|
||||
u32 netdev_increment_features(u32 all, u32 one, u32 mask);
|
||||
u32 netdev_fix_features(struct net_device *dev, u32 features);
|
||||
int __netdev_update_features(struct net_device *dev);
|
||||
void netdev_update_features(struct net_device *dev);
|
||||
void netdev_change_features(struct net_device *dev);
|
||||
|
||||
void netif_stacked_transfer_operstate(const struct net_device *rootdev,
|
||||
struct net_device *dev);
|
||||
|
|
@ -2588,13 +2605,8 @@ static inline int netif_is_bond_slave(struct net_device *dev)
|
|||
|
||||
extern struct pernet_operations __net_initdata loopback_net_ops;
|
||||
|
||||
static inline int dev_ethtool_get_settings(struct net_device *dev,
|
||||
struct ethtool_cmd *cmd)
|
||||
{
|
||||
if (!dev->ethtool_ops || !dev->ethtool_ops->get_settings)
|
||||
return -EOPNOTSUPP;
|
||||
return dev->ethtool_ops->get_settings(dev, cmd);
|
||||
}
|
||||
int dev_ethtool_get_settings(struct net_device *dev,
|
||||
struct ethtool_cmd *cmd);
|
||||
|
||||
static inline u32 dev_ethtool_get_rx_csum(struct net_device *dev)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -22,7 +22,9 @@ static inline bool ip_set_proto_with_ports(u8 proto)
|
|||
{
|
||||
switch (proto) {
|
||||
case IPPROTO_TCP:
|
||||
case IPPROTO_SCTP:
|
||||
case IPPROTO_UDP:
|
||||
case IPPROTO_UDPLITE:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -456,72 +456,60 @@ extern void xt_proto_fini(struct net *net, u_int8_t af);
|
|||
extern struct xt_table_info *xt_alloc_table_info(unsigned int size);
|
||||
extern void xt_free_table_info(struct xt_table_info *info);
|
||||
|
||||
/*
|
||||
* Per-CPU spinlock associated with per-cpu table entries, and
|
||||
* with a counter for the "reading" side that allows a recursive
|
||||
* reader to avoid taking the lock and deadlocking.
|
||||
*
|
||||
* "reading" is used by ip/arp/ip6 tables rule processing which runs per-cpu.
|
||||
* It needs to ensure that the rules are not being changed while the packet
|
||||
* is being processed. In some cases, the read lock will be acquired
|
||||
* twice on the same CPU; this is okay because of the count.
|
||||
*
|
||||
* "writing" is used when reading counters.
|
||||
* During replace any readers that are using the old tables have to complete
|
||||
* before freeing the old table. This is handled by the write locking
|
||||
* necessary for reading the counters.
|
||||
/**
|
||||
* xt_recseq - recursive seqcount for netfilter use
|
||||
*
|
||||
* Packet processing changes the seqcount only if no recursion happened
|
||||
* get_counters() can use read_seqcount_begin()/read_seqcount_retry(),
|
||||
* because we use the normal seqcount convention :
|
||||
* Low order bit set to 1 if a writer is active.
|
||||
*/
|
||||
struct xt_info_lock {
|
||||
seqlock_t lock;
|
||||
unsigned char readers;
|
||||
};
|
||||
DECLARE_PER_CPU(struct xt_info_lock, xt_info_locks);
|
||||
DECLARE_PER_CPU(seqcount_t, xt_recseq);
|
||||
|
||||
/*
|
||||
* Note: we need to ensure that preemption is disabled before acquiring
|
||||
* the per-cpu-variable, so we do it as a two step process rather than
|
||||
* using "spin_lock_bh()".
|
||||
/**
|
||||
* xt_write_recseq_begin - start of a write section
|
||||
*
|
||||
* We _also_ need to disable bottom half processing before updating our
|
||||
* nesting count, to make sure that the only kind of re-entrancy is this
|
||||
* code being called by itself: since the count+lock is not an atomic
|
||||
* operation, we can allow no races.
|
||||
*
|
||||
* _Only_ that special combination of being per-cpu and never getting
|
||||
* re-entered asynchronously means that the count is safe.
|
||||
* Begin packet processing : all readers must wait the end
|
||||
* 1) Must be called with preemption disabled
|
||||
* 2) softirqs must be disabled too (or we should use irqsafe_cpu_add())
|
||||
* Returns :
|
||||
* 1 if no recursion on this cpu
|
||||
* 0 if recursion detected
|
||||
*/
|
||||
static inline void xt_info_rdlock_bh(void)
|
||||
static inline unsigned int xt_write_recseq_begin(void)
|
||||
{
|
||||
struct xt_info_lock *lock;
|
||||
unsigned int addend;
|
||||
|
||||
local_bh_disable();
|
||||
lock = &__get_cpu_var(xt_info_locks);
|
||||
if (likely(!lock->readers++))
|
||||
write_seqlock(&lock->lock);
|
||||
/*
|
||||
* Low order bit of sequence is set if we already
|
||||
* called xt_write_recseq_begin().
|
||||
*/
|
||||
addend = (__this_cpu_read(xt_recseq.sequence) + 1) & 1;
|
||||
|
||||
/*
|
||||
* This is kind of a write_seqcount_begin(), but addend is 0 or 1
|
||||
* We dont check addend value to avoid a test and conditional jump,
|
||||
* since addend is most likely 1
|
||||
*/
|
||||
__this_cpu_add(xt_recseq.sequence, addend);
|
||||
smp_wmb();
|
||||
|
||||
return addend;
|
||||
}
|
||||
|
||||
static inline void xt_info_rdunlock_bh(void)
|
||||
{
|
||||
struct xt_info_lock *lock = &__get_cpu_var(xt_info_locks);
|
||||
|
||||
if (likely(!--lock->readers))
|
||||
write_sequnlock(&lock->lock);
|
||||
local_bh_enable();
|
||||
}
|
||||
|
||||
/*
|
||||
* The "writer" side needs to get exclusive access to the lock,
|
||||
* regardless of readers. This must be called with bottom half
|
||||
* processing (and thus also preemption) disabled.
|
||||
/**
|
||||
* xt_write_recseq_end - end of a write section
|
||||
* @addend: return value from previous xt_write_recseq_begin()
|
||||
*
|
||||
* End packet processing : all readers can proceed
|
||||
* 1) Must be called with preemption disabled
|
||||
* 2) softirqs must be disabled too (or we should use irqsafe_cpu_add())
|
||||
*/
|
||||
static inline void xt_info_wrlock(unsigned int cpu)
|
||||
static inline void xt_write_recseq_end(unsigned int addend)
|
||||
{
|
||||
write_seqlock(&per_cpu(xt_info_locks, cpu).lock);
|
||||
}
|
||||
|
||||
static inline void xt_info_wrunlock(unsigned int cpu)
|
||||
{
|
||||
write_sequnlock(&per_cpu(xt_info_locks, cpu).lock);
|
||||
/* this is kind of a write_seqcount_end(), but addend is 0 or 1 */
|
||||
smp_wmb();
|
||||
__this_cpu_add(xt_recseq.sequence, addend);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -76,6 +76,39 @@
|
|||
* below.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: Virtual interface / concurrency capabilities
|
||||
*
|
||||
* Some devices are able to operate with virtual MACs, they can have
|
||||
* more than one virtual interface. The capability handling for this
|
||||
* is a bit complex though, as there may be a number of restrictions
|
||||
* on the types of concurrency that are supported.
|
||||
*
|
||||
* To start with, each device supports the interface types listed in
|
||||
* the %NL80211_ATTR_SUPPORTED_IFTYPES attribute, but by listing the
|
||||
* types there no concurrency is implied.
|
||||
*
|
||||
* Once concurrency is desired, more attributes must be observed:
|
||||
* To start with, since some interface types are purely managed in
|
||||
* software, like the AP-VLAN type in mac80211 for example, there's
|
||||
* an additional list of these, they can be added at any time and
|
||||
* are only restricted by some semantic restrictions (e.g. AP-VLAN
|
||||
* cannot be added without a corresponding AP interface). This list
|
||||
* is exported in the %NL80211_ATTR_SOFTWARE_IFTYPES attribute.
|
||||
*
|
||||
* Further, the list of supported combinations is exported. This is
|
||||
* in the %NL80211_ATTR_INTERFACE_COMBINATIONS attribute. Basically,
|
||||
* it exports a list of "groups", and at any point in time the
|
||||
* interfaces that are currently active must fall into any one of
|
||||
* the advertised groups. Within each group, there are restrictions
|
||||
* on the number of interfaces of different types that are supported
|
||||
* and also the number of different channels, along with potentially
|
||||
* some other restrictions. See &enum nl80211_if_combination_attrs.
|
||||
*
|
||||
* All together, these attributes define the concurrency of virtual
|
||||
* interfaces that a given device supports.
|
||||
*/
|
||||
|
||||
/**
|
||||
* enum nl80211_commands - supported nl80211 commands
|
||||
*
|
||||
|
|
@ -203,6 +236,28 @@
|
|||
* @NL80211_CMD_SCAN_ABORTED: scan was aborted, for unspecified reasons,
|
||||
* partial scan results may be available
|
||||
*
|
||||
* @NL80211_CMD_START_SCHED_SCAN: start a scheduled scan at certain
|
||||
* intervals, as specified by %NL80211_ATTR_SCHED_SCAN_INTERVAL.
|
||||
* Like with normal scans, if SSIDs (%NL80211_ATTR_SCAN_SSIDS)
|
||||
* are passed, they are used in the probe requests. For
|
||||
* broadcast, a broadcast SSID must be passed (ie. an empty
|
||||
* string). If no SSID is passed, no probe requests are sent and
|
||||
* a passive scan is performed. %NL80211_ATTR_SCAN_FREQUENCIES,
|
||||
* if passed, define which channels should be scanned; if not
|
||||
* passed, all channels allowed for the current regulatory domain
|
||||
* are used. Extra IEs can also be passed from the userspace by
|
||||
* using the %NL80211_ATTR_IE attribute.
|
||||
* @NL80211_CMD_STOP_SCHED_SCAN: stop a scheduled scan
|
||||
* @NL80211_CMD_SCHED_SCAN_RESULTS: indicates that there are scheduled scan
|
||||
* results available.
|
||||
* @NL80211_CMD_SCHED_SCAN_STOPPED: indicates that the scheduled scan has
|
||||
* stopped. The driver may issue this event at any time during a
|
||||
* scheduled scan. One reason for stopping the scan is if the hardware
|
||||
* does not support starting an association or a normal scan while running
|
||||
* a scheduled scan. This event is also sent when the
|
||||
* %NL80211_CMD_STOP_SCHED_SCAN command is received or when the interface
|
||||
* is brought down while a scheduled scan was running.
|
||||
*
|
||||
* @NL80211_CMD_GET_SURVEY: get survey resuls, e.g. channel occupation
|
||||
* or noise level
|
||||
* @NL80211_CMD_NEW_SURVEY_RESULTS: survey data notification (as a reply to
|
||||
|
|
@ -410,6 +465,24 @@
|
|||
* notification. This event is used to indicate that an unprotected
|
||||
* disassociation frame was dropped when MFP is in use.
|
||||
*
|
||||
* @NL80211_CMD_NEW_PEER_CANDIDATE: Notification on the reception of a
|
||||
* beacon or probe response from a compatible mesh peer. This is only
|
||||
* sent while no station information (sta_info) exists for the new peer
|
||||
* candidate and when @NL80211_MESH_SETUP_USERSPACE_AUTH is set. On
|
||||
* reception of this notification, userspace may decide to create a new
|
||||
* station (@NL80211_CMD_NEW_STATION). To stop this notification from
|
||||
* reoccurring, the userspace authentication daemon may want to create the
|
||||
* new station with the AUTHENTICATED flag unset and maybe change it later
|
||||
* depending on the authentication result.
|
||||
*
|
||||
* @NL80211_CMD_GET_WOWLAN: get Wake-on-Wireless-LAN (WoWLAN) settings.
|
||||
* @NL80211_CMD_SET_WOWLAN: set Wake-on-Wireless-LAN (WoWLAN) settings.
|
||||
* Since wireless is more complex than wired ethernet, it supports
|
||||
* various triggers. These triggers can be configured through this
|
||||
* command with the %NL80211_ATTR_WOWLAN_TRIGGERS attribute. For
|
||||
* more background information, see
|
||||
* http://wireless.kernel.org/en/users/Documentation/WoWLAN.
|
||||
*
|
||||
* @NL80211_CMD_MAX: highest used command number
|
||||
* @__NL80211_CMD_AFTER_LAST: internal use
|
||||
*/
|
||||
|
|
@ -522,6 +595,16 @@ enum nl80211_commands {
|
|||
NL80211_CMD_UNPROT_DEAUTHENTICATE,
|
||||
NL80211_CMD_UNPROT_DISASSOCIATE,
|
||||
|
||||
NL80211_CMD_NEW_PEER_CANDIDATE,
|
||||
|
||||
NL80211_CMD_GET_WOWLAN,
|
||||
NL80211_CMD_SET_WOWLAN,
|
||||
|
||||
NL80211_CMD_START_SCHED_SCAN,
|
||||
NL80211_CMD_STOP_SCHED_SCAN,
|
||||
NL80211_CMD_SCHED_SCAN_RESULTS,
|
||||
NL80211_CMD_SCHED_SCAN_STOPPED,
|
||||
|
||||
/* add new commands above here */
|
||||
|
||||
/* used to define NL80211_CMD_MAX below */
|
||||
|
|
@ -545,6 +628,7 @@ enum nl80211_commands {
|
|||
/* source-level API compatibility */
|
||||
#define NL80211_CMD_GET_MESH_PARAMS NL80211_CMD_GET_MESH_CONFIG
|
||||
#define NL80211_CMD_SET_MESH_PARAMS NL80211_CMD_SET_MESH_CONFIG
|
||||
#define NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE NL80211_MESH_SETUP_IE
|
||||
|
||||
/**
|
||||
* enum nl80211_attrs - nl80211 netlink attributes
|
||||
|
|
@ -886,6 +970,31 @@ enum nl80211_commands {
|
|||
* changed once the mesh is active.
|
||||
* @NL80211_ATTR_MESH_CONFIG: Mesh configuration parameters, a nested attribute
|
||||
* containing attributes from &enum nl80211_meshconf_params.
|
||||
* @NL80211_ATTR_SUPPORT_MESH_AUTH: Currently, this means the underlying driver
|
||||
* allows auth frames in a mesh to be passed to userspace for processing via
|
||||
* the @NL80211_MESH_SETUP_USERSPACE_AUTH flag.
|
||||
* @NL80211_ATTR_STA_PLINK_STATE: The state of a mesh peer link as
|
||||
* defined in &enum nl80211_plink_state. Used when userspace is
|
||||
* driving the peer link management state machine.
|
||||
* @NL80211_MESH_SETUP_USERSPACE_AMPE must be enabled.
|
||||
*
|
||||
* @NL80211_ATTR_WOWLAN_SUPPORTED: indicates, as part of the wiphy capabilities,
|
||||
* the supported WoWLAN triggers
|
||||
* @NL80211_ATTR_WOWLAN_TRIGGERS: used by %NL80211_CMD_SET_WOWLAN to
|
||||
* indicate which WoW triggers should be enabled. This is also
|
||||
* used by %NL80211_CMD_GET_WOWLAN to get the currently enabled WoWLAN
|
||||
* triggers.
|
||||
|
||||
* @NL80211_ATTR_SCHED_SCAN_INTERVAL: Interval between scheduled scan
|
||||
* cycles, in msecs.
|
||||
*
|
||||
* @NL80211_ATTR_INTERFACE_COMBINATIONS: Nested attribute listing the supported
|
||||
* interface combinations. In each nested item, it contains attributes
|
||||
* defined in &enum nl80211_if_combination_attrs.
|
||||
* @NL80211_ATTR_SOFTWARE_IFTYPES: Nested attribute (just like
|
||||
* %NL80211_ATTR_SUPPORTED_IFTYPES) containing the interface types that
|
||||
* are managed in software: interfaces of these types aren't subject to
|
||||
* any restrictions in their number or combinations.
|
||||
*
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
|
|
@ -1074,6 +1183,17 @@ enum nl80211_attrs {
|
|||
NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX,
|
||||
NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX,
|
||||
|
||||
NL80211_ATTR_SUPPORT_MESH_AUTH,
|
||||
NL80211_ATTR_STA_PLINK_STATE,
|
||||
|
||||
NL80211_ATTR_WOWLAN_TRIGGERS,
|
||||
NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED,
|
||||
|
||||
NL80211_ATTR_SCHED_SCAN_INTERVAL,
|
||||
|
||||
NL80211_ATTR_INTERFACE_COMBINATIONS,
|
||||
NL80211_ATTR_SOFTWARE_IFTYPES,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
|
|
@ -1126,7 +1246,9 @@ enum nl80211_attrs {
|
|||
* @NL80211_IFTYPE_ADHOC: independent BSS member
|
||||
* @NL80211_IFTYPE_STATION: managed BSS member
|
||||
* @NL80211_IFTYPE_AP: access point
|
||||
* @NL80211_IFTYPE_AP_VLAN: VLAN interface for access points
|
||||
* @NL80211_IFTYPE_AP_VLAN: VLAN interface for access points; VLAN interfaces
|
||||
* are a bit special in that they must always be tied to a pre-existing
|
||||
* AP type interface.
|
||||
* @NL80211_IFTYPE_WDS: wireless distribution interface
|
||||
* @NL80211_IFTYPE_MONITOR: monitor interface receiving all frames
|
||||
* @NL80211_IFTYPE_MESH_POINT: mesh point
|
||||
|
|
@ -1168,6 +1290,7 @@ enum nl80211_iftype {
|
|||
* with short barker preamble
|
||||
* @NL80211_STA_FLAG_WME: station is WME/QoS capable
|
||||
* @NL80211_STA_FLAG_MFP: station uses management frame protection
|
||||
* @NL80211_STA_FLAG_AUTHENTICATED: station is authenticated
|
||||
* @NL80211_STA_FLAG_MAX: highest station flag number currently defined
|
||||
* @__NL80211_STA_FLAG_AFTER_LAST: internal use
|
||||
*/
|
||||
|
|
@ -1177,6 +1300,7 @@ enum nl80211_sta_flags {
|
|||
NL80211_STA_FLAG_SHORT_PREAMBLE,
|
||||
NL80211_STA_FLAG_WME,
|
||||
NL80211_STA_FLAG_MFP,
|
||||
NL80211_STA_FLAG_AUTHENTICATED,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_STA_FLAG_AFTER_LAST,
|
||||
|
|
@ -1221,6 +1345,36 @@ enum nl80211_rate_info {
|
|||
NL80211_RATE_INFO_MAX = __NL80211_RATE_INFO_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_sta_bss_param - BSS information collected by STA
|
||||
*
|
||||
* These attribute types are used with %NL80211_STA_INFO_BSS_PARAM
|
||||
* when getting information about the bitrate of a station.
|
||||
*
|
||||
* @__NL80211_STA_BSS_PARAM_INVALID: attribute number 0 is reserved
|
||||
* @NL80211_STA_BSS_PARAM_CTS_PROT: whether CTS protection is enabled (flag)
|
||||
* @NL80211_STA_BSS_PARAM_SHORT_PREAMBLE: whether short preamble is enabled
|
||||
* (flag)
|
||||
* @NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME: whether short slot time is enabled
|
||||
* (flag)
|
||||
* @NL80211_STA_BSS_PARAM_DTIM_PERIOD: DTIM period for beaconing (u8)
|
||||
* @NL80211_STA_BSS_PARAM_BEACON_INTERVAL: Beacon interval (u16)
|
||||
* @NL80211_STA_BSS_PARAM_MAX: highest sta_bss_param number currently defined
|
||||
* @__NL80211_STA_BSS_PARAM_AFTER_LAST: internal use
|
||||
*/
|
||||
enum nl80211_sta_bss_param {
|
||||
__NL80211_STA_BSS_PARAM_INVALID,
|
||||
NL80211_STA_BSS_PARAM_CTS_PROT,
|
||||
NL80211_STA_BSS_PARAM_SHORT_PREAMBLE,
|
||||
NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME,
|
||||
NL80211_STA_BSS_PARAM_DTIM_PERIOD,
|
||||
NL80211_STA_BSS_PARAM_BEACON_INTERVAL,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_STA_BSS_PARAM_AFTER_LAST,
|
||||
NL80211_STA_BSS_PARAM_MAX = __NL80211_STA_BSS_PARAM_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_sta_info - station information
|
||||
*
|
||||
|
|
@ -1233,7 +1387,7 @@ enum nl80211_rate_info {
|
|||
* @NL80211_STA_INFO_TX_BYTES: total transmitted bytes (u32, to this station)
|
||||
* @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm)
|
||||
* @NL80211_STA_INFO_TX_BITRATE: current unicast tx rate, nested attribute
|
||||
* containing info as possible, see &enum nl80211_sta_info_txrate.
|
||||
* containing info as possible, see &enum nl80211_rate_info
|
||||
* @NL80211_STA_INFO_RX_PACKETS: total received packet (u32, from this station)
|
||||
* @NL80211_STA_INFO_TX_PACKETS: total transmitted packets (u32, to this
|
||||
* station)
|
||||
|
|
@ -1243,8 +1397,12 @@ enum nl80211_rate_info {
|
|||
* @NL80211_STA_INFO_LLID: the station's mesh LLID
|
||||
* @NL80211_STA_INFO_PLID: the station's mesh PLID
|
||||
* @NL80211_STA_INFO_PLINK_STATE: peer link state for the station
|
||||
* (see %enum nl80211_plink_state)
|
||||
* @NL80211_STA_INFO_RX_BITRATE: last unicast data frame rx rate, nested
|
||||
* attribute, like NL80211_STA_INFO_TX_BITRATE.
|
||||
* @NL80211_STA_INFO_BSS_PARAM: current station's view of BSS, nested attribute
|
||||
* containing info as possible, see &enum nl80211_sta_bss_param
|
||||
* @NL80211_STA_INFO_CONNECTED_TIME: time since the station is last connected
|
||||
* @__NL80211_STA_INFO_AFTER_LAST: internal
|
||||
* @NL80211_STA_INFO_MAX: highest possible station info attribute
|
||||
*/
|
||||
|
|
@ -1264,6 +1422,8 @@ enum nl80211_sta_info {
|
|||
NL80211_STA_INFO_TX_FAILED,
|
||||
NL80211_STA_INFO_SIGNAL_AVG,
|
||||
NL80211_STA_INFO_RX_BITRATE,
|
||||
NL80211_STA_INFO_BSS_PARAM,
|
||||
NL80211_STA_INFO_CONNECTED_TIME,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_STA_INFO_AFTER_LAST,
|
||||
|
|
@ -1686,9 +1846,21 @@ enum nl80211_meshconf_params {
|
|||
* vendor specific path metric or disable it to use the default Airtime
|
||||
* metric.
|
||||
*
|
||||
* @NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE: A vendor specific information
|
||||
* element that vendors will use to identify the path selection methods and
|
||||
* metrics in use.
|
||||
* @NL80211_MESH_SETUP_IE: Information elements for this mesh, for instance, a
|
||||
* robust security network ie, or a vendor specific information element that
|
||||
* vendors will use to identify the path selection methods and metrics in use.
|
||||
*
|
||||
* @NL80211_MESH_SETUP_USERSPACE_AUTH: Enable this option if an authentication
|
||||
* daemon will be authenticating mesh candidates.
|
||||
*
|
||||
* @NL80211_MESH_SETUP_USERSPACE_AMPE: Enable this option if an authentication
|
||||
* daemon will be securing peer link frames. AMPE is a secured version of Mesh
|
||||
* Peering Management (MPM) and is implemented with the assistance of a
|
||||
* userspace daemon. When this flag is set, the kernel will send peer
|
||||
* management frames to a userspace daemon that will implement AMPE
|
||||
* functionality (security capabilities selection, key confirmation, and key
|
||||
* management). When the flag is unset (default), the kernel can autonomously
|
||||
* complete (unsecured) mesh peering without the need of a userspace daemon.
|
||||
*
|
||||
* @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number
|
||||
* @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use
|
||||
|
|
@ -1697,7 +1869,9 @@ enum nl80211_mesh_setup_params {
|
|||
__NL80211_MESH_SETUP_INVALID,
|
||||
NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL,
|
||||
NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC,
|
||||
NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE,
|
||||
NL80211_MESH_SETUP_IE,
|
||||
NL80211_MESH_SETUP_USERSPACE_AUTH,
|
||||
NL80211_MESH_SETUP_USERSPACE_AMPE,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_MESH_SETUP_ATTR_AFTER_LAST,
|
||||
|
|
@ -2002,4 +2176,189 @@ enum nl80211_tx_power_setting {
|
|||
NL80211_TX_POWER_FIXED,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_wowlan_packet_pattern_attr - WoWLAN packet pattern attribute
|
||||
* @__NL80211_WOWLAN_PKTPAT_INVALID: invalid number for nested attribute
|
||||
* @NL80211_WOWLAN_PKTPAT_PATTERN: the pattern, values where the mask has
|
||||
* a zero bit are ignored
|
||||
* @NL80211_WOWLAN_PKTPAT_MASK: pattern mask, must be long enough to have
|
||||
* a bit for each byte in the pattern. The lowest-order bit corresponds
|
||||
* to the first byte of the pattern, but the bytes of the pattern are
|
||||
* in a little-endian-like format, i.e. the 9th byte of the pattern
|
||||
* corresponds to the lowest-order bit in the second byte of the mask.
|
||||
* For example: The match 00:xx:00:00:xx:00:00:00:00:xx:xx:xx (where
|
||||
* xx indicates "don't care") would be represented by a pattern of
|
||||
* twelve zero bytes, and a mask of "0xed,0x07".
|
||||
* Note that the pattern matching is done as though frames were not
|
||||
* 802.11 frames but 802.3 frames, i.e. the frame is fully unpacked
|
||||
* first (including SNAP header unpacking) and then matched.
|
||||
* @NUM_NL80211_WOWLAN_PKTPAT: number of attributes
|
||||
* @MAX_NL80211_WOWLAN_PKTPAT: max attribute number
|
||||
*/
|
||||
enum nl80211_wowlan_packet_pattern_attr {
|
||||
__NL80211_WOWLAN_PKTPAT_INVALID,
|
||||
NL80211_WOWLAN_PKTPAT_MASK,
|
||||
NL80211_WOWLAN_PKTPAT_PATTERN,
|
||||
|
||||
NUM_NL80211_WOWLAN_PKTPAT,
|
||||
MAX_NL80211_WOWLAN_PKTPAT = NUM_NL80211_WOWLAN_PKTPAT - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct nl80211_wowlan_pattern_support - pattern support information
|
||||
* @max_patterns: maximum number of patterns supported
|
||||
* @min_pattern_len: minimum length of each pattern
|
||||
* @max_pattern_len: maximum length of each pattern
|
||||
*
|
||||
* This struct is carried in %NL80211_WOWLAN_TRIG_PKT_PATTERN when
|
||||
* that is part of %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED in the
|
||||
* capability information given by the kernel to userspace.
|
||||
*/
|
||||
struct nl80211_wowlan_pattern_support {
|
||||
__u32 max_patterns;
|
||||
__u32 min_pattern_len;
|
||||
__u32 max_pattern_len;
|
||||
} __attribute__((packed));
|
||||
|
||||
/**
|
||||
* enum nl80211_wowlan_triggers - WoWLAN trigger definitions
|
||||
* @__NL80211_WOWLAN_TRIG_INVALID: invalid number for nested attributes
|
||||
* @NL80211_WOWLAN_TRIG_ANY: wake up on any activity, do not really put
|
||||
* the chip into a special state -- works best with chips that have
|
||||
* support for low-power operation already (flag)
|
||||
* @NL80211_WOWLAN_TRIG_DISCONNECT: wake up on disconnect, the way disconnect
|
||||
* is detected is implementation-specific (flag)
|
||||
* @NL80211_WOWLAN_TRIG_MAGIC_PKT: wake up on magic packet (6x 0xff, followed
|
||||
* by 16 repetitions of MAC addr, anywhere in payload) (flag)
|
||||
* @NL80211_WOWLAN_TRIG_PKT_PATTERN: wake up on the specified packet patterns
|
||||
* which are passed in an array of nested attributes, each nested attribute
|
||||
* defining a with attributes from &struct nl80211_wowlan_trig_pkt_pattern.
|
||||
* Each pattern defines a wakeup packet. The matching is done on the MSDU,
|
||||
* i.e. as though the packet was an 802.3 packet, so the pattern matching
|
||||
* is done after the packet is converted to the MSDU.
|
||||
*
|
||||
* In %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED, it is a binary attribute
|
||||
* carrying a &struct nl80211_wowlan_pattern_support.
|
||||
* @NUM_NL80211_WOWLAN_TRIG: number of wake on wireless triggers
|
||||
* @MAX_NL80211_WOWLAN_TRIG: highest wowlan trigger attribute number
|
||||
*/
|
||||
enum nl80211_wowlan_triggers {
|
||||
__NL80211_WOWLAN_TRIG_INVALID,
|
||||
NL80211_WOWLAN_TRIG_ANY,
|
||||
NL80211_WOWLAN_TRIG_DISCONNECT,
|
||||
NL80211_WOWLAN_TRIG_MAGIC_PKT,
|
||||
NL80211_WOWLAN_TRIG_PKT_PATTERN,
|
||||
|
||||
/* keep last */
|
||||
NUM_NL80211_WOWLAN_TRIG,
|
||||
MAX_NL80211_WOWLAN_TRIG = NUM_NL80211_WOWLAN_TRIG - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_iface_limit_attrs - limit attributes
|
||||
* @NL80211_IFACE_LIMIT_UNSPEC: (reserved)
|
||||
* @NL80211_IFACE_LIMIT_MAX: maximum number of interfaces that
|
||||
* can be chosen from this set of interface types (u32)
|
||||
* @NL80211_IFACE_LIMIT_TYPES: nested attribute containing a
|
||||
* flag attribute for each interface type in this set
|
||||
* @NUM_NL80211_IFACE_LIMIT: number of attributes
|
||||
* @MAX_NL80211_IFACE_LIMIT: highest attribute number
|
||||
*/
|
||||
enum nl80211_iface_limit_attrs {
|
||||
NL80211_IFACE_LIMIT_UNSPEC,
|
||||
NL80211_IFACE_LIMIT_MAX,
|
||||
NL80211_IFACE_LIMIT_TYPES,
|
||||
|
||||
/* keep last */
|
||||
NUM_NL80211_IFACE_LIMIT,
|
||||
MAX_NL80211_IFACE_LIMIT = NUM_NL80211_IFACE_LIMIT - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_if_combination_attrs -- interface combination attributes
|
||||
*
|
||||
* @NL80211_IFACE_COMB_UNSPEC: (reserved)
|
||||
* @NL80211_IFACE_COMB_LIMITS: Nested attributes containing the limits
|
||||
* for given interface types, see &enum nl80211_iface_limit_attrs.
|
||||
* @NL80211_IFACE_COMB_MAXNUM: u32 attribute giving the total number of
|
||||
* interfaces that can be created in this group. This number doesn't
|
||||
* apply to interfaces purely managed in software, which are listed
|
||||
* in a separate attribute %NL80211_ATTR_INTERFACES_SOFTWARE.
|
||||
* @NL80211_IFACE_COMB_STA_AP_BI_MATCH: flag attribute specifying that
|
||||
* beacon intervals within this group must be all the same even for
|
||||
* infrastructure and AP/GO combinations, i.e. the GO(s) must adopt
|
||||
* the infrastructure network's beacon interval.
|
||||
* @NL80211_IFACE_COMB_NUM_CHANNELS: u32 attribute specifying how many
|
||||
* different channels may be used within this group.
|
||||
* @NUM_NL80211_IFACE_COMB: number of attributes
|
||||
* @MAX_NL80211_IFACE_COMB: highest attribute number
|
||||
*
|
||||
* Examples:
|
||||
* limits = [ #{STA} <= 1, #{AP} <= 1 ], matching BI, channels = 1, max = 2
|
||||
* => allows an AP and a STA that must match BIs
|
||||
*
|
||||
* numbers = [ #{AP, P2P-GO} <= 8 ], channels = 1, max = 8
|
||||
* => allows 8 of AP/GO
|
||||
*
|
||||
* numbers = [ #{STA} <= 2 ], channels = 2, max = 2
|
||||
* => allows two STAs on different channels
|
||||
*
|
||||
* numbers = [ #{STA} <= 1, #{P2P-client,P2P-GO} <= 3 ], max = 4
|
||||
* => allows a STA plus three P2P interfaces
|
||||
*
|
||||
* The list of these four possiblities could completely be contained
|
||||
* within the %NL80211_ATTR_INTERFACE_COMBINATIONS attribute to indicate
|
||||
* that any of these groups must match.
|
||||
*
|
||||
* "Combinations" of just a single interface will not be listed here,
|
||||
* a single interface of any valid interface type is assumed to always
|
||||
* be possible by itself. This means that implicitly, for each valid
|
||||
* interface type, the following group always exists:
|
||||
* numbers = [ #{<type>} <= 1 ], channels = 1, max = 1
|
||||
*/
|
||||
enum nl80211_if_combination_attrs {
|
||||
NL80211_IFACE_COMB_UNSPEC,
|
||||
NL80211_IFACE_COMB_LIMITS,
|
||||
NL80211_IFACE_COMB_MAXNUM,
|
||||
NL80211_IFACE_COMB_STA_AP_BI_MATCH,
|
||||
NL80211_IFACE_COMB_NUM_CHANNELS,
|
||||
|
||||
/* keep last */
|
||||
NUM_NL80211_IFACE_COMB,
|
||||
MAX_NL80211_IFACE_COMB = NUM_NL80211_IFACE_COMB - 1
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* enum nl80211_plink_state - state of a mesh peer link finite state machine
|
||||
*
|
||||
* @NL80211_PLINK_LISTEN: initial state, considered the implicit
|
||||
* state of non existant mesh peer links
|
||||
* @NL80211_PLINK_OPN_SNT: mesh plink open frame has been sent to
|
||||
* this mesh peer
|
||||
* @NL80211_PLINK_OPN_RCVD: mesh plink open frame has been received
|
||||
* from this mesh peer
|
||||
* @NL80211_PLINK_CNF_RCVD: mesh plink confirm frame has been
|
||||
* received from this mesh peer
|
||||
* @NL80211_PLINK_ESTAB: mesh peer link is established
|
||||
* @NL80211_PLINK_HOLDING: mesh peer link is being closed or cancelled
|
||||
* @NL80211_PLINK_BLOCKED: all frames transmitted from this mesh
|
||||
* plink are discarded
|
||||
* @NUM_NL80211_PLINK_STATES: number of peer link states
|
||||
* @MAX_NL80211_PLINK_STATES: highest numerical value of plink states
|
||||
*/
|
||||
enum nl80211_plink_state {
|
||||
NL80211_PLINK_LISTEN,
|
||||
NL80211_PLINK_OPN_SNT,
|
||||
NL80211_PLINK_OPN_RCVD,
|
||||
NL80211_PLINK_CNF_RCVD,
|
||||
NL80211_PLINK_ESTAB,
|
||||
NL80211_PLINK_HOLDING,
|
||||
NL80211_PLINK_BLOCKED,
|
||||
|
||||
/* keep last */
|
||||
NUM_NL80211_PLINK_STATES,
|
||||
MAX_NL80211_PLINK_STATES = NUM_NL80211_PLINK_STATES - 1
|
||||
};
|
||||
|
||||
#endif /* __LINUX_NL80211_H */
|
||||
|
|
|
|||
|
|
@ -588,4 +588,19 @@ struct tc_sfb_xstats {
|
|||
|
||||
#define SFB_MAX_PROB 0xFFFF
|
||||
|
||||
/* QFQ */
|
||||
enum {
|
||||
TCA_QFQ_UNSPEC,
|
||||
TCA_QFQ_WEIGHT,
|
||||
TCA_QFQ_LMAX,
|
||||
__TCA_QFQ_MAX
|
||||
};
|
||||
|
||||
#define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1)
|
||||
|
||||
struct tc_qfq_stats {
|
||||
__u32 weight;
|
||||
__u32 lmax;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
48
include/linux/rfkill-regulator.h
Normal file
48
include/linux/rfkill-regulator.h
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* rfkill-regulator.c - Regulator consumer driver for rfkill
|
||||
*
|
||||
* Copyright (C) 2009 Guiming Zhuo <gmzhuo@gmail.com>
|
||||
* Copyright (C) 2011 Antonio Ospite <ospite@studenti.unina.it>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_RFKILL_REGULATOR_H
|
||||
#define __LINUX_RFKILL_REGULATOR_H
|
||||
|
||||
/*
|
||||
* Use "vrfkill" as supply id when declaring the regulator consumer:
|
||||
*
|
||||
* static struct regulator_consumer_supply pcap_regulator_V6_consumers [] = {
|
||||
* { .dev_name = "rfkill-regulator.0", .supply = "vrfkill" },
|
||||
* };
|
||||
*
|
||||
* If you have several regulator driven rfkill, you can append a numerical id to
|
||||
* .dev_name as done above, and use the same id when declaring the platform
|
||||
* device:
|
||||
*
|
||||
* static struct rfkill_regulator_platform_data ezx_rfkill_bt_data = {
|
||||
* .name = "ezx-bluetooth",
|
||||
* .type = RFKILL_TYPE_BLUETOOTH,
|
||||
* };
|
||||
*
|
||||
* static struct platform_device a910_rfkill = {
|
||||
* .name = "rfkill-regulator",
|
||||
* .id = 0,
|
||||
* .dev = {
|
||||
* .platform_data = &ezx_rfkill_bt_data,
|
||||
* },
|
||||
* };
|
||||
*/
|
||||
|
||||
#include <linux/rfkill.h>
|
||||
|
||||
struct rfkill_regulator_platform_data {
|
||||
char *name; /* the name for the rfkill switch */
|
||||
enum rfkill_type type; /* the type as specified in rfkill.h */
|
||||
};
|
||||
|
||||
#endif /* __LINUX_RFKILL_REGULATOR_H */
|
||||
|
|
@ -391,8 +391,8 @@ struct sk_buff {
|
|||
|
||||
__u32 rxhash;
|
||||
|
||||
__u16 queue_mapping;
|
||||
kmemcheck_bitfield_begin(flags2);
|
||||
__u16 queue_mapping:16;
|
||||
#ifdef CONFIG_IPV6_NDISC_NODETYPE
|
||||
__u8 ndisc_nodetype:2;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ struct smsc911x_platform_config {
|
|||
unsigned int irq_polarity;
|
||||
unsigned int irq_type;
|
||||
unsigned int flags;
|
||||
unsigned int shift;
|
||||
phy_interface_t phy_interface;
|
||||
unsigned char mac[6];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -333,5 +333,7 @@ struct timespec;
|
|||
|
||||
extern int __sys_recvmmsg(int fd, struct mmsghdr __user *mmsg, unsigned int vlen,
|
||||
unsigned int flags, struct timespec *timeout);
|
||||
extern int __sys_sendmmsg(int fd, struct mmsghdr __user *mmsg,
|
||||
unsigned int vlen, unsigned int flags);
|
||||
#endif /* not kernel and not glibc */
|
||||
#endif /* _LINUX_SOCKET_H */
|
||||
|
|
|
|||
|
|
@ -308,7 +308,7 @@ struct ssb_bus {
|
|||
|
||||
/* ID information about the Chip. */
|
||||
u16 chip_id;
|
||||
u16 chip_rev;
|
||||
u8 chip_rev;
|
||||
u16 sprom_offset;
|
||||
u16 sprom_size; /* number of words in sprom */
|
||||
u8 chip_package;
|
||||
|
|
@ -520,6 +520,7 @@ extern int ssb_bus_may_powerdown(struct ssb_bus *bus);
|
|||
* Otherwise static always-on powercontrol will be used. */
|
||||
extern int ssb_bus_powerup(struct ssb_bus *bus, bool dynamic_pctl);
|
||||
|
||||
extern void ssb_commit_settings(struct ssb_bus *bus);
|
||||
|
||||
/* Various helper functions */
|
||||
extern u32 ssb_admatch_base(u32 adm);
|
||||
|
|
|
|||
|
|
@ -123,6 +123,8 @@
|
|||
#define SSB_CHIPCO_FLASHDATA 0x0048
|
||||
#define SSB_CHIPCO_BCAST_ADDR 0x0050
|
||||
#define SSB_CHIPCO_BCAST_DATA 0x0054
|
||||
#define SSB_CHIPCO_GPIOPULLUP 0x0058 /* Rev >= 20 only */
|
||||
#define SSB_CHIPCO_GPIOPULLDOWN 0x005C /* Rev >= 20 only */
|
||||
#define SSB_CHIPCO_GPIOIN 0x0060
|
||||
#define SSB_CHIPCO_GPIOOUT 0x0064
|
||||
#define SSB_CHIPCO_GPIOOUTEN 0x0068
|
||||
|
|
@ -131,6 +133,9 @@
|
|||
#define SSB_CHIPCO_GPIOIRQ 0x0074
|
||||
#define SSB_CHIPCO_WATCHDOG 0x0080
|
||||
#define SSB_CHIPCO_GPIOTIMER 0x0088 /* LED powersave (corerev >= 16) */
|
||||
#define SSB_CHIPCO_GPIOTIMER_OFFTIME 0x0000FFFF
|
||||
#define SSB_CHIPCO_GPIOTIMER_OFFTIME_SHIFT 0
|
||||
#define SSB_CHIPCO_GPIOTIMER_ONTIME 0xFFFF0000
|
||||
#define SSB_CHIPCO_GPIOTIMER_ONTIME_SHIFT 16
|
||||
#define SSB_CHIPCO_GPIOTOUTM 0x008C /* LED powersave (corerev >= 16) */
|
||||
#define SSB_CHIPCO_CLOCK_N 0x0090
|
||||
|
|
@ -189,8 +194,10 @@
|
|||
#define SSB_CHIPCO_CLKCTLST_HAVEALPREQ 0x00000008 /* ALP available request */
|
||||
#define SSB_CHIPCO_CLKCTLST_HAVEHTREQ 0x00000010 /* HT available request */
|
||||
#define SSB_CHIPCO_CLKCTLST_HWCROFF 0x00000020 /* Force HW clock request off */
|
||||
#define SSB_CHIPCO_CLKCTLST_HAVEHT 0x00010000 /* HT available */
|
||||
#define SSB_CHIPCO_CLKCTLST_HAVEALP 0x00020000 /* APL available */
|
||||
#define SSB_CHIPCO_CLKCTLST_HAVEALP 0x00010000 /* ALP available */
|
||||
#define SSB_CHIPCO_CLKCTLST_HAVEHT 0x00020000 /* HT available */
|
||||
#define SSB_CHIPCO_CLKCTLST_4328A0_HAVEHT 0x00010000 /* 4328a0 has reversed bits */
|
||||
#define SSB_CHIPCO_CLKCTLST_4328A0_HAVEALP 0x00020000 /* 4328a0 has reversed bits */
|
||||
#define SSB_CHIPCO_HW_WORKAROUND 0x01E4 /* Hardware workaround (rev >= 20) */
|
||||
#define SSB_CHIPCO_UART0_DATA 0x0300
|
||||
#define SSB_CHIPCO_UART0_IMR 0x0304
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@
|
|||
#define SSB_INTVEC_ENET1 0x00000040 /* Enable interrupts for enet 1 */
|
||||
#define SSB_TMSLOW 0x0F98 /* SB Target State Low */
|
||||
#define SSB_TMSLOW_RESET 0x00000001 /* Reset */
|
||||
#define SSB_TMSLOW_REJECT_22 0x00000002 /* Reject (Backplane rev 2.2) */
|
||||
#define SSB_TMSLOW_REJECT 0x00000002 /* Reject (Standard Backplane) */
|
||||
#define SSB_TMSLOW_REJECT_23 0x00000004 /* Reject (Backplane rev 2.3) */
|
||||
#define SSB_TMSLOW_CLOCK 0x00010000 /* Clock Enable */
|
||||
#define SSB_TMSLOW_FGC 0x00020000 /* Force Gated Clocks On */
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@
|
|||
#ifndef __STMMAC_PLATFORM_DATA
|
||||
#define __STMMAC_PLATFORM_DATA
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
/* platform data for platform device structure's platform_data field */
|
||||
|
||||
/* Private data for the STM on-board ethernet driver */
|
||||
|
|
|
|||
|
|
@ -610,6 +610,8 @@ asmlinkage long sys_send(int, void __user *, size_t, unsigned);
|
|||
asmlinkage long sys_sendto(int, void __user *, size_t, unsigned,
|
||||
struct sockaddr __user *, int);
|
||||
asmlinkage long sys_sendmsg(int fd, struct msghdr __user *msg, unsigned flags);
|
||||
asmlinkage long sys_sendmmsg(int fd, struct mmsghdr __user *msg,
|
||||
unsigned int vlen, unsigned flags);
|
||||
asmlinkage long sys_recv(int, void __user *, size_t, unsigned);
|
||||
asmlinkage long sys_recvfrom(int, void __user *, size_t, unsigned,
|
||||
struct sockaddr __user *, int __user *);
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ static inline unsigned int tipc_node(__u32 addr)
|
|||
* Limiting values for messages
|
||||
*/
|
||||
|
||||
#define TIPC_MAX_USER_MSG_SIZE 66000
|
||||
#define TIPC_MAX_USER_MSG_SIZE 66000U
|
||||
|
||||
/*
|
||||
* Message importance levels
|
||||
|
|
|
|||
|
|
@ -256,6 +256,8 @@ struct rndis_keepalive_c { /* IN (optionally OUT) */
|
|||
#define FLAG_RNDIS_PHYM_NOT_WIRELESS 0x0001
|
||||
#define FLAG_RNDIS_PHYM_WIRELESS 0x0002
|
||||
|
||||
/* Flags for driver_info::data */
|
||||
#define RNDIS_DRIVER_DATA_POLL_STATUS 1 /* poll status before control */
|
||||
|
||||
extern void rndis_status(struct usbnet *dev, struct urb *urb);
|
||||
extern int
|
||||
|
|
|
|||
|
|
@ -24,12 +24,26 @@
|
|||
#ifndef _LINUX_WL12XX_H
|
||||
#define _LINUX_WL12XX_H
|
||||
|
||||
/* The board reference clock values */
|
||||
/* Reference clock values */
|
||||
enum {
|
||||
WL12XX_REFCLOCK_19 = 0, /* 19.2 MHz */
|
||||
WL12XX_REFCLOCK_26 = 1, /* 26 MHz */
|
||||
WL12XX_REFCLOCK_38 = 2, /* 38.4 MHz */
|
||||
WL12XX_REFCLOCK_54 = 3, /* 54 MHz */
|
||||
WL12XX_REFCLOCK_19 = 0, /* 19.2 MHz */
|
||||
WL12XX_REFCLOCK_26 = 1, /* 26 MHz */
|
||||
WL12XX_REFCLOCK_38 = 2, /* 38.4 MHz */
|
||||
WL12XX_REFCLOCK_52 = 3, /* 52 MHz */
|
||||
WL12XX_REFCLOCK_38_XTAL = 4, /* 38.4 MHz, XTAL */
|
||||
WL12XX_REFCLOCK_26_XTAL = 5, /* 26 MHz, XTAL */
|
||||
};
|
||||
|
||||
/* TCXO clock values */
|
||||
enum {
|
||||
WL12XX_TCXOCLOCK_19_2 = 0, /* 19.2MHz */
|
||||
WL12XX_TCXOCLOCK_26 = 1, /* 26 MHz */
|
||||
WL12XX_TCXOCLOCK_38_4 = 2, /* 38.4MHz */
|
||||
WL12XX_TCXOCLOCK_52 = 3, /* 52 MHz */
|
||||
WL12XX_TCXOCLOCK_16_368 = 4, /* 16.368 MHz */
|
||||
WL12XX_TCXOCLOCK_32_736 = 5, /* 32.736 MHz */
|
||||
WL12XX_TCXOCLOCK_16_8 = 6, /* 16.8 MHz */
|
||||
WL12XX_TCXOCLOCK_33_6 = 7, /* 33.6 MHz */
|
||||
};
|
||||
|
||||
struct wl12xx_platform_data {
|
||||
|
|
@ -38,8 +52,13 @@ struct wl12xx_platform_data {
|
|||
int irq;
|
||||
bool use_eeprom;
|
||||
int board_ref_clock;
|
||||
int board_tcxo_clock;
|
||||
unsigned long platform_quirks;
|
||||
};
|
||||
|
||||
/* Platform does not support level trigger interrupts */
|
||||
#define WL12XX_PLATFORM_QUIRK_EDGE_IRQ BIT(0)
|
||||
|
||||
#ifdef CONFIG_WL12XX_PLATFORM_DATA
|
||||
|
||||
int wl12xx_set_platform_data(const struct wl12xx_platform_data *data);
|
||||
|
|
|
|||
Loading…
Reference in a new issue