* Re: [PATCH 4/5] pm: move pm notifiers into suspend.h
From: Pavel Machek @ 2011-06-23 20:24 UTC (permalink / raw)
To: Cong Wang
Cc: Rafael J. Wysocki, linux-kernel, akpm, netdev, Chris Ball,
Len Brown, Ohad Ben-Cohen, Linus Walleij, Philip Rakity,
David S. Miller, Lucas De Marchi, Paul E. McKenney, Josh Triplett,
linux-mmc, linux-pm
In-Reply-To: <4E02C93A.7010601@redhat.com>
On Thu 2011-06-23 13:03:54, Cong Wang wrote:
> ??? 2011???06???23??? 03:49, Rafael J. Wysocki ??????:
> >>+#ifdef CONFIG_PM
> >>> +#include<linux/suspend.h>
> >>> +#endif
> >I don't think the #ifdef in necessary. Any dependencies on CONFIG_PM
> >(or CONFIG_SUSPEND etc.) should be taken care of inside of suspend.h.
> >This file should be fixed if they aren't.
> >
>
> Ok, please check the updated version below.
>
> Thanks.
>
> Author: Amerigo Wang <amwang@redhat.com>
>
> pm: move pm notifiers into suspend.h
>
> Signed-off-by: WANG Cong <amwang@redhat.com>
ACK.
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
^ permalink raw reply
* Re: [net-2.6 PATCH 2/3] qlge:Fix printk priority so chip fatal errors are always reported.
From: Ron Mercer @ 2011-06-23 18:43 UTC (permalink / raw)
To: Joe Perches; +Cc: David Miller, netdev, Jitendra Kalsaria, Ameen Rahman
In-Reply-To: <1308855049.6688.19.camel@Joe-Laptop>
On Thu, Jun 23, 2011 at 11:50:49AM -0700, Joe Perches wrote:
> On Thu, 2011-06-23 at 10:52 -0700, Ron Mercer wrote:
> > From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
> > Precedence of the printk should be at higher level so chip
> > fatal errors are always reported.
>
> You probably want to use netdev_err then, not a masked
> netif_err when it is optionally not reported.
>
Thanks. We will respin these after waiting a bit for more comments.
^ permalink raw reply
* Re: [RFT PATCH 7/9] ethtool: prepare for larger netdev_features_t type
From: Ben Hutchings @ 2011-06-23 18:55 UTC (permalink / raw)
To: Mahesh Bandewar; +Cc: Michał Mirosław, netdev, David S. Miller
In-Reply-To: <BANLkTikTquu8jr7U-8s=8kQcqT86Ji1MqnSKug+3zQdgsVKxKA@mail.gmail.com>
On Thu, 2011-06-23 at 11:21 -0700, Mahesh Bandewar wrote:
> On Thu, Jun 23, 2011 at 11:03 AM, Ben Hutchings
> <bhutchings@solarflare.com> wrote:
> > On Thu, 2011-06-23 at 10:50 -0700, Mahesh Bandewar wrote:
> >> On Mon, Jun 20, 2011 at 2:16 PM, Ben Hutchings
> >> <bhutchings@solarflare.com> wrote:
> >> >
> >> > On Mon, 2011-06-20 at 21:14 +0200, Michał Mirosław wrote:
> >> > [...]
> >> > > @@ -125,19 +131,26 @@ static int ethtool_set_features(struct net_device *dev, void __user *useraddr)
> >> > > if (copy_from_user(features, useraddr, sizeof(features)))
> >> > > return -EFAULT;
> >> > >
> >> > > - if (features[0].valid & ~NETIF_F_ETHTOOL_BITS)
> >> > > + /* I wonder if the compiler will be smart enough to loop-unroll
> >> > > + * and optimize this... (no worries if not) --mq */
> >> > > + for (i = ETHTOOL_DEV_FEATURE_WORDS; i-- > 0; ) {
> >> > > + valid = (valid << 32)|features[i].valid;
> >> > > + wanted = (wanted << 32)|features[i].requested;
> >> > > + }
> >> > [...]
> >> >
> >> > I don't know (or care) about optimisation of this, but I would expect
> >> > gcc to complain about shifting a 32-bit value by 32 bits. I suggest you
> >> > write this as:
> >> >
> >> > for (i = 0; i < ETHTOOL_DEV_FEATURE_WORDS; ++i) {
> >> > valid |= (netdev_features_t)features[i].valid << 32 *i;
> >> > wanted |= (netdev_features_t)features[i].requested << 32 *i;
> >>
> >> It's a valid point but this type of typecast or similar usage would
> >> imply that netdev_feature_t is an int of XXX bits. That's not opaque
> >> and would hinder the way you can abstract the feature type.
> >
> > Yes, ethtool_{get,set}_features() will have to be changed if and when
> > the representation of netdev_features_t is changed significantly. I
> > don't think there's any way of avoiding that and I don't think it really
> > matters.
> >
> Well, if you have a conversion routine that converts (whatever the)
> netdev_type_t type is to the ethtool representation (array of u32 for
> example). So the changes would have to be done in that conversion
> routine only and not get/set_features() ethtool methods as such.
These are precisely those conversion routines, because there is no other
place that needs to deal with the ethtool representation...
Ben.
--
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* Re: [net-2.6 PATCH 2/3] qlge:Fix printk priority so chip fatal errors are always reported.
From: Joe Perches @ 2011-06-23 18:50 UTC (permalink / raw)
To: Ron Mercer; +Cc: davem, netdev, jitendra.kalsaria, ameen.rahman
In-Reply-To: <1308851544-25719-2-git-send-email-ron.mercer@qlogic.com>
On Thu, 2011-06-23 at 10:52 -0700, Ron Mercer wrote:
> From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
> Precedence of the printk should be at higher level so chip
> fatal errors are always reported.
You probably want to use netdev_err then, not a masked
netif_err when it is optionally not reported.
> diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
[]
> @@ -2170,7 +2170,7 @@ static void ql_process_chip_ae_intr(struct ql_adapter *qdev,
> return;
>
> case CAM_LOOKUP_ERR_EVENT:
> - netif_err(qdev, link, qdev->ndev,
> + netif_err(qdev, drv, qdev->ndev,
> "Multiple CAM hits lookup occurred.\n");
netdev_err(qdev->ndev, "Multiple CAM hits lookup occurred\n");
> @@ -2178,13 +2178,13 @@ static void ql_process_chip_ae_intr(struct ql_adapter *qdev,
> return;
>
> case SOFT_ECC_ERROR_EVENT:
> - netif_err(qdev, rx_err, qdev->ndev,
> + netif_err(qdev, drv, qdev->ndev,
> "Soft ECC error detected.\n");
netdev_err(qdev->ndev, "Soft ECC error detected\n");
etc...
^ permalink raw reply
* Re: [PATCH 1/3] serial/imx: add device tree support
From: Shawn Guo @ 2011-06-23 18:38 UTC (permalink / raw)
To: Grant Likely
Cc: patches, netdev, devicetree-discuss, Jason Liu, linux-kernel,
Jeremy Kerr, Sascha Hauer, linux-arm-kernel, David Gibson
In-Reply-To: <BANLkTim4vunTm1176MRw3pqRZnunu4=9jg@mail.gmail.com>
On Tue, Jun 21, 2011 at 01:13:50PM -0600, Grant Likely wrote:
[...]
> >
> > /**
> > + * of_get_device_index - Get device index by looking up "aliases" node
> > + * @np: Pointer to device node that asks for device index
> > + * @name: The device alias without index number
> > + *
> > + * Returns the device index if find it, else returns -ENODEV.
> > + */
> > +int of_get_device_index(struct device_node *np, const char *alias)
> > +{
> > + struct device_node *aliases = of_find_node_by_name(NULL, "aliases");
> > + struct property *prop;
> > + char name[32];
> > + int index = 0;
> > +
> > + if (!aliases)
> > + return -ENODEV;
> > +
> > + while (1) {
> > + snprintf(name, sizeof(name), "%s%d", alias, index);
> > + prop = of_find_property(aliases, name, NULL);
> > + if (!prop)
> > + return -ENODEV;
> > + if (np == of_find_node_by_path(prop->value))
> > + break;
> > + index++;
> > + }
>
> Rather than parsing the alias strings everytime, it would probably be
> better to preprocess all the properties in the aliases node and create
> a lookup table of alias->node references that can be walked quickly
> and trivially.
>
> Also, when obtaining an enumeration for a device, you'll need to be
> careful about what number gets returned. If the node doesn't match a
> given alias, but aliases do exist for other devices of like type, then
> you need to be careful not to assign a number already assigned to
> another device via an alias (this of course assumes the driver
> supports dynamics enumeration, which many drivers will). It would be
>
Grant, please take a look at the second shot below. Please let me
know what you think.
diff --git a/arch/arm/boot/dts/imx51-babbage.dts b/arch/arm/boot/dts/imx51-babbage.dts
index 7976932..f4a5c3c 100644
--- a/arch/arm/boot/dts/imx51-babbage.dts
+++ b/arch/arm/boot/dts/imx51-babbage.dts
@@ -18,6 +18,12 @@
compatible = "fsl,imx51-babbage", "fsl,imx51";
interrupt-parent = <&tzic>;
+ aliases {
+ serial0 = &uart0;
+ serial1 = &uart1;
+ serial2 = &uart2;
+ };
+
chosen {
bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait";
};
@@ -47,29 +53,29 @@
reg = <0x70000000 0x40000>;
ranges;
- uart@7000c000 {
- compatible = "fsl,imx51-uart", "fsl,imx-uart";
+ uart2: uart@7000c000 {
+ compatible = "fsl,imx51-uart", "fsl,imx21-uart";
reg = <0x7000c000 0x4000>;
interrupts = <33>;
id = <3>;
fsl,has-rts-cts;
};
};
- uart@73fbc000 {
- compatible = "fsl,imx51-uart", "fsl,imx-uart";
+ uart0: uart@73fbc000 {
+ compatible = "fsl,imx51-uart", "fsl,imx21-uart";
reg = <0x73fbc000 0x4000>;
interrupts = <31>;
id = <1>;
fsl,has-rts-cts;
};
- uart@73fc0000 {
- compatible = "fsl,imx51-uart", "fsl,imx-uart";
+ uart1: uart@73fc0000 {
+ compatible = "fsl,imx51-uart", "fsl,imx21-uart";
reg = <0x73fc0000 0x4000>;
interrupts = <32>;
id = <2>;
fsl,has-rts-cts;
};
};
diff --git a/arch/arm/mach-mx5/imx51-dt.c b/arch/arm/mach-mx5/imx51-dt.c
index 8bfdb91..e6c7298 100644
--- a/arch/arm/mach-mx5/imx51-dt.c
+++ b/arch/arm/mach-mx5/imx51-dt.c
@@ -40,6 +40,8 @@ static const struct of_device_id tzic_of_match[] __initconst = {
static void __init imx51_dt_init(void)
{
+ of_scan_aliases();
+
irq_domain_generate_simple(tzic_of_match, MX51_TZIC_BASE_ADDR, 0);
of_platform_populate(NULL, of_default_bus_match_table,
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 632ebae..90349a2 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -17,12 +17,27 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
+#include <linux/ctype.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/spinlock.h>
#include <linux/slab.h>
#include <linux/proc_fs.h>
+struct alias_devname {
+ char devname[32];
+ struct list_head link;
+ struct list_head head;
+};
+
+struct alias_devid {
+ int devid;
+ struct device_node *node;
+ struct list_head link;
+};
+
+static LIST_HEAD(aliases_lookup);
+
struct device_node *allnodes;
struct device_node *of_chosen;
@@ -922,3 +937,170 @@ out_unlock:
}
#endif /* defined(CONFIG_OF_DYNAMIC) */
+/*
+ * get_alias_dev_name_id - Get device name and id from alias name
+ *
+ * an: The alias name passed in
+ * dn: The pointer used to return device name
+ *
+ * Returns device id which should be the number at the end of alias
+ * name, otherwise returns -1.
+ */
+static int get_alias_name_id(char *an, char *dn)
+{
+ int len = strlen(an);
+ char *end = an + len;
+
+ while (isdigit(*--end))
+ len--;
+
+ end++;
+ strncpy(dn, an, len);
+ dn[len] = '\0';
+
+ return strlen(end) ? simple_strtol(end, NULL, 10) : -1;
+}
+
+/*
+ * get_an_available_devid - Get an available devid for the given devname
+ *
+ * adn: The pointer to the given alias_devname
+ *
+ * Returns the available devid
+ */
+static int get_an_available_devid(struct alias_devname *adn)
+{
+ int devid = 0;
+ struct alias_devid *adi;
+
+ while (1) {
+ bool used = false;
+ list_for_each_entry(adi, &adn->head, link) {
+ if (adi->devid == devid) {
+ used = true;
+ break;
+ }
+ }
+
+ if (!used)
+ break;
+
+ devid++;
+ }
+
+ return devid;
+}
+
+/*
+ * of_scan_aliases - Scan all properties of aliases node and populate the
+ * global lookup table with the device name and id info
+ *
+ * Returns the number of aliases properties found, or error code in error case.
+ */
+int of_scan_aliases(void)
+{
+ struct device_node *aliases = of_find_node_by_name(NULL, "aliases");
+ struct property *pp;
+ struct alias_devname *adn;
+ struct alias_devid *adi;
+ int ret = 0;
+
+ if (!aliases) {
+ ret = -ENODEV;
+ goto out;
+ }
+
+ for (pp = aliases->properties; pp != NULL; pp = pp->next) {
+ bool found = false;
+ char devname[32];
+ int devid = get_alias_name_id(pp->name, devname);
+
+ /* We do not want to proceed this sentinel one */
+ if (!strcmp(pp->name, "name") && !strcmp(pp->value, "aliases"))
+ break;
+
+ /* See if the devname already exists */
+ list_for_each_entry(adn, &aliases_lookup, link) {
+ if (!strcmp(adn->devname, devname)) {
+ found = true;
+ break;
+ }
+ }
+
+ /*
+ * Create the entry for this devname if not found,
+ * and add it into aliases_lookup
+ */
+ if (!found) {
+ adn = kzalloc(sizeof(*adn), GFP_KERNEL);
+ if (!adn) {
+ ret = -ENOMEM;
+ goto out;
+ }
+
+ strcpy(adn->devname, devname);
+ INIT_LIST_HEAD(&adn->head);
+ list_add_tail(&adn->link, &aliases_lookup);
+ }
+
+ /*
+ * Save the devid as one entry of the list for this
+ * specified devname
+ */
+ adi = kzalloc(sizeof(*adi), GFP_KERNEL);
+ if (!adi) {
+ ret = -ENOMEM;
+ goto out;
+ }
+
+ adi->devid = (devid == -1) ? get_an_available_devid(adn) :
+ devid;
+ adi->node = of_find_node_by_path(pp->value);
+
+ list_add_tail(&adi->link, &adn->head);
+ ret++;
+ }
+
+out:
+ return ret;
+}
+
+/**
+ * of_get_device_id - Get device id by looking up "aliases" node
+ * @np: Pointer to device node that asks for device id
+ * @name: The device alias name
+ *
+ * Returns the device id if find it, else returns -ENODEV.
+ */
+int of_get_device_id(struct device_node *np, const char *name)
+{
+ struct alias_devname *adn;
+ struct alias_devid *adi;
+ bool found = false;
+ int ret;
+
+ list_for_each_entry(adn, &aliases_lookup, link) {
+ if (!strcmp(adn->devname, name)) {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
+ ret = -ENODEV;
+ goto out;
+ }
+
+ found = false;
+ list_for_each_entry(adi, &adn->head, link) {
+ if (np == adi->node) {
+ found = true;
+ break;
+ }
+ }
+
+ ret = found ? adi->devid : -ENODEV;
+out:
+ return ret;
+}
+EXPORT_SYMBOL(of_get_device_id);
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index 2769353..062639e 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -1225,43 +1265,33 @@ static int serial_imx_resume(struct platform_device *dev)
return 0;
}
static int serial_imx_probe_dt(struct imx_port *sport,
struct platform_device *pdev)
{
struct device_node *node = pdev->dev.of_node;
- const __be32 *line;
+ int line;
if (!node)
return -ENODEV;
- line = of_get_property(node, "id", NULL);
- if (!line)
+ line = of_get_device_id(node, "serial");
+ if (IS_ERR_VALUE(line))
return -ENODEV;
- sport->port.line = be32_to_cpup(line) - 1;
+ sport->port.line = line;
diff --git a/include/linux/of.h b/include/linux/of.h
index bfc0ed1..270c671 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -213,6 +213,9 @@ extern int of_parse_phandles_with_args(struct device_node *np,
const char *list_name, const char *cells_name, int index,
struct device_node **out_node, const void **out_args);
+extern int of_scan_aliases(void);
+extern int of_get_device_id(struct device_node *np, const char *name);
+
extern int of_machine_is_compatible(const char *compat);
extern int prom_add_property(struct device_node* np, struct property* prop);
--
Regards,
Shawn
^ permalink raw reply related
* Re: [RFT PATCH 7/9] ethtool: prepare for larger netdev_features_t type
From: Mahesh Bandewar @ 2011-06-23 18:21 UTC (permalink / raw)
To: Ben Hutchings; +Cc: Michał Mirosław, netdev, David S. Miller
In-Reply-To: <1308852228.2712.5.camel@bwh-desktop>
On Thu, Jun 23, 2011 at 11:03 AM, Ben Hutchings
<bhutchings@solarflare.com> wrote:
> On Thu, 2011-06-23 at 10:50 -0700, Mahesh Bandewar wrote:
>> On Mon, Jun 20, 2011 at 2:16 PM, Ben Hutchings
>> <bhutchings@solarflare.com> wrote:
>> >
>> > On Mon, 2011-06-20 at 21:14 +0200, Michał Mirosław wrote:
>> > [...]
>> > > @@ -125,19 +131,26 @@ static int ethtool_set_features(struct net_device *dev, void __user *useraddr)
>> > > if (copy_from_user(features, useraddr, sizeof(features)))
>> > > return -EFAULT;
>> > >
>> > > - if (features[0].valid & ~NETIF_F_ETHTOOL_BITS)
>> > > + /* I wonder if the compiler will be smart enough to loop-unroll
>> > > + * and optimize this... (no worries if not) --mq */
>> > > + for (i = ETHTOOL_DEV_FEATURE_WORDS; i-- > 0; ) {
>> > > + valid = (valid << 32)|features[i].valid;
>> > > + wanted = (wanted << 32)|features[i].requested;
>> > > + }
>> > [...]
>> >
>> > I don't know (or care) about optimisation of this, but I would expect
>> > gcc to complain about shifting a 32-bit value by 32 bits. I suggest you
>> > write this as:
>> >
>> > for (i = 0; i < ETHTOOL_DEV_FEATURE_WORDS; ++i) {
>> > valid |= (netdev_features_t)features[i].valid << 32 *i;
>> > wanted |= (netdev_features_t)features[i].requested << 32 *i;
>>
>> It's a valid point but this type of typecast or similar usage would
>> imply that netdev_feature_t is an int of XXX bits. That's not opaque
>> and would hinder the way you can abstract the feature type.
>
> Yes, ethtool_{get,set}_features() will have to be changed if and when
> the representation of netdev_features_t is changed significantly. I
> don't think there's any way of avoiding that and I don't think it really
> matters.
>
Well, if you have a conversion routine that converts (whatever the)
netdev_type_t type is to the ethtool representation (array of u32 for
example). So the changes would have to be done in that conversion
routine only and not get/set_features() ethtool methods as such.
--mahesh..
> Ben.
>
> --
> Ben Hutchings, Senior Software Engineer, Solarflare
> Not speaking for my employer; that's the marketing department's job.
> They asked us to note that Solarflare product names are trademarked.
>
>
^ permalink raw reply
* Re: linux-next: Tree for June 23 (net)
From: Mike Frysinger @ 2011-06-23 18:13 UTC (permalink / raw)
To: Randy Dunlap; +Cc: Stephen Rothwell, netdev, linux-next, LKML
In-Reply-To: <20110623091429.2d51b0f0.randy.dunlap@oracle.com>
On Thu, Jun 23, 2011 at 12:14, Randy Dunlap wrote:
> On Thu, 23 Jun 2011 15:54:31 +1000 Stephen Rothwell wrote:
>> Hi all,
>>
>> Changes since 20110622:
>>
>> The powerpc allyesconfig (and probably others) is still broken because we
>> now build the staging drivers and because of a commit in the net tree.
>> The breakage in Linus' tree is fixed by one of Andrew's patches above.
>>
>> The net tree gained 2 build failures that I have left (see above).
>
>
> When CONFIG_INET is not enabled:
>
> net/core/dev.c:2535: error: implicit declaration of function 'ip_is_fragment'
i see this on two Blackfin defconfigs like CM-BF533
-mike
^ permalink raw reply
* [net-2.6 PATCH 1/3] qlge:Fix crash caused by mailbox execution on wedged chip.
From: Ron Mercer @ 2011-06-23 17:52 UTC (permalink / raw)
To: davem; +Cc: netdev, ron.mercer, jitendra.kalsaria, ameen.rahman
From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
When we are in a recover process from a chip fatal error,
driver should skip over execution of mailbox commands during
resetting chip.
Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
drivers/net/qlge/qlge.h | 1 +
drivers/net/qlge/qlge_main.c | 20 +++++++++++++++-----
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/drivers/net/qlge/qlge.h b/drivers/net/qlge/qlge.h
index d328507..b2c8612 100644
--- a/drivers/net/qlge/qlge.h
+++ b/drivers/net/qlge/qlge.h
@@ -1996,6 +1996,7 @@ enum {
QL_LB_LINK_UP = 10,
QL_FRC_COREDUMP = 11,
QL_EEH_FATAL = 12,
+ QL_ASIC_RECOVERY = 14, /* We are in ascic recovery. */
};
/* link_status bit definitions */
diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index 930ae45..4fbefcf 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -2152,6 +2152,10 @@ void ql_queue_asic_error(struct ql_adapter *qdev)
* thread
*/
clear_bit(QL_ADAPTER_UP, &qdev->flags);
+ /* Set asic recovery bit to indicate reset process that we are
+ * in fatal error recovery process rather than normal close
+ */
+ set_bit(QL_ASIC_RECOVERY, &qdev->flags);
queue_delayed_work(qdev->workqueue, &qdev->asic_reset_work, 0);
}
@@ -3818,11 +3822,17 @@ static int ql_adapter_reset(struct ql_adapter *qdev)
end_jiffies = jiffies +
max((unsigned long)1, usecs_to_jiffies(30));
- /* Stop management traffic. */
- ql_mb_set_mgmnt_traffic_ctl(qdev, MB_SET_MPI_TFK_STOP);
+ /* Check if bit is set then skip the mailbox command and
+ * clear the bit, else we are in normal reset process.
+ */
+ if (!test_bit(QL_ASIC_RECOVERY, &qdev->flags)) {
+ /* Stop management traffic. */
+ ql_mb_set_mgmnt_traffic_ctl(qdev, MB_SET_MPI_TFK_STOP);
- /* Wait for the NIC and MGMNT FIFOs to empty. */
- ql_wait_fifo_empty(qdev);
+ /* Wait for the NIC and MGMNT FIFOs to empty. */
+ ql_wait_fifo_empty(qdev);
+ } else
+ clear_bit(QL_ASIC_RECOVERY, &qdev->flags);
ql_write32(qdev, RST_FO, (RST_FO_FR << 16) | RST_FO_FR);
--
1.6.0.2
^ permalink raw reply related
* [net-2.6 PATCH 2/3] qlge:Fix printk priority so chip fatal errors are always reported.
From: Ron Mercer @ 2011-06-23 17:52 UTC (permalink / raw)
To: davem; +Cc: netdev, ron.mercer, jitendra.kalsaria, ameen.rahman
In-Reply-To: <1308851544-25719-1-git-send-email-ron.mercer@qlogic.com>
From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Precedence of the printk should be at higher level so chip
fatal errors are always reported.
Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
drivers/net/qlge/qlge_main.c | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index 4fbefcf..66274ab 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -2170,7 +2170,7 @@ static void ql_process_chip_ae_intr(struct ql_adapter *qdev,
return;
case CAM_LOOKUP_ERR_EVENT:
- netif_err(qdev, link, qdev->ndev,
+ netif_err(qdev, drv, qdev->ndev,
"Multiple CAM hits lookup occurred.\n");
netif_err(qdev, drv, qdev->ndev,
"This event shouldn't occur.\n");
@@ -2178,13 +2178,13 @@ static void ql_process_chip_ae_intr(struct ql_adapter *qdev,
return;
case SOFT_ECC_ERROR_EVENT:
- netif_err(qdev, rx_err, qdev->ndev,
+ netif_err(qdev, drv, qdev->ndev,
"Soft ECC error detected.\n");
ql_queue_asic_error(qdev);
break;
case PCI_ERR_ANON_BUF_RD:
- netif_err(qdev, rx_err, qdev->ndev,
+ netif_err(qdev, drv, qdev->ndev,
"PCI error occurred when reading anonymous buffers from rx_ring %d.\n",
ib_ae_rsp->q_id);
ql_queue_asic_error(qdev);
@@ -2441,10 +2441,10 @@ static irqreturn_t qlge_isr(int irq, void *dev_id)
*/
if (var & STS_FE) {
ql_queue_asic_error(qdev);
- netif_err(qdev, intr, qdev->ndev,
+ netif_err(qdev, drv, qdev->ndev,
"Got fatal error, STS = %x.\n", var);
var = ql_read32(qdev, ERR_STS);
- netif_err(qdev, intr, qdev->ndev,
+ netif_err(qdev, drv, qdev->ndev,
"Resetting chip. Error Status Register = 0x%x\n", var);
return IRQ_HANDLED;
}
--
1.6.0.2
^ permalink raw reply related
* [net-2.6 PATCH 3/3] qlge:Version change to v1.00.00.29
From: Ron Mercer @ 2011-06-23 17:52 UTC (permalink / raw)
To: davem; +Cc: netdev, ron.mercer, jitendra.kalsaria, ameen.rahman
In-Reply-To: <1308851544-25719-1-git-send-email-ron.mercer@qlogic.com>
From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
drivers/net/qlge/qlge.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/qlge/qlge.h b/drivers/net/qlge/qlge.h
index b2c8612..ca306fd 100644
--- a/drivers/net/qlge/qlge.h
+++ b/drivers/net/qlge/qlge.h
@@ -16,7 +16,7 @@
*/
#define DRV_NAME "qlge"
#define DRV_STRING "QLogic 10 Gigabit PCI-E Ethernet Driver "
-#define DRV_VERSION "v1.00.00.27.00.00-01"
+#define DRV_VERSION "v1.00.00.29.00.00-01"
#define WQ_ADDR_ALIGN 0x3 /* 4 byte alignment */
--
1.6.0.2
^ permalink raw reply related
* Re: [PATCH 0/8] 8390: Neatening
From: Geert Uytterhoeven @ 2011-06-23 18:04 UTC (permalink / raw)
To: Joe Perches; +Cc: netdev, linux-kernel
In-Reply-To: <cover.1308810463.git.joe@perches.com>
On Thu, Jun 23, 2011 at 08:38, Joe Perches <joe@perches.com> wrote:
> Some updates requested by Geert Uytterhoeven
>
> Joe Perches (8):
> ariadne: Update style, neaten, restructure to eliminate prototypes
> a2065: Use pr_fmt, pr_<level> and netdev_<level>
> lib8390: Use pr_<level> and netdev_<level>
> lib8390: Indent braces appropriately
> lib8390: Normalize source code spacing
> lib8390: Convert include <asm to include <linux
> lib8390: Remove unnecessary extern
> zorro8390: Restructure and eliminate prototypes
Looks good. I had to make some minor adjustments to make it apply to my
current tree, though.
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Thanks!
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply
* Re: [RFT PATCH 7/9] ethtool: prepare for larger netdev_features_t type
From: Ben Hutchings @ 2011-06-23 18:03 UTC (permalink / raw)
To: Mahesh Bandewar; +Cc: Michał Mirosław, netdev, David S. Miller
In-Reply-To: <BANLkTi=RB1MSR=c6GhXr4bsrPtFJVZnaZ8ZLCN=o339S_BE7iw@mail.gmail.com>
On Thu, 2011-06-23 at 10:50 -0700, Mahesh Bandewar wrote:
> On Mon, Jun 20, 2011 at 2:16 PM, Ben Hutchings
> <bhutchings@solarflare.com> wrote:
> >
> > On Mon, 2011-06-20 at 21:14 +0200, Michał Mirosław wrote:
> > [...]
> > > @@ -125,19 +131,26 @@ static int ethtool_set_features(struct net_device *dev, void __user *useraddr)
> > > if (copy_from_user(features, useraddr, sizeof(features)))
> > > return -EFAULT;
> > >
> > > - if (features[0].valid & ~NETIF_F_ETHTOOL_BITS)
> > > + /* I wonder if the compiler will be smart enough to loop-unroll
> > > + * and optimize this... (no worries if not) --mq */
> > > + for (i = ETHTOOL_DEV_FEATURE_WORDS; i-- > 0; ) {
> > > + valid = (valid << 32)|features[i].valid;
> > > + wanted = (wanted << 32)|features[i].requested;
> > > + }
> > [...]
> >
> > I don't know (or care) about optimisation of this, but I would expect
> > gcc to complain about shifting a 32-bit value by 32 bits. I suggest you
> > write this as:
> >
> > for (i = 0; i < ETHTOOL_DEV_FEATURE_WORDS; ++i) {
> > valid |= (netdev_features_t)features[i].valid << 32 *i;
> > wanted |= (netdev_features_t)features[i].requested << 32 *i;
>
> It's a valid point but this type of typecast or similar usage would
> imply that netdev_feature_t is an int of XXX bits. That's not opaque
> and would hinder the way you can abstract the feature type.
Yes, ethtool_{get,set}_features() will have to be changed if and when
the representation of netdev_features_t is changed significantly. I
don't think there's any way of avoiding that and I don't think it really
matters.
Ben.
--
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* Re: [RFT PATCH 7/9] ethtool: prepare for larger netdev_features_t type
From: Mahesh Bandewar @ 2011-06-23 17:50 UTC (permalink / raw)
To: Ben Hutchings, Michał Mirosław; +Cc: netdev, David S. Miller
In-Reply-To: <1308604618.2701.189.camel@bwh-desktop>
On Mon, Jun 20, 2011 at 2:16 PM, Ben Hutchings
<bhutchings@solarflare.com> wrote:
>
> On Mon, 2011-06-20 at 21:14 +0200, Michał Mirosław wrote:
> [...]
> > @@ -125,19 +131,26 @@ static int ethtool_set_features(struct net_device *dev, void __user *useraddr)
> > if (copy_from_user(features, useraddr, sizeof(features)))
> > return -EFAULT;
> >
> > - if (features[0].valid & ~NETIF_F_ETHTOOL_BITS)
> > + /* I wonder if the compiler will be smart enough to loop-unroll
> > + * and optimize this... (no worries if not) --mq */
> > + for (i = ETHTOOL_DEV_FEATURE_WORDS; i-- > 0; ) {
> > + valid = (valid << 32)|features[i].valid;
> > + wanted = (wanted << 32)|features[i].requested;
> > + }
> [...]
>
> I don't know (or care) about optimisation of this, but I would expect
> gcc to complain about shifting a 32-bit value by 32 bits. I suggest you
> write this as:
>
> for (i = 0; i < ETHTOOL_DEV_FEATURE_WORDS; ++i) {
> valid |= (netdev_features_t)features[i].valid << 32 *i;
> wanted |= (netdev_features_t)features[i].requested << 32 *i;
It's a valid point but this type of typecast or similar usage would
imply that netdev_feature_t is an int of XXX bits. That's not opaque
and would hinder the way you can abstract the feature type.
--mahesh..
>
> }
>
> Ben.
>
> --
> Ben Hutchings, Senior Software Engineer, Solarflare
> Not speaking for my employer; that's the marketing department's job.
> They asked us to note that Solarflare product names are trademarked.
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [RFT PATCH 0/9] Cleanup and extension of netdev features
From: Mahesh Bandewar @ 2011-06-23 17:42 UTC (permalink / raw)
To: Michał Mirosław; +Cc: netdev, David S. Miller, Ben Hutchings
In-Reply-To: <cover.1308596962.git.mirq-linux@rere.qmqm.pl>
On Mon, Jun 20, 2011 at 12:14 PM, Michał Mirosław
<mirq-linux@rere.qmqm.pl> wrote:
>
> This is a preview of the cleanups pending after getting rid of old
> ethtool ops from remaining drivers.
>
> Patches inside:
> 1. (placeholder for Intel patches)
> 2. removal of old ethtool ops
> (most further patches depend on this one)
> 3. break association of ETH_FLAG_* with netdev features
> this will allow to change the representation and access pattern
> of the feature sets if later needed; as a bonus, the features
> can be (almost) freely rearranged
> 4. introducing netdev_features_t
> use new type wherever features are passed around (this needed
> new include - otherwise linux/skbuff.h would need linux/netdevice.h)
> 5. cleanup of feature bits
> 6. cleanup of feature name table
> (depends on #5)
> 7. prepare ethtool [GS]FEATURES for larger netdev_features_t
> 8. tadaaa: 64 bits for features
> 9. a lone cleanup patch for NOCACHE_COPY feature
>
> Bear in mind, that I only compile tested the whole series (x86 allyesconfig).
> I'll do per-patch builds after all needed patches are in net-next.
>
> Note about netdev_features_t: I don't like the idea of converting it to
> bitmap type and building wrappers around, so I won't even try to
> implement it. Nevertheless, this series will make the conversion easier
> if someone ever wants to go that way.
>
The idea is to make feature type (by defining netdev_feature_t)
opaque and should handle XX bit integer as well as bitmap types. So
netdev_feature_t typedef-ed to u64 is OK but changes that we make
should be able to handle bitmaps as well to minimize future changes.
--mahesh..
> Best Regards,
> Michał Mirosław
>
> ---
>
> Michał Mirosław (9):
> [NOT SENT] Intel net drivers: convert to ndo_fix_features
> net: remove legacy ethtool ops
> net: ethtool: break association of ETH_FLAG_* with NETIF_F_*
> net: introduce and use netdev_features_t for device features sets
> net: Define enum for net device features.
> net: ethtool: use C99 array initialization for feature-names table
> ethtool: prepare for larger netdev_features_t type
> net: extend netdev_features_t to 64 bits
> net: move NOCACHE_COPY checks to netdev_fix_features()
>
> drivers/net/8139cp.c | 2 +-
> drivers/net/bnx2.c | 6 +-
> drivers/net/bnx2x/bnx2x_cmn.c | 5 +-
> drivers/net/bnx2x/bnx2x_cmn.h | 5 +-
> drivers/net/bonding/bond_main.c | 9 +-
> drivers/net/cxgb4/cxgb4_main.c | 12 +-
> drivers/net/dm9000.c | 3 +-
> drivers/net/e1000/e1000_ethtool.c | 69 ----
> drivers/net/e1000/e1000_main.c | 31 ++-
> drivers/net/e1000e/ethtool.c | 88 -----
> drivers/net/e1000e/netdev.c | 35 ++-
> drivers/net/forcedeth.c | 7 +-
> drivers/net/gianfar.h | 2 +-
> drivers/net/gianfar_ethtool.c | 4 +-
> drivers/net/ibmveth.c | 6 +-
> drivers/net/igb/igb_ethtool.c | 67 ----
> drivers/net/igb/igb_main.c | 33 ++-
> drivers/net/igbvf/ethtool.c | 57 ----
> drivers/net/igbvf/netdev.c | 25 ++-
> drivers/net/ixgb/ixgb.h | 2 +
> drivers/net/ixgb/ixgb_ethtool.c | 98 +------
> drivers/net/ixgb/ixgb_main.c | 44 +++-
> drivers/net/ixgbe/ixgbe_ethtool.c | 183 ++++--------
> drivers/net/ixgbe/ixgbe_main.c | 42 ++-
> drivers/net/ixgbevf/ethtool.c | 46 ---
> drivers/net/ixgbevf/ixgbevf_main.c | 26 ++-
> drivers/net/jme.c | 8 +-
> drivers/net/ksz884x.c | 3 +-
> drivers/net/mv643xx_eth.c | 2 +-
> drivers/net/myri10ge/myri10ge.c | 2 +-
> drivers/net/netxen/netxen_nic_main.c | 6 +-
> drivers/net/pch_gbe/pch_gbe_main.c | 5 +-
> drivers/net/qlcnic/qlcnic.h | 5 +-
> drivers/net/qlcnic/qlcnic_hw.c | 9 +-
> drivers/net/qlcnic/qlcnic_main.c | 2 +-
> drivers/net/r8169.c | 6 +-
> drivers/net/s2io.c | 4 +-
> drivers/net/sfc/efx.c | 2 +-
> drivers/net/sky2.c | 5 +-
> drivers/net/tg3.c | 7 +-
> drivers/net/usb/smsc75xx.c | 3 +-
> drivers/net/usb/smsc95xx.c | 3 +-
> drivers/net/vmxnet3/vmxnet3_ethtool.c | 4 +-
> drivers/net/vmxnet3/vmxnet3_int.h | 2 +-
> drivers/net/vxge/vxge-main.c | 9 +-
> drivers/net/xen-netfront.c | 8 +-
> drivers/s390/net/qeth_l3_main.c | 6 +-
> include/linux/ethtool.h | 53 ---
> include/linux/netdev_features.h | 152 +++++++++
> include/linux/netdevice.h | 141 ++-------
> include/linux/skbuff.h | 4 +-
> include/net/protocol.h | 4 +-
> include/net/tcp.h | 3 +-
> include/net/udp.h | 3 +-
> net/8021q/vlan_dev.c | 5 +-
> net/bridge/br_if.c | 5 +-
> net/core/dev.c | 71 ++--
> net/core/ethtool.c | 563 ++++++--------------------------
> net/core/net-sysfs.c | 3 +-
> net/core/skbuff.c | 2 +-
> net/ipv4/af_inet.c | 3 +-
> net/ipv4/tcp.c | 2 +-
> net/ipv4/udp.c | 3 +-
> net/ipv6/af_inet6.c | 3 +-
> net/ipv6/udp.c | 2 +-
> 65 files changed, 683 insertions(+), 1347 deletions(-)
> create mode 100644 include/linux/netdev_features.h
>
> --
> 1.7.2.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* [PATCH 20/35] drivers/net changes for SMBIOS and System Firmware
From: Prarit Bhargava @ 2011-06-23 17:24 UTC (permalink / raw)
To: linux-kernel, netdev; +Cc: Prarit Bhargava
drivers/net changes for SMBIOS and System Firmware
As part of the new SMBIOS and System Firmware code:
- Replace old dmi* structures and functions with new sysfw* and smbios*
structures and functions in individual drivers
- cleanup sysfw_id lookup tables
- cleanup of includes for dmi.h and mod_devicetable.h which were included in
some files that did not need them
Signed-off-by: Prarit Bhargava <prarit@redhat.com>
---
drivers/net/skge.c | 11 ++++++-----
drivers/net/via-rhine.c | 18 ++++++++++--------
drivers/net/wireless/wl1251/sdio.c | 1 -
3 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index f4be5c7..1200c53 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -43,7 +43,7 @@
#include <linux/seq_file.h>
#include <linux/mii.h>
#include <linux/slab.h>
-#include <linux/dmi.h>
+#include <linux/sysfw.h>
#include <linux/prefetch.h>
#include <asm/irq.h>
@@ -4089,12 +4089,13 @@ static struct pci_driver skge_driver = {
.driver.pm = SKGE_PM_OPS,
};
-static struct dmi_system_id skge_32bit_dma_boards[] = {
+static struct sysfw_id skge_32bit_dma_boards[] = {
{
.ident = "Gigabyte nForce boards",
.matches = {
- DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co"),
- DMI_MATCH(DMI_BOARD_NAME, "nForce"),
+ SYSFW_MATCH(SYSFW_BOARD_VENDOR,
+ "Gigabyte Technology Co"),
+ SYSFW_MATCH(SYSFW_BOARD_NAME, "nForce"),
},
},
{}
@@ -4102,7 +4103,7 @@ static struct dmi_system_id skge_32bit_dma_boards[] = {
static int __init skge_init_module(void)
{
- if (dmi_check_system(skge_32bit_dma_boards))
+ if (sysfw_callback(skge_32bit_dma_boards))
only_32bit_dma = 1;
skge_debug_init();
return pci_register_driver(&skge_driver);
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
index 7f23ab9..81725d5 100644
--- a/drivers/net/via-rhine.c
+++ b/drivers/net/via-rhine.c
@@ -110,7 +110,7 @@ static const int multicast_filter_limit = 32;
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/uaccess.h>
-#include <linux/dmi.h>
+#include <linux/sysfw.h>
/* These identify the driver base version and may not be removed. */
static const char version[] __devinitconst =
@@ -2294,22 +2294,24 @@ static struct pci_driver rhine_driver = {
.shutdown = rhine_shutdown,
};
-static struct dmi_system_id __initdata rhine_dmi_table[] = {
+static struct sysfw_id __initdata rhine_id_table[] = {
{
.ident = "EPIA-M",
.matches = {
- DMI_MATCH(DMI_BIOS_VENDOR, "Award Software International, Inc."),
- DMI_MATCH(DMI_BIOS_VERSION, "6.00 PG"),
+ SYSFW_MATCH(SYSFW_BIOS_VENDOR,
+ "Award Software International, Inc."),
+ SYSFW_MATCH(SYSFW_BIOS_VERSION, "6.00 PG"),
},
},
{
.ident = "KV7",
.matches = {
- DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies, LTD"),
- DMI_MATCH(DMI_BIOS_VERSION, "6.00 PG"),
+ SYSFW_MATCH(SYSFW_BIOS_VENDOR,
+ "Phoenix Technologies, LTD"),
+ SYSFW_MATCH(SYSFW_BIOS_VERSION, "6.00 PG"),
},
},
- { NULL }
+ {}
};
static int __init rhine_init(void)
@@ -2318,7 +2320,7 @@ static int __init rhine_init(void)
#ifdef MODULE
pr_info("%s\n", version);
#endif
- if (dmi_check_system(rhine_dmi_table)) {
+ if (sysfw_callback(rhine_id_table)) {
/* these BIOSes fail at PXE boot if chip is in D3 */
avoid_D3 = 1;
pr_warn("Broken BIOS detected, avoid_D3 enabled\n");
diff --git a/drivers/net/wireless/wl1251/sdio.c b/drivers/net/wireless/wl1251/sdio.c
index f51a024..68e36d7 100644
--- a/drivers/net/wireless/wl1251/sdio.c
+++ b/drivers/net/wireless/wl1251/sdio.c
@@ -20,7 +20,6 @@
* Copyright (C) 2009 Bob Copeland (me@bobcopeland.com)
*/
#include <linux/module.h>
-#include <linux/mod_devicetable.h>
#include <linux/mmc/sdio_func.h>
#include <linux/mmc/sdio_ids.h>
#include <linux/platform_device.h>
--
1.7.5.4
^ permalink raw reply related
* Re: linux-next: Tree for June 23 (net)
From: Randy Dunlap @ 2011-06-23 17:17 UTC (permalink / raw)
To: netdev; +Cc: Stephen Rothwell, linux-next, LKML
In-Reply-To: <20110623091429.2d51b0f0.randy.dunlap@oracle.com>
On Thu, 23 Jun 2011 09:14:29 -0700 Randy Dunlap wrote:
> On Thu, 23 Jun 2011 15:54:31 +1000 Stephen Rothwell wrote:
>
> > Hi all,
> >
> > Changes since 20110622:
> >
> > The powerpc allyesconfig (and probably others) is still broken because we
> > now build the staging drivers and because of a commit in the net tree.
> > The breakage in Linus' tree is fixed by one of Andrew's patches above.
> >
> > The net tree gained 2 build failures that I have left (see above).
>
>
> When CONFIG_INET is not enabled:
>
> net/core/dev.c:2535: error: implicit declaration of function 'ip_is_fragment'
same problem in more places:
net/sched/sch_choke.c:184: error: implicit declaration of function 'ip_is_fragment'
net/sched/cls_rsvp.h:170: error: implicit declaration of function 'ip_is_fragment'
net/sched/cls_flow.c:124: error: implicit declaration of function 'ip_is_fragment'
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
^ permalink raw reply
* Re: linux-next: Tree for June 23 (net)
From: Randy Dunlap @ 2011-06-23 16:14 UTC (permalink / raw)
To: Stephen Rothwell, netdev; +Cc: linux-next, LKML
In-Reply-To: <20110623155431.6bfe3b40.sfr@canb.auug.org.au>
On Thu, 23 Jun 2011 15:54:31 +1000 Stephen Rothwell wrote:
> Hi all,
>
> Changes since 20110622:
>
> The powerpc allyesconfig (and probably others) is still broken because we
> now build the staging drivers and because of a commit in the net tree.
> The breakage in Linus' tree is fixed by one of Andrew's patches above.
>
> The net tree gained 2 build failures that I have left (see above).
When CONFIG_INET is not enabled:
net/core/dev.c:2535: error: implicit declaration of function 'ip_is_fragment'
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
^ permalink raw reply
* Re: [PATCH 1/2] iwlwifi: use pci_dev->revision, again
From: Guy, Wey-Yi @ 2011-06-23 15:02 UTC (permalink / raw)
To: Sergei Shtylyov
Cc: netdev@vger.kernel.org, linville@tuxdriver.com,
linux-wireless@vger.kernel.org, ilw@linux.intel.com
In-Reply-To: <201106231841.40691.sshtylyov@ru.mvista.com>
On Thu, 2011-06-23 at 07:41 -0700, Sergei Shtylyov wrote:
> Commit ff938e43d39e926de74b32a3656c190f979ab642 (net: use pci_dev->revision,
> again) already converted this driver to using the 'revision' field of 'struct
> pci_dev' but commit c2974a1d18832a9fffb2eb389c3878f5c4ed92f1 (iwlagn: remove
> rev_id) later reverted that change for no reason. Now restore the change...
>
> Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
>
> ---
> The patch is against the recent Linus' tree.
>
> drivers/net/wireless/iwlwifi/iwl-agn.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> Index: linux-2.6/drivers/net/wireless/iwlwifi/iwl-agn.c
> ===================================================================
> --- linux-2.6.orig/drivers/net/wireless/iwlwifi/iwl-agn.c
> +++ linux-2.6/drivers/net/wireless/iwlwifi/iwl-agn.c
> @@ -3275,10 +3275,9 @@ struct ieee80211_ops iwlagn_hw_ops = {
>
> static u32 iwl_hw_detect(struct iwl_priv *priv)
> {
> - u8 rev_id;
> + IWL_DEBUG_INFO(priv, "HW Revision ID = 0x%X\n",
> + priv->pci_dev->revision);
>
> - pci_read_config_byte(priv->pci_dev, PCI_REVISION_ID, &rev_id);
> - IWL_DEBUG_INFO(priv, "HW Revision ID = 0x%X\n", rev_id);
> return iwl_read32(priv, CSR_HW_REV);
> }
>
hmm, I believe it is merge sequence issue, the IWL_DEBUG_INFO line has
benn remove all together in later patch. the information is being log in
the calling function, no need to log in "iwl_hw_detect"
Wey
^ permalink raw reply
* Re: [PATCH] ssb: use pci_dev->revision
From: Michael Büsch @ 2011-06-23 15:32 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: Sergei Shtylyov, netdev
In-Reply-To: <4E0357BF.7000408@mvista.com>
On Thu, 23 Jun 2011 19:11:59 +0400
Sergei Shtylyov <sshtylyov@mvista.com> wrote:
> Hello.
>
> Michael Büsch wrote:
>
> >> The bus scan code reads PCI revision ID from the PCI configuration register
> >> while it's already stored by PCI subsystem in the 'revision' field of 'struct
> >> pci_dev'...
>
> >> Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
>
> >> ---
> >> The patch is against the recent Linus' tree.
>
> >> There's another place where the revision ID register is read but as 16-bit
> >> entity (probably by mistake though), so I didn't convert it...
>
> > Where is that?
>
> drivers/ssb/pci.c, line 741.
Yes that probably is by mistake. Can you convert it as well, please?
^ permalink raw reply
* Re: unintended ipv4 broadcast policy change
From: Stephen Hemminger @ 2011-06-23 15:16 UTC (permalink / raw)
To: David Miller; +Cc: herbert, netdev
In-Reply-To: <20110622.163935.2248705300315908767.davem@davemloft.net>
On Wed, 22 Jun 2011 16:39:35 -0700 (PDT)
David Miller <davem@davemloft.net> wrote:
> But debian definitely still has this bug. On debian, as a result,
> every packet received gets parsed.
Are you saying the DHCP client ends up parsing every packet?
This doesn't appear to be true.
I checked and the dhclient spends its life waiting on select for DHCP port.
^ permalink raw reply
* Re: [PATCH] ssb: use pci_dev->revision
From: Sergei Shtylyov @ 2011-06-23 15:11 UTC (permalink / raw)
To: Michael Büsch; +Cc: Sergei Shtylyov, netdev
In-Reply-To: <20110623170908.1417f933@maggie>
Hello.
Michael Büsch wrote:
>> The bus scan code reads PCI revision ID from the PCI configuration register
>> while it's already stored by PCI subsystem in the 'revision' field of 'struct
>> pci_dev'...
>> Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
>> ---
>> The patch is against the recent Linus' tree.
>> There's another place where the revision ID register is read but as 16-bit
>> entity (probably by mistake though), so I didn't convert it...
> Where is that?
drivers/ssb/pci.c, line 741.
WBR, Sergei
^ permalink raw reply
* Re: [PATCH] ssb: use pci_dev->revision
From: Michael Büsch @ 2011-06-23 15:09 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: netdev
In-Reply-To: <201106231849.53030.sshtylyov@ru.mvista.com>
On Thu, 23 Jun 2011 18:49:52 +0400
Sergei Shtylyov <sshtylyov@ru.mvista.com> wrote:
> The bus scan code reads PCI revision ID from the PCI configuration register
> while it's already stored by PCI subsystem in the 'revision' field of 'struct
> pci_dev'...
>
> Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
>
> ---
> The patch is against the recent Linus' tree.
>
> There's another place where the revision ID register is read but as 16-bit
> entity (probably by mistake though), so I didn't convert it...
Where is that?
> drivers/ssb/scan.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> Index: linux-2.6/drivers/ssb/scan.c
> ===================================================================
> --- linux-2.6.orig/drivers/ssb/scan.c
> +++ linux-2.6/drivers/ssb/scan.c
> @@ -310,8 +310,7 @@ int ssb_bus_scan(struct ssb_bus *bus,
> } else {
> if (bus->bustype == SSB_BUSTYPE_PCI) {
> bus->chip_id = pcidev_to_chipid(bus->host_pci);
> - pci_read_config_byte(bus->host_pci, PCI_REVISION_ID,
> - &bus->chip_rev);
> + bus->chip_rev = bus->host_pci->revision;
> bus->chip_package = 0;
> } else {
> bus->chip_id = 0x4710;
>
^ permalink raw reply
* Re: [PATCH] net/usb: kalmia: Various fixes for better support of non-x86 architectures.
From: Sergei Shtylyov @ 2011-06-23 14:55 UTC (permalink / raw)
To: Alan Stern
Cc: Sergei Shtylyov, Marius B. Kotsbak, davem, netdev, linux-usb,
Marius B. Kotsbak
In-Reply-To: <Pine.LNX.4.44L0.1106231025340.2033-100000@iolanthe.rowland.org>
Alan Stern wrote:
>>> -Support for big endian.
>>> -Do not use USB buffers at the stack.
>>> -Safer/more efficient code for local constants.
>>> Signed-off-by: Marius B. Kotsbak<marius@kotsbak.com>
>>> ---
>>> drivers/net/usb/kalmia.c | 40 ++++++++++++++++++++++++----------------
>>> 1 files changed, 24 insertions(+), 16 deletions(-)
>>> diff --git a/drivers/net/usb/kalmia.c b/drivers/net/usb/kalmia.c
>>> index d965fb1..d4edeb2 100644
>>> --- a/drivers/net/usb/kalmia.c
>>> +++ b/drivers/net/usb/kalmia.c
>>> @@ -100,27 +100,35 @@ kalmia_send_init_packet(struct usbnet *dev, u8 *init_msg, u8 init_msg_len,
>>> static int
>>> kalmia_init_and_get_ethernet_addr(struct usbnet *dev, u8 *ethernet_addr)
>>> {
>>> - char init_msg_1[] =
>>> + const static char init_msg_1[] =
>>> { 0x57, 0x50, 0x04, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
>>> 0x00, 0x00 };
>>> - char init_msg_2[] =
>>> + const static char init_msg_2[] =
>>> { 0x57, 0x50, 0x04, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xf4,
>>> 0x00, 0x00 };
>> Actually 'const' alone should've been enough for the variable to be placed
>> in the data section ISO stack.
> I don't understand what "ISO stack" means here.
ISO == instead of.
> I would think that "const" might or might not cause the array to be
> allocated statically.
At least with gcc, it will be allocated statically.
> Alan Stern
WBR, Sergei
^ permalink raw reply
* [PATCH] ssb: use pci_dev->revision
From: Sergei Shtylyov @ 2011-06-23 14:49 UTC (permalink / raw)
To: mb, netdev
The bus scan code reads PCI revision ID from the PCI configuration register
while it's already stored by PCI subsystem in the 'revision' field of 'struct
pci_dev'...
Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
---
The patch is against the recent Linus' tree.
There's another place where the revision ID register is read but as 16-bit
entity (probably by mistake though), so I didn't convert it...
drivers/ssb/scan.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
Index: linux-2.6/drivers/ssb/scan.c
===================================================================
--- linux-2.6.orig/drivers/ssb/scan.c
+++ linux-2.6/drivers/ssb/scan.c
@@ -310,8 +310,7 @@ int ssb_bus_scan(struct ssb_bus *bus,
} else {
if (bus->bustype == SSB_BUSTYPE_PCI) {
bus->chip_id = pcidev_to_chipid(bus->host_pci);
- pci_read_config_byte(bus->host_pci, PCI_REVISION_ID,
- &bus->chip_rev);
+ bus->chip_rev = bus->host_pci->revision;
bus->chip_package = 0;
} else {
bus->chip_id = 0x4710;
^ permalink raw reply
* [PATCH 2/2 resend] mlx4: use pci_dev->revision
From: Sergei Shtylyov @ 2011-06-23 14:44 UTC (permalink / raw)
To: netdev; +Cc: yevgenyp
Commit 725c89997e03d71b09ea3c17c997da0712b9d835 (mlx4_en: Reporting HW revision
in ethtool -i) added code to read the revision ID from the PCI configuration
register while it's already stored by PCI subsystem in the 'revision' field of
'struct pci_dev'...
While at it, move the code being changed a bit in order to not break the
initialization sequence.
Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
---
The patch is against the recent Linus' tree.
It wasn't merged to Linux 3.0, hopefully it will be picked up for 3.1...
drivers/net/mlx4/main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-2.6/drivers/net/mlx4/main.c
===================================================================
--- linux-2.6.orig/drivers/net/mlx4/main.c
+++ linux-2.6/drivers/net/mlx4/main.c
@@ -1230,11 +1230,11 @@ static int __mlx4_init_one(struct pci_de
INIT_LIST_HEAD(&priv->pgdir_list);
mutex_init(&priv->pgdir_mutex);
- pci_read_config_byte(pdev, PCI_REVISION_ID, &dev->rev_id);
-
INIT_LIST_HEAD(&priv->bf_list);
mutex_init(&priv->bf_mutex);
+ dev->rev_id = pdev->revision;
+
/*
* Now reset the HCA before we touch the PCI capabilities or
* attempt a firmware command, since a boot ROM may have left
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox