Date: Mon, 23 Nov 2009 17:31:44 +0100 From: Hans Petter Selasky <hselasky@c2i.net> To: freebsd-usb@freebsd.org Subject: Re: usb ethernet driver question Message-ID: <200911231731.45953.hselasky@c2i.net> In-Reply-To: <4B099A50.9000006@gmail.com> References: <4B099A50.9000006@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday 22 November 2009 21:08:48 Alexander Samarin wrote: > Hello, all! > > I'm trying to write a kernel module driver for WiMAX modem. > I have Samsung SWC-U100 USB modem. > > Driver is based on if_cue module (it's source file is smallest in the > tree). I've get module successfully attaching to device and registering new > network interface, but some questions appeared: > > 1. madwimax project have a description of protocol of the modem, but it > says simply "This data should be sent over OUT endpoint in bulk mode." In > other drivers I found only calls to functionu ether_do_request() e.g: > > struct usb_device_request req; > > req.bmRequestType = UT_READ_VENDOR_DEVICE; > req.bRequest = CUE_CMD_GET_MACADDR; > USETW(req.wValue, 0); > USETW(req.wIndex, 0); > USETW(req.wLength, ETHER_ADDR_LEN); > > uether_do_request(&sc->sc_ue, &req, buf, 1000); > > Here I can't understand: > Buffer can be sent or received via buf argument of ether_do_request(), > but what value should be used for req.bRequest, req.wValue and req.wIndex > fields? Hi, The example you have given is for a CONTROL endpoint. CONTROL endpoint messages typically consist of 3 stages: <SETUP> <DATA> <STATUS> BULK endpoints only transfer <DATA> If the configuration data is sent accross a BULK endpoint, you need to allocate a separate BULK endpoint for that and consequently cannot use ether_do_request(). > > In dev/usb/net/if_* files drivers read and write to registers or memory > of chip; libusb just writes to file descriptor. > > Can anyone take me a link where I can read more about programming usb > drivers for kernel? man 4 usb > > 2. Is it possible to detach CAM subsystem from virtual DVD-ROM on other > interface? This DVD-ROM contains WinXP drivers and access program, > which will never be used (I think) on UNIX systems. Yes: 1) parent the CAM interface to your driver. Then umass won't attach to it 2) look in sys/dev/usb/usb_msctest.c > > PS: I know that if_cue is an ethernet driver, but WiMAX is a wireless so > basing driver on if_cue code is not a good idea, but wireless drivers are > big and my modem can connect only to one provider (Yota) so I decided to > use if_cue as base code. > > PS2: sorry for my English. Your English is good! --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200911231731.45953.hselasky>