VERSION = 0.99
PATCHLEVEL = 14
-ALPHA = b
+ALPHA = c
all: Version zImage
# LANCE_DEBUG Set the debugging message level.
# DEFAULT_DMA Change the default DMA to other than 5.
# CONFIG_PLIP The Crynwr-protocol PL/IP driver
-# SLIP The MicroWalt SLIP driver
-# SL_DUMP Uses the "dump frame" debug code
-# SL_COMPRESSED Use CSLIP
# D_LINK The D-Link DE-600 Portable Ethernet Adaptor.
# D_LINK_IO The D-Link I/O address (0x378 == default)
# D_LINK_IRQ The D-Link IRQ number to use (IRQ7 == default)
NE_OPTS =
HP_OPTS =
PLIP_OPTS =
-SLIP_OPTS = -DSL_DUMP -DSL_COMPRESSED
DL_OPTS = -DD_LINK_IO=0x378 -DD_LINK_IRQ=7 -UD_LINK_DEBUG
AT_OPTS = # -DLANCE_DMA=5
ifdef CONFIG_SLIP
NETDRV_OBJS := $(NETDRV_OBJS) net.a(slip.o) net.a(slhc.o)
slip.o: slip.c CONFIG
- $(CC) $(CPPFLAGS) $(CFLAGS) $(SLIP_OPTS) -c $<
+ $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
endif
ifdef CONFIG_DE600
* packet. Recalculate IP checksum (but not TCP checksum).
*/
- len = isize - (cp - icp) + hdrlen;
+ len = isize - (cp - icp);
+ if (len < 0)
+ goto bad;
+ len += hdrlen;
ip->tot_len = htons(len);
ip->check = 0;
*/
#include <asm/segment.h>
#include <asm/system.h>
+
+#include <linux/config.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include "slip.h"
#include "slhc.h"
-
#define SLIP_VERSION "0.7.5"
/* Define some IP layer stuff. Not all systems have it. */
static __inline__ unsigned long int
__ntohl(unsigned long int x)
{
- __asm__("xchgb %l0,%h0\n\t" /* swap lower bytes */
+ __asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */
"rorl $16,%0\n\t" /* swap words */
- "xchgb %l0,%h0" /* swap higher bytes */
+ "xchgb %b0,%h0" /* swap higher bytes */
:"=q" (x)
: "0" (x));
return x;
static __inline__ unsigned long int
__htonl(unsigned long int x)
{
- __asm__("xchgb %l0,%h0\n\t" /* swap lower bytes */
+ __asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */
"rorl $16,%0\n\t" /* swap words */
- "xchgb %l0,%h0" /* swap higher bytes */
+ "xchgb %b0,%h0" /* swap higher bytes */
:"=q" (x)
: "0" (x));
return x;
*/
static void timer_bh(void * unused)
{
+ unsigned long mask;
+ struct timer_struct *tp;
+
cli();
while (next_timer && next_timer->expires == 0) {
void (*fn)(unsigned long) = next_timer->function;
cli();
}
sti();
+
+ for (mask = 1, tp = timer_table+0 ; mask ; tp++,mask += mask) {
+ if (mask > timer_active)
+ break;
+ if (!(mask & timer_active))
+ continue;
+ if (tp->expires > jiffies)
+ continue;
+ timer_active &= ~mask;
+ tp->fn();
+ sti();
+ }
}
/*
static void do_timer(struct pt_regs * regs)
{
unsigned long mask;
- struct timer_struct *tp = timer_table+0;
+ struct timer_struct *tp;
long ltemp;
current->it_prof_value = current->it_prof_incr;
send_sig(SIGPROF,current,1);
}
- for (mask = 1 ; mask ; tp++,mask += mask) {
+ for (mask = 1, tp = timer_table+0 ; mask ; tp++,mask += mask) {
if (mask > timer_active)
break;
if (!(mask & timer_active))
continue;
if (tp->expires > jiffies)
continue;
- timer_active &= ~mask;
- tp->fn();
- sti();
+ mark_bh(TIMER_BH);
}
cli();
itimer_ticks++;