<[email protected]> writes:
>> > What better suggestion do folks have, instead of using
>> USB_REQ_SET_ADDRESS?
>>
>> The spec is clear: wIndex is supposed to be 'NCM Communications Interface'.
>> That's how you address a specific NCM function (a USB device can have more
>> than one...), and that's what you'll see in all the other interface specific
>> class
>> requests in this driver. You don't have to look hard to find examples.
>>
>>
>> Bjørn
>
>
> I have presented what works, with the v3 patch series.
Sure. It will work iff your NCM function has a control interface
numbered 5. Most NCM functions do not.
> Mind you, the code I have provided sends the exact same USB message as
> I traced with Wireshark on my Windows system.
Snooping on communcation with one specific device is not a good way to
figure out dynamic content. wIndex cannot be a constant. It depends on
the device configuration.
>If you can provide good working code that replicates what I have
>provided, I would be thrilled.
There is working control request code a few lines up in the driver. I
didn't think it was too much to ask that you looked it up. But I can
copy an example here too:
static int cdc_ncm_init(struct usbnet *dev)
{
struct cdc_ncm_ctx *ctx = (struct cdc_ncm_ctx *)dev->data[0];
u8 iface_no = ctx->control->cur_altsetting->desc.bInterfaceNumber;
int err;
err = usbnet_read_cmd(dev, USB_CDC_GET_NTB_PARAMETERS,
USB_TYPE_CLASS | USB_DIR_IN
|USB_RECIP_INTERFACE,
0, iface_no, &ctx->ncm_parm,
sizeof(ctx->ncm_parm));
,,
You'll obviously have to replace USB_CDC_GET_NTB_PARAMETERS with
USB_CDC_GET_NET_ADDRESS, &ctx->ncm_parm with buf, and
sizeof(ctx->ncm_parm) with ETH_ALEN.
Bjørn