You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Staging: merge staging patches into Linus's main branch
There were a number of patches that went into Linus's tree already that conflicted with other changes in the staging branch. This merge resolves those merge conflicts. Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
@@ -71,8 +71,6 @@ source "drivers/staging/asus_oled/Kconfig"
|
||||
|
||||
source "drivers/staging/panel/Kconfig"
|
||||
|
||||
source "drivers/staging/altpciechdma/Kconfig"
|
||||
|
||||
source "drivers/staging/rtl8187se/Kconfig"
|
||||
|
||||
source "drivers/staging/rtl8192su/Kconfig"
|
||||
@@ -81,20 +79,14 @@ source "drivers/staging/rtl8192u/Kconfig"
|
||||
|
||||
source "drivers/staging/rtl8192e/Kconfig"
|
||||
|
||||
source "drivers/staging/mimio/Kconfig"
|
||||
|
||||
source "drivers/staging/frontier/Kconfig"
|
||||
|
||||
source "drivers/staging/dream/Kconfig"
|
||||
|
||||
source "drivers/staging/pohmelfs/Kconfig"
|
||||
|
||||
source "drivers/staging/b3dfg/Kconfig"
|
||||
|
||||
source "drivers/staging/phison/Kconfig"
|
||||
|
||||
source "drivers/staging/p9auth/Kconfig"
|
||||
|
||||
source "drivers/staging/line6/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/vmwgfx/Kconfig"
|
||||
@@ -117,7 +109,7 @@ source "drivers/staging/hv/Kconfig"
|
||||
|
||||
source "drivers/staging/vme/Kconfig"
|
||||
|
||||
source "drivers/staging/rar/Kconfig"
|
||||
source "drivers/staging/rar_register/Kconfig"
|
||||
|
||||
source "drivers/staging/sep/Kconfig"
|
||||
|
||||
@@ -143,5 +135,9 @@ source "drivers/staging/netwave/Kconfig"
|
||||
|
||||
source "drivers/staging/sm7xx/Kconfig"
|
||||
|
||||
source "drivers/staging/dt3155/Kconfig"
|
||||
|
||||
source "drivers/staging/crystalhd/Kconfig"
|
||||
|
||||
endif # !STAGING_EXCLUDE_BUILD
|
||||
endif # STAGING
|
||||
|
||||
@@ -18,18 +18,14 @@ obj-$(CONFIG_RT2870) += rt2870/
|
||||
obj-$(CONFIG_COMEDI) += comedi/
|
||||
obj-$(CONFIG_ASUS_OLED) += asus_oled/
|
||||
obj-$(CONFIG_PANEL) += panel/
|
||||
obj-$(CONFIG_ALTERA_PCIE_CHDMA) += altpciechdma/
|
||||
obj-$(CONFIG_R8187SE) += rtl8187se/
|
||||
obj-$(CONFIG_RTL8192SU) += rtl8192su/
|
||||
obj-$(CONFIG_RTL8192U) += rtl8192u/
|
||||
obj-$(CONFIG_RTL8192E) += rtl8192e/
|
||||
obj-$(CONFIG_INPUT_MIMIO) += mimio/
|
||||
obj-$(CONFIG_TRANZPORT) += frontier/
|
||||
obj-$(CONFIG_DREAM) += dream/
|
||||
obj-$(CONFIG_POHMELFS) += pohmelfs/
|
||||
obj-$(CONFIG_B3DFG) += b3dfg/
|
||||
obj-$(CONFIG_IDE_PHISON) += phison/
|
||||
obj-$(CONFIG_PLAN9AUTH) += p9auth/
|
||||
obj-$(CONFIG_LINE6_USB) += line6/
|
||||
obj-$(CONFIG_USB_SERIAL_QUATECH2) += serqt_usb2/
|
||||
obj-$(CONFIG_USB_SERIAL_QUATECH_USB2) += quatech_usb2/
|
||||
@@ -39,7 +35,7 @@ obj-$(CONFIG_VT6656) += vt6656/
|
||||
obj-$(CONFIG_FB_UDL) += udlfb/
|
||||
obj-$(CONFIG_HYPERV) += hv/
|
||||
obj-$(CONFIG_VME_BUS) += vme/
|
||||
obj-$(CONFIG_RAR_REGISTER) += rar/
|
||||
obj-$(CONFIG_RAR_REGISTER) += rar_register/
|
||||
obj-$(CONFIG_DX_SEP) += sep/
|
||||
obj-$(CONFIG_IIO) += iio/
|
||||
obj-$(CONFIG_RAMZSWAP) += ramzswap/
|
||||
@@ -53,3 +49,5 @@ obj-$(CONFIG_WAVELAN) += wavelan/
|
||||
obj-$(CONFIG_PCMCIA_WAVELAN) += wavelan/
|
||||
obj-$(CONFIG_PCMCIA_NETWAVE) += netwave/
|
||||
obj-$(CONFIG_FB_SM7XX) += sm7xx/
|
||||
obj-$(CONFIG_DT3155) += dt3155/
|
||||
obj-$(CONFIG_CRYSTALHD) += crystalhd/
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
config ALTERA_PCIE_CHDMA
|
||||
tristate "Altera PCI Express Chaining DMA driver"
|
||||
depends on PCI
|
||||
default N
|
||||
---help---
|
||||
A reference driver that exercises the Chaining DMA logic reference
|
||||
design generated along the Altera FPGA PCI Express soft or hard core,
|
||||
only if instantiated using the MegaWizard, not the SOPC builder, of
|
||||
Quartus 8.1.
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
obj-$(CONFIG_ALTERA_PCIE_CHDMA) += altpciechdma.o
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
DONE:
|
||||
- functionality similar to logic testbench
|
||||
|
||||
TODO:
|
||||
- checkpatch.pl cleanups.
|
||||
- keep state of DMA engines.
|
||||
- keep data structure that keeps state of each transfer.
|
||||
- interrupt handler should iterate over outstanding descriptor tables.
|
||||
- complete userspace cdev to read/write using the DMA engines.
|
||||
- split off the DMA support functions in a module, re-usable by custom
|
||||
drivers.
|
||||
|
||||
Please coordinate work with, and send patches to
|
||||
Leon Woestenberg <leon@sidebranch.com>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,3 @@
|
||||
obj-$(CONFIG_ARLAN) += arlan.o
|
||||
obj-$(CONFIG_ARLAN) += arlan.o
|
||||
|
||||
arlan-objs := arlan-main.o arlan-proc.o
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 1997 Cullen Jennings
|
||||
* Copyright (C) 1998 Elmer.Joandi@ut.ee, +37-255-13500
|
||||
* Copyright (C) 1998 Elmer.Joandi@ut.ee, +37-255-13500
|
||||
* GNU General Public License applies
|
||||
*/
|
||||
|
||||
@@ -20,14 +20,14 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/io.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/etherdevice.h>
|
||||
|
||||
|
||||
//#define ARLAN_DEBUGGING 1
|
||||
/* #define ARLAN_DEBUGGING 1 */
|
||||
|
||||
#define ARLAN_PROC_INTERFACE
|
||||
#define MAX_ARLANS 4 /* not more than 4 ! */
|
||||
@@ -51,8 +51,8 @@ extern int arlan_debug;
|
||||
extern int arlan_entry_debug;
|
||||
extern int arlan_exit_debug;
|
||||
extern int testMemory;
|
||||
extern int arlan_command(struct net_device * dev, int command);
|
||||
|
||||
extern int arlan_command(struct net_device *dev, int command);
|
||||
|
||||
#define SIDUNKNOWN -1
|
||||
#define radioNodeIdUNKNOWN -1
|
||||
#define irqUNKNOWN 0
|
||||
@@ -65,22 +65,21 @@ extern int arlan_command(struct net_device * dev, int command);
|
||||
#define registrationModeUNKNOWN -1
|
||||
|
||||
|
||||
#define IFDEBUG( L ) if ( (L) & arlan_debug )
|
||||
#define ARLAN_FAKE_HDR_LEN 12
|
||||
#define IFDEBUG(L) if ((L) & arlan_debug)
|
||||
#define ARLAN_FAKE_HDR_LEN 12
|
||||
|
||||
#ifdef ARLAN_DEBUGGING
|
||||
#define DEBUG 1
|
||||
#define ARLAN_ENTRY_EXIT_DEBUGGING 1
|
||||
#define ARLAN_DEBUG(a,b) printk(KERN_DEBUG a, b)
|
||||
#define ARLAN_DEBUG(a, b) printk(KERN_DEBUG a, b)
|
||||
#else
|
||||
#define ARLAN_DEBUG(a,b)
|
||||
#define ARLAN_DEBUG(a, b)
|
||||
#endif
|
||||
|
||||
#define ARLAN_SHMEM_SIZE 0x2000
|
||||
|
||||
struct arlan_shmem
|
||||
{
|
||||
/* Header Signature */
|
||||
struct arlan_shmem {
|
||||
/* Header Signature */
|
||||
volatile char textRegion[48];
|
||||
volatile u_char resetFlag;
|
||||
volatile u_char diagnosticInfo;
|
||||
@@ -91,10 +90,10 @@ struct arlan_shmem
|
||||
volatile u_char hardwareType;
|
||||
volatile u_char majorHardwareVersion;
|
||||
volatile u_char minorHardwareVersion;
|
||||
volatile u_char radioModule;// shows EEPROM, can be overridden at 0x111
|
||||
volatile u_char defaultChannelSet; // shows EEProm, can be overriiden at 0x10A
|
||||
volatile u_char radioModule;/* shows EEPROM, can be overridden at 0x111 */
|
||||
volatile u_char defaultChannelSet; /* shows EEProm, can be overriiden at 0x10A */
|
||||
volatile u_char _2[47];
|
||||
|
||||
|
||||
/* Control/Status Block - 0x0080 */
|
||||
volatile u_char interruptInProgress; /* not used by lancpu */
|
||||
volatile u_char cntrlRegImage; /* not used by lancpu */
|
||||
@@ -113,7 +112,7 @@ struct arlan_shmem
|
||||
volatile u_char rxQuality;
|
||||
volatile u_char scrambled;
|
||||
volatile u_char _4[1];
|
||||
|
||||
|
||||
/* Transmit Status - 0x00b0 */
|
||||
volatile u_char txStatus;
|
||||
volatile u_char txAckQuality;
|
||||
@@ -151,7 +150,7 @@ struct arlan_shmem
|
||||
volatile u_short routerId;
|
||||
volatile u_char _10[9];
|
||||
volatile u_char txAttenuation;
|
||||
volatile u_char systemId[4];
|
||||
volatile u_char systemId[4];
|
||||
volatile u_short globalChecksum;
|
||||
volatile u_char _11[4];
|
||||
volatile u_short maxDatagramSize;
|
||||
@@ -207,19 +206,19 @@ struct arlan_shmem
|
||||
volatile u_char hostcpuLock;
|
||||
volatile u_char lancpuLock;
|
||||
volatile u_char resetTime[18];
|
||||
|
||||
|
||||
volatile u_char numDatagramsTransmitted[4];
|
||||
volatile u_char numReTransmissions[4];
|
||||
volatile u_char numFramesDiscarded[4];
|
||||
volatile u_char numDatagramsReceived[4];
|
||||
volatile u_char numDuplicateReceivedFrames[4];
|
||||
volatile u_char numDatagramsDiscarded[4];
|
||||
|
||||
|
||||
volatile u_short maxNumReTransmitDatagram;
|
||||
volatile u_short maxNumReTransmitFrames;
|
||||
volatile u_short maxNumConsecutiveDuplicateFrames;
|
||||
/* misaligned here so we have to go to characters */
|
||||
|
||||
|
||||
volatile u_char numBytesTransmitted[4];
|
||||
volatile u_char numBytesReceived[4];
|
||||
volatile u_char numCRCErrors[4];
|
||||
@@ -259,7 +258,7 @@ struct arlan_conf_stru {
|
||||
int channelNumber;
|
||||
int scramblingDisable;
|
||||
int txAttenuation;
|
||||
int systemId;
|
||||
int systemId;
|
||||
int maxDatagramSize;
|
||||
int maxFrameSize;
|
||||
int maxRetries;
|
||||
@@ -316,8 +315,7 @@ struct arlan_conf_stru {
|
||||
|
||||
extern struct arlan_conf_stru arlan_conf[MAX_ARLANS];
|
||||
|
||||
struct TxParam
|
||||
{
|
||||
struct TxParam {
|
||||
volatile short offset;
|
||||
volatile short length;
|
||||
volatile u_char dest[6];
|
||||
@@ -330,12 +328,12 @@ struct TxParam
|
||||
#define TX_RING_SIZE 2
|
||||
/* Information that need to be kept for each board. */
|
||||
struct arlan_private {
|
||||
struct arlan_shmem __iomem * card;
|
||||
struct arlan_shmem * conf;
|
||||
struct arlan_shmem __iomem *card;
|
||||
struct arlan_shmem *conf;
|
||||
|
||||
struct arlan_conf_stru * Conf;
|
||||
struct arlan_conf_stru *Conf;
|
||||
int bad;
|
||||
int reset;
|
||||
int reset;
|
||||
unsigned long lastReset;
|
||||
struct timer_list timer;
|
||||
struct timer_list tx_delay_timer;
|
||||
@@ -407,38 +405,38 @@ struct arlan_private {
|
||||
|
||||
#define TXBuffStart(dev) offsetof(struct arlan_shmem, txBuffer)
|
||||
#define TXBuffEnd(dev) offsetof(struct arlan_shmem, xxBuffer)
|
||||
|
||||
#define READSHM(to,from,atype) {\
|
||||
|
||||
#define READSHM(to, from, atype) {\
|
||||
atype tmp;\
|
||||
memcpy_fromio(&(tmp),&(from),sizeof(atype));\
|
||||
memcpy_fromio(&(tmp), &(from), sizeof(atype));\
|
||||
to = tmp;\
|
||||
}
|
||||
|
||||
#define READSHMEM(from,atype)\
|
||||
#define READSHMEM(from, atype)\
|
||||
atype from; \
|
||||
READSHM(from, arlan->from, atype);
|
||||
|
||||
#define WRITESHM(to,from,atype) \
|
||||
#define WRITESHM(to, from, atype) \
|
||||
{ atype tmpSHM = from;\
|
||||
memcpy_toio(&(to),&tmpSHM,sizeof(atype));\
|
||||
memcpy_toio(&(to), &tmpSHM, sizeof(atype));\
|
||||
}
|
||||
|
||||
#define DEBUGSHM(levelSHM,stringSHM,stuff,atype) \
|
||||
#define DEBUGSHM(levelSHM, stringSHM, stuff, atype) \
|
||||
{ atype tmpSHM; \
|
||||
memcpy_fromio(&tmpSHM,&(stuff),sizeof(atype));\
|
||||
IFDEBUG(levelSHM) printk(stringSHM,tmpSHM);\
|
||||
memcpy_fromio(&tmpSHM, &(stuff), sizeof(atype));\
|
||||
IFDEBUG(levelSHM) printk(stringSHM, tmpSHM);\
|
||||
}
|
||||
|
||||
#define WRITESHMB(to, val) \
|
||||
writeb(val,&(to))
|
||||
writeb(val, &(to))
|
||||
#define READSHMB(to) \
|
||||
readb(&(to))
|
||||
#define WRITESHMS(to, val) \
|
||||
writew(val,&(to))
|
||||
writew(val, &(to))
|
||||
#define READSHMS(to) \
|
||||
readw(&(to))
|
||||
#define WRITESHMI(to, val) \
|
||||
writel(val,&(to))
|
||||
writel(val, &(to))
|
||||
#define READSHMI(to) \
|
||||
readl(&(to))
|
||||
|
||||
@@ -447,51 +445,51 @@ struct arlan_private {
|
||||
|
||||
|
||||
#define registrationBad(dev)\
|
||||
( ( READSHMB(((struct arlan_private *)netdev_priv(dev))->card->registrationMode) > 0) && \
|
||||
( READSHMB(((struct arlan_private *)netdev_priv(dev))->card->registrationStatus) == 0) )
|
||||
(( READSHMB(((struct arlan_private *)netdev_priv(dev))->card->registrationMode) > 0) && \
|
||||
( READSHMB(((struct arlan_private *)netdev_priv(dev))->card->registrationStatus) == 0))
|
||||
|
||||
|
||||
#define readControlRegister(dev)\
|
||||
READSHMB(((struct arlan_private *)netdev_priv(dev))->card->cntrlRegImage)
|
||||
READSHMB(((struct arlan_private *)netdev_priv(dev))->card->cntrlRegImage)
|
||||
|
||||
#define writeControlRegister(dev, v){\
|
||||
WRITESHMB(((struct arlan_private *)netdev_priv(dev))->card->cntrlRegImage ,((v) &0xF) );\
|
||||
WRITESHMB(((struct arlan_private *)netdev_priv(dev))->card->controlRegister ,(v) );}
|
||||
#define writeControlRegister(dev, v) {\
|
||||
WRITESHMB(((struct arlan_private *)netdev_priv(dev))->card->cntrlRegImage, ((v) & 0xF));\
|
||||
WRITESHMB(((struct arlan_private *)netdev_priv(dev))->card->controlRegister, (v)); }
|
||||
|
||||
|
||||
#define arlan_interrupt_lancpu(dev) {\
|
||||
int cr; \
|
||||
\
|
||||
cr = readControlRegister(dev);\
|
||||
if (cr & ARLAN_CHANNEL_ATTENTION){ \
|
||||
if (cr & ARLAN_CHANNEL_ATTENTION) { \
|
||||
writeControlRegister(dev, (cr & ~ARLAN_CHANNEL_ATTENTION));\
|
||||
}else \
|
||||
} else \
|
||||
writeControlRegister(dev, (cr | ARLAN_CHANNEL_ATTENTION));\
|
||||
}
|
||||
|
||||
#define clearChannelAttention(dev){ \
|
||||
writeControlRegister(dev,readControlRegister(dev) & ~ARLAN_CHANNEL_ATTENTION);}
|
||||
#define clearChannelAttention(dev) { \
|
||||
writeControlRegister(dev, readControlRegister(dev) & ~ARLAN_CHANNEL_ATTENTION); }
|
||||
#define setHardwareReset(dev) {\
|
||||
writeControlRegister(dev,readControlRegister(dev) | ARLAN_RESET);}
|
||||
writeControlRegister(dev, readControlRegister(dev) | ARLAN_RESET); }
|
||||
#define clearHardwareReset(dev) {\
|
||||
writeControlRegister(dev,readControlRegister(dev) & ~ARLAN_RESET);}
|
||||
#define setInterruptEnable(dev){\
|
||||
writeControlRegister(dev,readControlRegister(dev) | ARLAN_INTERRUPT_ENABLE) ;}
|
||||
#define clearInterruptEnable(dev){\
|
||||
writeControlRegister(dev,readControlRegister(dev) & ~ARLAN_INTERRUPT_ENABLE) ;}
|
||||
#define setClearInterrupt(dev){\
|
||||
writeControlRegister(dev,readControlRegister(dev) | ARLAN_CLEAR_INTERRUPT) ;}
|
||||
#define clearClearInterrupt(dev){\
|
||||
writeControlRegister(dev,readControlRegister(dev) & ~ARLAN_CLEAR_INTERRUPT);}
|
||||
#define setPowerOff(dev){\
|
||||
writeControlRegister(dev,readControlRegister(dev) | (ARLAN_POWER && ARLAN_ACCESS));\
|
||||
writeControlRegister(dev,readControlRegister(dev) & ~ARLAN_ACCESS);}
|
||||
#define setPowerOn(dev){\
|
||||
writeControlRegister(dev,readControlRegister(dev) & ~(ARLAN_POWER)); }
|
||||
#define arlan_lock_card_access(dev){\
|
||||
writeControlRegister(dev,readControlRegister(dev) & ~ARLAN_ACCESS);}
|
||||
#define arlan_unlock_card_access(dev){\
|
||||
writeControlRegister(dev,readControlRegister(dev) | ARLAN_ACCESS ); }
|
||||
writeControlRegister(dev, readControlRegister(dev) & ~ARLAN_RESET); }
|
||||
#define setInterruptEnable(dev) {\
|
||||
writeControlRegister(dev, readControlRegister(dev) | ARLAN_INTERRUPT_ENABLE) ; }
|
||||
#define clearInterruptEnable(dev) {\
|
||||
writeControlRegister(dev, readControlRegister(dev) & ~ARLAN_INTERRUPT_ENABLE) ; }
|
||||
#define setClearInterrupt(dev) {\
|
||||
writeControlRegister(dev, readControlRegister(dev) | ARLAN_CLEAR_INTERRUPT) ; }
|
||||
#define clearClearInterrupt(dev) {\
|
||||
writeControlRegister(dev, readControlRegister(dev) & ~ARLAN_CLEAR_INTERRUPT); }
|
||||
#define setPowerOff(dev) {\
|
||||
writeControlRegister(dev, readControlRegister(dev) | (ARLAN_POWER && ARLAN_ACCESS));\
|
||||
writeControlRegister(dev, readControlRegister(dev) & ~ARLAN_ACCESS); }
|
||||
#define setPowerOn(dev) {\
|
||||
writeControlRegister(dev, readControlRegister(dev) & ~(ARLAN_POWER)); }
|
||||
#define arlan_lock_card_access(dev) {\
|
||||
writeControlRegister(dev, readControlRegister(dev) & ~ARLAN_ACCESS); }
|
||||
#define arlan_unlock_card_access(dev) {\
|
||||
writeControlRegister(dev, readControlRegister(dev) | ARLAN_ACCESS); }
|
||||
|
||||
|
||||
|
||||
@@ -525,7 +523,6 @@ struct arlan_private {
|
||||
| ARLAN_COMMAND_RESET)
|
||||
|
||||
|
||||
|
||||
#define ARLAN_DEBUG_CHAIN_LOCKS 0x00001
|
||||
#define ARLAN_DEBUG_RESET 0x00002
|
||||
#define ARLAN_DEBUG_TIMING 0x00004
|
||||
@@ -536,4 +533,3 @@ struct arlan_private {
|
||||
#define ARLAN_DEBUG_INTERRUPT 0x00080
|
||||
#define ARLAN_DEBUG_STARTUP 0x00100
|
||||
#define ARLAN_DEBUG_SHUTDOWN 0x00200
|
||||
|
||||
|
||||
@@ -52,6 +52,10 @@
|
||||
#define ASUS_OLED_DISP_HEIGHT 32
|
||||
#define ASUS_OLED_PACKET_BUF_SIZE 256
|
||||
|
||||
#define USB_VENDOR_ID_ASUS 0x0b05
|
||||
#define USB_DEVICE_ID_ASUS_LCM 0x1726
|
||||
#define USB_DEVICE_ID_ASUS_LCM2 0x175b
|
||||
|
||||
MODULE_AUTHOR("Jakub Schmidtke, sjakub@gmail.com");
|
||||
MODULE_DESCRIPTION("Asus OLED Driver v" ASUS_OLED_VERSION);
|
||||
MODULE_LICENSE("GPL");
|
||||
@@ -83,18 +87,20 @@ struct oled_dev_desc_str {
|
||||
};
|
||||
|
||||
/* table of devices that work with this driver */
|
||||
static struct usb_device_id id_table[] = {
|
||||
static const struct usb_device_id id_table[] = {
|
||||
/* Asus G1/G2 (and variants)*/
|
||||
{ USB_DEVICE(0x0b05, 0x1726) },
|
||||
{ USB_DEVICE(USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_LCM) },
|
||||
/* Asus G50V (and possibly others - G70? G71?)*/
|
||||
{ USB_DEVICE(0x0b05, 0x175b) },
|
||||
{ USB_DEVICE(USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_LCM2) },
|
||||
{ },
|
||||
};
|
||||
|
||||
/* parameters of specific devices */
|
||||
static struct oled_dev_desc_str oled_dev_desc_table[] = {
|
||||
{ 0x0b05, 0x1726, 128, PACK_MODE_G1, "G1/G2" },
|
||||
{ 0x0b05, 0x175b, 256, PACK_MODE_G50, "G50" },
|
||||
{ USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_LCM, 128, PACK_MODE_G1,
|
||||
"G1/G2" },
|
||||
{ USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_LCM2, 256, PACK_MODE_G50,
|
||||
"G50" },
|
||||
{ },
|
||||
};
|
||||
|
||||
@@ -424,6 +430,11 @@ static ssize_t odev_set_picture(struct asus_oled_dev *odev,
|
||||
|
||||
kfree(odev->buf);
|
||||
odev->buf = kmalloc(odev->buf_size, GFP_KERNEL);
|
||||
if (odev->buf == NULL) {
|
||||
odev->buf_size = 0;
|
||||
printk(ASUS_OLED_ERROR "Out of memory!\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
memset(odev->buf, 0xff, odev->buf_size);
|
||||
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
config B3DFG
|
||||
tristate "Brontes 3d Frame Framegrabber"
|
||||
depends on PCI
|
||||
default n
|
||||
---help---
|
||||
This driver provides support for the Brontes 3d Framegrabber
|
||||
PCI card.
|
||||
|
||||
To compile this driver as a module, choose M here. The module
|
||||
will be called b3dfg.
|
||||
@@ -1 +0,0 @@
|
||||
obj-$(CONFIG_B3DFG) += b3dfg.o
|
||||
@@ -1,4 +0,0 @@
|
||||
|
||||
- queue/wait buffer presents filltime results for each frame?
|
||||
- counting of dropped frames
|
||||
- review endianness
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,7 @@
|
||||
|
||||
config BATMAN_ADV
|
||||
tristate "B.A.T.M.A.N. Advanced Meshing Protocol"
|
||||
depends on PROC_FS && PACKET
|
||||
depends on PROC_FS && NET
|
||||
default n
|
||||
---help---
|
||||
|
||||
@@ -14,10 +14,10 @@ config BATMAN_ADV
|
||||
http://www.open-mesh.org/ for more information and user space
|
||||
tools.
|
||||
|
||||
config BATMAN_DEBUG
|
||||
config BATMAN_ADV_DEBUG
|
||||
bool "B.A.T.M.A.N. debugging"
|
||||
depends on BATMAN_ADV != n
|
||||
help
|
||||
---help---
|
||||
|
||||
This is an option for use by developers; most people should
|
||||
say N here. This enables compilation of support for
|
||||
|
||||
@@ -19,4 +19,4 @@
|
||||
#
|
||||
|
||||
obj-m += batman-adv.o
|
||||
batman-adv-objs := main.o proc.o send.o routing.o soft-interface.o device.o translation-table.o bitarray.o hash.o ring_buffer.o vis.o hard-interface.o aggregation.o log.o
|
||||
batman-adv-objs := main.o proc.o send.o routing.o soft-interface.o device.o translation-table.o bitarray.o hash.o ring_buffer.o vis.o hard-interface.o aggregation.o originator.o
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[state: 07-11-2009]
|
||||
[state: 06-01-2010]
|
||||
|
||||
BATMAN-ADV
|
||||
----------
|
||||
@@ -15,19 +15,6 @@ above B.A.T.M.A.N. Advanced, prominent examples are: IPv4, IPv6, DHCP, IPX.
|
||||
This is batman-advanced implemented as Linux kernel driver. It does not depend
|
||||
on any network (other) driver, and can be used on wifi as well as ethernet,
|
||||
vpn, etc ... (anything with ethernet-style layer 2).
|
||||
It compiles against and should work with Linux 2.6.20 - 2.6.31. Supporting older
|
||||
versions is not planned, but it's probably easy to backport it. If you work on a
|
||||
backport, feel free to contact us. :-)
|
||||
|
||||
COMPILE
|
||||
-------
|
||||
To compile against your currently installed kernel, just type:
|
||||
|
||||
# make
|
||||
|
||||
if you want to compile against some other kernel, use:
|
||||
|
||||
# make KERNELPATH=/path/to/kernel
|
||||
|
||||
USAGE
|
||||
-----
|
||||
@@ -73,16 +60,9 @@ When configured as server, you can get a topology snapshot of your mesh:
|
||||
|
||||
# cat /proc/net/batman-adv/vis
|
||||
|
||||
This output format is a graphviz formatted text file which can be
|
||||
processed with graphviz-tools like dot.
|
||||
The labels are similar/compatible to the ETX metric, 1.0 means perfect
|
||||
connection (100%), 2.0 means 50%, 3.0 means 33% and so on.
|
||||
|
||||
Alternatively, a JSON output format is available. The format can be set
|
||||
using by writing either "dot_draw" or "json" into the vis_format file.
|
||||
"dot_draw" is selected by default.
|
||||
|
||||
echo "json" > /proc/net/batman-adv/vis_format
|
||||
The output is in a generic raw format. Use the batctl tool (See below)
|
||||
to convert this to other formats more suitable for graphing, eg
|
||||
graphviz dot, or JSON data-interchange format.
|
||||
|
||||
In very mobile scenarios, you might want to adjust the originator
|
||||
interval to a lower value. This will make the mesh more responsive to
|
||||
@@ -96,15 +76,59 @@ To deactivate batman, do:
|
||||
|
||||
# echo "" > /proc/net/batman-adv/interfaces
|
||||
|
||||
LOGGING/DEBUGGING
|
||||
-----------------
|
||||
|
||||
All error messages, warnings and information messages are sent to the
|
||||
kernel log. Depending on your operating system distribution this can be
|
||||
read in one of a number of ways. Try using the commands: dmesg,
|
||||
logread, or looking in the files /var/log/kern.log or
|
||||
/var/log/syslog. All batman-adv messages are prefixed with
|
||||
"batman-adv:" So to see just these messages try
|
||||
|
||||
dmesg | grep batman-adv
|
||||
|
||||
When investigating problems with your mesh network it is sometimes
|
||||
necessary to see more detail debug messages. This must be enabled when
|
||||
compiling the batman-adv module. Use "make menuconfig" and enable the
|
||||
option "B.A.T.M.A.N. debugging".
|
||||
|
||||
The additional debug output is by default disabled. It can be enabled
|
||||
either at kernel module load time or during run time. To enable debug
|
||||
output at module load time, add the module parameter debug=<value>.
|
||||
<value> can take one of four values.
|
||||
|
||||
0 - All debug output disabled
|
||||
1 - Enable messages related to routing / flooding / broadcasting
|
||||
2 - Enable route or hna added / changed / deleted
|
||||
3 - Enable all messages
|
||||
|
||||
e.g.
|
||||
|
||||
modprobe batman-adv debug=2
|
||||
|
||||
will load the module and enable debug messages for when routes or HNAs
|
||||
change.
|
||||
|
||||
The debug output can also be changed at runtime using the file
|
||||
/sys/module/batman-adv/parameters/debug. e.g.
|
||||
|
||||
echo 2 > /sys/module/batman-adv/parameters/debug
|
||||
|
||||
enables debug messages for when routes or HNAs
|
||||
|
||||
The debug output is sent to the kernel logs. So try dmesg, logread etc
|
||||
to see the debug messages.
|
||||
|
||||
BATCTL
|
||||
------
|
||||
|
||||
B.A.T.M.A.N. advanced operates on layer 2 and thus all hosts partici-
|
||||
pating in the virtual switch are completely transparent for all proto-
|
||||
cols above layer 2. Therefore the common diagnosis tools do not work as
|
||||
expected. To overcome these problems batctl was created. At the moment
|
||||
the batctl contains ping, traceroute, tcpdump and interfaces to the
|
||||
kernel module settings.
|
||||
B.A.T.M.A.N. advanced operates on layer 2 and thus all hosts
|
||||
participating in the virtual switch are completely transparent for all
|
||||
protocols above layer 2. Therefore the common diagnosis tools do not
|
||||
work as expected. To overcome these problems batctl was created. At
|
||||
the moment the batctl contains ping, traceroute, tcpdump and
|
||||
interfaces to the kernel module settings.
|
||||
|
||||
For more information, please see the manpage (man batctl).
|
||||
|
||||
|
||||
@@ -17,30 +17,6 @@
|
||||
-> transtable_global (read-only) [outputs the global translation table]
|
||||
-> transtable_local (read-only) [outputs the local translation table]
|
||||
|
||||
=> vis "raw" data output
|
||||
* the raw format shall replace dot draw / json to offer a neutral that can
|
||||
* be converted
|
||||
* the format (comma seperated entries):
|
||||
-> "mac" -> mac address of an originator (each line begins with it)
|
||||
-> "TQ mac value" -> src mac's link quality towards mac address
|
||||
-> "HNA mac" -> HNA announced by source mac
|
||||
-> "PRIMARY" -> this is a primary interface
|
||||
-> "SEC mac" -> secondary mac address of source (requires preceeding
|
||||
-> PRIMARY)
|
||||
|
||||
=> logging
|
||||
* the log level LOG_TYPE_CRIT, LOG_TYPE_WARN & LOG_TYPE_NOTICE will be
|
||||
* unified to use printk
|
||||
* LOG_TYPE_BATMAN & LOG_TYPE_ROUTES will also use printk but only after the
|
||||
* internal debug level has been raised
|
||||
* the internal debug level can be modified using a module parameter (debug)
|
||||
* or at run time via /sys/module/batman-adv/parameters/debug
|
||||
* make use of printk %pM support instead of converting mac addresses
|
||||
* manually
|
||||
|
||||
=> strip out all backward compatibility support to older kernels
|
||||
(only found in compat.h)
|
||||
|
||||
=> fix checkpatch.pl errors
|
||||
|
||||
Please send all patches to:
|
||||
|
||||
@@ -96,6 +96,7 @@ static void new_aggregated_packet(unsigned char *packet_buff,
|
||||
int own_packet)
|
||||
{
|
||||
struct forw_packet *forw_packet_aggr;
|
||||
unsigned long flags;
|
||||
|
||||
forw_packet_aggr = kmalloc(sizeof(struct forw_packet), GFP_ATOMIC);
|
||||
if (!forw_packet_aggr)
|
||||
@@ -115,6 +116,7 @@ static void new_aggregated_packet(unsigned char *packet_buff,
|
||||
packet_buff,
|
||||
forw_packet_aggr->packet_len);
|
||||
|
||||
forw_packet_aggr->skb = NULL;
|
||||
forw_packet_aggr->own = own_packet;
|
||||
forw_packet_aggr->if_incoming = if_incoming;
|
||||
forw_packet_aggr->num_packets = 0;
|
||||
@@ -126,9 +128,9 @@ static void new_aggregated_packet(unsigned char *packet_buff,
|
||||
forw_packet_aggr->direct_link_flags |= 1;
|
||||
|
||||
/* add new packet to packet list */
|
||||
spin_lock(&forw_bat_list_lock);
|
||||
spin_lock_irqsave(&forw_bat_list_lock, flags);
|
||||
hlist_add_head(&forw_packet_aggr->list, &forw_bat_list);
|
||||
spin_unlock(&forw_bat_list_lock);
|
||||
spin_unlock_irqrestore(&forw_bat_list_lock, flags);
|
||||
|
||||
/* start timer for this packet */
|
||||
INIT_DELAYED_WORK(&forw_packet_aggr->delayed_work,
|
||||
@@ -168,9 +170,10 @@ void add_bat_packet_to_list(unsigned char *packet_buff, int packet_len,
|
||||
struct batman_packet *batman_packet =
|
||||
(struct batman_packet *)packet_buff;
|
||||
bool direct_link = batman_packet->flags & DIRECTLINK ? 1 : 0;
|
||||
unsigned long flags;
|
||||
|
||||
/* find position for the packet in the forward queue */
|
||||
spin_lock(&forw_bat_list_lock);
|
||||
spin_lock_irqsave(&forw_bat_list_lock, flags);
|
||||
/* own packets are not to be aggregated */
|
||||
if ((atomic_read(&aggregation_enabled)) && (!own_packet)) {
|
||||
hlist_for_each_entry(forw_packet_pos, tmp_node, &forw_bat_list,
|
||||
@@ -191,7 +194,7 @@ void add_bat_packet_to_list(unsigned char *packet_buff, int packet_len,
|
||||
* suitable aggregation packet found */
|
||||
if (forw_packet_aggr == NULL) {
|
||||
/* the following section can run without the lock */
|
||||
spin_unlock(&forw_bat_list_lock);
|
||||
spin_unlock_irqrestore(&forw_bat_list_lock, flags);
|
||||
new_aggregated_packet(packet_buff, packet_len,
|
||||
send_time, direct_link,
|
||||
if_incoming, own_packet);
|
||||
@@ -199,7 +202,7 @@ void add_bat_packet_to_list(unsigned char *packet_buff, int packet_len,
|
||||
aggregate(forw_packet_aggr,
|
||||
packet_buff, packet_len,
|
||||
direct_link);
|
||||
spin_unlock(&forw_bat_list_lock);
|
||||
spin_unlock_irqrestore(&forw_bat_list_lock, flags);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
|
||||
#include "main.h"
|
||||
#include "bitarray.h"
|
||||
#include "log.h"
|
||||
|
||||
/* returns true if the corresponding bit in the given seq_bits indicates true
|
||||
* and curr_seqno is within range of last_seqno */
|
||||
@@ -80,8 +79,8 @@ void bit_shift(TYPE_OF_WORD *seq_bits, int32_t n)
|
||||
* from.
|
||||
*
|
||||
* left is high, right is low: FEDC BA98 7654 3210
|
||||
* ^^ ^^
|
||||
* vvvv
|
||||
* ^^ ^^
|
||||
* vvvv
|
||||
* ^^^^ = from, vvvvv =to, we'd have word_num==1 and
|
||||
* word_offset==WORD_BIT_SIZE/2 ????? in this example.
|
||||
* (=24 bits)
|
||||
@@ -133,13 +132,13 @@ char bit_get_packet(TYPE_OF_WORD *seq_bits, int16_t seq_num_diff,
|
||||
(seq_num_diff < -TQ_LOCAL_WINDOW_SIZE)) {
|
||||
|
||||
if (seq_num_diff > TQ_LOCAL_WINDOW_SIZE)
|
||||
debug_log(LOG_TYPE_BATMAN,
|
||||
"We missed a lot of packets (%i) !\n",
|
||||
seq_num_diff-1);
|
||||
bat_dbg(DBG_BATMAN,
|
||||
"We missed a lot of packets (%i) !\n",
|
||||
seq_num_diff-1);
|
||||
|
||||
if (-seq_num_diff > TQ_LOCAL_WINDOW_SIZE)
|
||||
debug_log(LOG_TYPE_BATMAN,
|
||||
"Other host probably restarted !\n");
|
||||
bat_dbg(DBG_BATMAN,
|
||||
"Other host probably restarted !\n");
|
||||
|
||||
for (i = 0; i < NUM_WORDS; i++)
|
||||
seq_bits[i] = 0;
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2007-2009 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301, USA
|
||||
*
|
||||
*
|
||||
* This file contains macros for maintaining compatibility with older versions
|
||||
* of the Linux kernel.
|
||||
*/
|
||||
|
||||
#include <linux/version.h> /* LINUX_VERSION_CODE */
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22)
|
||||
|
||||
#define skb_set_network_header(_skb, _offset) \
|
||||
do { (_skb)->nh.raw = (_skb)->data + (_offset); } while (0)
|
||||
|
||||
#define skb_reset_mac_header(_skb) \
|
||||
do { (_skb)->mac.raw = (_skb)->data; } while (0)
|
||||
|
||||
#define list_first_entry(ptr, type, member) \
|
||||
list_entry((ptr)->next, type, member)
|
||||
|
||||
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22) */
|
||||
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26)
|
||||
|
||||
#define device_create(_cls, _parent, _devt, _device, _fmt) \
|
||||
class_device_create(_cls, _parent, _devt, _device, _fmt)
|
||||
|
||||
#define device_destroy(_cls, _device) \
|
||||
class_device_destroy(_cls, _device)
|
||||
|
||||
#else
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27)
|
||||
|
||||
#define device_create(_cls, _parent, _devt, _device, _fmt) \
|
||||
device_create_drvdata(_cls, _parent, _devt, _device, _fmt)
|
||||
|
||||
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27) */
|
||||
|
||||
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26) */
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 23)
|
||||
|
||||
#define cancel_delayed_work_sync(wq) cancel_rearming_delayed_work(wq)
|
||||
|
||||
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 23) */
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 25)
|
||||
#define strict_strtoul(cp, base, res) \
|
||||
({ \
|
||||
int ret = 0; \
|
||||
char *endp; \
|
||||
*res = simple_strtoul(cp, &endp, base); \
|
||||
if (cp == endp) \
|
||||
ret = -EINVAL; \
|
||||
ret; \
|
||||
})
|
||||
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 25) */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user