Here I present the conversion of everthing that is required to provide
the equivalent of g_ncm.ko with configfs.

This is the second version of the series after discussion with Alan
and Michal's review - thank you guys.

A branch will be available here (from 24th April 2013):
git://git.infradead.org/users/kmpark/linux-samsung usb-gadget-configfs

v2..v3:

- fixed a bug resulting from the delayed registration of a network interface
  (should be registered only once)

v1..v2:

- delayed registering a network interface until gadgets's bind
  (per Alan's request)
- created a helper macro to define USB Ethernet modules' parameters (Michal's
  review)
- fixed and simplified some helper functions (Michal's review)
- changed hostaddr variable name to host_mac in several modules
  (Michal's review)


BACKWARD COMPATIBILITY
======================

Please note that the old g_ncm.ko is still available and works.


USING THE NEW "GADGET"
======================

Please refer to this post:

http://www.spinics.net/lists/linux-usb/msg76388.html

for general information from Sebastian on how to use configfs-based
gadgets (*).

Here is the description specific to using g_ncm.ko equivalent.

The old g_ncm.ko offered three parameters:

qmult      - queue length multiplier for high/super -speed devices
dev_addr   - device's MAC address
host_addr  - host's MAC address

With configfs the procedure is as follows, compared to the information
mentioned above (*):

instead of mkdir functions/acm.ttyS1 do

mkdir functions/ncm.<instance name>

e.g. mkdir functions/ncm.usb0

In functions/ncm.<instance name> there will be the following attribute files:

qmult
dev_addr
host_addr
ifname

and after creating the functions/ncm.<instance name> they contain default
values: qmult is 5, dev_addr and host_addr are randomly selected.
Except for ifname they can be written to until the function is linked to a
configuration. The ifname is read-only and contains the name of the interface
which was assigned by the net core, e. g. usb0.

The rest of the procedure (*) remains the same.

After unbinding the gadget with echo "" > UDC
the symbolic links in the configuration directory can be removed,
the strings/* subdirectories in the configuration directory can
be removed, the strings/* subdirectories at the gadget level can
be removed and the configs/* subdirectories can be removed.
The functions/* subdirectories can be removed.
After that the gadget directory can be removed.
After that the respective modules can be unloaded.


TESTING THE FUNCTIONS (actually there is just one)
==================================================

ncm)

On the device: ping <host's IP>
On the host: ping <device's IP>


Andrzej Pietrasiewicz (8):
  usb/gadget: u_ether: convert into module
  usb/gadget: rndis: convert into module
  usb/gadget: u_ether: construct with default values and add
    setters/getters
  usb/gadget: f_ncm: convert to new function interface with backward
    compatibility
  usb/gadget: ncm: convert to new function interface
  usb/gadget: f_ncm: remove compatibility layer
  usb/gadget: f_ncm: use usb_gstrings_attach
  usb/gadget: f_ncm: add configfs support

 drivers/usb/gadget/Kconfig   |   20 +++
 drivers/usb/gadget/Makefile  |    5 +
 drivers/usb/gadget/cdc2.c    |   10 +-
 drivers/usb/gadget/ether.c   |   18 ++-
 drivers/usb/gadget/f_ncm.c   |  333 +++++++++++++++++++++++++++++++++--------
 drivers/usb/gadget/g_ffs.c   |   15 +-
 drivers/usb/gadget/multi.c   |   15 +-
 drivers/usb/gadget/ncm.c     |   58 +++++---
 drivers/usb/gadget/nokia.c   |   11 +-
 drivers/usb/gadget/rndis.c   |   16 ++
 drivers/usb/gadget/rndis.h   |    1 +
 drivers/usb/gadget/u_ether.c |  223 +++++++++++++++++++++++++---
 drivers/usb/gadget/u_ether.h |  155 +++++++++++++++++++-
 drivers/usb/gadget/u_ncm.h   |   36 +++++
 14 files changed, 776 insertions(+), 140 deletions(-)
 create mode 100644 drivers/usb/gadget/u_ncm.h

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to