diff options
author | David Brownell <dbrownell@users.sourceforge.net> | 2008-08-18 20:45:07 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-10-16 12:24:47 -0400 |
commit | 33376c1c043c05077b4ac79c33804266f6c45e49 (patch) | |
tree | 95d28177840c3eb1d650d7351319be2f4e141c5b /drivers/usb/gadget/ether.c | |
parent | 8a1ce2c0447b1a0816f66fde2f832c31b5fbee2c (diff) |
usb gadget: link fixes for network gadget
Change how the Ethernet/RNDIS gadget driver builds: don't
use separate compilation, since it works poorly when key
parts are library code (with init sections etc). Instead
be as close as we can to "gcc --combine ...".
This is a bit more complicated than most of the others
because it had to resolve a few symbol collisions.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/gadget/ether.c')
-rw-r--r-- | drivers/usb/gadget/ether.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c index bcac2e68660d..944c8e889ab4 100644 --- a/drivers/usb/gadget/ether.c +++ b/drivers/usb/gadget/ether.c | |||
@@ -96,6 +96,28 @@ static inline bool has_rndis(void) | |||
96 | 96 | ||
97 | /*-------------------------------------------------------------------------*/ | 97 | /*-------------------------------------------------------------------------*/ |
98 | 98 | ||
99 | /* | ||
100 | * Kbuild is not very cooperative with respect to linking separately | ||
101 | * compiled library objects into one module. So for now we won't use | ||
102 | * separate compilation ... ensuring init/exit sections work to shrink | ||
103 | * the runtime footprint, and giving us at least some parts of what | ||
104 | * a "gcc --combine ... part1.c part2.c part3.c ... " build would. | ||
105 | */ | ||
106 | #include "composite.c" | ||
107 | #include "usbstring.c" | ||
108 | #include "config.c" | ||
109 | #include "epautoconf.c" | ||
110 | |||
111 | #include "f_ecm.c" | ||
112 | #include "f_subset.c" | ||
113 | #ifdef CONFIG_USB_ETH_RNDIS | ||
114 | #include "f_rndis.c" | ||
115 | #include "rndis.c" | ||
116 | #endif | ||
117 | #include "u_ether.c" | ||
118 | |||
119 | /*-------------------------------------------------------------------------*/ | ||
120 | |||
99 | /* DO NOT REUSE THESE IDs with a protocol-incompatible driver!! Ever!! | 121 | /* DO NOT REUSE THESE IDs with a protocol-incompatible driver!! Ever!! |
100 | * Instead: allocate your own, using normal USB-IF procedures. | 122 | * Instead: allocate your own, using normal USB-IF procedures. |
101 | */ | 123 | */ |
@@ -293,7 +315,8 @@ static int __init eth_bind(struct usb_composite_dev *cdev) | |||
293 | * but if the controller isn't recognized at all then | 315 | * but if the controller isn't recognized at all then |
294 | * that assumption is a bit more likely to be wrong. | 316 | * that assumption is a bit more likely to be wrong. |
295 | */ | 317 | */ |
296 | WARNING(cdev, "controller '%s' not recognized; trying %s\n", | 318 | dev_warn(&gadget->dev, |
319 | "controller '%s' not recognized; trying %s\n", | ||
297 | gadget->name, | 320 | gadget->name, |
298 | eth_config_driver.label); | 321 | eth_config_driver.label); |
299 | device_desc.bcdDevice = | 322 | device_desc.bcdDevice = |
@@ -332,7 +355,8 @@ static int __init eth_bind(struct usb_composite_dev *cdev) | |||
332 | if (status < 0) | 355 | if (status < 0) |
333 | goto fail; | 356 | goto fail; |
334 | 357 | ||
335 | INFO(cdev, "%s, version: " DRIVER_VERSION "\n", DRIVER_DESC); | 358 | dev_info(&gadget->dev, "%s, version: " DRIVER_VERSION "\n", |
359 | DRIVER_DESC); | ||
336 | 360 | ||
337 | return 0; | 361 | return 0; |
338 | 362 | ||