Skip to content

Commit

Permalink
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/ker…
Browse files Browse the repository at this point in the history
…nel/git/jgarzik/netdev-2.6

* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (35 commits)
  xen-netfront: rearrange netfront structure to separate tx and rx
  netdev: convert non-obvious instances to use ARRAY_SIZE()
  ucc_geth: Fix build break introduced by commit 09f75cd
  gianfar: Fix regression caused by new napi interface
  gianfar: Cleanup compile warning caused by 0795af5
  gianfar: Fix compile regression caused by bea3348
  add new prom.h for AU1x00
  update AU1000 get_ethernet_addr()
  MIPSsim: General cleanup
  Jazzsonic: Fix warning about unused variable.
  Remove msic_dcr_read() in axon_msi.c
  Use dcr_host_t.base in dcr_unmap()
  Add dcr_host_t.base in dcr_read()/dcr_write()
  Use dcr_host_t.base in ibm_emac_mal
  Update ibm_newemac to use dcr_host_t.base
  tehuti: possible leak in bdx_probe
  TC35815: Fix build
  SAA9730: Fix build
  AR7 ethernet
  myri10ge: update driver version to 1.3.2-1.287
  ...
  • Loading branch information
Linus Torvalds committed Oct 15, 2007
2 parents 63bd8c4 + 84284d3 commit 43d39ae
Show file tree
Hide file tree
Showing 51 changed files with 1,914 additions and 325 deletions.
33 changes: 33 additions & 0 deletions Documentation/networking/bonding.txt
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,39 @@ downdelay
will be rounded down to the nearest multiple. The default
value is 0.

fail_over_mac

Specifies whether active-backup mode should set all slaves to
the same MAC address (the traditional behavior), or, when
enabled, change the bond's MAC address when changing the
active interface (i.e., fail over the MAC address itself).

Fail over MAC is useful for devices that cannot ever alter
their MAC address, or for devices that refuse incoming
broadcasts with their own source MAC (which interferes with
the ARP monitor).

The down side of fail over MAC is that every device on the
network must be updated via gratuitous ARP, vs. just updating
a switch or set of switches (which often takes place for any
traffic, not just ARP traffic, if the switch snoops incoming
traffic to update its tables) for the traditional method. If
the gratuitous ARP is lost, communication may be disrupted.

When fail over MAC is used in conjuction with the mii monitor,
devices which assert link up prior to being able to actually
transmit and receive are particularly susecptible to loss of
the gratuitous ARP, and an appropriate updelay setting may be
required.

A value of 0 disables fail over MAC, and is the default. A
value of 1 enables fail over MAC. This option is enabled
automatically if the first slave added cannot change its MAC
address. This option may be modified via sysfs only when no
slaves are present in the bond.

This option was added in bonding version 3.2.0.

lacp_rate

Option specifying the rate in which we'll ask our link partner
Expand Down
61 changes: 26 additions & 35 deletions arch/mips/au1000/common/prom.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,26 +33,23 @@
* with this program; if not, write to the Free Software Foundation, Inc.,
* 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/string.h>

#include <asm/bootinfo.h>

/* #define DEBUG_CMDLINE */

extern int prom_argc;
extern char **prom_argv, **prom_envp;

int prom_argc;
char **prom_argv;
char **prom_envp;

char * __init_or_module prom_getcmdline(void)
{
return &(arcs_cmdline[0]);
}

void prom_init_cmdline(void)
void prom_init_cmdline(void)
{
char *cp;
int actr;
Expand All @@ -61,7 +58,7 @@ void prom_init_cmdline(void)

cp = &(arcs_cmdline[0]);
while(actr < prom_argc) {
strcpy(cp, prom_argv[actr]);
strcpy(cp, prom_argv[actr]);
cp += strlen(prom_argv[actr]);
*cp++ = ' ';
actr++;
Expand All @@ -70,10 +67,8 @@ void prom_init_cmdline(void)
--cp;
if (prom_argc > 1)
*cp = '\0';

}


char *prom_getenv(char *envname)
{
/*
Expand All @@ -95,21 +90,23 @@ char *prom_getenv(char *envname)
}
env++;
}

return NULL;
}

inline unsigned char str2hexnum(unsigned char c)
static inline unsigned char str2hexnum(unsigned char c)
{
if(c >= '0' && c <= '9')
if (c >= '0' && c <= '9')
return c - '0';
if(c >= 'a' && c <= 'f')
if (c >= 'a' && c <= 'f')
return c - 'a' + 10;
if(c >= 'A' && c <= 'F')
if (c >= 'A' && c <= 'F')
return c - 'A' + 10;

return 0; /* foo */
}

inline void str2eaddr(unsigned char *ea, unsigned char *str)
static inline void str2eaddr(unsigned char *ea, unsigned char *str)
{
int i;

Expand All @@ -124,35 +121,29 @@ inline void str2eaddr(unsigned char *ea, unsigned char *str)
}
}

int get_ethernet_addr(char *ethernet_addr)
int prom_get_ethernet_addr(char *ethernet_addr)
{
char *ethaddr_str;
char *ethaddr_str;
char *argptr;

ethaddr_str = prom_getenv("ethaddr");
/* Check the environment variables first */
ethaddr_str = prom_getenv("ethaddr");
if (!ethaddr_str) {
printk("ethaddr not set in boot prom\n");
return -1;
}
str2eaddr(ethernet_addr, ethaddr_str);

#if 0
{
int i;
/* Check command line */
argptr = prom_getcmdline();
ethaddr_str = strstr(argptr, "ethaddr=");
if (!ethaddr_str)
return -1;

printk("get_ethernet_addr: ");
for (i=0; i<5; i++)
printk("%02x:", (unsigned char)*(ethernet_addr+i));
printk("%02x\n", *(ethernet_addr+i));
ethaddr_str += strlen("ethaddr=");
}
#endif

str2eaddr(ethernet_addr, ethaddr_str);

return 0;
}
EXPORT_SYMBOL(prom_get_ethernet_addr);

void __init prom_free_prom_memory(void)
{
}

EXPORT_SYMBOL(prom_getcmdline);
EXPORT_SYMBOL(get_ethernet_addr);
EXPORT_SYMBOL(str2eaddr);
5 changes: 3 additions & 2 deletions arch/mips/au1000/common/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,11 @@
#include <asm/mipsregs.h>
#include <asm/reboot.h>
#include <asm/pgtable.h>
#include <asm/mach-au1x00/au1000.h>
#include <asm/time.h>

extern char * prom_getcmdline(void);
#include <au1000.h>
#include <prom.h>

extern void __init board_setup(void);
extern void au1000_restart(char *);
extern void au1000_halt(void);
Expand Down
10 changes: 4 additions & 6 deletions arch/mips/au1000/db1x00/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,13 @@
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/bootmem.h>
#include <asm/addrspace.h>
#include <asm/bootinfo.h>
#include <linux/string.h>
#include <linux/kernel.h>

int prom_argc;
char **prom_argv, **prom_envp;
extern void __init prom_init_cmdline(void);
extern char *prom_getenv(char *envname);
#include <asm/addrspace.h>
#include <asm/bootinfo.h>

#include <prom.h>

const char *get_system_type(void)
{
Expand Down
6 changes: 2 additions & 4 deletions arch/mips/au1000/mtx-1/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,11 @@
#include <linux/init.h>
#include <linux/mm.h>
#include <linux/bootmem.h>

#include <asm/addrspace.h>
#include <asm/bootinfo.h>

int prom_argc;
char **prom_argv, **prom_envp;
extern void __init prom_init_cmdline(void);
extern char *prom_getenv(char *envname);
#include <prom.h>

const char *get_system_type(void)
{
Expand Down
10 changes: 4 additions & 6 deletions arch/mips/au1000/pb1000/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,13 @@
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/bootmem.h>
#include <asm/addrspace.h>
#include <asm/bootinfo.h>
#include <linux/string.h>
#include <linux/kernel.h>

int prom_argc;
char **prom_argv, **prom_envp;
extern void __init prom_init_cmdline(void);
extern char *prom_getenv(char *envname);
#include <asm/addrspace.h>
#include <asm/bootinfo.h>

#include <prom.h>

const char *get_system_type(void)
{
Expand Down
10 changes: 4 additions & 6 deletions arch/mips/au1000/pb1100/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,13 @@
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/bootmem.h>
#include <asm/addrspace.h>
#include <asm/bootinfo.h>
#include <linux/string.h>
#include <linux/kernel.h>

int prom_argc;
char **prom_argv, **prom_envp;
extern void __init prom_init_cmdline(void);
extern char *prom_getenv(char *envname);
#include <asm/addrspace.h>
#include <asm/bootinfo.h>

#include <prom.h>

const char *get_system_type(void)
{
Expand Down
6 changes: 4 additions & 2 deletions arch/mips/au1000/pb1200/board_setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,10 @@
#include <asm/mipsregs.h>
#include <asm/reboot.h>
#include <asm/pgtable.h>
#include <asm/mach-au1x00/au1000.h>
#include <asm/mach-au1x00/au1xxx_dbdma.h>

#include <au1000.h>
#include <au1xxx_dbdma.h>
#include <prom.h>

#ifdef CONFIG_MIPS_PB1200
#include <asm/mach-pb1x00/pb1200.h>
Expand Down
10 changes: 4 additions & 6 deletions arch/mips/au1000/pb1200/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,13 @@
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/bootmem.h>
#include <asm/addrspace.h>
#include <asm/bootinfo.h>
#include <linux/string.h>
#include <linux/kernel.h>

int prom_argc;
char **prom_argv, **prom_envp;
extern void __init prom_init_cmdline(void);
extern char *prom_getenv(char *envname);
#include <asm/addrspace.h>
#include <asm/bootinfo.h>

#include <prom.h>

const char *get_system_type(void)
{
Expand Down
10 changes: 4 additions & 6 deletions arch/mips/au1000/pb1500/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,13 @@
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/bootmem.h>
#include <asm/addrspace.h>
#include <asm/bootinfo.h>
#include <linux/string.h>
#include <linux/kernel.h>

int prom_argc;
char **prom_argv, **prom_envp;
extern void __init prom_init_cmdline(void);
extern char *prom_getenv(char *envname);
#include <asm/addrspace.h>
#include <asm/bootinfo.h>

#include <prom.h>

const char *get_system_type(void)
{
Expand Down
10 changes: 4 additions & 6 deletions arch/mips/au1000/pb1550/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,13 @@
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/bootmem.h>
#include <asm/addrspace.h>
#include <asm/bootinfo.h>
#include <linux/string.h>
#include <linux/kernel.h>

int prom_argc;
char **prom_argv, **prom_envp;
extern void __init prom_init_cmdline(void);
extern char *prom_getenv(char *envname);
#include <asm/addrspace.h>
#include <asm/bootinfo.h>

#include <prom.h>

const char *get_system_type(void)
{
Expand Down
10 changes: 4 additions & 6 deletions arch/mips/au1000/xxs1500/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,13 @@
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/bootmem.h>
#include <asm/addrspace.h>
#include <asm/bootinfo.h>
#include <linux/string.h>
#include <linux/kernel.h>

int prom_argc;
char **prom_argv, **prom_envp;
extern void __init prom_init_cmdline(void);
extern char *prom_getenv(char *envname);
#include <asm/addrspace.h>
#include <asm/bootinfo.h>

#include <prom.h>

const char *get_system_type(void)
{
Expand Down
11 changes: 3 additions & 8 deletions arch/powerpc/platforms/cell/axon_msi.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,7 @@ static void msic_dcr_write(struct axon_msic *msic, unsigned int dcr_n, u32 val)
{
pr_debug("axon_msi: dcr_write(0x%x, 0x%x)\n", val, dcr_n);

dcr_write(msic->dcr_host, msic->dcr_host.base + dcr_n, val);
}

static u32 msic_dcr_read(struct axon_msic *msic, unsigned int dcr_n)
{
return dcr_read(msic->dcr_host, msic->dcr_host.base + dcr_n);
dcr_write(msic->dcr_host, dcr_n, val);
}

static void axon_msi_cascade(unsigned int irq, struct irq_desc *desc)
Expand All @@ -91,7 +86,7 @@ static void axon_msi_cascade(unsigned int irq, struct irq_desc *desc)
u32 write_offset, msi;
int idx;

write_offset = msic_dcr_read(msic, MSIC_WRITE_OFFSET_REG);
write_offset = dcr_read(msic->dcr_host, MSIC_WRITE_OFFSET_REG);
pr_debug("axon_msi: original write_offset 0x%x\n", write_offset);

/* write_offset doesn't wrap properly, so we have to mask it */
Expand Down Expand Up @@ -306,7 +301,7 @@ static int axon_msi_notify_reboot(struct notifier_block *nb,
list_for_each_entry(msic, &axon_msic_list, list) {
pr_debug("axon_msi: disabling %s\n",
msic->irq_host->of_node->full_name);
tmp = msic_dcr_read(msic, MSIC_CTRL_REG);
tmp = dcr_read(msic->dcr_host, MSIC_CTRL_REG);
tmp &= ~MSIC_CTRL_ENABLE & ~MSIC_CTRL_IRQ_ENABLE;
msic_dcr_write(msic, MSIC_CTRL_REG, tmp);
}
Expand Down
Loading

0 comments on commit 43d39ae

Please sign in to comment.