|
@@ -21,52 +21,6 @@
|
|
|
#include "assoc.h"
|
|
|
|
|
|
|
|
|
-/**
|
|
|
- * @brief Convert mw value to dbm value
|
|
|
- *
|
|
|
- * @param mw the value of mw
|
|
|
- * @return the value of dbm
|
|
|
- */
|
|
|
-static int mw_to_dbm(int mw)
|
|
|
-{
|
|
|
- if (mw < 2)
|
|
|
- return 0;
|
|
|
- else if (mw < 3)
|
|
|
- return 3;
|
|
|
- else if (mw < 4)
|
|
|
- return 5;
|
|
|
- else if (mw < 6)
|
|
|
- return 7;
|
|
|
- else if (mw < 7)
|
|
|
- return 8;
|
|
|
- else if (mw < 8)
|
|
|
- return 9;
|
|
|
- else if (mw < 10)
|
|
|
- return 10;
|
|
|
- else if (mw < 13)
|
|
|
- return 11;
|
|
|
- else if (mw < 16)
|
|
|
- return 12;
|
|
|
- else if (mw < 20)
|
|
|
- return 13;
|
|
|
- else if (mw < 25)
|
|
|
- return 14;
|
|
|
- else if (mw < 32)
|
|
|
- return 15;
|
|
|
- else if (mw < 40)
|
|
|
- return 16;
|
|
|
- else if (mw < 50)
|
|
|
- return 17;
|
|
|
- else if (mw < 63)
|
|
|
- return 18;
|
|
|
- else if (mw < 79)
|
|
|
- return 19;
|
|
|
- else if (mw < 100)
|
|
|
- return 20;
|
|
|
- else
|
|
|
- return 21;
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* @brief Find the channel frequency power info with specific channel
|
|
|
*
|
|
@@ -199,28 +153,11 @@ static void copy_active_data_rates(wlan_adapter * adapter, u8 * rates)
|
|
|
static int wlan_get_name(struct net_device *dev, struct iw_request_info *info,
|
|
|
char *cwrq, char *extra)
|
|
|
{
|
|
|
- const char *cp;
|
|
|
- char comm[6] = { "COMM-" };
|
|
|
- char mrvl[6] = { "MRVL-" };
|
|
|
- int cnt;
|
|
|
|
|
|
lbs_deb_enter(LBS_DEB_WEXT);
|
|
|
|
|
|
- strcpy(cwrq, mrvl);
|
|
|
-
|
|
|
- cp = strstr(libertas_driver_version, comm);
|
|
|
- if (cp == libertas_driver_version) //skip leading "COMM-"
|
|
|
- cp = libertas_driver_version + strlen(comm);
|
|
|
- else
|
|
|
- cp = libertas_driver_version;
|
|
|
-
|
|
|
- cnt = strlen(mrvl);
|
|
|
- cwrq += cnt;
|
|
|
- while (cnt < 16 && (*cp != '-')) {
|
|
|
- *cwrq++ = toupper(*cp++);
|
|
|
- cnt++;
|
|
|
- }
|
|
|
- *cwrq = '\0';
|
|
|
+ /* We could add support for 802.11n here as needed. Jean II */
|
|
|
+ snprintf(cwrq, IFNAMSIZ, "IEEE 802.11b/g");
|
|
|
|
|
|
lbs_deb_leave(LBS_DEB_WEXT);
|
|
|
return 0;
|
|
@@ -300,29 +237,37 @@ static int wlan_set_nick(struct net_device *dev, struct iw_request_info *info,
|
|
|
static int wlan_get_nick(struct net_device *dev, struct iw_request_info *info,
|
|
|
struct iw_point *dwrq, char *extra)
|
|
|
{
|
|
|
- wlan_private *priv = dev->priv;
|
|
|
- wlan_adapter *adapter = priv->adapter;
|
|
|
+ const char *cp;
|
|
|
+ char comm[6] = { "COMM-" };
|
|
|
+ char mrvl[6] = { "MRVL-" };
|
|
|
+ int cnt;
|
|
|
|
|
|
lbs_deb_enter(LBS_DEB_WEXT);
|
|
|
|
|
|
/*
|
|
|
- * Get the Nick Name saved
|
|
|
+ * Nick Name is not used internally in this mode,
|
|
|
+ * therefore return something useful instead. Jean II
|
|
|
*/
|
|
|
|
|
|
- mutex_lock(&adapter->lock);
|
|
|
- strncpy(extra, adapter->nodename, 16);
|
|
|
- mutex_unlock(&adapter->lock);
|
|
|
+ strcpy(extra, mrvl);
|
|
|
|
|
|
- extra[16] = '\0';
|
|
|
+ cp = strstr(libertas_driver_version, comm);
|
|
|
+ if (cp == libertas_driver_version) //skip leading "COMM-"
|
|
|
+ cp = libertas_driver_version + strlen(comm);
|
|
|
+ else
|
|
|
+ cp = libertas_driver_version;
|
|
|
|
|
|
- /*
|
|
|
- * If none, we may want to get the one that was set
|
|
|
- */
|
|
|
+ cnt = strlen(mrvl);
|
|
|
+ extra += cnt;
|
|
|
+ while (cnt < 16 && (*cp != '-')) {
|
|
|
+ *extra++ = toupper(*cp++);
|
|
|
+ cnt++;
|
|
|
+ }
|
|
|
|
|
|
/*
|
|
|
* Push it out !
|
|
|
*/
|
|
|
- dwrq->length = strlen(extra) + 1;
|
|
|
+ dwrq->length = cnt;
|
|
|
|
|
|
lbs_deb_leave(LBS_DEB_WEXT);
|
|
|
return 0;
|
|
@@ -341,12 +286,12 @@ static int mesh_get_nick(struct net_device *dev, struct iw_request_info *info,
|
|
|
if (adapter->connect_status == LIBERTAS_CONNECTED) {
|
|
|
strncpy(extra, "Mesh", 12);
|
|
|
extra[12] = '\0';
|
|
|
- dwrq->length = strlen(extra) + 1;
|
|
|
+ dwrq->length = strlen(extra);
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
extra[0] = '\0';
|
|
|
- dwrq->length = 1 ;
|
|
|
+ dwrq->length = 0;
|
|
|
}
|
|
|
|
|
|
lbs_deb_leave(LBS_DEB_WEXT);
|
|
@@ -1897,8 +1842,10 @@ static int wlan_set_txpow(struct net_device *dev, struct iw_request_info *info,
|
|
|
|
|
|
wlan_radio_ioctl(priv, RADIO_ON);
|
|
|
|
|
|
+ /* Userspace check in iwrange if it should use dBm or mW,
|
|
|
+ * therefore this should never happen... Jean II */
|
|
|
if ((vwrq->flags & IW_TXPOW_TYPE) == IW_TXPOW_MWATT) {
|
|
|
- dbm = (u16) mw_to_dbm(vwrq->value);
|
|
|
+ return -EOPNOTSUPP;
|
|
|
} else
|
|
|
dbm = (u16) vwrq->value;
|
|
|
|
|
@@ -1946,12 +1893,7 @@ static int wlan_get_essid(struct net_device *dev, struct iw_request_info *info,
|
|
|
* If none, we may want to get the one that was set
|
|
|
*/
|
|
|
|
|
|
- /* To make the driver backward compatible with WPA supplicant v0.2.4 */
|
|
|
- if (dwrq->length == 32) /* check with WPA supplicant buffer size */
|
|
|
- dwrq->length = min_t(size_t, adapter->curbssparams.ssid_len,
|
|
|
- IW_ESSID_MAX_SIZE);
|
|
|
- else
|
|
|
- dwrq->length = adapter->curbssparams.ssid_len + 1;
|
|
|
+ dwrq->length = adapter->curbssparams.ssid_len;
|
|
|
|
|
|
dwrq->flags = 1; /* active */
|
|
|
|
|
@@ -1972,14 +1914,6 @@ static int wlan_set_essid(struct net_device *dev, struct iw_request_info *info,
|
|
|
|
|
|
lbs_deb_enter(LBS_DEB_WEXT);
|
|
|
|
|
|
- /*
|
|
|
- * WE-20 and earlier NULL pad the end of the SSID and increment
|
|
|
- * SSID length so it can be used like a string. WE-21 and later don't,
|
|
|
- * but some userspace tools aren't able to cope with the change.
|
|
|
- */
|
|
|
- if ((in_ssid_len > 0) && (extra[in_ssid_len - 1] == '\0'))
|
|
|
- in_ssid_len--;
|
|
|
-
|
|
|
/* Check the size of the string */
|
|
|
if (in_ssid_len > IW_ESSID_MAX_SIZE) {
|
|
|
ret = -E2BIG;
|