diff options
Diffstat (limited to 'drivers/net/wireless/ray_cs.c')
| -rw-r--r-- | drivers/net/wireless/ray_cs.c | 59 | 
1 files changed, 30 insertions, 29 deletions
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c index 2b1cbba90a8..8330fa33e50 100644 --- a/drivers/net/wireless/ray_cs.c +++ b/drivers/net/wireless/ray_cs.c @@ -17,8 +17,7 @@   * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * along with this program; if not, see <http://www.gnu.org/licenses/>.   *   * Changes:   * Arnaldo Carvalho de Melo <acme@conectiva.com.br> - 08/08/2000 @@ -53,7 +52,6 @@  #include <net/iw_handler.h>  #include <asm/io.h> -#include <asm/system.h>  #include <asm/byteorder.h>  #include <asm/uaccess.h> @@ -145,7 +143,7 @@ static int psm;  static char *essid;  /* Default to encapsulation unless translation requested */ -static int translate = 1; +static bool translate = 1;  static int country = USA; @@ -179,7 +177,7 @@ module_param(hop_dwell, int, 0);  module_param(beacon_period, int, 0);  module_param(psm, int, 0);  module_param(essid, charp, 0); -module_param(translate, int, 0); +module_param(translate, bool, 0);  module_param(country, int, 0);  module_param(sniffer, int, 0);  module_param(bc, int, 0); @@ -273,7 +271,7 @@ static const struct net_device_ops ray_netdev_ops = {  	.ndo_start_xmit		= ray_dev_start_xmit,  	.ndo_set_config		= ray_dev_config,  	.ndo_get_stats		= ray_get_stats, -	.ndo_set_multicast_list = set_multicast_list, +	.ndo_set_rx_mode	= set_multicast_list,  	.ndo_change_mtu		= eth_change_mtu,  	.ndo_set_mac_address 	= eth_mac_addr,  	.ndo_validate_addr	= eth_validate_addr, @@ -345,7 +343,7 @@ static void ray_detach(struct pcmcia_device *link)  	ray_release(link);  	local = netdev_priv(dev); -	del_timer(&local->timer); +	del_timer_sync(&local->timer);  	if (link->priv) {  		unregister_netdev(dev); @@ -954,7 +952,7 @@ static int translate_frame(ray_dev_t *local, struct tx_msg __iomem *ptx,  			   unsigned char *data, int len)  {  	__be16 proto = ((struct ethhdr *)data)->h_proto; -	if (ntohs(proto) >= 1536) { /* DIX II ethernet frame */ +	if (ntohs(proto) >= ETH_P_802_3_MIN) { /* DIX II ethernet frame */  		pr_debug("ray_cs translate_frame DIX II\n");  		/* Copy LLC header to card buffer */  		memcpy_toio(&ptx->var, eth2_llc, sizeof(eth2_llc)); @@ -1108,12 +1106,15 @@ static int ray_get_essid(struct net_device *dev, struct iw_request_info *info,  			 union iwreq_data *wrqu, char *extra)  {  	ray_dev_t *local = netdev_priv(dev); +	UCHAR tmp[IW_ESSID_MAX_SIZE + 1];  	/* Get the essid that was set */  	memcpy(extra, local->sparm.b5.a_current_ess_id, IW_ESSID_MAX_SIZE); +	memcpy(tmp, local->sparm.b5.a_current_ess_id, IW_ESSID_MAX_SIZE); +	tmp[IW_ESSID_MAX_SIZE] = '\0';  	/* Push it out ! */ -	wrqu->essid.length = strlen(extra); +	wrqu->essid.length = strlen(tmp);  	wrqu->essid.flags = 1;	/* active */  	return 0; @@ -1351,7 +1352,7 @@ static int ray_get_range(struct net_device *dev, struct iw_request_info *info,  static int ray_set_framing(struct net_device *dev, struct iw_request_info *info,  			   union iwreq_data *wrqu, char *extra)  { -	translate = *(extra);	/* Set framing mode */ +	translate = !!*(extra);	/* Set framing mode */  	return 0;  } @@ -1776,11 +1777,8 @@ static void ray_update_multi_list(struct net_device *dev, int all)  		/* Copy the kernel's list of MC addresses to card */  		netdev_for_each_mc_addr(ha, dev) {  			memcpy_toio(p, ha->addr, ETH_ALEN); -			dev_dbg(&link->dev, -			      "ray_update_multi add addr %02x%02x%02x%02x%02x%02x\n", -			      ha->addr[0], ha->addr[1], -			      ha->addr[2], ha->addr[3], -			      ha->addr[4], ha->addr[5]); +			dev_dbg(&link->dev, "ray_update_multi add addr %pm\n", +				ha->addr);  			p += ETH_ALEN;  			i++;  		} @@ -1846,6 +1844,8 @@ static irqreturn_t ray_interrupt(int irq, void *dev_id)  	UCHAR tmp;  	UCHAR cmd;  	UCHAR status; +	UCHAR memtmp[ESSID_SIZE + 1]; +  	if (dev == NULL)	/* Note that we want interrupts with dev->start == 0 */  		return IRQ_NONE; @@ -1853,7 +1853,7 @@ static irqreturn_t ray_interrupt(int irq, void *dev_id)  	pr_debug("ray_cs: interrupt for *dev=%p\n", dev);  	local = netdev_priv(dev); -	link = (struct pcmcia_device *)local->finder; +	link = local->finder;  	if (!pcmcia_dev_present(link)) {  		pr_debug(  			"ray_cs interrupt from device not present or suspended.\n"); @@ -1905,17 +1905,21 @@ static irqreturn_t ray_interrupt(int irq, void *dev_id)  			break;  		case CCS_START_NETWORK:  		case CCS_JOIN_NETWORK: +			memcpy(memtmp, local->sparm.b4.a_current_ess_id, +								ESSID_SIZE); +			memtmp[ESSID_SIZE] = '\0'; +  			if (status == CCS_COMMAND_COMPLETE) {  				if (readb  				    (&pccs->var.start_network.net_initiated) ==  				    1) {  					dev_dbg(&link->dev,  					      "ray_cs interrupt network \"%s\" started\n", -					      local->sparm.b4.a_current_ess_id); +					      memtmp);  				} else {  					dev_dbg(&link->dev,  					      "ray_cs interrupt network \"%s\" joined\n", -					      local->sparm.b4.a_current_ess_id); +					      memtmp);  				}  				memcpy_fromio(&local->bss_id,  					      pccs->var.start_network.bssid, @@ -1943,12 +1947,12 @@ static irqreturn_t ray_interrupt(int irq, void *dev_id)  				if (status == CCS_START_NETWORK) {  					dev_dbg(&link->dev,  					      "ray_cs interrupt network \"%s\" start failed\n", -					      local->sparm.b4.a_current_ess_id); +					      memtmp);  					local->timer.function = start_net;  				} else {  					dev_dbg(&link->dev,  					      "ray_cs interrupt network \"%s\" join failed\n", -					      local->sparm.b4.a_current_ess_id); +					      memtmp);  					local->timer.function = join_net;  				}  				add_timer(&local->timer); @@ -2015,11 +2019,8 @@ static irqreturn_t ray_interrupt(int irq, void *dev_id)  				memcpy_fromio(&local->bss_id,  					      prcs->var.rejoin_net_complete.  					      bssid, ADDRLEN); -				dev_dbg(&link->dev, -				      "ray_cs new BSSID = %02x%02x%02x%02x%02x%02x\n", -				      local->bss_id[0], local->bss_id[1], -				      local->bss_id[2], local->bss_id[3], -				      local->bss_id[4], local->bss_id[5]); +				dev_dbg(&link->dev, "ray_cs new BSSID = %pm\n", +					local->bss_id);  				if (!sniffer)  					authenticate(local);  			} @@ -2432,7 +2433,7 @@ static void rx_authenticate(ray_dev_t *local, struct rcs __iomem *prcs,  			    unsigned int pkt_addr, int rx_len)  {  	UCHAR buff[256]; -	struct rx_msg *msg = (struct rx_msg *)buff; +	struct ray_rx_msg *msg = (struct ray_rx_msg *) buff;  	del_timer(&local->timer); @@ -2519,7 +2520,7 @@ static void rx_deauthenticate(ray_dev_t *local, struct rcs __iomem *prcs,  			      unsigned int pkt_addr, int rx_len)  {  /*  UCHAR buff[256]; -    struct rx_msg *msg = (struct rx_msg *)buff; +    struct ray_rx_msg *msg = (struct ray_rx_msg *) buff;  */  	pr_debug("Deauthentication frame received\n");  	local->authentication_state = UNAUTHENTICATED; @@ -2776,7 +2777,7 @@ static ssize_t int_proc_write(struct file *file, const char __user *buffer,  		nr = nr * 10 + c;  		p++;  	} while (--len); -	*(int *)PDE(file->f_path.dentry->d_inode)->data = nr; +	*(int *)PDE_DATA(file_inode(file)) = nr;  	return count;  } @@ -2787,7 +2788,7 @@ static const struct file_operations int_proc_fops = {  };  #endif -static struct pcmcia_device_id ray_ids[] = { +static const struct pcmcia_device_id ray_ids[] = {  	PCMCIA_DEVICE_MANF_CARD(0x01a6, 0x0000),  	PCMCIA_DEVICE_NULL,  };  | 
