From: Mithlesh Thukral <mithlesh@netxen.com>
To: Stephen Hemminger <shemminger@linux-foundation.org>
Cc: netdev@vger.kernel.org, amitkale@netxen.com, jeff@garzik.org,
netxenproj@linsyssoft.com, rob@netxen.com
Subject: Re: [PATCH 1/5] NetXen: Fix softlock seen on some machines during hardware writes
Date: Tue, 13 Mar 2007 17:29:17 +0530 [thread overview]
Message-ID: <200703131729.17791.mithlesh@netxen.com> (raw)
In-Reply-To: <45F18AC1.9030100@linux-foundation.org>
On Friday 09 March 2007 21:56, Stephen Hemminger wrote:
> Linsys Contractor Mithlesh Thukral wrote:
> > NetXen: This will fix a softlock seen on some machines.
> > The reason was too much time was spent waiting for writes to go through.
> >
> > Signed-off by: Mithlesh Thukral <mithlesh@netxen.com>
> > ---
> > drivers/net/netxen/netxen_nic.h | 1 +
> > drivers/net/netxen/netxen_nic_ethtool.c | 1 +
> > drivers/net/netxen/netxen_nic_init.c | 11 +++++++++--
> > 3 files changed, 11 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/net/netxen/netxen_nic.h
> > b/drivers/net/netxen/netxen_nic.h index 38d7409..c85c2cb 100644
> > --- a/drivers/net/netxen/netxen_nic.h
> > +++ b/drivers/net/netxen/netxen_nic.h
> > @@ -236,6 +236,7 @@ #define MPORT_MULTI_FUNCTION_MODE 0x2222
> >
> > #include "netxen_nic_phan_reg.h"
> > extern unsigned long long netxen_dma_mask;
> > +extern unsigned long last_schedule_time;
> >
> > /*
> > * NetXen host-peg signal message structure
> > diff --git a/drivers/net/netxen/netxen_nic_ethtool.c
> > b/drivers/net/netxen/netxen_nic_ethtool.c index 3752d2a..d49a7d8 100644
> > --- a/drivers/net/netxen/netxen_nic_ethtool.c
> > +++ b/drivers/net/netxen/netxen_nic_ethtool.c
> > @@ -455,6 +455,7 @@ netxen_nic_set_eeprom(struct net_device
> > }
> > printk(KERN_INFO "%s: flash unlocked. \n",
> > netxen_nic_driver_name);
> > + last_schedule_time = jiffies;
> > ret = netxen_flash_erase_secondary(adapter);
> > if (ret != FLASH_SUCCESS) {
> > printk(KERN_ERR "%s: Flash erase failed.\n",
> > diff --git a/drivers/net/netxen/netxen_nic_init.c
> > b/drivers/net/netxen/netxen_nic_init.c index b2e776f..53ca21e 100644
> > --- a/drivers/net/netxen/netxen_nic_init.c
> > +++ b/drivers/net/netxen/netxen_nic_init.c
> > @@ -42,6 +42,8 @@ struct crb_addr_pair {
> > u32 data;
> > };
> >
> > +unsigned long last_schedule_time;
> > +
> > #define NETXEN_MAX_CRB_XFORM 60
> > static unsigned int crb_addr_xform[NETXEN_MAX_CRB_XFORM];
> > #define NETXEN_ADDR_ERROR (0xffffffff)
> > @@ -404,9 +406,14 @@ static inline int do_rom_fast_write(stru
> > static inline int
> > do_rom_fast_read(struct netxen_adapter *adapter, int addr, int *valp)
> > {
> > + if (jiffies > (last_schedule_time + (8 * HZ))) {
> > + last_schedule_time = jiffies;
> > + schedule();
> > + }
> > +
> > netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ADDRESS, addr);
> > netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ABYTE_CNT, 3);
> > - udelay(70); /* prevent bursting on CRB */
> > + udelay(100); /* prevent bursting on CRB */
>
> To prevent PCI write posting issues, you should always do a dummy read
> before
> any delay.
This is a good suggestion. I have the code in place in which i do a dummy read
of hardware location before the delay. But as of now i have tested this code
only on some machines. I will like to test it on almost all possible set of
hardware configurations and put it. With that i am also trying to reduce the
delay as much as possible.
Till then this patch will make the code work on all hardware platforms
(including one which require more delay) as well as prevent a softlockup from
occurring.
Thanks,
Mithlesh Thukral
prev parent reply other threads:[~2007-03-13 12:05 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-09 8:07 [PATCH 1/5] NetXen: Fix softlock seen on some machines during hardware writes Linsys Contractor Mithlesh Thukral
2007-03-09 16:26 ` Stephen Hemminger
2007-03-10 7:11 ` Amit Kale
2007-03-13 11:59 ` Mithlesh Thukral [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200703131729.17791.mithlesh@netxen.com \
--to=mithlesh@netxen.com \
--cc=amitkale@netxen.com \
--cc=jeff@garzik.org \
--cc=netdev@vger.kernel.org \
--cc=netxenproj@linsyssoft.com \
--cc=rob@netxen.com \
--cc=shemminger@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).