diff options
| author | Greg Kroah-Hartman <gregkh@suse.de> | 2009-04-06 12:27:57 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-04-06 12:27:57 -0700 |
| commit | b4a8f06022ecf4c5c279a61de89a1d3758e08e0e (patch) | |
| tree | 91c7648c3548b83655ddf18bbca0dedadb79d49f | |
| parent | 720460da39aa61e2e5e368b916e6c6252e3306b4 (diff) | |
| download | patches-b4a8f06022ecf4c5c279a61de89a1d3758e08e0e.tar.gz | |
bugfixes
21 files changed, 1215 insertions, 0 deletions
diff --git a/driver-core.current/driver-core-allow-non-root-users-to-listen-to-uevents.patch b/driver-core.current/driver-core-allow-non-root-users-to-listen-to-uevents.patch new file mode 100644 index 00000000000000..ffcbd172f43c5c --- /dev/null +++ b/driver-core.current/driver-core-allow-non-root-users-to-listen-to-uevents.patch @@ -0,0 +1,31 @@ +From kay.sievers@vrfy.org Mon Apr 6 12:14:46 2009 +From: Kay Sievers <kay.sievers@vrfy.org> +Date: Fri, 03 Apr 2009 19:04:15 +0200 +Subject: driver core: allow non-root users to listen to uevents +To: Greg KH <greg@kroah.com> +Message-ID: <1238778255.16630.4.camel@poy> + +From: Kay Sievers <kay.sievers@vrfy.org> + +Users can read sysfs files, there is no reason they should not be +allowed to listen to uevents. This lets xorg and other userspace +programs properly get these messages without having to be root. + +Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + lib/kobject_uevent.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/lib/kobject_uevent.c ++++ b/lib/kobject_uevent.c +@@ -328,7 +328,7 @@ static int __init kobject_uevent_init(vo + "kobject_uevent: unable to create netlink socket!\n"); + return -ENODEV; + } +- ++ netlink_set_nonroot(NETLINK_KOBJECT_UEVENT, NL_NONROOT_RECV); + return 0; + } + diff --git a/driver-core.current/driver-core-fix-driver_match_device.patch b/driver-core.current/driver-core-fix-driver_match_device.patch new file mode 100644 index 00000000000000..fa8fc36308243a --- /dev/null +++ b/driver-core.current/driver-core-fix-driver_match_device.patch @@ -0,0 +1,37 @@ +From tom.leiming@gmail.com Mon Apr 6 12:10:53 2009 +From: Ming Lei <tom.leiming@gmail.com> +Date: Fri, 27 Mar 2009 21:50:00 +0800 +Subject: driver core: fix driver_match_device +To: greg@kroah.com +Cc: g.liakhovetski@gmx.de, Ming Lei <tom.leiming@gmail.com> +Message-ID: <1238161800-4714-1-git-send-email-tom.leiming@gmail.com> + + +From: Ming Lei <tom.leiming@gmail.com> + +This patch fixes a bug introduced in commit +49b420a13ff95b449947181190b08367348e3e1b. + +If a instance of bus_type doesn't have .match method, +all .probe of drivers in the bus should be called, or else +the .probe have not a chance to be called. + +Signed-off-by: Ming Lei <tom.leiming@gmail.com> +Reported-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/base/base.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/base/base.h ++++ b/drivers/base/base.h +@@ -115,7 +115,7 @@ extern int driver_probe_device(struct de + static inline int driver_match_device(struct device_driver *drv, + struct device *dev) + { +- return drv->bus->match && drv->bus->match(dev, drv); ++ return drv->bus->match ? drv->bus->match(dev, drv) : 1; + } + + extern void sysdev_shutdown(void); diff --git a/driver-core.current/sysfs-don-t-use-global-workqueue-in-sysfs_schedule_callback.patch b/driver-core.current/sysfs-don-t-use-global-workqueue-in-sysfs_schedule_callback.patch new file mode 100644 index 00000000000000..758d11c81838de --- /dev/null +++ b/driver-core.current/sysfs-don-t-use-global-workqueue-in-sysfs_schedule_callback.patch @@ -0,0 +1,133 @@ +From achiang@hp.com Mon Apr 6 10:39:45 2009 +From: Alex Chiang <achiang@hp.com> +Date: Wed, 25 Mar 2009 15:11:36 -0600 +Subject: sysfs: don't use global workqueue in sysfs_schedule_callback() +To: gregkh@suse.de +Cc: kaneshige.kenji@jp.fujitsu.com +Message-ID: <20090325211136.GC30098@ldl.fc.hp.com> + + +A sysfs attribute using sysfs_schedule_callback() to commit suicide +may end up calling device_unregister(), which will eventually call +a driver's ->remove function. + +Drivers may call flush_scheduled_work() in their shutdown routines, +in which case lockdep will complain with something like the following: + + ============================================= + [ INFO: possible recursive locking detected ] + 2.6.29-rc8-kk #1 + --------------------------------------------- + events/4/56 is trying to acquire lock: + (events){--..}, at: [<ffffffff80257fc0>] flush_workqueue+0x0/0xa0 + + but task is already holding lock: + (events){--..}, at: [<ffffffff80257648>] run_workqueue+0x108/0x230 + + other info that might help us debug this: + 3 locks held by events/4/56: + #0: (events){--..}, at: [<ffffffff80257648>] run_workqueue+0x108/0x230 + #1: (&ss->work){--..}, at: [<ffffffff80257648>] run_workqueue+0x108/0x230 + #2: (pci_remove_rescan_mutex){--..}, at: [<ffffffff803c10d1>] remove_callback+0x21/0x40 + + stack backtrace: + Pid: 56, comm: events/4 Not tainted 2.6.29-rc8-kk #1 + Call Trace: + [<ffffffff8026dfcd>] validate_chain+0xb7d/0x1260 + [<ffffffff8026eade>] __lock_acquire+0x42e/0xa40 + [<ffffffff8026f148>] lock_acquire+0x58/0x80 + [<ffffffff80257fc0>] ? flush_workqueue+0x0/0xa0 + [<ffffffff8025800d>] flush_workqueue+0x4d/0xa0 + [<ffffffff80257fc0>] ? flush_workqueue+0x0/0xa0 + [<ffffffff80258070>] flush_scheduled_work+0x10/0x20 + [<ffffffffa0144065>] e1000_remove+0x55/0xfe [e1000e] + [<ffffffff8033ee30>] ? sysfs_schedule_callback_work+0x0/0x50 + [<ffffffff803bfeb2>] pci_device_remove+0x32/0x70 + [<ffffffff80441da9>] __device_release_driver+0x59/0x90 + [<ffffffff80441edb>] device_release_driver+0x2b/0x40 + [<ffffffff804419d6>] bus_remove_device+0xa6/0x120 + [<ffffffff8043e46b>] device_del+0x12b/0x190 + [<ffffffff8043e4f6>] device_unregister+0x26/0x70 + [<ffffffff803ba969>] pci_stop_dev+0x49/0x60 + [<ffffffff803baab0>] pci_remove_bus_device+0x40/0xc0 + [<ffffffff803c10d9>] remove_callback+0x29/0x40 + [<ffffffff8033ee4f>] sysfs_schedule_callback_work+0x1f/0x50 + [<ffffffff8025769a>] run_workqueue+0x15a/0x230 + [<ffffffff80257648>] ? run_workqueue+0x108/0x230 + [<ffffffff8025846f>] worker_thread+0x9f/0x100 + [<ffffffff8025bce0>] ? autoremove_wake_function+0x0/0x40 + [<ffffffff802583d0>] ? worker_thread+0x0/0x100 + [<ffffffff8025b89d>] kthread+0x4d/0x80 + [<ffffffff8020d4ba>] child_rip+0xa/0x20 + [<ffffffff8020cebc>] ? restore_args+0x0/0x30 + [<ffffffff8025b850>] ? kthread+0x0/0x80 + [<ffffffff8020d4b0>] ? child_rip+0x0/0x20 + +Although we know that the device_unregister path will never acquire +a lock that a driver might try to acquire in its ->remove, in general +we should never attempt to flush a workqueue from within the same +workqueue, and lockdep rightly complains. + +So as long as sysfs attributes cannot commit suicide directly and we +are stuck with this callback mechanism, put the sysfs callbacks on +their own workqueue instead of the global one. + +This has the side benefit that if a suicidal sysfs attribute kicks +off a long chain of ->remove callbacks, we no longer induce a long +delay on the global queue. + +This also fixes a missing module_put in the error path introduced +by sysfs-only-allow-one-scheduled-removal-callback-per-kobj.patch. + +We never destroy the workqueue, but I'm not sure that's a +problem. + +Reported-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> +Tested-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> +Signed-off-by: Alex Chiang <achiang@hp.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + fs/sysfs/file.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +--- a/fs/sysfs/file.c ++++ b/fs/sysfs/file.c +@@ -667,6 +667,7 @@ struct sysfs_schedule_callback_struct { + struct work_struct work; + }; + ++static struct workqueue_struct *sysfs_workqueue; + static DEFINE_MUTEX(sysfs_workq_mutex); + static LIST_HEAD(sysfs_workq); + static void sysfs_schedule_callback_work(struct work_struct *work) +@@ -715,11 +716,20 @@ int sysfs_schedule_callback(struct kobje + mutex_lock(&sysfs_workq_mutex); + list_for_each_entry_safe(ss, tmp, &sysfs_workq, workq_list) + if (ss->kobj == kobj) { ++ module_put(owner); + mutex_unlock(&sysfs_workq_mutex); + return -EAGAIN; + } + mutex_unlock(&sysfs_workq_mutex); + ++ if (sysfs_workqueue == NULL) { ++ sysfs_workqueue = create_workqueue("sysfsd"); ++ if (sysfs_workqueue == NULL) { ++ module_put(owner); ++ return -ENOMEM; ++ } ++ } ++ + ss = kmalloc(sizeof(*ss), GFP_KERNEL); + if (!ss) { + module_put(owner); +@@ -735,7 +745,7 @@ int sysfs_schedule_callback(struct kobje + mutex_lock(&sysfs_workq_mutex); + list_add_tail(&ss->workq_list, &sysfs_workq); + mutex_unlock(&sysfs_workq_mutex); +- schedule_work(&ss->work); ++ queue_work(sysfs_workqueue, &ss->work); + return 0; + } + EXPORT_SYMBOL_GPL(sysfs_schedule_callback); @@ -9,10 +9,19 @@ gregkh/gkh-version.patch ################################# # Driver core patches for 2.6.30 ################################# +driver-core.current/sysfs-don-t-use-global-workqueue-in-sysfs_schedule_callback.patch +driver-core.current/driver-core-fix-driver_match_device.patch +driver-core.current/driver-core-allow-non-root-users-to-listen-to-uevents.patch + ################################# # USB patches for 2.6.30 ################################# +usb.current/usb-gadget-fix-ethernet-link-reports-to-ethtool.patch +usb.current/usb-cdc-acm-zydas-1602-identifier-needed.patch +usb.current/usb-tty-pl2303-needs-identifiers-for-siemens-s81-as-well-as-ef81.patch +usb.current/usb-ftdi_sio-add-vendor-project-id-for-jeti-specbos-1201-spectrometer.patch +usb.current/usb-symbol-remove-various-bits-of-left-over-junk.patch ##################################################################### # Stuff to be merged after 2.6.30 is out @@ -36,6 +45,18 @@ gregkh/gkh-version.patch ################################# # for before .30 is done: +staging/staging-at76-convert-to-netdev_ops.patch +staging/staging-epl-convert-to-netdev_ops.patch +staging/staging-et131x-convert-to-netdev_ops.patch +staging/staging-otus-convert-to-netdev_ops.patch +staging/staging-rt2860-convert-to-netdev_ops.patch +staging/staging-rt2870-convert-to-netdev_ops.patch +staging/staging-rt3070-convert-to-netdev_ops.patch +staging/staging-slicoss-convert-to-netdev_ops.patch +staging/staging-sxg-convert-to-netdev_ops.patch +staging/staging-wlan-ng-convert-to-netdev_ops.patch +staging/staging-line6-convert-to-snd_card_create.patch +staging/staging-rt2870-add-id-for-sitecom-wl-315.patch # for after .30: diff --git a/staging/staging-at76-convert-to-netdev_ops.patch b/staging/staging-at76-convert-to-netdev_ops.patch new file mode 100644 index 00000000000000..c853935b095b5c --- /dev/null +++ b/staging/staging-at76-convert-to-netdev_ops.patch @@ -0,0 +1,61 @@ +From a.beregalov@gmail.com Mon Apr 6 12:02:31 2009 +From: Alexander Beregalov <a.beregalov@gmail.com> +Date: Sun, 29 Mar 2009 19:23:34 +0400 +Subject: Staging: at76: convert to netdev_ops +To: gregkh@suse.de +Message-ID: <20090329152334.GA11056@orion> + + + +Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> +Acked-by: David S. Miller <davem@davemloft.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/at76_usb/at76_usb.c | 20 +++++++++++++------- + 1 file changed, 13 insertions(+), 7 deletions(-) + +--- a/drivers/staging/at76_usb/at76_usb.c ++++ b/drivers/staging/at76_usb/at76_usb.c +@@ -5259,6 +5259,18 @@ static int at76_alloc_urbs(struct at76_p + return 0; + } + ++static const struct net_device_ops at76_netdev_ops = { ++ .ndo_open = at76_open, ++ .ndo_stop = at76_stop, ++ .ndo_get_stats = at76_get_stats, ++ .ndo_start_xmit = at76_tx, ++ .ndo_tx_timeout = at76_tx_timeout, ++ .ndo_set_multicast_list = at76_set_multicast, ++ .ndo_set_mac_address = at76_set_mac_address, ++ .ndo_validate_addr = eth_validate_addr, ++ .ndo_change_mtu = eth_change_mtu, ++}; ++ + /* Register network device and initialize the hardware */ + static int at76_init_new_device(struct at76_priv *priv, + struct usb_interface *interface) +@@ -5303,21 +5315,15 @@ static int at76_init_new_device(struct a + priv->scan_mode = SCAN_TYPE_ACTIVE; + + netdev->flags &= ~IFF_MULTICAST; /* not yet or never */ +- netdev->open = at76_open; +- netdev->stop = at76_stop; +- netdev->get_stats = at76_get_stats; ++ netdev->netdev_ops = &at76_netdev_ops; + netdev->ethtool_ops = &at76_ethtool_ops; + + /* Add pointers to enable iwspy support. */ + priv->wireless_data.spy_data = &priv->spy_data; + netdev->wireless_data = &priv->wireless_data; + +- netdev->hard_start_xmit = at76_tx; +- netdev->tx_timeout = at76_tx_timeout; + netdev->watchdog_timeo = 2 * HZ; + netdev->wireless_handlers = &at76_handler_def; +- netdev->set_multicast_list = at76_set_multicast; +- netdev->set_mac_address = at76_set_mac_address; + dev_alloc_name(netdev, "wlan%d"); + + ret = register_netdev(priv->netdev); diff --git a/staging/staging-epl-convert-to-netdev_ops.patch b/staging/staging-epl-convert-to-netdev_ops.patch new file mode 100644 index 00000000000000..e6f5bac88c15d7 --- /dev/null +++ b/staging/staging-epl-convert-to-netdev_ops.patch @@ -0,0 +1,49 @@ +From a.beregalov@gmail.com Mon Apr 6 12:03:00 2009 +From: Alexander Beregalov <a.beregalov@gmail.com> +Date: Sun, 29 Mar 2009 19:24:32 +0400 +Subject: Staging: epl: convert to netdev_ops +To: gregkh@suse.de +Message-ID: <20090329152432.GB11056@orion> + + +Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> +Acked-by: David S. Miller <davem@davemloft.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/epl/VirtualEthernetLinux.c | 17 ++++++++++++----- + 1 file changed, 12 insertions(+), 5 deletions(-) + +--- a/drivers/staging/epl/VirtualEthernetLinux.c ++++ b/drivers/staging/epl/VirtualEthernetLinux.c +@@ -284,6 +284,17 @@ static tEplKernel VEthRecvFrame(tEplFram + return Ret; + } + ++static const struct net_device_ops epl_netdev_ops = { ++ .ndo_open = VEthOpen, ++ .ndo_stop = VEthClose, ++ .ndo_get_stats = VEthGetStats, ++ .ndo_start_xmit = VEthXmit, ++ .ndo_tx_timeout = VEthTimeout, ++ .ndo_change_mtu = eth_change_mtu, ++ .ndo_set_mac_address = eth_mac_addr, ++ .ndo_validate_addr = eth_validate_addr, ++}; ++ + tEplKernel VEthAddInstance(tEplDllkInitParam *pInitParam_p) + { + tEplKernel Ret = kEplSuccessful; +@@ -299,11 +310,7 @@ tEplKernel VEthAddInstance(tEplDllkInitP + goto Exit; + } + +- pVEthNetDevice_g->open = VEthOpen; +- pVEthNetDevice_g->stop = VEthClose; +- pVEthNetDevice_g->get_stats = VEthGetStats; +- pVEthNetDevice_g->hard_start_xmit = VEthXmit; +- pVEthNetDevice_g->tx_timeout = VEthTimeout; ++ pVEthNetDevice_g->netdev_ops = &epl_netdev_ops; + pVEthNetDevice_g->watchdog_timeo = EPL_VETH_TX_TIMEOUT; + pVEthNetDevice_g->destructor = free_netdev; + diff --git a/staging/staging-et131x-convert-to-netdev_ops.patch b/staging/staging-et131x-convert-to-netdev_ops.patch new file mode 100644 index 00000000000000..b3b73ced9085e3 --- /dev/null +++ b/staging/staging-et131x-convert-to-netdev_ops.patch @@ -0,0 +1,57 @@ +From a.beregalov@gmail.com Mon Apr 6 12:04:12 2009 +From: Alexander Beregalov <a.beregalov@gmail.com> +Date: Sun, 29 Mar 2009 19:25:33 +0400 +Subject: Staging: et131x: convert to netdev_ops +To: gregkh@suse.de +Message-ID: <20090329152533.GC11056@orion> +Content-Disposition: inline + + +Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> +Acked-by: David S. Miller <davem@davemloft.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/et131x/et131x_netdev.c | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) + +--- a/drivers/staging/et131x/et131x_netdev.c ++++ b/drivers/staging/et131x/et131x_netdev.c +@@ -112,6 +112,19 @@ void et131x_vlan_rx_register(struct net_ + void et131x_vlan_rx_add_vid(struct net_device *netdev, uint16_t vid); + void et131x_vlan_rx_kill_vid(struct net_device *netdev, uint16_t vid); + ++static const struct net_device_ops et131x_netdev_ops = { ++ .ndo_open = et131x_open, ++ .ndo_stop = et131x_close, ++ .ndo_start_xmit = et131x_tx, ++ .ndo_set_multicast_list = et131x_multicast, ++ .ndo_tx_timeout = et131x_tx_timeout, ++ .ndo_change_mtu = et131x_change_mtu, ++ .ndo_set_mac_address = et131x_set_mac_addr, ++ .ndo_validate_addr = eth_validate_addr, ++ .ndo_get_stats = et131x_stats, ++ .ndo_do_ioctl = et131x_ioctl, ++}; ++ + /** + * et131x_device_alloc + * +@@ -142,16 +155,8 @@ struct net_device *et131x_device_alloc(v + */ + //netdev->init = &et131x_init; + //netdev->set_config = &et131x_config; +- netdev->get_stats = &et131x_stats; +- netdev->open = &et131x_open; +- netdev->stop = &et131x_close; +- netdev->do_ioctl = &et131x_ioctl; +- netdev->set_multicast_list = &et131x_multicast; +- netdev->hard_start_xmit = &et131x_tx; +- netdev->tx_timeout = &et131x_tx_timeout; + netdev->watchdog_timeo = ET131X_TX_TIMEOUT; +- netdev->change_mtu = &et131x_change_mtu; +- netdev->set_mac_address = &et131x_set_mac_addr; ++ netdev->netdev_ops = &et131x_netdev_ops; + + //netdev->ethtool_ops = &et131x_ethtool_ops; + diff --git a/staging/staging-line6-convert-to-snd_card_create.patch b/staging/staging-line6-convert-to-snd_card_create.patch new file mode 100644 index 00000000000000..0eb9f807c17c3a --- /dev/null +++ b/staging/staging-line6-convert-to-snd_card_create.patch @@ -0,0 +1,34 @@ +From a.beregalov@gmail.com Mon Apr 6 12:09:58 2009 +From: Alexander Beregalov <a.beregalov@gmail.com> +Date: Sun, 29 Mar 2009 19:59:13 +0400 +Subject: Staging: line6: convert to snd_card_create() +To: gregkh@suse.de +Message-ID: <20090329155913.GK11056@orion> + + +Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/line6/audio.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +--- a/drivers/staging/line6/audio.c ++++ b/drivers/staging/line6/audio.c +@@ -27,11 +27,12 @@ int line6_init_audio(struct usb_line6 *l + { + static int dev; + struct snd_card *card; ++ int err; + +- card = snd_card_new(line6_index[dev], line6_id[dev], THIS_MODULE, 0); +- +- if (card == NULL) +- return -ENOMEM; ++ err = snd_card_create(line6_index[dev], line6_id[dev], THIS_MODULE, 0, ++ &card); ++ if (err < 0) ++ return err; + + line6->card = card; + diff --git a/staging/staging-otus-convert-to-netdev_ops.patch b/staging/staging-otus-convert-to-netdev_ops.patch new file mode 100644 index 00000000000000..79e2713e87cb09 --- /dev/null +++ b/staging/staging-otus-convert-to-netdev_ops.patch @@ -0,0 +1,96 @@ +From a.beregalov@gmail.com Mon Apr 6 12:04:36 2009 +From: Alexander Beregalov <a.beregalov@gmail.com> +Date: Sun, 29 Mar 2009 19:26:25 +0400 +Subject: Staging: otus: convert to netdev_ops +To: gregkh@suse.de +Message-ID: <20090329152625.GD11056@orion> +Content-Disposition: inline + + + + +Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> +Acked-by: David S. Miller <davem@davemloft.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/otus/usbdrv.c | 47 +++++++++++++++++++++++++----------------- + 1 file changed, 29 insertions(+), 18 deletions(-) + +--- a/drivers/staging/otus/usbdrv.c ++++ b/drivers/staging/otus/usbdrv.c +@@ -822,6 +822,21 @@ int zfLnxVapXmitFrame(struct sk_buff *sk + return 0; + } + ++static const struct net_device_ops vap_netdev_ops = { ++ .ndo_open = zfLnxVapOpen, ++ .ndo_stop = zfLnxVapClose, ++ .ndo_start_xmit = zfLnxVapXmitFrame, ++ .ndo_get_stats = usbdrv_get_stats, ++ .ndo_change_mtu = usbdrv_change_mtu, ++ .ndo_validate_addr = eth_validate_addr, ++ .ndo_set_mac_address = eth_mac_addr, ++#ifdef ZM_HOSTAPD_SUPPORT ++ .ndo_do_ioctl = usbdrv_ioctl, ++#else ++ .ndo_do_ioctl = NULL, ++#endif ++}; ++ + int zfLnxRegisterVapDev(struct net_device* parentDev, u16_t vapId) + { + /* Allocate net device structure */ +@@ -846,16 +861,7 @@ int zfLnxRegisterVapDev(struct net_devic + vap[vapId].dev->ml_priv = parentDev->ml_priv; + + //dev->hard_start_xmit = &zd1212_wds_xmit_frame; +- vap[vapId].dev->hard_start_xmit = &zfLnxVapXmitFrame; +- vap[vapId].dev->open = &zfLnxVapOpen; +- vap[vapId].dev->stop = &zfLnxVapClose; +- vap[vapId].dev->get_stats = &usbdrv_get_stats; +- vap[vapId].dev->change_mtu = &usbdrv_change_mtu; +-#ifdef ZM_HOSTAPD_SUPPORT +- vap[vapId].dev->do_ioctl = usbdrv_ioctl; +-#else +- vap[vapId].dev->do_ioctl = NULL; +-#endif ++ vap[vapId].dev->netdev_ops = &vap_netdev_ops; + vap[vapId].dev->destructor = free_netdev; + + vap[vapId].dev->tx_queue_len = 0; +@@ -1068,6 +1074,18 @@ void zfLnxUnlinkAllUrbs(struct usbdrv_pr + usb_unlink_urb(macp->RegInUrb); + } + ++static const struct net_device_ops otus_netdev_ops = { ++ .ndo_open = usbdrv_open, ++ .ndo_stop = usbdrv_close, ++ .ndo_start_xmit = usbdrv_xmit_frame, ++ .ndo_change_mtu = usbdrv_change_mtu, ++ .ndo_get_stats = usbdrv_get_stats, ++ .ndo_set_multicast_list = usbdrv_set_multi, ++ .ndo_set_mac_address = usbdrv_set_mac, ++ .ndo_do_ioctl = usbdrv_ioctl, ++ .ndo_validate_addr = eth_validate_addr, ++}; ++ + u8_t zfLnxInitSetup(struct net_device *dev, struct usbdrv_private *macp) + { + //unsigned char addr[6]; +@@ -1092,14 +1110,7 @@ u8_t zfLnxInitSetup(struct net_device *d + dev->wireless_handlers = (struct iw_handler_def *)&p80211wext_handler_def; + #endif + +- dev->open = usbdrv_open; +- dev->hard_start_xmit = usbdrv_xmit_frame; +- dev->stop = usbdrv_close; +- dev->change_mtu = &usbdrv_change_mtu; +- dev->get_stats = usbdrv_get_stats; +- dev->set_multicast_list = usbdrv_set_multi; +- dev->set_mac_address = usbdrv_set_mac; +- dev->do_ioctl = usbdrv_ioctl; ++ dev->netdev_ops = &otus_netdev_ops; + + dev->flags |= IFF_MULTICAST; + diff --git a/staging/staging-rt2860-convert-to-netdev_ops.patch b/staging/staging-rt2860-convert-to-netdev_ops.patch new file mode 100644 index 00000000000000..3c19fdffca89a1 --- /dev/null +++ b/staging/staging-rt2860-convert-to-netdev_ops.patch @@ -0,0 +1,67 @@ +From a.beregalov@gmail.com Mon Apr 6 12:07:18 2009 +From: Alexander Beregalov <a.beregalov@gmail.com> +Date: Sun, 29 Mar 2009 19:27:21 +0400 +Subject: Staging: rt2860: convert to netdev_ops +To: gregkh@suse.de +Message-ID: <20090329152721.GE11056@orion> +Content-Disposition: inline + + + +Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> +Acked-by: David S. Miller <davem@davemloft.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/rt2860/rt_main_dev.c | 25 +++++++++++++++---------- + 1 file changed, 15 insertions(+), 10 deletions(-) + +--- a/drivers/staging/rt2860/rt_main_dev.c ++++ b/drivers/staging/rt2860/rt_main_dev.c +@@ -722,6 +722,20 @@ err: + return (-1); + } /* End of rt28xx_open */ + ++static const struct net_device_ops rt2860_netdev_ops = { ++ .ndo_open = MainVirtualIF_open, ++ .ndo_stop = MainVirtualIF_close, ++ .ndo_do_ioctl = rt28xx_ioctl, ++ .ndo_get_stats = RT28xx_get_ether_stats, ++ .ndo_validate_addr = NULL, ++ .ndo_set_mac_address = eth_mac_addr, ++ .ndo_change_mtu = eth_change_mtu, ++#ifdef IKANOS_VX_1X0 ++ .ndo_start_xmit = IKANOS_DataFramesTx, ++#else ++ .ndo_start_xmit = rt28xx_send_packets, ++#endif ++}; + + /* Must not be called for mdev and apdev */ + static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER pAd) +@@ -733,11 +747,6 @@ static NDIS_STATUS rt_ieee80211_if_setup + + + //ether_setup(dev); +- dev->hard_start_xmit = rt28xx_send_packets; +- +-#ifdef IKANOS_VX_1X0 +- dev->hard_start_xmit = IKANOS_DataFramesTx; +-#endif // IKANOS_VX_1X0 // + + #ifdef CONFIG_STA_SUPPORT + #if WIRELESS_EXT >= 12 +@@ -760,12 +769,8 @@ static NDIS_STATUS rt_ieee80211_if_setup + #if WIRELESS_EXT < 21 + dev->get_wireless_stats = rt28xx_get_wireless_stats; + #endif +- dev->get_stats = RT28xx_get_ether_stats; +- dev->open = MainVirtualIF_open; //rt28xx_open; +- dev->stop = MainVirtualIF_close; //rt28xx_close; + dev->priv_flags = INT_MAIN; +- dev->do_ioctl = rt28xx_ioctl; +- dev->validate_addr = NULL; ++ dev->netdev_ops = &rt2860_netdev_ops; + // find available device name + for (i = 0; i < 8; i++) + { diff --git a/staging/staging-rt2870-add-id-for-sitecom-wl-315.patch b/staging/staging-rt2870-add-id-for-sitecom-wl-315.patch new file mode 100644 index 00000000000000..9f7615cbc84d2d --- /dev/null +++ b/staging/staging-rt2870-add-id-for-sitecom-wl-315.patch @@ -0,0 +1,31 @@ +From akpm@linux-foundation.org Mon Apr 6 12:22:01 2009 +From: Daniele Napolitano <dnax88@gmail.com> +Date: Wed, 01 Apr 2009 14:53:39 -0700 +Subject: Staging: rt2870: add ID for Sitecom WL-315 +To: mm-commits@vger.kernel.org +Cc: dnax88@gmail.com, arnd@arndb.de, greg@kroah.com +Message-ID: <200904012153.n31LrdOG032444@imap1.linux-foundation.org> + + +From: Daniele Napolitano <dnax88@gmail.com> + +Signed-off-by: Daniele Napolitano <dnax88@gmail.com> +Cc: Arnd Bergmann <arnd@arndb.de> +Cc: Greg KH <greg@kroah.com> +Signed-off-by: Andrew Morton <akpm@linux-foundation.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/rt2870/rt2870.h | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/staging/rt2870/rt2870.h ++++ b/drivers/staging/rt2870/rt2870.h +@@ -96,6 +96,7 @@ + {USB_DEVICE(0x0DF6,0x002B)}, /* Sitecom */ \ + {USB_DEVICE(0x0DF6,0x002C)}, /* Sitecom */ \ + {USB_DEVICE(0x0DF6,0x002D)}, /* Sitecom */ \ ++ {USB_DEVICE(0x0DF6,0x0039)}, /* Sitecom */ \ + {USB_DEVICE(0x14B2,0x3C06)}, /* Conceptronic */ \ + {USB_DEVICE(0x14B2,0x3C28)}, /* Conceptronic */ \ + {USB_DEVICE(0x2019,0xED06)}, /* Planex Communications, Inc. */ \ diff --git a/staging/staging-rt2870-convert-to-netdev_ops.patch b/staging/staging-rt2870-convert-to-netdev_ops.patch new file mode 100644 index 00000000000000..fc44da37418e47 --- /dev/null +++ b/staging/staging-rt2870-convert-to-netdev_ops.patch @@ -0,0 +1,72 @@ +From a.beregalov@gmail.com Mon Apr 6 12:07:42 2009 +From: Alexander Beregalov <a.beregalov@gmail.com> +Date: Sun, 29 Mar 2009 19:28:11 +0400 +Subject: Staging: rt2870: convert to netdev_ops +To: gregkh@suse.de +Message-ID: <20090329152811.GF11056@orion> +Content-Disposition: inline + + + +Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> +Acked-by: David S. Miller <davem@davemloft.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/rt2870/rt_main_dev.c | 28 +++++++++++++++------------- + 1 file changed, 15 insertions(+), 13 deletions(-) + +--- a/drivers/staging/rt2870/rt_main_dev.c ++++ b/drivers/staging/rt2870/rt_main_dev.c +@@ -855,6 +855,20 @@ err: + return (-1); + } /* End of rt28xx_open */ + ++static const struct net_device_ops rt2870_netdev_ops = { ++ .ndo_open = MainVirtualIF_open, ++ .ndo_stop = MainVirtualIF_close, ++ .ndo_do_ioctl = rt28xx_ioctl, ++ .ndo_get_stats = RT28xx_get_ether_stats, ++ .ndo_validate_addr = NULL, ++ .ndo_set_mac_address = eth_mac_addr, ++ .ndo_change_mtu = eth_change_mtu, ++#ifdef IKANOS_VX_1X0 ++ .ndo_start_xmit = IKANOS_DataFramesTx, ++#else ++ .ndo_start_xmit = rt28xx_send_packets, ++#endif ++}; + + /* Must not be called for mdev and apdev */ + static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER pAd) +@@ -866,12 +880,6 @@ static NDIS_STATUS rt_ieee80211_if_setup + + + //ether_setup(dev); +- dev->hard_start_xmit = rt28xx_send_packets; +- +-#ifdef IKANOS_VX_1X0 +- dev->hard_start_xmit = IKANOS_DataFramesTx; +-#endif // IKANOS_VX_1X0 // +- + // dev->set_multicast_list = ieee80211_set_multicast_list; + // dev->change_mtu = ieee80211_change_mtu; + #ifdef CONFIG_STA_SUPPORT +@@ -895,16 +903,10 @@ static NDIS_STATUS rt_ieee80211_if_setup + #if WIRELESS_EXT < 21 + dev->get_wireless_stats = rt28xx_get_wireless_stats; + #endif +- dev->get_stats = RT28xx_get_ether_stats; +- dev->open = MainVirtualIF_open; //rt28xx_open; +- dev->stop = MainVirtualIF_close; //rt28xx_close; + // dev->uninit = ieee80211_if_reinit; + // dev->destructor = ieee80211_if_free; + dev->priv_flags = INT_MAIN; +- dev->do_ioctl = rt28xx_ioctl; +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) +- dev->validate_addr = NULL; +-#endif ++ dev->netdev_ops = &rt2870_netdev_ops; + // find available device name + for (i = 0; i < 8; i++) + { diff --git a/staging/staging-rt3070-convert-to-netdev_ops.patch b/staging/staging-rt3070-convert-to-netdev_ops.patch new file mode 100644 index 00000000000000..544384217840d7 --- /dev/null +++ b/staging/staging-rt3070-convert-to-netdev_ops.patch @@ -0,0 +1,81 @@ +From a.beregalov@gmail.com Mon Apr 6 12:08:18 2009 +From: Alexander Beregalov <a.beregalov@gmail.com> +Date: Sun, 29 Mar 2009 19:29:18 +0400 +Subject: Staging: rt3070: convert to netdev_ops +To: gregkh@suse.de +Message-ID: <20090329152918.GG11056@orion> +Content-Disposition: inline + + +Also remove unused variable. + +Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> +Acked-by: David S. Miller <davem@davemloft.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/rt3070/rt_main_dev.c | 29 +++++++++++++++-------------- + 1 file changed, 15 insertions(+), 14 deletions(-) + +--- a/drivers/staging/rt3070/rt_main_dev.c ++++ b/drivers/staging/rt3070/rt_main_dev.c +@@ -436,7 +436,6 @@ static int rt28xx_init(IN struct net_dev + // OID_SET_HT_PHYMODE SetHT; + // WPDMA_GLO_CFG_STRUC GloCfg; + UINT32 MacCsr0 = 0; +- UINT32 MacValue = 0; + + #ifdef RT2870 + #ifdef INF_AMAZON_SE +@@ -849,6 +848,20 @@ err: + return (-1); + } /* End of rt28xx_open */ + ++static const struct net_device_ops rt3070_netdev_ops = { ++ .ndo_open = MainVirtualIF_open, ++ .ndo_stop = MainVirtualIF_close, ++ .ndo_do_ioctl = rt28xx_ioctl, ++ .ndo_get_stats = RT28xx_get_ether_stats, ++ .ndo_validate_addr = NULL, ++ .ndo_set_mac_address = eth_mac_addr, ++ .ndo_change_mtu = eth_change_mtu, ++#ifdef IKANOS_VX_1X0 ++ .ndo_start_xmit = IKANOS_DataFramesTx, ++#else ++ .ndo_start_xmit = rt28xx_send_packets, ++#endif ++}; + + /* Must not be called for mdev and apdev */ + static NDIS_STATUS rt_ieee80211_if_setup(struct net_device *dev, PRTMP_ADAPTER pAd) +@@ -860,12 +873,6 @@ static NDIS_STATUS rt_ieee80211_if_setup + + + //ether_setup(dev); +- dev->hard_start_xmit = rt28xx_send_packets; +- +-#ifdef IKANOS_VX_1X0 +- dev->hard_start_xmit = IKANOS_DataFramesTx; +-#endif // IKANOS_VX_1X0 // +- + // dev->set_multicast_list = ieee80211_set_multicast_list; + // dev->change_mtu = ieee80211_change_mtu; + #ifdef CONFIG_STA_SUPPORT +@@ -889,16 +896,10 @@ static NDIS_STATUS rt_ieee80211_if_setup + #if WIRELESS_EXT < 21 + dev->get_wireless_stats = rt28xx_get_wireless_stats; + #endif +- dev->get_stats = RT28xx_get_ether_stats; +- dev->open = MainVirtualIF_open; //rt28xx_open; +- dev->stop = MainVirtualIF_close; //rt28xx_close; + // dev->uninit = ieee80211_if_reinit; + // dev->destructor = ieee80211_if_free; + dev->priv_flags = INT_MAIN; +- dev->do_ioctl = rt28xx_ioctl; +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) +- dev->validate_addr = NULL; +-#endif ++ dev->netdev_ops = &rt3070_netdev_ops; + // find available device name + for (i = 0; i < 8; i++) + { diff --git a/staging/staging-slicoss-convert-to-netdev_ops.patch b/staging/staging-slicoss-convert-to-netdev_ops.patch new file mode 100644 index 00000000000000..05d47d4f129782 --- /dev/null +++ b/staging/staging-slicoss-convert-to-netdev_ops.patch @@ -0,0 +1,54 @@ +From a.beregalov@gmail.com Mon Apr 6 12:08:40 2009 +From: Alexander Beregalov <a.beregalov@gmail.com> +Date: Sun, 29 Mar 2009 19:30:08 +0400 +Subject: Staging: slicoss: convert to netdev_ops +To: gregkh@suse.de +Message-ID: <20090329153008.GH11056@orion> + + + +Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> +Acked-by: David S. Miller <davem@davemloft.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/slicoss/slicoss.c | 21 ++++++++++++++------- + 1 file changed, 14 insertions(+), 7 deletions(-) + +--- a/drivers/staging/slicoss/slicoss.c ++++ b/drivers/staging/slicoss/slicoss.c +@@ -345,6 +345,19 @@ static void slic_init_adapter(struct net + return; + } + ++static const struct net_device_ops slic_netdev_ops = { ++ .ndo_open = slic_entry_open, ++ .ndo_stop = slic_entry_halt, ++ .ndo_start_xmit = slic_xmit_start, ++ .ndo_do_ioctl = slic_ioctl, ++ .ndo_set_mac_address = slic_mac_set_address, ++ .ndo_get_stats = slic_get_stats, ++ .ndo_set_multicast_list = slic_mcast_set_list, ++ .ndo_validate_addr = eth_validate_addr, ++ .ndo_set_mac_address = eth_mac_addr, ++ .ndo_change_mtu = eth_change_mtu, ++}; ++ + static int __devinit slic_entry_probe(struct pci_dev *pcidev, + const struct pci_device_id *pci_tbl_entry) + { +@@ -442,13 +455,7 @@ static int __devinit slic_entry_probe(st + + netdev->base_addr = (unsigned long)adapter->memorybase; + netdev->irq = adapter->irq; +- netdev->open = slic_entry_open; +- netdev->stop = slic_entry_halt; +- netdev->hard_start_xmit = slic_xmit_start; +- netdev->do_ioctl = slic_ioctl; +- netdev->set_mac_address = slic_mac_set_address; +- netdev->get_stats = slic_get_stats; +- netdev->set_multicast_list = slic_mcast_set_list; ++ netdev->netdev_ops = &slic_netdev_ops; + + slic_debug_adapter_create(adapter); + diff --git a/staging/staging-sxg-convert-to-netdev_ops.patch b/staging/staging-sxg-convert-to-netdev_ops.patch new file mode 100644 index 00000000000000..39964b12747fb3 --- /dev/null +++ b/staging/staging-sxg-convert-to-netdev_ops.patch @@ -0,0 +1,59 @@ +From a.beregalov@gmail.com Mon Apr 6 12:09:01 2009 +From: Alexander Beregalov <a.beregalov@gmail.com> +Date: Sun, 29 Mar 2009 19:30:46 +0400 +Subject: Staging: sxg: convert to netdev_ops +To: gregkh@suse.de +Message-ID: <20090329153046.GI11056@orion> + + +Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> +Acked-by: David S. Miller <davem@davemloft.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/sxg/sxg.c | 27 +++++++++++++++++---------- + 1 file changed, 17 insertions(+), 10 deletions(-) + +--- a/drivers/staging/sxg/sxg.c ++++ b/drivers/staging/sxg/sxg.c +@@ -896,6 +896,22 @@ static inline int sxg_read_config(struct + return status; + } + ++static const struct net_device_ops sxg_netdev_ops = { ++ .ndo_open = sxg_entry_open, ++ .ndo_stop = sxg_entry_halt, ++ .ndo_start_xmit = sxg_send_packets, ++ .ndo_do_ioctl = sxg_ioctl, ++ .ndo_change_mtu = sxg_change_mtu, ++ .ndo_get_stats = sxg_get_stats, ++ .ndo_set_multicast_list = sxg_mcast_set_list, ++ .ndo_validate_addr = eth_validate_addr, ++#if XXXTODO ++ .ndo_set_mac_address = sxg_mac_set_address, ++#else ++ .ndo_set_mac_address = eth_mac_addr, ++#endif ++}; ++ + static int sxg_entry_probe(struct pci_dev *pcidev, + const struct pci_device_id *pci_tbl_entry) + { +@@ -1095,16 +1111,7 @@ static int sxg_entry_probe(struct pci_de + + netdev->base_addr = (unsigned long)adapter->base_addr; + netdev->irq = adapter->irq; +- netdev->open = sxg_entry_open; +- netdev->stop = sxg_entry_halt; +- netdev->hard_start_xmit = sxg_send_packets; +- netdev->do_ioctl = sxg_ioctl; +- netdev->change_mtu = sxg_change_mtu; +-#if XXXTODO +- netdev->set_mac_address = sxg_mac_set_address; +-#endif +- netdev->get_stats = sxg_get_stats; +- netdev->set_multicast_list = sxg_mcast_set_list; ++ netdev->netdev_ops = &sxg_netdev_ops; + SET_ETHTOOL_OPS(netdev, &sxg_nic_ethtool_ops); + netdev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; + err = sxg_set_interrupt_capability(adapter); diff --git a/staging/staging-wlan-ng-convert-to-netdev_ops.patch b/staging/staging-wlan-ng-convert-to-netdev_ops.patch new file mode 100644 index 00000000000000..e3dbe4574b6860 --- /dev/null +++ b/staging/staging-wlan-ng-convert-to-netdev_ops.patch @@ -0,0 +1,52 @@ +From a.beregalov@gmail.com Mon Apr 6 12:09:23 2009 +From: Alexander Beregalov <a.beregalov@gmail.com> +Date: Sun, 29 Mar 2009 19:31:28 +0400 +Subject: Staging: wlan-ng: convert to netdev_ops +To: gregkh@suse.de +Message-ID: <20090329153128.GJ11056@orion> + + +Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> +Acked-by: David S. Miller <davem@davemloft.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/staging/wlan-ng/p80211netdev.c | 20 +++++++++++++++----- + 1 file changed, 15 insertions(+), 5 deletions(-) + +--- a/drivers/staging/wlan-ng/p80211netdev.c ++++ b/drivers/staging/wlan-ng/p80211netdev.c +@@ -711,6 +711,20 @@ static int wlan_change_mtu(netdevice_t * + return 0; + } + ++static const struct net_device_ops p80211_netdev_ops = { ++ .ndo_init = p80211knetdev_init, ++ .ndo_open = p80211knetdev_open, ++ .ndo_stop = p80211knetdev_stop, ++ .ndo_get_stats = p80211knetdev_get_stats, ++ .ndo_start_xmit = p80211knetdev_hard_start_xmit, ++ .ndo_set_multicast_list = p80211knetdev_set_multicast_list, ++ .ndo_do_ioctl = p80211knetdev_do_ioctl, ++ .ndo_set_mac_address = p80211knetdev_set_mac_address, ++ .ndo_tx_timeout = p80211knetdev_tx_timeout, ++ .ndo_change_mtu = wlan_change_mtu, ++ .ndo_validate_addr = eth_validate_addr, ++}; ++ + /*---------------------------------------------------------------- + * wlan_setup + * +@@ -756,11 +770,7 @@ int wlan_setup(wlandevice_t *wlandev) + } else { + wlandev->netdev = dev; + dev->ml_priv = wlandev; +- dev->hard_start_xmit = p80211knetdev_hard_start_xmit; +- dev->get_stats = p80211knetdev_get_stats; +- dev->init = p80211knetdev_init; +- dev->open = p80211knetdev_open; +- dev->stop = p80211knetdev_stop; ++ dev->netdev_ops = &p80211_netdev_ops; + + mutex_init(&wlandev->ioctl_lock); + /* block ioctls until fully initialised. Don't forget to call diff --git a/usb.current/usb-cdc-acm-zydas-1602-identifier-needed.patch b/usb.current/usb-cdc-acm-zydas-1602-identifier-needed.patch new file mode 100644 index 00000000000000..ac555bc23959d2 --- /dev/null +++ b/usb.current/usb-cdc-acm-zydas-1602-identifier-needed.patch @@ -0,0 +1,31 @@ +From alan@lxorguk.ukuu.org.uk Mon Apr 6 12:12:24 2009 +From: Alan Cox <alan@lxorguk.ukuu.org.uk> +Date: Thu, 26 Mar 2009 20:50:02 +0000 +Subject: USB: cdc-acm: zydas 1602 identifier needed +To: greg@kroah.com +Message-ID: <20090326204959.5020.80841.stgit@localhost.localdomain> + + +Bugzilla #9095 and a couple of other confirmations + +Signed-off-by: Alan Cox <alan@lxorguk.ukuu.org.uk> +Cc: stable <stable@kernel.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + + +--- + drivers/usb/class/cdc-acm.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/usb/class/cdc-acm.c ++++ b/drivers/usb/class/cdc-acm.c +@@ -1358,6 +1358,9 @@ static struct usb_device_id acm_ids[] = + { USB_DEVICE(0x079b, 0x000f), /* BT On-Air USB MODEM */ + .driver_info = NO_UNION_NORMAL, /* has no union descriptor */ + }, ++ { USB_DEVICE(0x0ace, 0x1602), /* ZyDAS 56K USB MODEM */ ++ .driver_info = SINGLE_RX_URB, ++ }, + { USB_DEVICE(0x0ace, 0x1608), /* ZyDAS 56K USB MODEM */ + .driver_info = SINGLE_RX_URB, /* firmware bug */ + }, diff --git a/usb.current/usb-ftdi_sio-add-vendor-project-id-for-jeti-specbos-1201-spectrometer.patch b/usb.current/usb-ftdi_sio-add-vendor-project-id-for-jeti-specbos-1201-spectrometer.patch new file mode 100644 index 00000000000000..989c6214311e30 --- /dev/null +++ b/usb.current/usb-ftdi_sio-add-vendor-project-id-for-jeti-specbos-1201-spectrometer.patch @@ -0,0 +1,45 @@ +From jacmet@sunsite.dk Mon Apr 6 12:13:35 2009 +From: Peter Korsgaard <jacmet@sunsite.dk> +Date: Wed, 25 Mar 2009 11:32:59 +0100 +Subject: USB: ftdi_sio: add vendor/project id for JETI specbos 1201 spectrometer +To: gregkh@suse.de +Cc: Peter Korsgaard <jacmet@sunsite.dk> +Message-ID: <1237977179-9716-1-git-send-email-jacmet@sunsite.dk> + + + +Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk> +Cc: stable <stable@kernel.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/serial/ftdi_sio.c | 1 + + drivers/usb/serial/ftdi_sio.h | 7 +++++++ + 2 files changed, 8 insertions(+) + +--- a/drivers/usb/serial/ftdi_sio.c ++++ b/drivers/usb/serial/ftdi_sio.c +@@ -668,6 +668,7 @@ static struct usb_device_id id_table_com + { USB_DEVICE(DE_VID, WHT_PID) }, + { USB_DEVICE(ADI_VID, ADI_GNICE_PID), + .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, ++ { USB_DEVICE(JETI_VID, JETI_SPC1201_PID) }, + { }, /* Optional parameter entry */ + { } /* Terminating entry */ + }; +--- a/drivers/usb/serial/ftdi_sio.h ++++ b/drivers/usb/serial/ftdi_sio.h +@@ -913,6 +913,13 @@ + #define ADI_GNICE_PID 0xF000 + + /* ++ * JETI SPECTROMETER SPECBOS 1201 ++ * http://www.jeti.com/products/sys/scb/scb1201.php ++ */ ++#define JETI_VID 0x0c6c ++#define JETI_SPC1201_PID 0x04b2 ++ ++/* + * BmRequestType: 1100 0000b + * bRequest: FTDI_E2_READ + * wValue: 0 diff --git a/usb.current/usb-gadget-fix-ethernet-link-reports-to-ethtool.patch b/usb.current/usb-gadget-fix-ethernet-link-reports-to-ethtool.patch new file mode 100644 index 00000000000000..898313cf2cc4f4 --- /dev/null +++ b/usb.current/usb-gadget-fix-ethernet-link-reports-to-ethtool.patch @@ -0,0 +1,51 @@ +From david-b@pacbell.net Mon Apr 6 10:37:39 2009 +From: Jonathan McDowell <noodles@earth.li> +Date: Thu, 26 Mar 2009 00:45:27 -0700 +Subject: usb gadget: fix ethernet link reports to ethtool +To: Greg KH <greg@kroah.com>, linux-usb@vger.kernel.org +Cc: Jonathan McDowell <noodles@earth.li> +Message-ID: <200903260045.27978.david-b@pacbell.net> + + +From: Jonathan McDowell <noodles@earth.li> + +The g_ether USB gadget driver currently decides whether or not there's a +link to report back for eth_get_link based on if the USB link speed is +set. The USB gadget speed is however often set even before the device is +enumerated. It seems more sensible to only report a "link" if we're +actually connected to a host that wants to talk to us. The patch below +does this for me - tested with the PXA27x UDC driver. + +Signed-off-by: Jonathan McDowell <noodles@earth.li> +Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> +Cc: stable <stable@kernel.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/gadget/u_ether.c | 8 +------- + 1 file changed, 1 insertion(+), 7 deletions(-) + +--- a/drivers/usb/gadget/u_ether.c ++++ b/drivers/usb/gadget/u_ether.c +@@ -175,12 +175,6 @@ static void eth_get_drvinfo(struct net_d + strlcpy(p->bus_info, dev_name(&dev->gadget->dev), sizeof p->bus_info); + } + +-static u32 eth_get_link(struct net_device *net) +-{ +- struct eth_dev *dev = netdev_priv(net); +- return dev->gadget->speed != USB_SPEED_UNKNOWN; +-} +- + /* REVISIT can also support: + * - WOL (by tracking suspends and issuing remote wakeup) + * - msglevel (implies updated messaging) +@@ -189,7 +183,7 @@ static u32 eth_get_link(struct net_devic + + static struct ethtool_ops ops = { + .get_drvinfo = eth_get_drvinfo, +- .get_link = eth_get_link ++ .get_link = ethtool_op_get_link, + }; + + static void defer_kevent(struct eth_dev *dev, int flag) diff --git a/usb.current/usb-symbol-remove-various-bits-of-left-over-junk.patch b/usb.current/usb-symbol-remove-various-bits-of-left-over-junk.patch new file mode 100644 index 00000000000000..a16e4156c5b1cf --- /dev/null +++ b/usb.current/usb-symbol-remove-various-bits-of-left-over-junk.patch @@ -0,0 +1,112 @@ +From alan@lxorguk.ukuu.org.uk Mon Apr 6 12:16:20 2009 +From: Alan Cox <alan@lxorguk.ukuu.org.uk> +Date: Wed, 01 Apr 2009 14:59:17 +0100 +Subject: USB: symbol: Remove various bits of left over junk +To: torvalds@linux-foundation.org, greg@kroah.com +Message-ID: <20090401135903.22486.60017.stgit@localhost.localdomain> + + +There are various bits of code here that are unfinished and instead of +being harmless either confuse or spew stuff into the logs at higher than +debug level. They can and should go away. + +Also remove the bogus use of tty->lowlatency. We fixed the need for this hack +long ago (with the flip buffer rewrite) but people keep copying it into drivers. + +Signed-off-by: Alan Cox <alan@lxorguk.ukuu.org.uk> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/serial/symbolserial.c | 67 -------------------------------------- + 1 file changed, 67 deletions(-) + +--- a/drivers/usb/serial/symbolserial.c ++++ b/drivers/usb/serial/symbolserial.c +@@ -139,14 +139,6 @@ static int symbol_open(struct tty_struct + priv->port = port; + spin_unlock_irqrestore(&priv->lock, flags); + +- /* +- * Force low_latency on so that our tty_push actually forces the data +- * through, otherwise it is scheduled, and with high data rates (like +- * with OHCI) data can get lost. +- */ +- if (tty) +- tty->low_latency = 1; +- + /* Start reading from the device */ + usb_fill_int_urb(priv->int_urb, priv->udev, + usb_rcvintpipe(priv->udev, priv->int_address), +@@ -205,62 +197,6 @@ static void symbol_unthrottle(struct tty + __func__, result); + } + +-static int symbol_ioctl(struct tty_struct *tty, struct file *file, +- unsigned int cmd, unsigned long arg) +-{ +- struct usb_serial_port *port = tty->driver_data; +- struct device *dev = &port->dev; +- +- /* +- * Right now we need to figure out what commands +- * most userspace tools want to see for this driver, +- * so just log the things. +- */ +- switch (cmd) { +- case TIOCSERGETLSR: +- dev_info(dev, "%s: TIOCSERGETLSR\n", __func__); +- break; +- +- case TIOCGSERIAL: +- dev_info(dev, "%s: TIOCGSERIAL\n", __func__); +- break; +- +- case TIOCMIWAIT: +- dev_info(dev, "%s: TIOCMIWAIT\n", __func__); +- break; +- +- case TIOCGICOUNT: +- dev_info(dev, "%s: TIOCGICOUNT\n", __func__); +- break; +- default: +- dev_info(dev, "%s: unknown (%d)\n", __func__, cmd); +- } +- return -ENOIOCTLCMD; +-} +- +-static int symbol_tiocmget(struct tty_struct *tty, struct file *file) +-{ +- struct usb_serial_port *port = tty->driver_data; +- struct device *dev = &port->dev; +- +- /* TODO */ +- /* probably just need to shadow whatever was sent to us here */ +- dev_info(dev, "%s\n", __func__); +- return 0; +-} +- +-static int symbol_tiocmset(struct tty_struct *tty, struct file *file, +- unsigned int set, unsigned int clear) +-{ +- struct usb_serial_port *port = tty->driver_data; +- struct device *dev = &port->dev; +- +- /* TODO */ +- /* probably just need to shadow whatever was sent to us here */ +- dev_info(dev, "%s\n", __func__); +- return 0; +-} +- + static int symbol_startup(struct usb_serial *serial) + { + struct symbol_private *priv; +@@ -367,9 +303,6 @@ static struct usb_serial_driver symbol_d + .shutdown = symbol_shutdown, + .throttle = symbol_throttle, + .unthrottle = symbol_unthrottle, +- .ioctl = symbol_ioctl, +- .tiocmget = symbol_tiocmget, +- .tiocmset = symbol_tiocmset, + }; + + static int __init symbol_init(void) diff --git a/usb.current/usb-tty-pl2303-needs-identifiers-for-siemens-s81-as-well-as-ef81.patch b/usb.current/usb-tty-pl2303-needs-identifiers-for-siemens-s81-as-well-as-ef81.patch new file mode 100644 index 00000000000000..910dc6e6336b22 --- /dev/null +++ b/usb.current/usb-tty-pl2303-needs-identifiers-for-siemens-s81-as-well-as-ef81.patch @@ -0,0 +1,41 @@ +From alan@lxorguk.ukuu.org.uk Mon Apr 6 12:12:52 2009 +From: Alan Cox <alan@lxorguk.ukuu.org.uk> +Date: Thu, 26 Mar 2009 20:50:46 +0000 +Subject: USB: tty: pl2303 needs identifiers for Siemens S81 as well as EF81 +To: greg@kroah.com +Message-ID: <20090326205020.5084.87043.stgit@localhost.localdomain> + + +Closes bug 9065 + +Signed-off-by: Alan Cox <alan@lxorguk.ukuu.org.uk> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/serial/pl2303.c | 1 + + drivers/usb/serial/pl2303.h | 4 ++++ + 2 files changed, 5 insertions(+) + +--- a/drivers/usb/serial/pl2303.c ++++ b/drivers/usb/serial/pl2303.c +@@ -79,6 +79,7 @@ static struct usb_device_id id_table [] + { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X65) }, + { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X75) }, + { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_EF81) }, ++ { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_ID_S81) }, /* Benq/Siemens S81 */ + { USB_DEVICE(SYNTECH_VENDOR_ID, SYNTECH_PRODUCT_ID) }, + { USB_DEVICE(NOKIA_CA42_VENDOR_ID, NOKIA_CA42_PRODUCT_ID) }, + { USB_DEVICE(CA_42_CA42_VENDOR_ID, CA_42_CA42_PRODUCT_ID) }, +--- a/drivers/usb/serial/pl2303.h ++++ b/drivers/usb/serial/pl2303.h +@@ -7,6 +7,10 @@ + * (at your option) any later version. + * + */ ++ ++#define BENQ_VENDOR_ID 0x04a5 ++#define BENQ_PRODUCT_ID_S81 0x4027 ++ + #define PL2303_VENDOR_ID 0x067b + #define PL2303_PRODUCT_ID 0x2303 + #define PL2303_PRODUCT_ID_RSAQ2 0x04bb |
