From: Oliver Neukum <oneukum@suse.com>
To: Charles.Hyde@dellteam.com, linux-acpi@vger.kernel.org,
linux-usb@vger.kernel.org
Cc: Mario.Limonciello@dell.com, gregkh@linuxfoundation.org,
nic_swsd@realtek.com, netdev@vger.kernel.org
Subject: Re: [RFC 1/4] Add usb_get_address and usb_set_address support
Date: Wed, 21 Aug 2019 11:08:18 +0200 [thread overview]
Message-ID: <1566378498.8347.6.camel@suse.com> (raw)
In-Reply-To: <1566339522507.45056@Dellteam.com>
Am Dienstag, den 20.08.2019, 22:18 +0000 schrieb
Charles.Hyde@dellteam.com:
> The core USB driver message.c is missing get/set address functionality
This should go into usbnet. The CDC parser is where it is because
it is needed for serial and network devices. As serial devices
do not have a MAC, this can go into usbnet.
> that stops ifconfig from being able to push MAC addresses out to USB
> based ethernet devices. Without this functionality, some USB devices
> stop responding to ethernet packets when using ifconfig to change MAC
> addresses. This has been tested with a Dell Universal Dock D6000.
>
> Signed-off-by: Charles Hyde <charles.hyde@dellteam.com>
> Cc: Mario Limonciello <mario.limonciello@dell.com>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: linux-usb@vger.kernel.org
> ---
> drivers/usb/core/message.c | 59 ++++++++++++++++++++++++++++++++++++++
> include/linux/usb.h | 3 ++
> 2 files changed, 62 insertions(+)
>
> diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
> index 5adf489428aa..eea775234b09 100644
> --- a/drivers/usb/core/message.c
> +++ b/drivers/usb/core/message.c
> @@ -1085,6 +1085,65 @@ int usb_clear_halt(struct usb_device *dev, int pipe)
> }
> EXPORT_SYMBOL_GPL(usb_clear_halt);
>
> +/**
> + * usb_get_address -
> + * @dev: device whose endpoint is halted
Which endpoint?
> + * @mac: buffer for containing
> + * Context: !in_interrupt ()
> + *
> + * This will attempt to get the six byte MAC address from a USB device's
> + * ethernet controller using GET_NET_ADDRESS command.
> + *
> + * This call is synchronous, and may not be used in an interrupt context.
> + *
> + * Return: Zero on success, or else the status code returned by the
Well, I am afraid it will return 6 on success.
> + * underlying usb_control_msg() call.
> + */
> +int usb_get_address(struct usb_device *dev, unsigned char * mac)
> +{
> + int ret = -ENOMEM;
Initialization is unnecessary here.
> + unsigned char *tbuf = kmalloc(256, GFP_NOIO);
If you intentionally picked a safety margin of 42 times, this
is cool. Otherwise it is a litttle much.
> +
> + if (!tbuf)
> + return -ENOMEM;
> +
> + ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
> + USB_CDC_GET_NET_ADDRESS,
> + USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
> + 0, USB_REQ_SET_ADDRESS, tbuf, 256,
> + USB_CTRL_GET_TIMEOUT);
> + if (ret == 6)
> + memcpy(mac, tbuf, 6);
You cannot ignore the case of devices sending more or less than 6
bytes.
Regards
Oliver
prev parent reply other threads:[~2019-08-21 9:23 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-20 22:18 [RFC 1/4] Add usb_get_address and usb_set_address support Charles.Hyde
2019-08-20 22:26 ` Greg KH
2019-08-21 23:35 ` Charles.Hyde
2019-08-22 8:08 ` Oliver Neukum
2019-08-22 17:14 ` Charles.Hyde
2019-08-20 22:28 ` Greg KH
2019-08-21 1:22 ` Andrew Lunn
2019-08-21 23:45 ` Charles.Hyde
2019-08-21 9:08 ` Oliver Neukum [this message]
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=1566378498.8347.6.camel@suse.com \
--to=oneukum@suse.com \
--cc=Charles.Hyde@dellteam.com \
--cc=Mario.Limonciello@dell.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nic_swsd@realtek.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.