# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.563   -> 1.564  
#       drivers/usb/net/pegasus.c       1.25    -> 1.26   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/04/30      [EMAIL PROTECTED]     1.564
# [PATCH] PATCH 2.5.10 -- pegasus ethtool support
# 
# This resends the "usb_make_path()" update (my net-0408 patch)
# to pegasus, so it reports the same bus info the other usb network
# drivers now return, and fixes a couple other bugs in ethtool support I
# happened to notice:
# 
#     - driver info wasn't providing the "driver short name".
#     - settings weren't correctly initting data (returned garbage)
# 
# The first bug caused one text fields to overflow into the next in
# "ethtool -i eth1" output.  The second caused a 10/100 device
# to report itself with "ethtool eth1" as having gigabit support ... :)
# --------------------------------------------
#
diff -Nru a/drivers/usb/net/pegasus.c b/drivers/usb/net/pegasus.c
--- a/drivers/usb/net/pegasus.c Thu May  2 16:48:42 2002
+++ b/drivers/usb/net/pegasus.c Thu May  2 16:48:42 2002
@@ -62,6 +62,8 @@
 #define DRIVER_AUTHOR "Petko Manolov <[EMAIL PROTECTED]>"
 #define DRIVER_DESC "Pegasus/Pegasus II USB Ethernet driver"
 
+static const char driver_name [] = "pegasus";
+
 #define        PEGASUS_USE_INTR
 #define        PEGASUS_WRITE_EEPROM
 #define        BMSR_MEDIA      (BMSR_10HALF | BMSR_10FULL | BMSR_100HALF | \
@@ -811,7 +813,6 @@
 {
        pegasus_t *pegasus;
        int cmd;
-       char tmp[128];
 
        pegasus = net->priv;
        if (get_user(cmd, (int *) uaddr))
@@ -819,12 +820,11 @@
        switch (cmd) {
        case ETHTOOL_GDRVINFO:{
                        struct ethtool_drvinfo info = { ETHTOOL_GDRVINFO };
-                       strncpy(info.driver, DRIVER_DESC, ETHTOOL_BUSINFO_LEN);
+                       strncpy(info.driver, driver_name, sizeof info.driver);
                        strncpy(info.version, DRIVER_VERSION,
                                ETHTOOL_BUSINFO_LEN);
-                       sprintf(tmp, "usb%d:%d", pegasus->usb->bus->busnum,
-                               pegasus->usb->devnum);
-                       strncpy(info.bus_info, tmp, ETHTOOL_BUSINFO_LEN);
+                       usb_make_path(pegasus->usb, info.bus_info,
+                               sizeof info.bus_info);
                        if (copy_to_user(uaddr, &info, sizeof(info)))
                                return -EFAULT;
                        return 0;
@@ -833,8 +833,7 @@
                        struct ethtool_cmd ecmd;
                        short lpa, bmcr;
 
-                       if (copy_from_user(&ecmd, uaddr, sizeof(ecmd)))
-                               return -EFAULT;
+                       memset(&ecmd, 0, sizeof ecmd);
                        ecmd.supported = (SUPPORTED_10baseT_Half |
                                          SUPPORTED_10baseT_Full |
                                          SUPPORTED_100baseT_Half |
@@ -1104,7 +1103,7 @@
 }
 
 static struct usb_driver pegasus_driver = {
-       name:           "pegasus",
+       name:           driver_name,
        probe:          pegasus_probe,
        disconnect:     pegasus_disconnect,
        id_table:       pegasus_ids,

_______________________________________________________________

Have big pipes? SourceForge.net is looking for download mirrors. We supply
the hardware. You get the recognition. Email Us: [EMAIL PROTECTED]
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to