iwinfo: transparently handle radioX names in madwifi backend
SVN-Revision: 33180
This commit is contained in:
parent
4fffc38827
commit
e54e4d50d1
1 changed files with 20 additions and 5 deletions
|
@ -196,6 +196,18 @@ static struct ISO3166_to_CCode
|
|||
};
|
||||
|
||||
|
||||
static const char * madwifi_phyname(const char *ifname)
|
||||
{
|
||||
static char phyname[IFNAMSIZ];
|
||||
|
||||
if (strlen(ifname) > 5 && !strncmp(ifname, "radio", 5))
|
||||
snprintf(phyname, sizeof(phyname), "wifi%s", ifname + 5);
|
||||
else
|
||||
snprintf(phyname, sizeof(phyname), "%s", ifname);
|
||||
|
||||
return (const char *)phyname;
|
||||
}
|
||||
|
||||
static int madwifi_wrq(struct iwreq *wrq, const char *ifname, int cmd, void *data, size_t len)
|
||||
{
|
||||
strncpy(wrq->ifr_name, ifname, IFNAMSIZ);
|
||||
|
@ -263,12 +275,14 @@ static int madwifi_iswifi(const char *ifname)
|
|||
int ret;
|
||||
char path[32];
|
||||
struct stat s;
|
||||
const char *phy;
|
||||
|
||||
ret = 0;
|
||||
phy = madwifi_phyname(ifname);
|
||||
|
||||
if( strlen(ifname) <= 7 )
|
||||
if( strlen(phy) <= 7 )
|
||||
{
|
||||
sprintf(path, "/proc/sys/dev/%s/diversity", ifname);
|
||||
sprintf(path, "/proc/sys/dev/%s/diversity", phy);
|
||||
|
||||
if( ! stat(path, &s) )
|
||||
ret = (s.st_mode & S_IFREG);
|
||||
|
@ -279,13 +293,13 @@ static int madwifi_iswifi(const char *ifname)
|
|||
|
||||
static char * madwifi_ifadd(const char *ifname)
|
||||
{
|
||||
char *wifidev = NULL;
|
||||
const char *wifidev = NULL;
|
||||
struct ifreq ifr = { 0 };
|
||||
struct ieee80211_clone_params cp = { 0 };
|
||||
static char nif[IFNAMSIZ] = { 0 };
|
||||
|
||||
if( !(wifidev = madwifi_isvap(ifname, NULL)) && madwifi_iswifi(ifname) )
|
||||
wifidev = (char *)ifname;
|
||||
wifidev = madwifi_phyname(ifname);
|
||||
|
||||
if( wifidev )
|
||||
{
|
||||
|
@ -1014,8 +1028,9 @@ int madwifi_get_hardware_id(const char *ifname, char *buf)
|
|||
char device[64];
|
||||
struct iwinfo_hardware_id *ids;
|
||||
struct iwinfo_hardware_entry *e;
|
||||
const char *phy = madwifi_phyname(ifname);
|
||||
|
||||
if (wext_get_hardware_id(ifname, buf))
|
||||
if (wext_get_hardware_id(phy, buf))
|
||||
return iwinfo_hardware_id_from_mtd((struct iwinfo_hardware_id *)buf);
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue