From: Dan Williams <dcbw@redhat.com>
To: jt@hpl.hp.com
Cc: Holger Schurig <hs4233@mail.mn-solutions.de>,
Luis Carlos Cobo <luisca@cozybit.com>,
linux-wireless@vger.kernel.org
Subject: Re: [PATCH 2.6] libertas : fix a few wext abuses...
Date: Wed, 11 Jul 2007 17:19:48 -0400 [thread overview]
Message-ID: <1184188789.28850.4.camel@localhost.localdomain> (raw)
In-Reply-To: <20070710213706.GA7929@bougret.hpl.hp.com>
On Tue, 2007-07-10 at 14:37 -0700, Jean Tourrilhes wrote:
> Hi guys,
>
> I have no clue to who is the official libertas maintainer, so
> please tell me where to send this patch.
Me, actually :) Thanks for the patch.
Dan
> I did a quick review of the WE support in libertas. I don't
> have the hardware, so it was very superficial. These are my comments :
> o SIOCGIWNAME is not designed to return the version
> number of the driver. On the other hand, you are free to abuse
> SIOCGIWNICKN for that purpose.
> o Don't attempt to fix the WE19/WE20 transition in the
> driver, because your fixes are bogus, and redundant with the code in
> the kernel (you may endup with +2, you can't read 32 char ESSID...).
> o In SIOCSIWTXPOW, if you specified in iwrange that
> you want dBm, you should only get dBm, which allow to reduce code
> bloat.
> I would like someone with the hardware to review to changes,
> fix my buggy patch and send that to John.
> Thanks.
>
> Jean
>
> Signed-off-by: Jean Tourrilhes <jt@hpl.hp.com>
>
> -----------------------------------------------------------
>
> --- linux/drivers/net/wireless/libertas/wext.j1.c 2007-07-10 11:44:07.000000000 -0700
> +++ linux/drivers/net/wireless/libertas/wext.c 2007-07-10 14:04:01.000000000 -0700
> @@ -30,52 +30,6 @@ static u8 libertas_wlan_data_rates[WLAN_
> };
>
> /**
> - * @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
> *
> * @param adapter A pointer to wlan_adapter structure
> @@ -243,28 +197,11 @@ static int get_active_data_rates(wlan_ad
> 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;
> @@ -344,29 +281,37 @@ static int wlan_set_nick(struct net_devi
> 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;
> @@ -385,12 +330,12 @@ static int mesh_get_nick(struct net_devi
> 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);
> @@ -1983,8 +1928,10 @@ static int wlan_set_txpow(struct net_dev
>
> 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;
>
> @@ -2032,12 +1979,7 @@ static int wlan_get_essid(struct net_dev
> * 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 */
>
> @@ -2058,14 +2000,6 @@ static int wlan_set_essid(struct net_dev
>
> 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;
next prev parent reply other threads:[~2007-07-11 21:21 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-10 21:37 [PATCH 2.6] libertas : fix a few wext abuses Jean Tourrilhes
2007-07-11 21:19 ` Dan Williams [this message]
2007-07-12 0:46 ` Jean Tourrilhes
2007-07-12 3:28 ` Dan Williams
2007-07-12 16:43 ` Jean Tourrilhes
2007-07-13 9:51 ` Johannes Berg
2007-07-12 22:05 ` Johannes Berg
2007-07-19 17:55 ` Dan Williams
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1184188789.28850.4.camel@localhost.localdomain \
--to=dcbw@redhat.com \
--cc=hs4233@mail.mn-solutions.de \
--cc=jt@hpl.hp.com \
--cc=linux-wireless@vger.kernel.org \
--cc=luisca@cozybit.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).