[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120410093708.7038797wijmbsmos@www.81.fi>
Date: Tue, 10 Apr 2012 09:37:08 +0300
From: Jussi Kivilinna <jussi.kivilinna@...et.fi>
To: Linus Walleij <linus.walleij@...aro.org>
Cc: netdev@...r.kernel.org, linux-usb@...r.kernel.org,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
"David S. Miller" <davem@...emloft.net>,
Felipe Balbi <balbi@...com>,
Haiyang Zhang <haiyangz@...rosoft.com>,
Wei Yongjun <yongjun_wei@...ndmicro.com.cn>,
Ben Hutchings <ben@...adent.org.uk>
Subject: Re: [PATCH 09/14] usb/net: rndis: merge media type definitions
Quoting Linus Walleij <linus.walleij@...aro.org>:
> Let's have a unified table of RNDIS media. We used to have a similar
> table with NDIS_* prefix from the gadget driver, but since we're only
> using RNDIS in the kernel (IIRC NDIS, non-remote, is for the windows-
> internal network drivers so what do we care) let's prefix everything
> with RNDIS. Some of the definitions were conflicting, in one of the
> defines 0x0B is bearer "CO WAN" and in two others "BPC". Well I took
> the majority vote. Two definition of medium 0x09 calls it "wireless
> WAN" but one vote for "wireless LAN" but in this case I am sticking
> with the minority, "Wide Area Network" does not make much sense in
> this case as far as I can tell.
>
> NOTE: latin singular and plural is so screwed up in these defines
> that it makes my eyes bleed. But I will not attempt to submit a
> patch converting all use of _MEDIA_ to _MEDIUM_ while I can probably
> tell from the semantics of the code that RNDIS_MEDIA_STATE_CONNECTED
> is most probably (erroneously) referring to a singular, unless it
> can return an array of connected media. I suspect these erroneous
> plurals are used in documentation and such so I don't want to
> mess around with things for no functional change.
>
> Signed-off-by: Linus Walleij <linus.walleij@...aro.org>
> ---
> drivers/net/usb/rndis_host.c | 6 ++--
> drivers/usb/gadget/f_rndis.c | 6 ++--
> drivers/usb/gadget/rndis.c | 8 ++--
> include/linux/rndis.h | 70
> ++++++++++++-----------------------------
> 4 files changed, 31 insertions(+), 59 deletions(-)
>
> diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
> index f56b9f7..2dd47ec 100644
> --- a/drivers/net/usb/rndis_host.c
> +++ b/drivers/net/usb/rndis_host.c
> @@ -400,18 +400,18 @@ generic_rndis_bind(struct usbnet *dev, struct
> usb_interface *intf, int flags)
> 0, (void **) &phym, &reply_len);
> if (retval != 0 || !phym) {
> /* OID is optional so don't fail here. */
> - phym_unspec = cpu_to_le32(RNDIS_PHYSICAL_MEDIUM_UNSPECIFIED);
> + phym_unspec = cpu_to_le32(RNDIS_MEDIUM_UNSPECIFIED);
> phym = &phym_unspec;
> }
> if ((flags & FLAG_RNDIS_PHYM_WIRELESS) &&
> - *phym != cpu_to_le32(RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN)) {
> + *phym != cpu_to_le32(RNDIS_MEDIUM_WIRELESS_LAN)) {
This does not work.. RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN == 0x01 and
RNDIS_MEDIUM_WIRELESS_LAN == 0x09.
> netif_dbg(dev, probe, dev->net,
> "driver requires wireless physical medium, but device is not\n");
> retval = -ENODEV;
> goto halt_fail_and_release;
> }
> if ((flags & FLAG_RNDIS_PHYM_NOT_WIRELESS) &&
> - *phym == cpu_to_le32(RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN)) {
> + *phym == cpu_to_le32(RNDIS_MEDIUM_WIRELESS_LAN)) {
> netif_dbg(dev, probe, dev->net,
> "driver requires non-wireless physical medium, but device is
> wireless.\n");
> retval = -ENODEV;
> diff --git a/drivers/usb/gadget/f_rndis.c b/drivers/usb/gadget/f_rndis.c
> index 7b1cf18..c25d24e 100644
> --- a/drivers/usb/gadget/f_rndis.c
> +++ b/drivers/usb/gadget/f_rndis.c
> @@ -636,7 +636,7 @@ static void rndis_open(struct gether *geth)
>
> DBG(cdev, "%s\n", __func__);
>
> - rndis_set_param_medium(rndis->config, NDIS_MEDIUM_802_3,
> + rndis_set_param_medium(rndis->config, RNDIS_MEDIUM_802_3,
> bitrate(cdev->gadget) / 100);
> rndis_signal_connect(rndis->config);
> }
> @@ -647,7 +647,7 @@ static void rndis_close(struct gether *geth)
>
> DBG(geth->func.config->cdev, "%s\n", __func__);
>
> - rndis_set_param_medium(rndis->config, NDIS_MEDIUM_802_3, 0);
> + rndis_set_param_medium(rndis->config, RNDIS_MEDIUM_802_3, 0);
> rndis_signal_disconnect(rndis->config);
> }
>
> @@ -764,7 +764,7 @@ rndis_bind(struct usb_configuration *c, struct
> usb_function *f)
> goto fail;
> rndis->config = status;
>
> - rndis_set_param_medium(rndis->config, NDIS_MEDIUM_802_3, 0);
> + rndis_set_param_medium(rndis->config, RNDIS_MEDIUM_802_3, 0);
> rndis_set_host_mac(rndis->config, rndis->ethaddr);
>
> #if 0
> diff --git a/drivers/usb/gadget/rndis.c b/drivers/usb/gadget/rndis.c
> index 79ed261..d9086ca 100644
> --- a/drivers/usb/gadget/rndis.c
> +++ b/drivers/usb/gadget/rndis.c
> @@ -252,7 +252,7 @@ static int gen_ndis_query_resp(int configNr, u32
> OID, u8 *buf,
> if (rndis_debug > 1)
> pr_debug("%s: RNDIS_OID_GEN_LINK_SPEED\n", __func__);
> if (rndis_per_dev_params[configNr].media_state
> - == NDIS_MEDIA_STATE_DISCONNECTED)
> + == RNDIS_MEDIA_STATE_DISCONNECTED)
> *outbuf = cpu_to_le32(0);
> else
> *outbuf = cpu_to_le32(
> @@ -758,7 +758,7 @@ static int rndis_indicate_status_msg(int
> configNr, u32 status)
> int rndis_signal_connect(int configNr)
> {
> rndis_per_dev_params[configNr].media_state
> - = NDIS_MEDIA_STATE_CONNECTED;
> + = RNDIS_MEDIA_STATE_CONNECTED;
> return rndis_indicate_status_msg(configNr,
> RNDIS_STATUS_MEDIA_CONNECT);
> }
> @@ -766,7 +766,7 @@ int rndis_signal_connect(int configNr)
> int rndis_signal_disconnect(int configNr)
> {
> rndis_per_dev_params[configNr].media_state
> - = NDIS_MEDIA_STATE_DISCONNECTED;
> + = RNDIS_MEDIA_STATE_DISCONNECTED;
> return rndis_indicate_status_msg(configNr,
> RNDIS_STATUS_MEDIA_DISCONNECT);
> }
> @@ -1173,7 +1173,7 @@ int rndis_init(void)
> rndis_per_dev_params[i].used = 0;
> rndis_per_dev_params[i].state = RNDIS_UNINITIALIZED;
> rndis_per_dev_params[i].media_state
> - = NDIS_MEDIA_STATE_DISCONNECTED;
> + = RNDIS_MEDIA_STATE_DISCONNECTED;
> INIT_LIST_HEAD(&(rndis_per_dev_params[i].resp_queue));
> }
>
> diff --git a/include/linux/rndis.h b/include/linux/rndis.h
> index 2e0b1bd..705dccc 100644
> --- a/include/linux/rndis.h
> +++ b/include/linux/rndis.h
> @@ -100,17 +100,27 @@
>
> #define RNDIS_STATUS_TOKEN_RING_OPEN_ERROR 0xC0011000
>
> -/* codes for RNDIS_OID_GEN_PHYSICAL_MEDIUM */
> -#define RNDIS_PHYSICAL_MEDIUM_UNSPECIFIED 0x00000000
> -#define RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN 0x00000001
> -#define RNDIS_PHYSICAL_MEDIUM_CABLE_MODEM 0x00000002
> -#define RNDIS_PHYSICAL_MEDIUM_PHONE_LINE 0x00000003
> -#define RNDIS_PHYSICAL_MEDIUM_POWER_LINE 0x00000004
> -#define RNDIS_PHYSICAL_MEDIUM_DSL 0x00000005
> -#define RNDIS_PHYSICAL_MEDIUM_FIBRE_CHANNEL 0x00000006
> -#define RNDIS_PHYSICAL_MEDIUM_1394 0x00000007
> -#define RNDIS_PHYSICAL_MEDIUM_WIRELESS_WAN 0x00000008
> -#define RNDIS_PHYSICAL_MEDIUM_MAX 0x00000009
> +/* Remote NDIS medium types. */
> +#define RNDIS_MEDIUM_UNSPECIFIED 0x00000000
> +#define RNDIS_MEDIUM_802_3 0x00000000
> +#define RNDIS_MEDIUM_802_5 0x00000001
> +#define RNDIS_MEDIUM_FDDI 0x00000002
> +#define RNDIS_MEDIUM_WAN 0x00000003
> +#define RNDIS_MEDIUM_LOCAL_TALK 0x00000004
> +#define RNDIS_MEDIUM_ARCNET_RAW 0x00000006
> +#define RNDIS_MEDIUM_ARCNET_878_2 0x00000007
> +#define RNDIS_MEDIUM_ATM 0x00000008
> +#define RNDIS_MEDIUM_WIRELESS_LAN 0x00000009
> +#define RNDIS_MEDIUM_IRDA 0x0000000A
> +#define RNDIS_MEDIUM_BPC 0x0000000B
> +#define RNDIS_MEDIUM_CO_WAN 0x0000000C
> +#define RNDIS_MEDIUM_1394 0x0000000D
NDIS medium type enumeration is not same as NDIS physical medium enumeration..
http://msdn.microsoft.com/en-us/library/windows/hardware/ff565910%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/windows/hardware/ff569621%28v=vs.85%29.aspx
> +/* Not a real medium, defined as an upper-bound */
> +#define RNDIS_MEDIUM_MAX 0x0000000E
> +
> +/* Remote NDIS medium connection states. */
> +#define RNDIS_MEDIA_STATE_CONNECTED 0x00000000
> +#define RNDIS_MEDIA_STATE_DISCONNECTED 0x00000001
>
> /* packet filter bits used by RNDIS_OID_GEN_CURRENT_PACKET_FILTER */
> #define RNDIS_PACKET_TYPE_DIRECTED 0x00000001
> @@ -163,21 +173,6 @@
> #define NDIS_MINIPORT_SUPPORTS_CANCEL_SEND_PACKETS 0x00800000
> #define NDIS_MINIPORT_64BITS_DMA 0x01000000
>
> -#define NDIS_MEDIUM_802_3 0x00000000
> -#define NDIS_MEDIUM_802_5 0x00000001
> -#define NDIS_MEDIUM_FDDI 0x00000002
> -#define NDIS_MEDIUM_WAN 0x00000003
> -#define NDIS_MEDIUM_LOCAL_TALK 0x00000004
> -#define NDIS_MEDIUM_DIX 0x00000005
> -#define NDIS_MEDIUM_ARCENT_RAW 0x00000006
> -#define NDIS_MEDIUM_ARCENT_878_2 0x00000007
> -#define NDIS_MEDIUM_ATM 0x00000008
> -#define NDIS_MEDIUM_WIRELESS_LAN 0x00000009
> -#define NDIS_MEDIUM_IRDA 0x0000000A
> -#define NDIS_MEDIUM_BPC 0x0000000B
> -#define NDIS_MEDIUM_CO_WAN 0x0000000C
> -#define NDIS_MEDIUM_1394 0x0000000D
> -
> #define NDIS_PACKET_TYPE_DIRECTED 0x00000001
> #define NDIS_PACKET_TYPE_MULTICAST 0x00000002
> #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
> @@ -191,9 +186,6 @@
> #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00000400
> #define NDIS_PACKET_TYPE_MAC_FRAME 0x00000800
>
> -#define NDIS_MEDIA_STATE_CONNECTED 0x00000000
> -#define NDIS_MEDIA_STATE_DISCONNECTED 0x00000001
> -
> #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
> #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
> #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
> @@ -421,23 +413,3 @@
> * driver and remote device, if necessary.
> */
> #define REMOTE_NDIS_BUS_MSG 0xff000001
> -
> -/* Remote NDIS medium types. */
> -#define RNDIS_MEDIUM_802_3 0x00000000
> -#define RNDIS_MEDIUM_802_5 0x00000001
> -#define RNDIS_MEDIUM_FDDI 0x00000002
> -#define RNDIS_MEDIUM_WAN 0x00000003
> -#define RNDIS_MEDIUM_LOCAL_TALK 0x00000004
> -#define RNDIS_MEDIUM_ARCNET_RAW 0x00000006
> -#define RNDIS_MEDIUM_ARCNET_878_2 0x00000007
> -#define RNDIS_MEDIUM_ATM 0x00000008
> -#define RNDIS_MEDIUM_WIRELESS_WAN 0x00000009
> -#define RNDIS_MEDIUM_IRDA 0x0000000a
> -#define RNDIS_MEDIUM_CO_WAN 0x0000000b
> -/* Not a real medium, defined as an upper-bound */
> -#define RNDIS_MEDIUM_MAX 0x0000000d
> -
> -
> -/* Remote NDIS medium connection states. */
> -#define RNDIS_MEDIA_STATE_CONNECTED 0x00000000
> -#define RNDIS_MEDIA_STATE_DISCONNECTED 0x00000001
> --
> 1.7.7.6
>
>
>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists