Changeset 1407
- Timestamp:
- 01/23/06 08:07:51 (3 years ago)
- Files:
-
- trunk/ath/if_ath.c (modified) (7 diffs)
- trunk/net80211/ieee80211.c (modified) (1 diff)
- trunk/net80211/ieee80211_linux.h (modified) (1 diff)
- trunk/net80211/ieee80211_wireless.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ath/if_ath.c
r1392 r1407 58 58 #include <linux/proc_fs.h> 59 59 #include <linux/if_arp.h> 60 60 #include <linux/rtnetlink.h> 61 61 #include <asm/uaccess.h> 62 62 … … 257 257 static int ath_outdoor = AH_FALSE; /* enable outdoor use */ 258 258 static int ath_xchanmode = AH_TRUE; /* enable extended channels */ 259 259 static char *autocreate = NULL; 260 260 static int rfkill = -1; 261 261 static int countrycode = -1; … … 287 287 MODULE_PARM(xchanmode, "i"); 288 288 MODULE_PARM(rfkill, "i"); 289 MODULE_PARM(autocreate, "s"); 289 290 #else 290 291 #include <linux/moduleparam.h> … … 293 294 module_param(xchanmode, int, 0); 294 295 module_param(rfkill, int, 0); 296 module_param(autocreate, charp, 0); 295 297 #endif 296 298 MODULE_PARM_DESC(countrycode, "Override default country code"); … … 298 300 MODULE_PARM_DESC(xchanmode, "Enable/disable extended channel mode"); 299 301 MODULE_PARM_DESC(rfkill, "Enable/disable RFKILL capability"); 300 302 MODULE_PARM_DESC(autocreate, "Create ath device in [sta|ap|wds|adhoc|ahdemo|monitor] mode. defaults to sta, use 'none' to disable"); 301 303 #ifdef AR_DEBUG 302 304 … … 390 392 HAL_STATUS status; 391 393 int error = 0,i; 394 int autocreatemode = IEEE80211_M_STA; 392 395 u_int8_t csz; 393 396 … … 866 869 printk("%s: TX99 support enabled\n", dev->name); 867 870 #endif 871 sc->sc_invalid = 0; 872 873 if(autocreate) { 874 if(!strcmp(autocreate, "none")) 875 autocreatemode = 0; 876 else if(!strcmp(autocreate, "sta")) 877 autocreatemode = IEEE80211_M_STA; 878 else if (!strcmp(autocreate, "ap")) 879 autocreatemode = IEEE80211_M_HOSTAP; 880 else if (!strcmp(autocreate, "adhoc")) 881 autocreatemode = IEEE80211_M_IBSS; 882 else if (!strcmp(autocreate, "ahdemo")) 883 autocreatemode = IEEE80211_M_AHDEMO; 884 else if (!strcmp(autocreate, "wds")) 885 autocreatemode = IEEE80211_M_WDS; 886 else if (!strcmp(autocreate, "monitor")) 887 autocreatemode = IEEE80211_M_MONITOR; 888 else 889 printk(KERN_INFO "Unknown autocreate mode: %s\n", autocreate); 890 } 891 if(autocreatemode) { 892 rtnl_lock(); 893 error = ieee80211_create_vap(ic, "ath%d", dev, autocreatemode, IEEE80211_CLONE_BSSID); 894 rtnl_unlock(); 895 if(error) 896 printk(KERN_ERR "%s: autocreation of vap failed: %d\n", dev->name, error); 897 } 898 868 899 return 0; 869 900 bad3: trunk/net80211/ieee80211.c
r1333 r1407 378 378 struct ieee80211vap *vap = dev->priv; 379 379 struct net_device *parent = ic->ic_dev; 380 381 if (name != NULL) /* XXX */ 382 strncpy(dev->name, name, sizeof(dev->name)); 380 int err; 381 382 if (name != NULL) { /* XXX */ 383 if(strchr(name, '%')) { 384 if((err = dev_alloc_name(dev, name)) < 0) { 385 printk(KERN_ERR "can't alloc name %s\n", name); 386 return err; 387 } 388 } else 389 strncpy(dev->name, name, sizeof(dev->name)); 390 } 383 391 dev->get_stats = ieee80211_getstats; 384 392 dev->open = ieee80211_open; trunk/net80211/ieee80211_linux.h
r1380 r1407 445 445 struct ifreq; 446 446 int ieee80211_ioctl_create_vap(struct ieee80211com *, struct ifreq *, struct net_device *); 447 447 int ieee80211_create_vap(struct ieee80211com *ic, char *name, struct net_device *mdev, int opmode, int opflags); 448 448 #endif /* _NET80211_IEEE80211_LINUX_H_ */ trunk/net80211/ieee80211_wireless.c
r1403 r1407 4066 4066 } 4067 4067 EXPORT_SYMBOL(ieee80211_ioctl_create_vap); 4068 /* 4069 * Create a virtual ap. This is public as it must be implemented 4070 * outside our control (e.g. in the driver). 4071 * Must be called with rtnl_lock held 4072 */ 4073 int 4074 ieee80211_create_vap(struct ieee80211com *ic, char *name, struct net_device *mdev, int opmode, int opflags) 4075 { 4076 struct ieee80211vap *vap; 4077 int error, unit; 4078 4079 if((error = ifc_name2unit(name, &unit))) 4080 return error; 4081 4082 if (unit == -1) { 4083 if((unit = ieee80211_new_wlanunit()) == -1) 4084 return -EIO; /* XXX */ 4085 } else { 4086 if (!ieee80211_alloc_wlanunit(unit)) 4087 return -EINVAL; 4088 4089 } 4090 4091 if((vap = ic->ic_vap_create(ic, name, unit, opmode, opflags, mdev)) == NULL) { 4092 ieee80211_delete_wlanunit(unit); 4093 return -EIO; 4094 } 4095 return 0; 4096 } 4097 EXPORT_SYMBOL(ieee80211_create_vap); 4098 4068 4099 4069 4100 void
