From bb5b6e6c4dea4242f6ff75fa7adecea4f34935f1 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Mon, 4 Feb 2002 20:10:26 -0800 Subject: v2.4.8.4 -> v2.4.9 - David Miller: sparc updates, FAT fs fixes, btaudio build fix - David Gibson: Orinoco driver update - Kevin Fleming: more disks the HPT controller doesn't like - David Miller: "min()/max()" cleanups. Understands signs and sizes. - Ben LaHaise: make vma merging more generous, help Mozilla /proc/<>/maps - Jens Axboe: CD updates - Trond Myklebust: save away NFS credentials in inode, so that mmap can writeout. - Mark Hemment: HIGHMEM ops cleanups - Jes Sorensen: use "unsigned long" for flags in various drivers --- drivers/net/acenic.c | 12 +-- drivers/net/de600.c | 3 +- drivers/net/dgrs.c | 3 +- drivers/net/hamradio/baycom_epp.c | 13 +-- drivers/net/hamradio/baycom_par.c | 5 - drivers/net/hamradio/baycom_ser_fdx.c | 5 - drivers/net/hamradio/baycom_ser_hdx.c | 5 - drivers/net/hamradio/hdlcdrv.c | 5 - drivers/net/hamradio/soundmodem/sm.h | 5 - drivers/net/sk98lin/skproc.c | 2 +- drivers/net/sungem.c | 4 +- drivers/net/sunhme.c | 4 +- drivers/net/wan/comx-hw-comx.c | 10 +- drivers/net/wan/comx-hw-locomx.c | 4 +- drivers/net/wan/comx-hw-mixcom.c | 6 +- drivers/net/wan/comx-proto-fr.c | 2 +- drivers/net/wan/comx-proto-lapb.c | 2 +- drivers/net/wan/comx.c | 8 +- drivers/net/wan/comx.h | 8 -- drivers/net/wan/cycx_main.c | 4 +- drivers/net/wan/cycx_x25.c | 22 ++-- drivers/net/wan/sbni.c | 7 +- drivers/net/wan/sbni.h | 2 - drivers/net/wan/sdla_chdlc.c | 12 +-- drivers/net/wan/sdla_fr.c | 22 ++-- drivers/net/wan/sdla_ppp.c | 4 +- drivers/net/wan/sdla_x25.c | 38 +++---- drivers/net/wan/wanpipe_multppp.c | 4 +- drivers/net/wireless/airo.c | 10 +- drivers/net/wireless/airport.c | 12 ++- drivers/net/wireless/hermes.c | 34 +++---- drivers/net/wireless/hermes.h | 2 +- drivers/net/wireless/orinoco.c | 182 ++++++++++++++++++++++++++-------- drivers/net/wireless/orinoco.h | 4 +- drivers/net/wireless/orinoco_cs.c | 41 ++++---- 35 files changed, 285 insertions(+), 221 deletions(-) (limited to 'drivers/net') diff --git a/drivers/net/acenic.c b/drivers/net/acenic.c index bc8ef6891a33..3b5f6df4f130 100644 --- a/drivers/net/acenic.c +++ b/drivers/net/acenic.c @@ -157,10 +157,6 @@ MODULE_DEVICE_TABLE(pci, acenic_pci_tbl); #define __devinit __init #endif -#ifndef min -#define min(a,b) (((a)<(b))?(a):(b)) -#endif - #ifndef SMP_CACHE_BYTES #define SMP_CACHE_BYTES L1_CACHE_BYTES #endif @@ -2999,8 +2995,8 @@ static void __init ace_copy(struct ace_regs *regs, void *src, return; while (size > 0) { - tsize = min(((~dest & (ACE_WINDOW_SIZE - 1)) + 1), - min(size, ACE_WINDOW_SIZE)); + tsize = min(u32, ((~dest & (ACE_WINDOW_SIZE - 1)) + 1), + min(u32, size, ACE_WINDOW_SIZE)); tdest = (unsigned long)®s->Window + (dest & (ACE_WINDOW_SIZE - 1)); writel(dest & ~(ACE_WINDOW_SIZE - 1), ®s->WinBase); @@ -3030,8 +3026,8 @@ static void __init ace_clear(struct ace_regs *regs, u32 dest, int size) return; while (size > 0) { - tsize = min(((~dest & (ACE_WINDOW_SIZE - 1)) + 1), - min(size, ACE_WINDOW_SIZE)); + tsize = min(u32, ((~dest & (ACE_WINDOW_SIZE - 1)) + 1), + min(u32, size, ACE_WINDOW_SIZE)); tdest = (unsigned long)®s->Window + (dest & (ACE_WINDOW_SIZE - 1)); writel(dest & ~(ACE_WINDOW_SIZE - 1), ®s->WinBase); diff --git a/drivers/net/de600.c b/drivers/net/de600.c index d161342c0896..d582b16db936 100644 --- a/drivers/net/de600.c +++ b/drivers/net/de600.c @@ -801,7 +801,6 @@ adapter_init(struct net_device *dev) * This differs from the standard function, that can return an * arbitrarily small window! */ -#define min(a,b) ((a)<(b)?(a):(b)) static unsigned long de600_rspace(struct sock *sk) { @@ -815,7 +814,7 @@ de600_rspace(struct sock *sk) */ if (atomic_read(&sk->rmem_alloc) >= sk->rcvbuf-2*DE600_MIN_WINDOW) return(0); - amt = min((sk->rcvbuf-atomic_read(&sk->rmem_alloc))/2/*-DE600_MIN_WINDOW*/, DE600_MAX_WINDOW); + amt = min(int, (sk->rcvbuf-atomic_read(&sk->rmem_alloc))/2/*-DE600_MIN_WINDOW*/, DE600_MAX_WINDOW); if (amt < 0) return(0); return(amt); } diff --git a/drivers/net/dgrs.c b/drivers/net/dgrs.c index 65616e697179..542f526a004d 100644 --- a/drivers/net/dgrs.c +++ b/drivers/net/dgrs.c @@ -693,7 +693,6 @@ static int dgrs_start_xmit(struct sk_buff *skb, struct net_device *devN) I596_RBD *rbdp; int count; int i, len, amt; -# define mymin(A,B) ( (A) < (B) ? (A) : (B) ) /* * Determine 0th priv and dev structure pointers @@ -734,7 +733,7 @@ static int dgrs_start_xmit(struct sk_buff *skb, struct net_device *devN) goto no_resources; } - amt = mymin(len, rbdp->size - count); + amt = min(unsigned int, len, rbdp->size - count); memcpy( (char *) S2H(rbdp->buf) + count, skb->data + i, amt); i += amt; count += amt; diff --git a/drivers/net/hamradio/baycom_epp.c b/drivers/net/hamradio/baycom_epp.c index 7c8aef881001..403577fda957 100644 --- a/drivers/net/hamradio/baycom_epp.c +++ b/drivers/net/hamradio/baycom_epp.c @@ -246,11 +246,6 @@ struct baycom_state { /* --------------------------------------------------------------------- */ -#define min(a, b) (((a) < (b)) ? (a) : (b)) -#define max(a, b) (((a) > (b)) ? (a) : (b)) - -/* --------------------------------------------------------------------- */ - #define KISS_VERBOSE /* --------------------------------------------------------------------- */ @@ -615,7 +610,7 @@ static int transmit(struct baycom_state *bc, int cnt, unsigned char stat) while (cnt > 0) { switch (bc->hdlctx.state) { case tx_keyup: - i = min(cnt, bc->hdlctx.flags); + i = min(int, cnt, bc->hdlctx.flags); cnt -= i; bc->hdlctx.flags -= i; if (bc->hdlctx.flags <= 0) @@ -638,7 +633,7 @@ static int transmit(struct baycom_state *bc, int cnt, unsigned char stat) break; } } - i = min(cnt, bc->hdlctx.bufcnt); + i = min(int, cnt, bc->hdlctx.bufcnt); bc->hdlctx.bufcnt -= i; cnt -= i; if (i != pp->ops->epp_write_data(pp, bc->hdlctx.bufptr, i, 0)) @@ -652,7 +647,7 @@ static int transmit(struct baycom_state *bc, int cnt, unsigned char stat) bc->hdlctx.state = tx_data; break; } - i = min(cnt, bc->hdlctx.flags); + i = min(int, cnt, bc->hdlctx.flags); if (i) { cnt -= i; bc->hdlctx.flags -= i; @@ -669,7 +664,7 @@ static int transmit(struct baycom_state *bc, int cnt, unsigned char stat) default: /* fall through */ if (bc->hdlctx.calibrate <= 0) return 0; - i = min(cnt, bc->hdlctx.calibrate); + i = min(int, cnt, bc->hdlctx.calibrate); cnt -= i; bc->hdlctx.calibrate -= i; memset(tmp, 0, sizeof(tmp)); diff --git a/drivers/net/hamradio/baycom_par.c b/drivers/net/hamradio/baycom_par.c index 61cfd41480b2..508b6dc37463 100644 --- a/drivers/net/hamradio/baycom_par.c +++ b/drivers/net/hamradio/baycom_par.c @@ -157,11 +157,6 @@ struct baycom_state { /* --------------------------------------------------------------------- */ -#define min(a, b) (((a) < (b)) ? (a) : (b)) -#define max(a, b) (((a) > (b)) ? (a) : (b)) - -/* --------------------------------------------------------------------- */ - static void __inline__ baycom_int_freq(struct baycom_state *bc) { #ifdef BAYCOM_DEBUG diff --git a/drivers/net/hamradio/baycom_ser_fdx.c b/drivers/net/hamradio/baycom_ser_fdx.c index 2b19dc9058a6..c1c3fc6ca023 100644 --- a/drivers/net/hamradio/baycom_ser_fdx.c +++ b/drivers/net/hamradio/baycom_ser_fdx.c @@ -152,11 +152,6 @@ struct baycom_state { /* --------------------------------------------------------------------- */ -#define min(a, b) (((a) < (b)) ? (a) : (b)) -#define max(a, b) (((a) > (b)) ? (a) : (b)) - -/* --------------------------------------------------------------------- */ - static void inline baycom_int_freq(struct baycom_state *bc) { #ifdef BAYCOM_DEBUG diff --git a/drivers/net/hamradio/baycom_ser_hdx.c b/drivers/net/hamradio/baycom_ser_hdx.c index f3d84911edcd..d2b82e589a5a 100644 --- a/drivers/net/hamradio/baycom_ser_hdx.c +++ b/drivers/net/hamradio/baycom_ser_hdx.c @@ -143,11 +143,6 @@ struct baycom_state { /* --------------------------------------------------------------------- */ -#define min(a, b) (((a) < (b)) ? (a) : (b)) -#define max(a, b) (((a) > (b)) ? (a) : (b)) - -/* --------------------------------------------------------------------- */ - static void inline baycom_int_freq(struct baycom_state *bc) { #ifdef BAYCOM_DEBUG diff --git a/drivers/net/hamradio/hdlcdrv.c b/drivers/net/hamradio/hdlcdrv.c index 7ff2c9cfae52..573203606027 100644 --- a/drivers/net/hamradio/hdlcdrv.c +++ b/drivers/net/hamradio/hdlcdrv.c @@ -94,11 +94,6 @@ static char ax25_nocall[AX25_ADDR_LEN] = #define PARAM_HARDWARE 6 #define PARAM_RETURN 255 -/* --------------------------------------------------------------------- */ - -#define min(a, b) (((a) < (b)) ? (a) : (b)) -#define max(a, b) (((a) > (b)) ? (a) : (b)) - /* --------------------------------------------------------------------- */ /* * the CRC routines are stolen from WAMPES diff --git a/drivers/net/hamradio/soundmodem/sm.h b/drivers/net/hamradio/soundmodem/sm.h index 045e7e053402..367b045b8086 100644 --- a/drivers/net/hamradio/soundmodem/sm.h +++ b/drivers/net/hamradio/soundmodem/sm.h @@ -150,11 +150,6 @@ struct hardware_info { /* --------------------------------------------------------------------- */ -#define min(a, b) (((a) < (b)) ? (a) : (b)) -#define max(a, b) (((a) > (b)) ? (a) : (b)) - -/* --------------------------------------------------------------------- */ - extern const char sm_drvname[]; extern const char sm_drvinfo[]; diff --git a/drivers/net/sk98lin/skproc.c b/drivers/net/sk98lin/skproc.c index 9c07f9c270bb..1abb4dd124bb 100644 --- a/drivers/net/sk98lin/skproc.c +++ b/drivers/net/sk98lin/skproc.c @@ -293,7 +293,7 @@ void *data) if (buffer_length >= len - offset) { *eof = 1; } - return (min(buffer_length, len - offset)); + return (min(int, buffer_length, len - offset)); } diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c index 230ae012f71e..b80a4d8a4a58 100644 --- a/drivers/net/sungem.c +++ b/drivers/net/sungem.c @@ -1,4 +1,4 @@ -/* $Id: sungem.c,v 1.18 2001/08/06 13:34:47 davem Exp $ +/* $Id: sungem.c,v 1.19 2001/08/13 14:40:07 davem Exp $ * sungem.c: Sun GEM ethernet driver. * * Copyright (C) 2000, 2001 David S. Miller (davem@redhat.com) @@ -558,7 +558,7 @@ static void gem_rx(struct gem *gp) skb = copy_skb; } - skb->csum = ((status & RXDCTRL_TCPCSUM) ^ 0xffff); + skb->csum = ntohs((status & RXDCTRL_TCPCSUM) ^ 0xffff); skb->ip_summed = CHECKSUM_HW; skb->protocol = eth_type_trans(skb, gp->dev); netif_rx(skb); diff --git a/drivers/net/sunhme.c b/drivers/net/sunhme.c index 42f737de5fd4..654e2db9256c 100644 --- a/drivers/net/sunhme.c +++ b/drivers/net/sunhme.c @@ -1,4 +1,4 @@ -/* $Id: sunhme.c,v 1.121 2001/07/27 10:22:57 davem Exp $ +/* $Id: sunhme.c,v 1.122 2001/08/13 14:40:07 davem Exp $ * sunhme.c: Sparc HME/BigMac 10/100baseT half/full duplex auto switching, * auto carrier detecting ethernet driver. Also known as the * "Happy Meal Ethernet" found on SunSwift SBUS cards. @@ -2109,7 +2109,7 @@ static void happy_meal_rx(struct happy_meal *hp, struct net_device *dev) } /* This card is _fucking_ hot... */ - skb->csum = (csum ^ 0xffff); + skb->csum = ntohs(csum ^ 0xffff); skb->ip_summed = CHECKSUM_HW; RXD(("len=%d csum=%4x]", len, csum)); diff --git a/drivers/net/wan/comx-hw-comx.c b/drivers/net/wan/comx-hw-comx.c index e3b72a5af525..86737b11e28a 100644 --- a/drivers/net/wan/comx-hw-comx.c +++ b/drivers/net/wan/comx-hw-comx.c @@ -1044,7 +1044,7 @@ static int comxhw_write_proc(struct file *file, const char *buffer, if (!(page = (char *)__get_free_page(GFP_KERNEL))) { return -ENOMEM; } - if(copy_from_user(page, buffer, count = (min(count, PAGE_SIZE)))) + if(copy_from_user(page, buffer, count = (min(int, count, PAGE_SIZE)))) { count = -EFAULT; goto out; @@ -1182,8 +1182,10 @@ static int comxhw_read_proc(char *page, char **start, off_t off, int count, len = sprintf(page, "external\n"); } } else if (strcmp(file->name, FILENAME_FIRMWARE) == 0) { - len = min(FILE_PAGESIZE, min(count, - hw->firmware ? (hw->firmware->len - off) : 0)); + len = min(int, FILE_PAGESIZE, + min(int, count, + hw->firmware ? + (hw->firmware->len - off) : 0)); if (len < 0) { len = 0; } @@ -1203,7 +1205,7 @@ static int comxhw_read_proc(char *page, char **start, off_t off, int count, if (count >= len - off) { *eof = 1; } - return(min(count, len - off)); + return min(int, count, len - off); } /* Called on echo comx >boardtype */ diff --git a/drivers/net/wan/comx-hw-locomx.c b/drivers/net/wan/comx-hw-locomx.c index 3714c6e60640..4b64939e864e 100644 --- a/drivers/net/wan/comx-hw-locomx.c +++ b/drivers/net/wan/comx-hw-locomx.c @@ -324,7 +324,7 @@ static int locomx_read_proc(char *page, char **start, off_t off, int count, if (count >= len - off) { *eof = 1; } - return ( min(count, len - off) ); + return min(int, count, len - off); } static int locomx_write_proc(struct file *file, const char *buffer, @@ -339,7 +339,7 @@ static int locomx_write_proc(struct file *file, const char *buffer, return -ENOMEM; } - copy_from_user(page, buffer, count = min(count, PAGE_SIZE)); + copy_from_user(page, buffer, count = min(unsigned long, count, PAGE_SIZE)); if (*(page + count - 1) == '\n') { *(page + count - 1) = 0; } diff --git a/drivers/net/wan/comx-hw-mixcom.c b/drivers/net/wan/comx-hw-mixcom.c index 8c367b5cca02..adf829894ff2 100644 --- a/drivers/net/wan/comx-hw-mixcom.c +++ b/drivers/net/wan/comx-hw-mixcom.c @@ -121,7 +121,7 @@ static inline void hscx_fill_fifo(struct net_device *dev) outsb(dev->base_addr + HSCX_FIFO, - &(hw->sending->data[hw->tx_ptr]), min(to_send, 32)); + &(hw->sending->data[hw->tx_ptr]), min(unsigned int, to_send, 32)); if (to_send <= 32) { hscx_cmd(dev, HSCX_XTF | HSCX_XME); kfree_skb(hw->sending); @@ -696,7 +696,7 @@ static int mixcom_read_proc(char *page, char **start, off_t off, int count, } *start = page + off; if (count >= len - off) *eof = 1; - return ( min(count, len - off) ); + return min(int, count, len - off); } @@ -763,7 +763,7 @@ static int mixcom_write_proc(struct file *file, const char *buffer, return -ENOMEM; } - copy_from_user(page, buffer, count = min(count, PAGE_SIZE)); + copy_from_user(page, buffer, count = min(unsigned long, count, PAGE_SIZE)); if (*(page + count - 1) == '\n') { *(page + count - 1) = 0; } diff --git a/drivers/net/wan/comx-proto-fr.c b/drivers/net/wan/comx-proto-fr.c index 124c66e102f3..75ef5c56c9a4 100644 --- a/drivers/net/wan/comx-proto-fr.c +++ b/drivers/net/wan/comx-proto-fr.c @@ -634,7 +634,7 @@ static int fr_read_proc(char *page, char **start, off_t off, int count, *start = page + off; if (count >= len - off) *eof = 1; - return ( min(count, len - off) ); + return min(int, count, len - off); } static int fr_write_proc(struct file *file, const char *buffer, diff --git a/drivers/net/wan/comx-proto-lapb.c b/drivers/net/wan/comx-proto-lapb.c index 64129018bdf1..520074f72f94 100644 --- a/drivers/net/wan/comx-proto-lapb.c +++ b/drivers/net/wan/comx-proto-lapb.c @@ -212,7 +212,7 @@ static int comxlapb_read_proc(char *page, char **start, off_t off, int count, if (count >= len - off) { *eof = 1; } - return ( min(count, len - off) ); + return min(int, count, len - off); } static int comxlapb_write_proc(struct file *file, const char *buffer, diff --git a/drivers/net/wan/comx.c b/drivers/net/wan/comx.c index 8e76b39b9bd4..3d4986ea7ca1 100644 --- a/drivers/net/wan/comx.c +++ b/drivers/net/wan/comx.c @@ -151,8 +151,8 @@ int comx_debug(struct net_device *dev, char *fmt, ...) int free = (ch->debug_start - ch->debug_end + ch->debug_size) % ch->debug_size; - to_copy = min( free ? free : ch->debug_size, - min (ch->debug_size - ch->debug_end, len) ); + to_copy = min(int, free ? free : ch->debug_size, + min(int, ch->debug_size - ch->debug_end, len)); memcpy(ch->debug_area + ch->debug_end, str, to_copy); str += to_copy; len -= to_copy; @@ -567,7 +567,7 @@ static int comx_read_proc(char *page, char **start, off_t off, int count, if (count >= len - off) { *eof = 1; } - return( min(count, len - off) ); + return min(int, count, len - off); } @@ -597,7 +597,7 @@ static int comx_root_read_proc(char *page, char **start, off_t off, int count, if (count >= len - off) { *eof = 1; } - return( min(count, len - off) ); + return min(int, count, len - off); } diff --git a/drivers/net/wan/comx.h b/drivers/net/wan/comx.h index 1461d5fb18cb..0f7404f21470 100644 --- a/drivers/net/wan/comx.h +++ b/drivers/net/wan/comx.h @@ -190,14 +190,6 @@ struct comx_debugflags_struct { #endif -#ifndef min -#define min(a,b) ((a) > (b) ? (b) : (a)) -#endif -#ifndef max -#define max(a,b) ((a) > (b) ? (a) : (b)) -#endif - - #define COMX_CHANNEL(dev) ((struct comx_channel*)dev->priv) #define TWIN(dev) (COMX_CHANNEL(dev)->twin) diff --git a/drivers/net/wan/cycx_main.c b/drivers/net/wan/cycx_main.c index 0c5e72d05d39..22ffa2e56a34 100644 --- a/drivers/net/wan/cycx_main.c +++ b/drivers/net/wan/cycx_main.c @@ -111,8 +111,8 @@ int __init cyclomx_init (void) fullname, DRV_VERSION, DRV_RELEASE, copyright); /* Verify number of cards and allocate adapter data space */ - ncards = min(ncards, MAX_CARDS); - ncards = max(ncards, 1); + ncards = min(int, ncards, MAX_CARDS); + ncards = max(int, ncards, 1); card_array = kmalloc(sizeof(cycx_t) * ncards, GFP_KERNEL); if (!card_array) goto out; diff --git a/drivers/net/wan/cycx_x25.c b/drivers/net/wan/cycx_x25.c index a65238c704b4..125a07b7eab2 100644 --- a/drivers/net/wan/cycx_x25.c +++ b/drivers/net/wan/cycx_x25.c @@ -260,13 +260,13 @@ int cyx_init (cycx_t *card, wandev_conf_t *conf) cfg.flags = 0; /* FIXME just reset the 2nd bit */ if (conf->u.x25.hi_pvc) { - card->u.x.hi_pvc = min(conf->u.x25.hi_pvc, 4095); - card->u.x.lo_pvc = min(conf->u.x25.lo_pvc, card->u.x.hi_pvc); + card->u.x.hi_pvc = min(unsigned int, conf->u.x25.hi_pvc, 4095); + card->u.x.lo_pvc = min(unsigned int, conf->u.x25.lo_pvc, card->u.x.hi_pvc); } if (conf->u.x25.hi_svc) { - card->u.x.hi_svc = min(conf->u.x25.hi_svc, 4095); - card->u.x.lo_svc = min(conf->u.x25.lo_svc, card->u.x.hi_svc); + card->u.x.hi_svc = min(unsigned int, conf->u.x25.hi_svc, 4095); + card->u.x.lo_svc = min(unsigned int, conf->u.x25.lo_svc, card->u.x.hi_svc); } if (card->u.x.lo_pvc == 255) @@ -277,25 +277,25 @@ int cyx_init (cycx_t *card, wandev_conf_t *conf) cfg.nvc = card->u.x.hi_svc - card->u.x.lo_svc + 1 + cfg.npvc; if (conf->u.x25.hdlc_window) - cfg.n2win = min(conf->u.x25.hdlc_window, 7); + cfg.n2win = min(unsigned int, conf->u.x25.hdlc_window, 7); if (conf->u.x25.pkt_window) - cfg.n3win = min(conf->u.x25.pkt_window, 7); + cfg.n3win = min(unsigned int, conf->u.x25.pkt_window, 7); if (conf->u.x25.t1) - cfg.t1 = min(conf->u.x25.t1, 30); + cfg.t1 = min(unsigned int, conf->u.x25.t1, 30); if (conf->u.x25.t2) - cfg.t2 = min(conf->u.x25.t2, 30); + cfg.t2 = min(unsigned int, conf->u.x25.t2, 30); if (conf->u.x25.t11_t21) - cfg.t21 = min(conf->u.x25.t11_t21, 30); + cfg.t21 = min(unsigned int, conf->u.x25.t11_t21, 30); if (conf->u.x25.t13_t23) - cfg.t23 = min(conf->u.x25.t13_t23, 30); + cfg.t23 = min(unsigned int, conf->u.x25.t13_t23, 30); if (conf->u.x25.n2) - cfg.n2 = min(conf->u.x25.n2, 30); + cfg.n2 = min(unsigned int, conf->u.x25.n2, 30); /* initialize adapter */ if (x25_configure(card, &cfg)) diff --git a/drivers/net/wan/sbni.c b/drivers/net/wan/sbni.c index 61c3f79f3ec8..3b3bd1707ac8 100644 --- a/drivers/net/wan/sbni.c +++ b/drivers/net/wan/sbni.c @@ -659,7 +659,7 @@ download_data( struct net_device *dev, u32 *crc_p ) struct net_local *nl = (struct net_local *) dev->priv; struct sk_buff *skb = nl->tx_buf_p; - unsigned len = min( skb->len - nl->outpos, nl->framelen ); + unsigned len = min(unsigned int, skb->len - nl->outpos, nl->framelen); outsb( dev->base_addr + DAT, skb->data + nl->outpos, len ); *crc_p = calc_crc32( *crc_p, skb->data + nl->outpos, len ); @@ -760,8 +760,9 @@ interpret_ack( struct net_device *dev, unsigned ack ) nl->outpos += nl->framelen; if( --nl->tx_frameno ) - nl->framelen = min( nl->maxframe, - nl->tx_buf_p->len - nl->outpos ); + nl->framelen = min(unsigned int, + nl->maxframe, + nl->tx_buf_p->len - nl->outpos); else send_complete( nl ), #ifdef CONFIG_SBNI_MULTILINE diff --git a/drivers/net/wan/sbni.h b/drivers/net/wan/sbni.h index 335dbf13f4d6..8e83e274824d 100644 --- a/drivers/net/wan/sbni.h +++ b/drivers/net/wan/sbni.h @@ -137,7 +137,5 @@ struct sbni_flags { #define __initdata #endif -#define min( x, y ) ( (x) < (y) ? (x) : (y) ) - #endif diff --git a/drivers/net/wan/sdla_chdlc.c b/drivers/net/wan/sdla_chdlc.c index afd1fef9bc29..b5f027c17c41 100644 --- a/drivers/net/wan/sdla_chdlc.c +++ b/drivers/net/wan/sdla_chdlc.c @@ -505,13 +505,13 @@ int wpc_init (sdla_t* card, wandev_conf_t* conf) /* For Primary Port 0 */ card->wandev.mtu = (conf->mtu >= MIN_LGTH_CHDLC_DATA_CFG) ? - min(conf->mtu, PRI_MAX_NO_DATA_BYTES_IN_FRAME) : + min(unsigned int, conf->mtu, PRI_MAX_NO_DATA_BYTES_IN_FRAME) : CHDLC_DFLT_DATA_LEN; } else if(port_num == WANOPT_SEC) { /* For Secondary Port 1 */ card->wandev.mtu = (conf->mtu >= MIN_LGTH_CHDLC_DATA_CFG) ? - min(conf->mtu, SEC_MAX_NO_DATA_BYTES_IN_FRAME) : + min(unsigned int, conf->mtu, SEC_MAX_NO_DATA_BYTES_IN_FRAME) : CHDLC_DFLT_DATA_LEN; } @@ -827,19 +827,19 @@ static int new_if (wan_device_t* wandev, netdevice_t* dev, wanif_conf_t* conf) card->u.c.kpalv_tx = ((conf->keepalive_tx_tmr - MIN_Tx_KPALV_TIMER) >= 0) ? - min(conf->keepalive_tx_tmr,MAX_Tx_KPALV_TIMER) : + min(unsigned int, conf->keepalive_tx_tmr,MAX_Tx_KPALV_TIMER) : DEFAULT_Tx_KPALV_TIMER; card->u.c.kpalv_rx = ((conf->keepalive_rx_tmr - MIN_Rx_KPALV_TIMER) >= 0) ? - min(conf->keepalive_rx_tmr,MAX_Rx_KPALV_TIMER) : + min(unsigned int, conf->keepalive_rx_tmr,MAX_Rx_KPALV_TIMER) : DEFAULT_Rx_KPALV_TIMER; card->u.c.kpalv_err = ((conf->keepalive_err_margin-MIN_KPALV_ERR_TOL) >= 0) ? - min(conf->keepalive_err_margin, + min(unsigned int, conf->keepalive_err_margin, MAX_KPALV_ERR_TOL) : DEFAULT_KPALV_ERR_TOL; } @@ -847,7 +847,7 @@ static int new_if (wan_device_t* wandev, netdevice_t* dev, wanif_conf_t* conf) /* Setup slarp timer to control delay between slarps */ card->u.c.slarp_timer = ((conf->slarp_timer - MIN_SLARP_REQ_TIMER) >= 0) ? - min (conf->slarp_timer, MAX_SLARP_REQ_TIMER) : + min(unsigned int, conf->slarp_timer, MAX_SLARP_REQ_TIMER) : DEFAULT_SLARP_REQ_TIMER; #ifdef LINUX_2_0 diff --git a/drivers/net/wan/sdla_fr.c b/drivers/net/wan/sdla_fr.c index 4f5a9def99ae..1032346d596a 100644 --- a/drivers/net/wan/sdla_fr.c +++ b/drivers/net/wan/sdla_fr.c @@ -548,10 +548,10 @@ int wpf_init(sdla_t *card, wandev_conf_t *conf) /* Adjust configuration */ conf->mtu += FR_HEADER_LEN; conf->mtu = (conf->mtu >= MIN_LGTH_FR_DATA_CFG) ? - min(conf->mtu, FR_MAX_NO_DATA_BYTES_IN_FRAME) : + min(unsigned int, conf->mtu, FR_MAX_NO_DATA_BYTES_IN_FRAME) : FR_CHANNEL_MTU + FR_HEADER_LEN; - conf->bps = min(conf->bps, 2048000); + conf->bps = min(unsigned int, conf->bps, 2048000); /* Initialze the configuration structure sent to the board to zero */ memset(&u.cfg, 0, sizeof(u.cfg)); @@ -618,7 +618,7 @@ int wpf_init(sdla_t *card, wandev_conf_t *conf) * command in fr_configure() routine. */ - card->u.f.dlci_num = min(max(conf->u.fr.dlci_num, 1), 100); + card->u.f.dlci_num = min(unsigned int, max(unsigned int, conf->u.fr.dlci_num, 1), 100); for ( i = 0; i < card->u.f.dlci_num; i++) { @@ -635,27 +635,27 @@ int wpf_init(sdla_t *card, wandev_conf_t *conf) u.cfg.port |= 0x0002; if (conf->u.fr.t391) - u.cfg.t391 = min(conf->u.fr.t391, 30); + u.cfg.t391 = min(unsigned int, conf->u.fr.t391, 30); else u.cfg.t391 = 5; if (conf->u.fr.t392) - u.cfg.t392 = min(conf->u.fr.t392, 30); + u.cfg.t392 = min(unsigned int, conf->u.fr.t392, 30); else u.cfg.t392 = 15; if (conf->u.fr.n391) - u.cfg.n391 = min(conf->u.fr.n391, 255); + u.cfg.n391 = min(unsigned int, conf->u.fr.n391, 255); else u.cfg.n391 = 2; if (conf->u.fr.n392) - u.cfg.n392 = min(conf->u.fr.n392, 10); + u.cfg.n392 = min(unsigned int, conf->u.fr.n392, 10); else u.cfg.n392 = 3; if (conf->u.fr.n393) - u.cfg.n393 = min(conf->u.fr.n393, 10); + u.cfg.n393 = min(unsigned int, conf->u.fr.n393, 10); else u.cfg.n393 = 4; @@ -952,7 +952,8 @@ static int new_if (wan_device_t* wandev, netdevice_t* dev, wanif_conf_t* conf) */ if (conf->cir) { - chan->cir = max( 1, min( conf->cir, 512 ) ); + chan->cir = max(unsigned int, 1, + min(unsigned int, conf->cir, 512)); chan->cir_status = CIR_ENABLED; @@ -963,7 +964,8 @@ static int new_if (wan_device_t* wandev, netdevice_t* dev, wanif_conf_t* conf) chan->bc = chan->cir; if (conf->be){ - chan->be = max( 0, min( conf->be, 511) ); + chan->be = max(unsigned int, + 0, min(unsigned int, conf->be, 511)); }else{ conf->be = 0; } diff --git a/drivers/net/wan/sdla_ppp.c b/drivers/net/wan/sdla_ppp.c index 9af93fa18b69..00d53beb38d0 100644 --- a/drivers/net/wan/sdla_ppp.c +++ b/drivers/net/wan/sdla_ppp.c @@ -400,7 +400,7 @@ int wpp_init(sdla_t *card, wandev_conf_t *conf) printk(KERN_INFO "%s: running PPP firmware v%s\n",card->devname, u.str); /* Adjust configuration and set defaults */ card->wandev.mtu = (conf->mtu) ? - min(conf->mtu, PPP_MAX_MTU) : PPP_DFLT_MTU; + min(unsigned int, conf->mtu, PPP_MAX_MTU) : PPP_DFLT_MTU; card->wandev.bps = conf->bps; card->wandev.interface = conf->interface; @@ -629,7 +629,7 @@ static int new_if(wan_device_t *wandev, netdevice_t *dev, wanif_conf_t *conf) dev->init = &if_init; dev->priv = ppp_priv_area; - dev->mtu = min(dev->mtu, card->wandev.mtu); + dev->mtu = min(unsigned int, dev->mtu, card->wandev.mtu); /* Initialize the polling task routine */ #ifndef LINUX_2_4 diff --git a/drivers/net/wan/sdla_x25.c b/drivers/net/wan/sdla_x25.c index c60d00f68901..928327df0f22 100644 --- a/drivers/net/wan/sdla_x25.c +++ b/drivers/net/wan/sdla_x25.c @@ -653,13 +653,13 @@ int wpx_init (sdla_t* card, wandev_conf_t* conf) u.cfg.defPktSize = u.cfg.pktMTU = card->wandev.mtu; if (conf->u.x25.hi_pvc){ - card->u.x.hi_pvc = min(conf->u.x25.hi_pvc, MAX_LCN_NUM); - card->u.x.lo_pvc = min(conf->u.x25.lo_pvc, card->u.x.hi_pvc); + card->u.x.hi_pvc = min(unsigned int, conf->u.x25.hi_pvc, MAX_LCN_NUM); + card->u.x.lo_pvc = min(unsigned int, conf->u.x25.lo_pvc, card->u.x.hi_pvc); } if (conf->u.x25.hi_svc){ - card->u.x.hi_svc = min(conf->u.x25.hi_svc, MAX_LCN_NUM); - card->u.x.lo_svc = min(conf->u.x25.lo_svc, card->u.x.hi_svc); + card->u.x.hi_svc = min(unsigned int, conf->u.x25.hi_svc, MAX_LCN_NUM); + card->u.x.lo_svc = min(unsigned int, conf->u.x25.lo_svc, card->u.x.hi_svc); } /* Figure out the total number of channels to configure */ @@ -684,38 +684,38 @@ int wpx_init (sdla_t* card, wandev_conf_t* conf) u.cfg.hiTwoWaySVC = card->u.x.hi_svc; if (conf->u.x25.hdlc_window) - u.cfg.hdlcWindow = min(conf->u.x25.hdlc_window, 7); + u.cfg.hdlcWindow = min(unsigned int, conf->u.x25.hdlc_window, 7); if (conf->u.x25.pkt_window) - u.cfg.pktWindow = min(conf->u.x25.pkt_window, 7); + u.cfg.pktWindow = min(unsigned int, conf->u.x25.pkt_window, 7); if (conf->u.x25.t1) - u.cfg.t1 = min(conf->u.x25.t1, 30); + u.cfg.t1 = min(unsigned int, conf->u.x25.t1, 30); if (conf->u.x25.t2) - u.cfg.t2 = min(conf->u.x25.t2, 29); + u.cfg.t2 = min(unsigned int, conf->u.x25.t2, 29); if (conf->u.x25.t4) - u.cfg.t4 = min(conf->u.x25.t4, 240); + u.cfg.t4 = min(unsigned int, conf->u.x25.t4, 240); if (conf->u.x25.n2) - u.cfg.n2 = min(conf->u.x25.n2, 30); + u.cfg.n2 = min(unsigned int, conf->u.x25.n2, 30); if (conf->u.x25.t10_t20) - u.cfg.t10t20 = min(conf->u.x25.t10_t20,255); + u.cfg.t10t20 = min(unsigned int, conf->u.x25.t10_t20,255); if (conf->u.x25.t11_t21) - u.cfg.t11t21 = min(conf->u.x25.t11_t21,255); + u.cfg.t11t21 = min(unsigned int, conf->u.x25.t11_t21,255); if (conf->u.x25.t12_t22) - u.cfg.t12t22 = min(conf->u.x25.t12_t22,255); + u.cfg.t12t22 = min(unsigned int, conf->u.x25.t12_t22,255); if (conf->u.x25.t13_t23) - u.cfg.t13t23 = min(conf->u.x25.t13_t23,255); + u.cfg.t13t23 = min(unsigned int, conf->u.x25.t13_t23,255); if (conf->u.x25.t16_t26) - u.cfg.t16t26 = min(conf->u.x25.t16_t26, 255); + u.cfg.t16t26 = min(unsigned int, conf->u.x25.t16_t26, 255); if (conf->u.x25.t28) - u.cfg.t28 = min(conf->u.x25.t28, 255); + u.cfg.t28 = min(unsigned int, conf->u.x25.t28, 255); if (conf->u.x25.r10_r20) - u.cfg.r10r20 = min(conf->u.x25.r10_r20,250); + u.cfg.r10r20 = min(unsigned int, conf->u.x25.r10_r20,250); if (conf->u.x25.r12_r22) - u.cfg.r12r22 = min(conf->u.x25.r12_r22,250); + u.cfg.r12r22 = min(unsigned int, conf->u.x25.r12_r22,250); if (conf->u.x25.r13_r23) - u.cfg.r13r23 = min(conf->u.x25.r13_r23,250); + u.cfg.r13r23 = min(unsigned int, conf->u.x25.r13_r23,250); if (conf->u.x25.ccitt_compat) diff --git a/drivers/net/wan/wanpipe_multppp.c b/drivers/net/wan/wanpipe_multppp.c index 448341d5bbd7..d190eb322e2c 100644 --- a/drivers/net/wan/wanpipe_multppp.c +++ b/drivers/net/wan/wanpipe_multppp.c @@ -375,13 +375,13 @@ int wsppp_init (sdla_t* card, wandev_conf_t* conf) /* For Primary Port 0 */ card->wandev.mtu = (conf->mtu >= MIN_LGTH_CHDLC_DATA_CFG) ? - min(conf->mtu, PRI_MAX_NO_DATA_BYTES_IN_FRAME) : + min(unsigned int, conf->mtu, PRI_MAX_NO_DATA_BYTES_IN_FRAME) : CHDLC_DFLT_DATA_LEN; } else if(port_num == WANOPT_SEC) { /* For Secondary Port 1 */ card->wandev.mtu = (conf->mtu >= MIN_LGTH_CHDLC_DATA_CFG) ? - min(conf->mtu, SEC_MAX_NO_DATA_BYTES_IN_FRAME) : + min(unsigned int, conf->mtu, SEC_MAX_NO_DATA_BYTES_IN_FRAME) : CHDLC_DFLT_DATA_LEN; } diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c index ff2ac1ccd2d6..78b666462b01 100644 --- a/drivers/net/wireless/airo.c +++ b/drivers/net/wireless/airo.c @@ -259,8 +259,6 @@ MODULE_PARM_DESC(proc_perm, "The permission bits of the files in /proc"); #include -#define min(x,y) ((xdata, iobuf, min (comp->len, sizeof(iobuf)))) + if (copy_to_user(comp->data, iobuf, + min(unsigned int, comp->len, sizeof(iobuf)))) return -EFAULT; return 0; } @@ -4057,7 +4056,8 @@ static int writerids(struct net_device *dev, aironet_ioctl *comp) { PC4500_readrid(dev->priv,ridcode,iobuf,sizeof(iobuf)); - if (copy_to_user(comp->data,iobuf,min(comp->len,sizeof(iobuf)))) + if (copy_to_user(comp->data, iobuf, + min(unsigned int, comp->len, sizeof(iobuf)))) return -EFAULT; return 0; diff --git a/drivers/net/wireless/airport.c b/drivers/net/wireless/airport.c index daa24801b818..3cd86b130d4a 100644 --- a/drivers/net/wireless/airport.c +++ b/drivers/net/wireless/airport.c @@ -1,4 +1,4 @@ -/* airport.c 0.05 +/* airport.c 0.06f * * A driver for "Hermes" chipset based Apple Airport wireless * card. @@ -32,6 +32,10 @@ #include "hermes.h" #include "orinoco.h" +static const char version[] __initdata = "airport.c 0.06f (Benjamin Herrenschmidt )"; +MODULE_AUTHOR("Benjamin Herrenschmidt "); +MODULE_DESCRIPTION("Driver for the Apple Airport wireless card."); + typedef struct dldwd_card { struct device_node* node; int irq_requested; @@ -40,8 +44,6 @@ typedef struct dldwd_card { struct dldwd_priv priv; } dldwd_card_t; -static char *version = "airport.c 0.05 (Benjamin Herrenschmidt )"; - /* * Function prototypes */ @@ -186,7 +188,7 @@ airport_attach(struct device_node* of_node) printk(KERN_ERR "airport: register_netdev() failed\n"); goto failed; } - printk(KERN_INFO "airport: card registered for interface %s\n", ndev->name); + printk(KERN_DEBUG "airport: card registered for interface %s\n", ndev->name); card->ndev_registered = 1; SET_MODULE_OWNER(ndev); @@ -242,7 +244,7 @@ init_airport(void) { struct device_node* airport_node; - printk(KERN_INFO "%s\n", version); + printk(KERN_DEBUG "%s\n", version); MOD_INC_USE_COUNT; diff --git a/drivers/net/wireless/hermes.c b/drivers/net/wireless/hermes.c index 923850119e41..c6a684b7a579 100644 --- a/drivers/net/wireless/hermes.c +++ b/drivers/net/wireless/hermes.c @@ -3,21 +3,19 @@ * Driver core for the "Hermes" wireless MAC controller, as used in * the Lucent Orinoco and Cabletron RoamAbout cards. It should also * work on the hfa3841 and hfa3842 MAC controller chips used in the - * Prism I & II chipsets. + * Prism II chipsets. * * This is not a complete driver, just low-level access routines for * the MAC controller itself. * * Based on the prism2 driver from Absolute Value Systems' linux-wlan * project, the Linux wvlan_cs driver, Lucent's HCF-Light - * (wvlan_hcf.c) library, and the NetBSD wireless driver. + * (wvlan_hcf.c) library, and the NetBSD wireless driver (in no + * particular order). * * Copyright (C) 2000, David Gibson, Linuxcare Australia * - * This file distributed under the GPL, version 2. - */ - -static const char *version = "hermes.c: 12 Dec 2000 David Gibson "; + * This file distributed under the GPL, version 2. */ #include #include @@ -32,6 +30,10 @@ static const char *version = "hermes.c: 12 Dec 2000 David Gibson "); + /* These are maximum timeouts. Most often, card wil react much faster */ #define CMD_BUSY_TIMEOUT (100) /* In iterations of ~1us */ #define CMD_INIT_TIMEOUT (50000) /* in iterations of ~10us */ @@ -69,10 +71,6 @@ static const char *version = "hermes.c: 12 Dec 2000 David Gibson v0.06c - 29/5/2001 - Jean II * o Show first spy address in /proc/net/wireless for IBSS mode as well * + * v0.06c -> v0.06d - 6/7/2001 - David Gibson + * o Change a bunch of KERN_INFO messages to KERN_DEBUG, as per Linus' + * wishes to reduce the number of unecessary messages. + * o Removed bogus message on CRC error. + * o Merged fixeds for v0.08 Prism 2 firmware from William Waghorn + * + * o Slight cleanup/re-arrangement of firmware detection code. + * + * v0.06d -> v0.06e - 1/8/2001 - David Gibson + * o Removed some redundant global initializers (orinoco_cs.c). + * o Added some module metadataa + * + * v0.06e -> v0.06f - 14/8/2001 - David Gibson + * o Wording fix to license + * o Added a 'use_alternate_encaps' module parameter for APs which need an oui of + * 00:00:00. We really need a better way of handling this, but the module flag + * is better than nothing for now. + * * TODO - Jean II * o inline functions (lot's of candidate, need to reorder code) * o Test PrismII/Symbol cards & firmware versions @@ -202,7 +220,9 @@ #include "hermes.h" #include "orinoco.h" -static char *version = "orinoco.c 0.06c (David Gibson and others)"; +static const char version[] __initdata = "orinoco.c 0.06f (David Gibson and others)"; +MODULE_AUTHOR("David Gibson "); +MODULE_DESCRIPTION("Driver for Lucent Orinoco, Prism II based and similar wireless cards"); /* Level of debugging. Used in the macros in orinoco.h */ #ifdef ORINOCO_DEBUG @@ -210,6 +230,11 @@ int dldwd_debug = ORINOCO_DEBUG; MODULE_PARM(dldwd_debug, "i"); #endif +/* FIXME: We need a better way of handling this */ +/* Set this flag to use 00:00:00 for the encapsulation oui instead of 00:00:F8 */ +static int use_alternate_encaps; /* =0 */ +MODULE_PARM(use_alternate_encaps, "i"); + const long channel_frequency[] = { 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472, 2484 @@ -274,6 +299,9 @@ struct dldwd_frame_hdr { struct p8022_hdr encaps_hdr = { 0xaa, 0xaa, 0x03, {0x00, 0x00, 0xf8} }; +struct p8022_hdr alternate_encaps_hdr = { + 0xaa, 0xaa, 0x03, {0x00, 0x00, 0x00} +}; /* * Function prototypes @@ -396,6 +424,7 @@ set_port_type(dldwd_priv_t *priv) priv->port_type = 4; else priv->port_type = 1; + priv->port_type = priv->ibss_port; priv->allow_ibss = 1; } break; @@ -1050,8 +1079,7 @@ static void __dldwd_ev_rx(dldwd_priv_t *priv, hermes_t *hw) if (status & HERMES_RXSTAT_ERR) { if ((status & HERMES_RXSTAT_ERR) == HERMES_RXSTAT_BADCRC) { stats->rx_crc_errors++; - printk(KERN_WARNING "%s: Bad CRC on Rx. Frame dropped.\n", - dev->name); + DEBUG(1, "%s: Bad CRC on Rx. Frame dropped.\n", dev->name); show_rx_frame(&hdr); } else if ((status & HERMES_RXSTAT_ERR) == HERMES_RXSTAT_UNDECRYPTABLE) { @@ -1198,34 +1226,14 @@ static void __dldwd_ev_alloc(dldwd_priv_t *priv, hermes_t *hw) /* hermes_write_regn(hw, ALLOCFID, 0); */ } -/* - * struct net_device methods - */ - -int -dldwd_init(struct net_device *dev) +static void determine_firmware(struct net_device *dev) { dldwd_priv_t *priv = dev->priv; hermes_t *hw = &priv->hw; - int err = 0; - hermes_id_t nickbuf; - uint16_t reclen; - int len; - char *vendor_str; + int err; uint32_t firmver; + char *vendor_str; - TRACE_ENTER("dldwd"); - - dldwd_lock(priv); - - /* Do standard firmware reset */ - err = hermes_reset(hw); - if (err != 0) { - printk(KERN_ERR "%s: failed to reset hardware (err = %d)\n", - dev->name, err); - goto out; - } - /* Get the firmware version */ err = hermes_read_staidentity(hw, USER_BAP, &priv->firmware_info); if (err) { @@ -1361,18 +1369,54 @@ dldwd_init(struct net_device *dev) priv->has_pm = 0; priv->has_preamble = 0; } + + if (priv->firmware_type == FIRMWARE_TYPE_SYMBOL) + priv->ibss_port = 4; + else if ( (priv->firmware_type == FIRMWARE_TYPE_PRISM2) && (firmver >= 0x00008) ) + priv->ibss_port = 0; + else + priv->ibss_port = 1; - printk(KERN_INFO "%s: Firmware ID %02X vendor 0x%x (%s) version %d.%02d\n", + printk(KERN_DEBUG "%s: Firmware ID %02X vendor 0x%x (%s) version %d.%02d\n", dev->name, priv->firmware_info.id, priv->firmware_info.vendor, vendor_str, priv->firmware_info.major, priv->firmware_info.minor); +} + +/* + * struct net_device methods + */ + +int +dldwd_init(struct net_device *dev) +{ + dldwd_priv_t *priv = dev->priv; + hermes_t *hw = &priv->hw; + int err = 0; + hermes_id_t nickbuf; + uint16_t reclen; + int len; + + TRACE_ENTER("dldwd"); + + dldwd_lock(priv); + + /* Do standard firmware reset */ + err = hermes_reset(hw); + if (err != 0) { + printk(KERN_ERR "%s: failed to reset hardware (err = %d)\n", + dev->name, err); + goto out; + } + + determine_firmware(dev); if (priv->has_port3) - printk(KERN_INFO "%s: Ad-hoc demo mode supported.\n", dev->name); + printk(KERN_DEBUG "%s: Ad-hoc demo mode supported.\n", dev->name); if (priv->has_ibss) - printk(KERN_INFO "%s: IEEE standard IBSS ad-hoc mode supported.\n", + printk(KERN_DEBUG "%s: IEEE standard IBSS ad-hoc mode supported.\n", dev->name); if (priv->has_wep) { - printk(KERN_INFO "%s: WEP supported, ", dev->name); + printk(KERN_DEBUG "%s: WEP supported, ", dev->name); if (priv->has_big_wep) printk("\"128\"-bit key.\n"); else @@ -1388,7 +1432,7 @@ dldwd_init(struct net_device *dev) goto out; } - printk(KERN_INFO "%s: MAC address %02X:%02X:%02X:%02X:%02X:%02X\n", + printk(KERN_DEBUG "%s: MAC address %02X:%02X:%02X:%02X:%02X:%02X\n", dev->name, dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2], dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]); @@ -1408,7 +1452,7 @@ dldwd_init(struct net_device *dev) memcpy(priv->nick, &nickbuf.val, len); priv->nick[len] = '\0'; - printk(KERN_INFO "%s: Station name \"%s\"\n", dev->name, priv->nick); + printk(KERN_DEBUG "%s: Station name \"%s\"\n", dev->name, priv->nick); /* Get allowed channels */ err = hermes_read_wordrec(hw, USER_BAP, HERMES_RID_CHANNEL_LIST, &priv->channel_mask); @@ -1482,7 +1526,7 @@ dldwd_init(struct net_device *dev) priv->wep_on = 0; priv->tx_key = 0; - printk(KERN_INFO "%s: ready\n", dev->name); + printk(KERN_DEBUG "%s: ready\n", dev->name); out: dldwd_unlock(priv); @@ -1668,7 +1712,11 @@ dldwd_xmit(struct sk_buff *skb, struct net_device *dev) hdr.p8023.h_proto = htons(data_len + ENCAPS_OVERHEAD); /* 802.2 header */ - memcpy(&hdr.p8022, &encaps_hdr, sizeof(encaps_hdr)); + /* FIXME: ugh, what a hack for the 00:00:00 APs. Need to find a better way */ + if (use_alternate_encaps) + memcpy(&hdr.p8022, &alternate_encaps_hdr, sizeof(alternate_encaps_hdr)); + else + memcpy(&hdr.p8022, &encaps_hdr, sizeof(encaps_hdr)); hdr.ethertype = eh->h_proto; err = hermes_bap_pwrite(hw, USER_BAP, &hdr, sizeof(hdr), @@ -2546,6 +2594,33 @@ static int dldwd_ioctl_getretry(struct net_device *dev, struct iw_param *rrq) } #endif /* WIRELESS_EXT > 10 */ +static int dldwd_ioctl_setibssport(struct net_device *dev, struct iwreq *wrq) +{ + dldwd_priv_t *priv = dev->priv; + int val = *( (int *) wrq->u.name ); + + dldwd_lock(priv); + priv->ibss_port = val ; + + /* Actually update the mode we are using */ + set_port_type(priv); + + dldwd_unlock(priv); + return 0; +} + +static int dldwd_ioctl_getibssport(struct net_device *dev, struct iwreq *wrq) +{ + dldwd_priv_t *priv = dev->priv; + int *val = (int *)wrq->u.name; + + dldwd_lock(priv); + *val = priv->ibss_port; + dldwd_unlock(priv); + + return 0; +} + static int dldwd_ioctl_setport3(struct net_device *dev, struct iwreq *wrq) { dldwd_priv_t *priv = dev->priv; @@ -2941,7 +3016,13 @@ dldwd_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 0, "set_preamble" }, { SIOCDEVPRIVATE + 0x5, 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, - "get_preamble" } + "get_preamble" }, + { SIOCDEVPRIVATE + 0x6, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, + 0, "set_ibssport" }, + { SIOCDEVPRIVATE + 0x7, 0, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, + "get_ibssport" } }; err = verify_area(VERIFY_WRITE, wrq->u.data.pointer, sizeof(privtab)); @@ -3038,6 +3119,25 @@ dldwd_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) } else err = -EOPNOTSUPP; break; + case SIOCDEVPRIVATE + 0x6: /* set_ibssport */ + DEBUG(1, "%s: SIOCDEVPRIVATE + 0x6 (set_ibssport)\n", + dev->name); + if (! capable(CAP_NET_ADMIN)) { + err = -EPERM; + break; + } + + err = dldwd_ioctl_setibssport(dev, wrq); + if (! err) + changed = 1; + break; + + case SIOCDEVPRIVATE + 0x7: /* get_ibssport */ + DEBUG(1, "%s: SIOCDEVPRIVATE + 0x7 (get_ibssport)\n", + dev->name); + err = dldwd_ioctl_getibssport(dev, wrq); + break; + default: err = -EOPNOTSUPP; @@ -3601,7 +3701,7 @@ static int __init init_dldwd(void) err = dldwd_proc_init(); - printk(KERN_INFO "%s\n", version); + printk(KERN_DEBUG "%s\n", version); return 0; } diff --git a/drivers/net/wireless/orinoco.h b/drivers/net/wireless/orinoco.h index b90d323d2fa1..db2b6638cc4a 100644 --- a/drivers/net/wireless/orinoco.h +++ b/drivers/net/wireless/orinoco.h @@ -69,7 +69,7 @@ typedef struct dldwd_priv { #define FIRMWARE_TYPE_LUCENT 1 #define FIRMWARE_TYPE_PRISM2 2 #define FIRMWARE_TYPE_SYMBOL 3 - int has_ibss, has_port3, prefer_port3, has_ibss_any; + int has_ibss, has_port3, prefer_port3, has_ibss_any, ibss_port; int has_wep, has_big_wep; int has_mwo; int has_pm; @@ -107,10 +107,10 @@ typedef struct dldwd_priv { /*====================================================================*/ -extern int dldwd_debug; extern struct list_head dldwd_instances; #ifdef ORINOCO_DEBUG +extern int dldwd_debug; #define DEBUG(n, args...) if (dldwd_debug>(n)) printk(KERN_DEBUG args) #define DEBUGMORE(n, args...) do { if (dldwd_debug>(n)) printk(args); } while (0) #else diff --git a/drivers/net/wireless/orinoco_cs.c b/drivers/net/wireless/orinoco_cs.c index 8bf94dc46acd..2a26a07c4c1c 100644 --- a/drivers/net/wireless/orinoco_cs.c +++ b/drivers/net/wireless/orinoco_cs.c @@ -1,4 +1,4 @@ -/* orinoco_cs.c 0.06 - (formerly known as dldwd_cs.c) +/* orinoco_cs.c 0.06f - (formerly known as dldwd_cs.c) * * A driver for "Hermes" chipset based PCMCIA wireless adaptors, such * as the Lucent WavelanIEEE/Orinoco cards and their OEM (Cabletron/ @@ -40,20 +40,12 @@ #include "hermes.h" #include "orinoco.h" -/* Pcmcia specific structure */ -typedef struct dldwd_card { - dev_link_t link; - dev_node_t node; - int instance; - - /* Common structure (fully included), see orinoco.h */ - struct dldwd_priv priv; -} dldwd_card_t; +/*====================================================================*/ -static char version[] __initdata = -"orinoco_cs.c 0.06 (David Gibson and others)"; +static const char version[] __initdata = "orinoco_cs.c 0.06f (David Gibson and others)"; -/*====================================================================*/ +MODULE_AUTHOR("David Gibson "); +MODULE_DESCRIPTION("Driver for PCMCIA Lucent Orinoco, Prism II based and similar wireless cards"); /* Parameters that can be set with 'insmod' */ @@ -66,13 +58,24 @@ static int irq_list[4] = { -1 }; static int reset_cor = 0; /* Some D-Link cards have buggy CIS. They do work at 5v properly, but * don't have any CIS entry for it. This workaround it... */ -static int ignore_cis_vcc = 0; +static int ignore_cis_vcc; /* = 0 */ MODULE_PARM(irq_mask, "i"); MODULE_PARM(irq_list, "1-4i"); MODULE_PARM(reset_cor, "i"); MODULE_PARM(ignore_cis_vcc, "i"); + +/* Pcmcia specific structure */ +typedef struct dldwd_card { + dev_link_t link; + dev_node_t node; + int instance; + + /* Common structure (fully included), see orinoco.h */ + struct dldwd_priv priv; +} dldwd_card_t; + /* * Function prototypes */ @@ -108,8 +111,8 @@ static dev_info_t dev_info = "orinoco_cs"; device numbers are used to derive the corresponding array index. */ -static dev_link_t *dev_list; -static int num_instances; +static dev_link_t *dev_list; /* = NULL */ +static int num_instances; /* = 0 */ /*====================================================================*/ @@ -595,7 +598,7 @@ dldwd_cs_config(dev_link_t * link) strcpy(card->node.dev_name, ndev->name); /* Finally, report what we've done */ - printk(KERN_INFO "%s: index 0x%02x: Vcc %d.%d", + printk(KERN_DEBUG "%s: index 0x%02x: Vcc %d.%d", ndev->name, link->conf.ConfigIndex, link->conf.Vcc / 10, link->conf.Vcc % 10); if (link->conf.Vpp1) @@ -777,8 +780,8 @@ init_dldwd_cs(void) TRACE_ENTER("dldwd"); - printk(KERN_INFO "dldwd: David's Less Dodgy WaveLAN/IEEE Driver\n" - KERN_INFO "%s\n", version); + printk(KERN_DEBUG "dldwd: David's Less Dodgy WaveLAN/IEEE Driver\n" + KERN_DEBUG "%s\n", version); CardServices(GetCardServicesInfo, &serv); if (serv.Revision != CS_RELEASE_CODE) { -- cgit v1.2.3