* [PATCH] [-MM, FIX V3] e1000e: incorporate napi_struct changes from net-2.6.24.git
From: Auke Kok @ 2007-09-08 0:27 UTC (permalink / raw)
To: akpm, davem; +Cc: jeff, netdev, auke-jan.h.kok
This incorporates the new napi_struct changes into e1000e. Included
bugfix for ifdown hang from Krishna Kumar for e1000.
Disabling polling is no longer needed at init time, so remove
napi_disable() call from _probe().
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e1000e/e1000.h | 2 ++
drivers/net/e1000e/netdev.c | 39 ++++++++++++++++-----------------------
2 files changed, 18 insertions(+), 23 deletions(-)
diff --git a/drivers/net/e1000e/e1000.h b/drivers/net/e1000e/e1000.h
index c57e35a..d2499bb 100644
--- a/drivers/net/e1000e/e1000.h
+++ b/drivers/net/e1000e/e1000.h
@@ -187,6 +187,8 @@ struct e1000_adapter {
struct e1000_ring *tx_ring /* One per active queue */
____cacheline_aligned_in_smp;
+ struct napi_struct napi;
+
unsigned long tx_queue_len;
unsigned int restart_queue;
u32 txd_cmd;
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index 372da46..f8ec537 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -1149,12 +1149,12 @@ static irqreturn_t e1000_intr_msi(int irq, void *data)
mod_timer(&adapter->watchdog_timer, jiffies + 1);
}
- if (netif_rx_schedule_prep(netdev)) {
+ if (netif_rx_schedule_prep(netdev, &adapter->napi)) {
adapter->total_tx_bytes = 0;
adapter->total_tx_packets = 0;
adapter->total_rx_bytes = 0;
adapter->total_rx_packets = 0;
- __netif_rx_schedule(netdev);
+ __netif_rx_schedule(netdev, &adapter->napi);
} else {
atomic_dec(&adapter->irq_sem);
}
@@ -1212,12 +1212,12 @@ static irqreturn_t e1000_intr(int irq, void *data)
mod_timer(&adapter->watchdog_timer, jiffies + 1);
}
- if (netif_rx_schedule_prep(netdev)) {
+ if (netif_rx_schedule_prep(netdev, &adapter->napi)) {
adapter->total_tx_bytes = 0;
adapter->total_tx_packets = 0;
adapter->total_rx_bytes = 0;
adapter->total_rx_packets = 0;
- __netif_rx_schedule(netdev);
+ __netif_rx_schedule(netdev, &adapter->napi);
} else {
atomic_dec(&adapter->irq_sem);
}
@@ -1662,10 +1662,10 @@ set_itr_now:
* e1000_clean - NAPI Rx polling callback
* @adapter: board private structure
**/
-static int e1000_clean(struct net_device *poll_dev, int *budget)
+static int e1000_clean(struct napi_struct *napi, int budget)
{
- struct e1000_adapter *adapter;
- int work_to_do = min(*budget, poll_dev->quota);
+ struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, napi);
+ struct net_device *poll_dev = adapter->netdev;
int tx_cleaned = 0, work_done = 0;
/* Must NOT use netdev_priv macro here. */
@@ -1684,25 +1684,20 @@ static int e1000_clean(struct net_device *poll_dev, int *budget)
spin_unlock(&adapter->tx_queue_lock);
}
- adapter->clean_rx(adapter, &work_done, work_to_do);
- *budget -= work_done;
- poll_dev->quota -= work_done;
+ adapter->clean_rx(adapter, &work_done, budget);
/* If no Tx and not enough Rx work done, exit the polling mode */
- if ((!tx_cleaned && (work_done == 0)) ||
+ if ((tx_cleaned && (work_done < budget)) ||
!netif_running(poll_dev)) {
quit_polling:
if (adapter->itr_setting & 3)
e1000_set_itr(adapter);
- netif_rx_complete(poll_dev);
- if (test_bit(__E1000_DOWN, &adapter->state))
- atomic_dec(&adapter->irq_sem);
- else
- e1000_irq_enable(adapter);
+ netif_rx_complete(poll_dev, napi);
+ e1000_irq_enable(adapter);
return 0;
}
- return 1;
+ return work_done;
}
static void e1000_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
@@ -2439,7 +2434,7 @@ int e1000e_up(struct e1000_adapter *adapter)
clear_bit(__E1000_DOWN, &adapter->state);
- netif_poll_enable(adapter->netdev);
+ napi_enable(&adapter->napi);
e1000_irq_enable(adapter);
/* fire a link change interrupt to start the watchdog */
@@ -2472,7 +2467,7 @@ void e1000e_down(struct e1000_adapter *adapter)
e1e_flush();
msleep(10);
- netif_poll_disable(netdev);
+ napi_disable(&adapter->napi);
e1000_irq_disable(adapter);
del_timer_sync(&adapter->watchdog_timer);
@@ -2605,7 +2600,7 @@ static int e1000_open(struct net_device *netdev)
/* From here on the code is the same as e1000e_up() */
clear_bit(__E1000_DOWN, &adapter->state);
- netif_poll_enable(netdev);
+ napi_enable(&adapter->napi);
e1000_irq_enable(adapter);
@@ -4090,8 +4085,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
e1000e_set_ethtool_ops(netdev);
netdev->tx_timeout = &e1000_tx_timeout;
netdev->watchdog_timeo = 5 * HZ;
- netdev->poll = &e1000_clean;
- netdev->weight = 64;
+ netif_napi_add(netdev, &adapter->napi, e1000_clean, 64);
netdev->vlan_rx_register = e1000_vlan_rx_register;
netdev->vlan_rx_add_vid = e1000_vlan_rx_add_vid;
netdev->vlan_rx_kill_vid = e1000_vlan_rx_kill_vid;
@@ -4260,7 +4254,6 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
/* tell the stack to leave us alone until e1000_open() is called */
netif_carrier_off(netdev);
netif_stop_queue(netdev);
- netif_poll_disable(netdev);
strcpy(netdev->name, "eth%d");
err = register_netdev(netdev);
^ permalink raw reply related
* Re: [atl1-devel] [PATCH 2/2] atl1: wrap problematic optimizations in CONFIG_ATL1_EXPERIMENTAL
From: Chris Snook @ 2007-09-08 0:27 UTC (permalink / raw)
To: Luca; +Cc: Jeff Garzik, atl1-devel, netdev
In-Reply-To: <68676e00709071721g35c07b0by58991c56e17ec442@mail.gmail.com>
Luca wrote:
> On 9/8/07, Chris Snook <csnook@redhat.com> wrote:
>> From: Chris Snook <csnook@redhat.com>
>>
>> Make certain problematic optimizations build-time configurable.
>>
>> Signed-off-by: Chris Snook <csnook@redhat.com>
>> Acked-by: Jay Cliburn <jacliburn@bellsouth.net>
>>
>> --- a/drivers/net/atl1/atl1_main.c 2007-09-04 10:12:38.000000000 -0400
>> +++ b/drivers/net/atl1/atl1_main.c 2007-09-04 11:23:26.000000000 -0400
>> @@ -2203,22 +2203,26 @@ static int __devinit atl1_probe(struct p
>> struct net_device *netdev;
>> struct atl1_adapter *adapter;
>> static int cards_found = 0;
>> - bool pci_using_64 = true;
>> + bool pci_using_64 = false;
>> int err;
>>
>> err = pci_enable_device(pdev);
>> if (err)
>> return err;
>>
>> +#ifdef CONFIG_ATL1_EXPERIMENTAL
>> err = pci_set_dma_mask(pdev, DMA_64BIT_MASK);
>> + if (!err) {
>> + pci_using_64 = true;
>> + goto dma_ok;
>> + }
>> +#endif /* CONFIG_ATL1_EXPERIMENTAL */
>
> This is more like CONFIG_ATL1_PLEASE_KILL_MY_MACHINE; I really don't
> see the problem with just limiting the DMA mask:
> - if you don't have physical mem over the 4GB boundary limiting DMA
> doesn't make any difference
> - if you have more than 4GB of memory the machine won't survive long without it
Atheros is still working on this, and we plan to fix it. 64-bit DMA *should*
work. I just resubmitted your patch with the comment Jeff requested. I still
may want to revisit CONFIG_ATL1_EXPERIMENTAL soon when I start playing around
with more features.
-- Chris
^ permalink raw reply
* Re: [PATCH] [-MM, FIX V3] e1000e: incorporate napi_struct changes from net-2.6.24.git
From: Kok, Auke @ 2007-09-08 0:30 UTC (permalink / raw)
To: davem; +Cc: akpm, jeff, netdev
In-Reply-To: <20070908002730.27700.3774.stgit@localhost.localdomain>
Auke Kok wrote:
> This incorporates the new napi_struct changes into e1000e. Included
> bugfix for ifdown hang from Krishna Kumar for e1000.
>
> Disabling polling is no longer needed at init time, so remove
> napi_disable() call from _probe().
david,
while testing this patch I noticed that the poll routine is now called 100% of
the time, and since I'm not doing much different than before, I suspec that
something in the new napi code is staying in polling mode forever? Since e1000e
is pretty much the same code as e1000, I doubt the problem is there, but you can
probably tell better. ideas?
Auke
>
> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
> ---
>
> drivers/net/e1000e/e1000.h | 2 ++
> drivers/net/e1000e/netdev.c | 39 ++++++++++++++++-----------------------
> 2 files changed, 18 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/net/e1000e/e1000.h b/drivers/net/e1000e/e1000.h
> index c57e35a..d2499bb 100644
> --- a/drivers/net/e1000e/e1000.h
> +++ b/drivers/net/e1000e/e1000.h
> @@ -187,6 +187,8 @@ struct e1000_adapter {
> struct e1000_ring *tx_ring /* One per active queue */
> ____cacheline_aligned_in_smp;
>
> + struct napi_struct napi;
> +
> unsigned long tx_queue_len;
> unsigned int restart_queue;
> u32 txd_cmd;
> diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
> index 372da46..f8ec537 100644
> --- a/drivers/net/e1000e/netdev.c
> +++ b/drivers/net/e1000e/netdev.c
> @@ -1149,12 +1149,12 @@ static irqreturn_t e1000_intr_msi(int irq, void *data)
> mod_timer(&adapter->watchdog_timer, jiffies + 1);
> }
>
> - if (netif_rx_schedule_prep(netdev)) {
> + if (netif_rx_schedule_prep(netdev, &adapter->napi)) {
> adapter->total_tx_bytes = 0;
> adapter->total_tx_packets = 0;
> adapter->total_rx_bytes = 0;
> adapter->total_rx_packets = 0;
> - __netif_rx_schedule(netdev);
> + __netif_rx_schedule(netdev, &adapter->napi);
> } else {
> atomic_dec(&adapter->irq_sem);
> }
> @@ -1212,12 +1212,12 @@ static irqreturn_t e1000_intr(int irq, void *data)
> mod_timer(&adapter->watchdog_timer, jiffies + 1);
> }
>
> - if (netif_rx_schedule_prep(netdev)) {
> + if (netif_rx_schedule_prep(netdev, &adapter->napi)) {
> adapter->total_tx_bytes = 0;
> adapter->total_tx_packets = 0;
> adapter->total_rx_bytes = 0;
> adapter->total_rx_packets = 0;
> - __netif_rx_schedule(netdev);
> + __netif_rx_schedule(netdev, &adapter->napi);
> } else {
> atomic_dec(&adapter->irq_sem);
> }
> @@ -1662,10 +1662,10 @@ set_itr_now:
> * e1000_clean - NAPI Rx polling callback
> * @adapter: board private structure
> **/
> -static int e1000_clean(struct net_device *poll_dev, int *budget)
> +static int e1000_clean(struct napi_struct *napi, int budget)
> {
> - struct e1000_adapter *adapter;
> - int work_to_do = min(*budget, poll_dev->quota);
> + struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, napi);
> + struct net_device *poll_dev = adapter->netdev;
> int tx_cleaned = 0, work_done = 0;
>
> /* Must NOT use netdev_priv macro here. */
> @@ -1684,25 +1684,20 @@ static int e1000_clean(struct net_device *poll_dev, int *budget)
> spin_unlock(&adapter->tx_queue_lock);
> }
>
> - adapter->clean_rx(adapter, &work_done, work_to_do);
> - *budget -= work_done;
> - poll_dev->quota -= work_done;
> + adapter->clean_rx(adapter, &work_done, budget);
>
> /* If no Tx and not enough Rx work done, exit the polling mode */
> - if ((!tx_cleaned && (work_done == 0)) ||
> + if ((tx_cleaned && (work_done < budget)) ||
> !netif_running(poll_dev)) {
> quit_polling:
> if (adapter->itr_setting & 3)
> e1000_set_itr(adapter);
> - netif_rx_complete(poll_dev);
> - if (test_bit(__E1000_DOWN, &adapter->state))
> - atomic_dec(&adapter->irq_sem);
> - else
> - e1000_irq_enable(adapter);
> + netif_rx_complete(poll_dev, napi);
> + e1000_irq_enable(adapter);
> return 0;
> }
>
> - return 1;
> + return work_done;
> }
>
> static void e1000_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
> @@ -2439,7 +2434,7 @@ int e1000e_up(struct e1000_adapter *adapter)
>
> clear_bit(__E1000_DOWN, &adapter->state);
>
> - netif_poll_enable(adapter->netdev);
> + napi_enable(&adapter->napi);
> e1000_irq_enable(adapter);
>
> /* fire a link change interrupt to start the watchdog */
> @@ -2472,7 +2467,7 @@ void e1000e_down(struct e1000_adapter *adapter)
> e1e_flush();
> msleep(10);
>
> - netif_poll_disable(netdev);
> + napi_disable(&adapter->napi);
> e1000_irq_disable(adapter);
>
> del_timer_sync(&adapter->watchdog_timer);
> @@ -2605,7 +2600,7 @@ static int e1000_open(struct net_device *netdev)
> /* From here on the code is the same as e1000e_up() */
> clear_bit(__E1000_DOWN, &adapter->state);
>
> - netif_poll_enable(netdev);
> + napi_enable(&adapter->napi);
>
> e1000_irq_enable(adapter);
>
> @@ -4090,8 +4085,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
> e1000e_set_ethtool_ops(netdev);
> netdev->tx_timeout = &e1000_tx_timeout;
> netdev->watchdog_timeo = 5 * HZ;
> - netdev->poll = &e1000_clean;
> - netdev->weight = 64;
> + netif_napi_add(netdev, &adapter->napi, e1000_clean, 64);
> netdev->vlan_rx_register = e1000_vlan_rx_register;
> netdev->vlan_rx_add_vid = e1000_vlan_rx_add_vid;
> netdev->vlan_rx_kill_vid = e1000_vlan_rx_kill_vid;
> @@ -4260,7 +4254,6 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
> /* tell the stack to leave us alone until e1000_open() is called */
> netif_carrier_off(netdev);
> netif_stop_queue(netdev);
> - netif_poll_disable(netdev);
>
> strcpy(netdev->name, "eth%d");
> err = register_netdev(netdev);
>
^ permalink raw reply
* Re: error(s) in 2.6.23-rc5 bonding.txt ?
From: Jay Vosburgh @ 2007-09-08 1:01 UTC (permalink / raw)
To: Rick Jones; +Cc: Linux Network Development list
In-Reply-To: <46E1E2EE.7080202@hp.com>
Rick Jones <rick.jones2@hp.com> wrote:
[...]
>> If bonding is the only feeder of the devices, then for a continuous
>> flow of traffic, all the slaves will generally receive packets (from
>> the kernel, for transmission) at pretty much the same rate, and so
>> they won't tend to get ahead or behind.
>
>I could see that if there was just one TCP connection going doing bulk or
>something, but if there were a bulk transmitter coupled with an occasional
>request/response (ie netperf TCP_STREAM and a TCP_RR) i'd think the tx
>rings would no longer remain balanced.
I'm not sure that would be the case, because even the traffic
"bump" from the TCP_RR would be funneled through the round-robin. So,
the next packet of the bulk transmit would simply be "pushed back" to
the next available interface.
Perhaps varying packet sizes would throw things out of whack, if
the small ones happened to line up all one one interface (regardless of
the other traffic).
A PAUSE frame to one interface would almost certainly get things
out of whack, but I don't know how long it would stay out of whack (or,
really, how likely getting a PAUSE is). Probably just as long as all of
the slaves are running at full speed.
>> I haven't investigated into this deeply for a few years, but
>> this is my recollection of what happened with the tests I did then. I
>> did testing with multiple 100Mb devices feeding either other sets of
>> 100Mb devices or single gigabit devices. I'm willing to believe that
>> things have changed, and an N feeding into one configuration can
>> reorder, but I haven't seen it (or really looked for it; balance-rr
>> isn't much the rage these days).
>
>Are you OK with that block of text simply being yanked?
Mmm... I'm an easy sell for a "usually" or other suitable caveat
added in strategic places (avoiding absolute statements and all that).
The text does reflect the results of experiments I ran at the time, so
I'm reluctant to toss it wholesale simply because we speculate over how
it might not be accurate.
-J
---
-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com
^ permalink raw reply
* Re: [TG3]: Workaround MSI bug on 5714/5780.
From: Michael Chan @ 2007-09-08 2:26 UTC (permalink / raw)
To: David Miller; +Cc: andy, netdev, ananth, nsankar
In-Reply-To: <20070906.125019.104036964.davem@davemloft.net>
On Thu, 2007-09-06 at 12:50 -0700, David Miller wrote:
> From: "Michael Chan" <mchan@broadcom.com>
> Date: Thu, 06 Sep 2007 12:05:30 -0700
>
> > The HT1000 bridge may very well have an MSI issue. I'm checking with
> > ServerWorks and I will do some testing to confirm. If confirmed, we can
> > disable MSI behind the HT1000 bridge instead of globally. The 5714
> > issue is not caused by the HT1000 as it is not behind the HT1000.
>
> What I'm going to do at this point is just merge the tg3
> fix into the current 2.6.23 tree right now.
>
> Meanwhile I'll have the HT1000 MSI quirk revert ready and,
> unless we find a reason not to, I'll ask Greg KH to merge
> that patch into 2.6.24
>
David, I see that you have already done the revert in your 2.6.23 tree.
So the following patch assumes the revert is already done. I think it
is quite safe for this to go into 2.6.23.
[PCI]: Add MSI quirk for ServerWorks HT1000 PCIX bridge.
This is the fix for the following problem:
https://bugzilla.redhat.com/show_bug.cgi?id=227657
The bnx2 device 5706 complains about MSI not working behind a
ServerWorks HT1000 PCIX bridge. An earlier commit to fix the problem:
e3008dedff4bdc96a5f67224cd3d8d12237082a0:
"PCI: disable MSI by default on systems with Serverworks HT1000 chips"
was not entirely correct, and has been reverted.
MSI does not work on the PCIX bus because the BIOS did not set the
HT_MSI_FLAGS_ENABLE bit in the HyperTransport MSI capability on the
bridge. We use the existing quirk_msi_ht_cap() to detect the problem
and disable MSI in all buses behind it.
Signed-off-by: Michael Chan <mchan@broadcom.com>
Cc: Anantha Subramanyam <ananth@broadcom.com>
Cc: Naren Sankar <nsankar@broadcom.com>
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 6da5a5d..c58429b 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1703,6 +1703,9 @@ static void __devinit quirk_msi_ht_cap(struct pci_dev *dev)
}
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT2000_PCIE,
quirk_msi_ht_cap);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS,
+ PCI_DEVICE_ID_SERVERWORKS_HT1000_PXB,
+ quirk_msi_ht_cap);
/* The nVidia CK804 chipset may have 2 HT MSI mappings.
* MSI are supported if the MSI capability set in any of these mappings.
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 3e34dc0..1bdf8be 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -1428,6 +1428,7 @@
#define PCI_DEVICE_ID_SERVERWORKS_HE 0x0008
#define PCI_DEVICE_ID_SERVERWORKS_LE 0x0009
#define PCI_DEVICE_ID_SERVERWORKS_GCNB_LE 0x0017
+#define PCI_DEVICE_ID_SERVERWORKS_HT1000_PXB 0x0036
#define PCI_DEVICE_ID_SERVERWORKS_EPB 0x0103
#define PCI_DEVICE_ID_SERVERWORKS_HT2000_PCIE 0x0132
#define PCI_DEVICE_ID_SERVERWORKS_OSB4 0x0200
^ permalink raw reply related
* Re: error(s) in 2.6.23-rc5 bonding.txt ?
From: Bill Fink @ 2007-09-08 6:05 UTC (permalink / raw)
To: Jay Vosburgh; +Cc: Rick Jones, Linux Network Development list
In-Reply-To: <32121.1189207861@death>
On Fri, 07 Sep 2007, Jay Vosburgh wrote:
> Rick Jones <rick.jones2@hp.com> wrote:
> [...]
> >> Note that this out of order delivery occurs when both the
> >> sending and receiving systems are utilizing a multiple
> >> interface bond. Consider a configuration in which a
> >> balance-rr bond feeds into a single higher capacity network
> >> channel (e.g., multiple 100Mb/sec ethernets feeding a single
> >> gigabit ethernet via an etherchannel capable switch). In this
> >> configuration, traffic sent from the multiple 100Mb devices to
> >> a destination connected to the gigabit device will not see
> >> packets out of order.
I would just change the last part of the last sentence to:
configuration, traffic sent from the multiple 100Mb devices to
a destination connected to the gigabit device will not usually
see packets out of order in the absence of congestion on the
outgoing gigabit ethernet interface.
If there was momentary congestion on the outgoing gigabit ethernet
interface, I suppose it would be possible to get out of order delivery
if some of the incoming packets on the striped round-robin interfaces
had to be buffered a short while before delivery was possible.
> The text probably is lacking in some detail, though. The real
> key is that the last sender before getting to the destination system has
> to do the round-robin striping. Most switches that I'm familiar with
> (again, never seen one, but willing to believe there is one) don't have
> round-robin as a load balance option for etherchannel, and thus won't
> evenly stripe traffic, but instead do some math on the packets so that a
> given "connection" isn't split across ports.
Just FYI, the "i" series of Extreme switches (and some of their other
switches) support round-robin load balancing. We consider this an
extremely useful feature (but only use it for switch-to-switch link
aggregation), and bemoan its lack in their newer switch offerings.
Force10 switches also have a pseudo round-robin load balancing capability
which they call packet-based, which works by distributing packets based
on the IP Identification field (and only works for IPv4). One downside
of the Force10 feature is that it is a global setting and thus affects
all link aggregated links (the Extreme feature can be set on a per
link aggregated link basis).
-Bill
^ permalink raw reply
* Re: [PATCH] [-MM, FIX V3] e1000e: incorporate napi_struct changes from net-2.6.24.git
From: Robert Olsson @ 2007-09-08 7:53 UTC (permalink / raw)
To: Kok, Auke; +Cc: davem, akpm, jeff, netdev
In-Reply-To: <46E1ED43.4070506@intel.com>
Kok, Auke writes:
> david,
>
> while testing this patch I noticed that the poll routine is now called
> 100% of the time, and since I'm not doing much different than before, I
> suspec that something in the new napi code is staying in polling mode
> forever? Since e1000e is pretty much the same code as e1000, I doubt the
> problem is there, but you can probably tell better. ideas?
Hello,
Yes a correct observation. I've spotted this bug too and it caused by the
policy change in the NAPI scheduling. Look at tx_cleaned.
I suggest we revert this change for now.
Cheers
--ro
Signed-off-by: Robert Olsson <robert.olsson@its.uu.se>
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 7b0bcdb..5cb883a 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -3944,7 +3944,7 @@ e1000_clean(struct napi_struct *napi, int budget)
&work_done, budget);
/* If no Tx and not enough Rx work done, exit the polling mode */
- if ((tx_cleaned && (work_done < budget)) ||
+ if ((!tx_cleaned && (work_done == 0)) ||
!netif_running(poll_dev)) {
quit_polling:
if (likely(adapter->itr_setting & 3))
^ permalink raw reply related
* Re: [PATCH v3 2/2][BNX2]: Add iSCSI support to BNX2 devices.
From: FUJITA Tomonori @ 2007-09-08 7:41 UTC (permalink / raw)
To: open-iscsi
Cc: davem, mchristi, netdev, anilgv, talm, lusinsky, uri,
fujita.tomonori
In-Reply-To: <46E1D27F.2040701@cs.wisc.edu>
On Fri, 07 Sep 2007 17:36:47 -0500
Mike Christie <michaelc@cs.wisc.edu> wrote:
> > +/*
> > + * map SG list
> > + */
> > +static int bnx2i_map_sg(struct bnx2i_hba *hba, struct bnx2i_cmd *cmd)
> > +{
> > + struct scsi_cmnd *sc = cmd->scsi_cmd;
> > + struct iscsi_bd *bd = cmd->bd_tbl->bd_tbl;
> > + struct scatterlist *sg;
> > + int byte_count = 0;
> > + int sg_frags;
> > + int bd_count = 0;
> > + int sg_count;
> > + int sg_len;
> > + u64 addr;
> > + int i;
> > +
> > + sg = sc->request_buffer;
> > + sg_count = pci_map_sg(hba->pci_dev, sg, sc->use_sg,
> > + sc->sc_data_direction);
Can you use scsi_dma_map() here?
> > + for (i = 0; i < sg_count; i++) {
> > + sg_len = sg_dma_len(sg);
> > + addr = sg_dma_address(sg);
> > + if (sg_len > MAX_BD_LENGTH)
> > + sg_frags = bnx2i_split_bd(cmd, addr, sg_len,
> > + bd_count);
Please use scsi_for_each_sg().
You can't directly access to use_sg, request_buffer, request_bufflen,
and resid in scsi_cmnd structure. Please use the scsi data accessors
in scsi_cmnd.h: scsi_sg_count, scsi_sglist, scsi_bufflen,
scsi_set_resid, and scsi_get_resid.
> If you call blk_queue_max_segment_size() in the slave_configure callout
> you can limit the size of the segments that the block layer builds so
> they are smaller than MAX_BD_LENGTH. However, I am not sure how useful
> that is. I think DMA-API.txt states that the mapping code is ok to
> merged mutliple sglists entries into one so I think that means that we
> can still end up with an entry that is larger than MAX_BD_LENGTH. Not
> sure if there is way to tell the pci/dma map_sg code to limit this too.
Yeah, iommu code ignores the lld limitations (the problem is that the
lld limitations are in request_queue and iommu code can't access to
request_queue). There is no way to tell iommu code about the lld
limitations.
^ permalink raw reply
* Re: [3/4] 2.6.23-rc5: known regressions v2
From: Michal Piotrowski @ 2007-09-08 11:11 UTC (permalink / raw)
To: Linus Torvalds
Cc: Andrew Morton, LKML, Len Brown, dth, Netdev, Shish, Karl Meyer,
Francois Romieu, Daniel Drake, Oliver Neukum, linux-usb-devel,
Christian Kujau
In-Reply-To: <46E27DEF.7060109@googlemail.com>
Hi all,
Here is a list of some known regressions in 2.6.23-rc5.
Feel free to add new regressions/remove fixed etc.
http://kernelnewbies.org/known_regressions
List of Aces
Name Regressions fixed since 21-Jun-2007
Adrian Bunk 10
Linus Torvalds 6
Andi Kleen 5
Hugh Dickins 5
Trond Myklebust 5
Andrew Morton 4
Al Viro 3
Alan Stern 3
Alexey Starikovskiy 3
Cornelia Huck 3
David S. Miller 3
Jens Axboe 3
Stephen Hemminger 3
Tejun Heo 3
CPUFREQ
Subject : ide problems: 2.6.22-git17 working, 2.6.23-rc1* is not
References : http://lkml.org/lkml/2007/7/27/298
http://lkml.org/lkml/2007/7/29/371
Last known good : ?
Submitter : dth <dth@dth.net>
Caused-By : Len Brown <lenb@kernel.org>
commit f79e3185dd0f8650022518d7624c876d8929061b
Handled-By : Len Brown <lenb@kernel.org>
Status : problem is being debugged
Networking
Subject : 2.6.23-rc5: possible irq lock inversion dependency detected
References : http://lkml.org/lkml/2007/9/2/97
Last known good : ?
Submitter : Christian Kujau <lists@nerdbynature.de>
Caused-By : ?
Handled-By : ?
Status : unknown
Subject : zd1211rw regression, device does not enumerate
References : http://marc.info/?l=linux-usb-devel&m=118854967709322&w=2
http://bugzilla.kernel.org/show_bug.cgi?id=8972
Last known good : ?
Submitter : Oliver Neukum <oliver@neukum.org>
Caused-By : Daniel Drake <dsd@gentoo.org>
commit 74553aedd46b3a2cae986f909cf2a3f99369decc
Handled-By : ?
Status : unknown
Subject : NETDEV WATCHDOG: eth0: transmit timed out
References : http://lkml.org/lkml/2007/8/13/737
Last known good : ?
Submitter : Karl Meyer <adhocrocker@gmail.com>
Caused-By : ?
Handled-By : Francois Romieu <romieu@fr.zoreil.com>
Status : problem is being debugged
Subject : Weird network problems with 2.6.23-rc2
References : http://lkml.org/lkml/2007/8/11/40
Last known good : ?
Submitter : Shish <shish@shishnet.org>
Caused-By : ?
Handled-By : ?
Status : unknown
Regards,
Michal
--
LOG
http://www.stardust.webpages.pl/log/
^ permalink raw reply
* Re: [2/2] 2.6.23-rc5: known regressions with patches v2
From: Michal Piotrowski @ 2007-09-08 11:11 UTC (permalink / raw)
To: Linus Torvalds
Cc: Andrew Morton, LKML, Pierre Ossman, Christian Casteyde,
Alan Stern, netdev, Johannes Berg, Florian Lohoff, linux-wireless,
Christian Casteyde, Martin Langer, Stefano Brivio, Michael Buesch,
Danny van Dyk, Andreas Jaggi
In-Reply-To: <46E28149.2090900@googlemail.com>
Hi all,
Here is a list of some known regressions in 2.6.23-rc5
with patches available.
Feel free to add new regressions/remove fixed etc.
http://kernelnewbies.org/known_regressions
List of Aces
Name Regressions fixed since 21-Jun-2007
Adrian Bunk 10
Linus Torvalds 6
Andi Kleen 5
Hugh Dickins 5
Trond Myklebust 5
Andrew Morton 4
Al Viro 3
Alan Stern 3
Alexey Starikovskiy 3
Cornelia Huck 3
David S. Miller 3
Jens Axboe 3
Stephen Hemminger 3
Tejun Heo 3
Some of these patches are available in -krf (known regressions fixes) tree
http://www.stardust.webpages.pl/files/patches/krf/2.6.23-rc5-git1/linux-2.6.23-rc5-git1-krf1.patch.bz2
http://www.stardust.webpages.pl/files/patches/krf/2.6.23-rc5-git1/linux-2.6.23-rc5-git1-krf1.tar.bz2
MMC
Subject : Unable to access memory card reader anymore
References : http://bugzilla.kernel.org/show_bug.cgi?id=8885
Last known good : ?
Submitter : Christian Casteyde <casteyde.christian@free.fr>
Caused-By : ?
Handled-By : Alan Stern <stern@rowland.harvard.edu>
Patch : http://bugzilla.kernel.org/attachment.cgi?id=12438
Status : patch available
Networking
Subject : ifconfig eth1 - scheduling while atomic: ifconfig/0x00000002/4170
References : http://lkml.org/lkml/2007/9/2/165
Last known good : ?
Submitter : Florian Lohoff <flo@rfc822.org>
Caused-By : ?
Handled-By : Johannes Berg <johannes@sipsolutions.net>
Patch : http://lkml.org/lkml/2007/9/7/75
Status : patch available
Subject : System freeze when restarting network connection with Broadcom driver
References : http://bugzilla.kernel.org/show_bug.cgi?id=8934
Last known good : ?
Submitter : Christian Casteyde <casteyde.christian@free.fr>
Caused-By : ?
Handled-By : ?
Status : patch has been submitted to John Linville
Regards,
Michal
--
LOG
http://www.stardust.webpages.pl/log/
^ permalink raw reply
* Re: [PATCH v3 2/2][BNX2]: Add iSCSI support to BNX2 devices.
From: Jeff Garzik @ 2007-09-08 11:32 UTC (permalink / raw)
To: FUJITA Tomonori
Cc: open-iscsi, davem, mchristi, netdev, anilgv, talm, lusinsky, uri,
fujita.tomonori
In-Reply-To: <20070908084127G.tomof@acm.org>
FUJITA Tomonori wrote:
> Yeah, iommu code ignores the lld limitations (the problem is that the
> lld limitations are in request_queue and iommu code can't access to
> request_queue). There is no way to tell iommu code about the lld
> limitations.
This fact very much wants fixing.
Jeff
^ permalink raw reply
* Re: [PATCH v3 2/2][BNX2]: Add iSCSI support to BNX2 devices.
From: Christoph Hellwig @ 2007-09-08 11:59 UTC (permalink / raw)
To: Anil Veerabhadrappa
Cc: Mike Christie, Michael Chan, davem, netdev, open-iscsi, talm,
lusinsky, uri, SCSI Mailing List
In-Reply-To: <1189027622.19638.42.camel@dhcp-10-13-106-205.broadcom.com>
On Wed, Sep 05, 2007 at 02:27:02PM -0700, Anil Veerabhadrappa wrote:
> This is a very tricky proposal as this header file is automatically
> generated by a well defined process and is shared between various driver
> supporting multiple platform/OS and the firmware. If it is not of a big
> issue I would like to keep it the way it is.
Most of it should just go away, and the other bits shouldn't change over
the lifetime of the driver except for additions. So there really isn't
any point in auto-generating it.
^ permalink raw reply
* Re: [PATCH v3 2/2][BNX2]: Add iSCSI support to BNX2 devices.
From: Christoph Hellwig @ 2007-09-08 12:00 UTC (permalink / raw)
To: Jeff Garzik
Cc: FUJITA Tomonori, open-iscsi, davem, mchristi, netdev, anilgv,
talm, lusinsky, uri, fujita.tomonori
In-Reply-To: <46E2884B.2070107@garzik.org>
On Sat, Sep 08, 2007 at 07:32:27AM -0400, Jeff Garzik wrote:
> FUJITA Tomonori wrote:
> >Yeah, iommu code ignores the lld limitations (the problem is that the
> >lld limitations are in request_queue and iommu code can't access to
> >request_queue). There is no way to tell iommu code about the lld
> >limitations.
>
>
> This fact very much wants fixing.
Absolutely. Unfortunately everyone wastes their time on creating workarounds
instead of fixing the underlying problem.
^ permalink raw reply
* Re: [PATCH v3 2/2][BNX2]: Add iSCSI support to BNX2 devices.
From: Michael Chan @ 2007-09-08 14:49 UTC (permalink / raw)
To: Christoph Hellwig, Anil Veerabhadrappa
Cc: Mike Christie, davem, netdev, open-iscsi, Tal Moyal,
Robert Lusinsky, Uri Elzur, SCSI Mailing List
In-Reply-To: <20070908115907.GA8478@infradead.org>
Christoph Hellwig wrote:
> Most of it should just go away, and the other bits shouldn't
> change over
> the lifetime of the driver except for additions. So there
> really isn't
> any point in auto-generating it.
>
Yes, I agree with Mike Christie on this. These values in
question are defined in iSCSI RFC and therefore should be defined
in a common file.
^ permalink raw reply
* [RFC 0/3] rfkill
From: Ivo van Doorn @ 2007-09-08 15:10 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
linux-wireless-u79uwXL29TY76Z2rM5mHXA, Inaky Perez-Gonzalez
Hi Dmitry,
I have a few rfkill related patches for which I would prefer if you to could
take a look at before I send them for inclusion.
Thanks. :)
Ivo
^ permalink raw reply
* [RFC 1/3] rfkill: Remove IRDA
From: Ivo van Doorn @ 2007-09-08 15:11 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
linux-wireless-u79uwXL29TY76Z2rM5mHXA, Inaky Perez-Gonzalez
In-Reply-To: <200709081710.56744.IvDoorn-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
As Dmitry pointed out earlier, rfkill-input.c
doesn't support irda because there are no users
and we shouldn't add unrequired KEY_ defines.
However, RFKILL_TYPE_IRDA was defined in the
rfkill.h header file and would confuse people
about whether it is implemented or not.
This patch removes IRDA support completely,
so it can be added whenever a driver wants the
feature.
Signed-off-by: Ivo van Doorn <IvDoorn-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
include/linux/rfkill.h | 8 +++-----
net/rfkill/Kconfig | 2 +-
net/rfkill/rfkill.c | 5 +----
3 files changed, 5 insertions(+), 10 deletions(-)
diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h
index a8a6ea8..c4546e1 100644
--- a/include/linux/rfkill.h
+++ b/include/linux/rfkill.h
@@ -31,13 +31,11 @@
* enum rfkill_type - type of rfkill switch.
* RFKILL_TYPE_WLAN: switch is no a Wireless network devices.
* RFKILL_TYPE_BlUETOOTH: switch is on a bluetooth device.
- * RFKILL_TYPE_IRDA: switch is on an infrared devices.
*/
enum rfkill_type {
- RFKILL_TYPE_WLAN = 0,
- RFKILL_TYPE_BLUETOOTH = 1,
- RFKILL_TYPE_IRDA = 2,
- RFKILL_TYPE_MAX = 3,
+ RFKILL_TYPE_WLAN ,
+ RFKILL_TYPE_BLUETOOTH,
+ RFKILL_TYPE_MAX,
};
enum rfkill_state {
diff --git a/net/rfkill/Kconfig b/net/rfkill/Kconfig
index 8b31759..d28a6d9 100644
--- a/net/rfkill/Kconfig
+++ b/net/rfkill/Kconfig
@@ -5,7 +5,7 @@ menuconfig RFKILL
tristate "RF switch subsystem support"
help
Say Y here if you want to have control over RF switches
- found on many WiFi, Bluetooth and IRDA cards.
+ found on many WiFi and Bluetooth cards.
To compile this driver as a module, choose M here: the
module will be called rfkill.
diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c
index db3395b..50e0102 100644
--- a/net/rfkill/rfkill.c
+++ b/net/rfkill/rfkill.c
@@ -106,9 +106,6 @@ static ssize_t rfkill_type_show(struct device *dev,
case RFKILL_TYPE_BLUETOOTH:
type = "bluetooth";
break;
- case RFKILL_TYPE_IRDA:
- type = "irda";
- break;
default:
BUG();
}
@@ -281,7 +278,7 @@ static void rfkill_remove_switch(struct rfkill *rfkill)
/**
* rfkill_allocate - allocate memory for rfkill structure.
* @parent: device that has rf switch on it
- * @type: type of the switch (wlan, bluetooth, irda)
+ * @type: type of the switch (RFKILL_TYPE_*)
*
* This function should be called by the network driver when it needs
* rfkill structure. Once the structure is allocated the driver shoud
--
1.5.3
^ permalink raw reply related
* [RFC 2/3] rfkill: Add support for ultrawideband
From: Ivo van Doorn @ 2007-09-08 15:11 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
linux-wireless-u79uwXL29TY76Z2rM5mHXA, Inaky Perez-Gonzalez
In-Reply-To: <200709081710.56744.IvDoorn-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
This patch will add support for UWB keys to rfkill,
support for this has been requested by Inaky.
Signed-off-by: Ivo van Doorn <IvDoorn-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
CC: Inaky Perez-Gonzalez <inaky-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
---
include/linux/input.h | 1 +
include/linux/rfkill.h | 2 ++
net/rfkill/rfkill-input.c | 9 +++++++++
net/rfkill/rfkill.c | 3 +++
4 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/include/linux/input.h b/include/linux/input.h
index cf2b561..8e5828d 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -360,6 +360,7 @@ struct input_absinfo {
#define KEY_BLUETOOTH 237
#define KEY_WLAN 238
+#define KEY_UWB 239
#define KEY_UNKNOWN 240
diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h
index c4546e1..f9a50da 100644
--- a/include/linux/rfkill.h
+++ b/include/linux/rfkill.h
@@ -31,10 +31,12 @@
* enum rfkill_type - type of rfkill switch.
* RFKILL_TYPE_WLAN: switch is no a Wireless network devices.
* RFKILL_TYPE_BlUETOOTH: switch is on a bluetooth device.
+ * RFKILL_TYPE_UWB: switch is on a Ultra wideband device.
*/
enum rfkill_type {
RFKILL_TYPE_WLAN ,
RFKILL_TYPE_BLUETOOTH,
+ RFKILL_TYPE_UWB,
RFKILL_TYPE_MAX,
};
diff --git a/net/rfkill/rfkill-input.c b/net/rfkill/rfkill-input.c
index 9f746be..8e4516a 100644
--- a/net/rfkill/rfkill-input.c
+++ b/net/rfkill/rfkill-input.c
@@ -81,6 +81,7 @@ static void rfkill_schedule_toggle(struct rfkill_task *task)
static DEFINE_RFKILL_TASK(rfkill_wlan, RFKILL_TYPE_WLAN);
static DEFINE_RFKILL_TASK(rfkill_bt, RFKILL_TYPE_BLUETOOTH);
+static DEFINE_RFKILL_TASK(rfkill_uwb, RFKILL_TYPE_UWB);
static void rfkill_event(struct input_handle *handle, unsigned int type,
unsigned int code, int down)
@@ -93,6 +94,9 @@ static void rfkill_event(struct input_handle *handle, unsigned int type,
case KEY_BLUETOOTH:
rfkill_schedule_toggle(&rfkill_bt);
break;
+ case KEY_UWB:
+ rfkill_schedule_toggle(&rfkill_uwb);
+ break;
default:
break;
}
@@ -148,6 +152,11 @@ static const struct input_device_id rfkill_ids[] = {
.evbit = { BIT(EV_KEY) },
.keybit = { [LONG(KEY_BLUETOOTH)] = BIT(KEY_BLUETOOTH) },
},
+ {
+ .flags = INPUT_DEVICE_ID_MATCH_EVBIT | INPUT_DEVICE_ID_MATCH_KEYBIT,
+ .evbit = { BIT(EV_KEY) },
+ .keybit = { [LONG(KEY_UWB)] = BIT(KEY_UWB) },
+ },
{ }
};
diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c
index 50e0102..03ed7fd 100644
--- a/net/rfkill/rfkill.c
+++ b/net/rfkill/rfkill.c
@@ -106,6 +106,9 @@ static ssize_t rfkill_type_show(struct device *dev,
case RFKILL_TYPE_BLUETOOTH:
type = "bluetooth";
break;
+ case RFKILL_TYPE_UWB:
+ type = "ultrawideband";
+ break;
default:
BUG();
}
--
1.5.3
^ permalink raw reply related
* [RFC 3/3] rfkill: Add rfkill documentation
From: Ivo van Doorn @ 2007-09-08 15:12 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
linux-wireless-u79uwXL29TY76Z2rM5mHXA, Inaky Perez-Gonzalez
In-Reply-To: <200709081710.56744.IvDoorn-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Add a documentation file which contains
a short description about rfkill with some
notes about drivers and the userspace interface.
Signed-off-by: Ivo van Doorn <IvDoorn-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
Documentation/rfkill.txt | 88 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 88 insertions(+), 0 deletions(-)
create mode 100644 Documentation/rfkill.txt
diff --git a/Documentation/rfkill.txt b/Documentation/rfkill.txt
new file mode 100644
index 0000000..93c76fc
--- /dev/null
+++ b/Documentation/rfkill.txt
@@ -0,0 +1,88 @@
+rfkill - RF switch subsystem support
+====================================
+
+1 Implementation details
+2 Driver support
+3 Userspace support
+
+===============================================================================
+1: Implementation details
+
+The rfkill switch subsystem offers support for keys often found on laptops
+to enable wireless devices like WiFi and Bluetooth.
+
+This is done by providing the user 3 possibilities:
+ - The rfkill system handles all events, userspace is not aware of events.
+ - The rfkill system handles all events, userspace is informed about the event.
+ - The rfkill system does not handle events, userspace handles all events.
+
+The buttons to enable and disable the wireless radios are important in
+situations where the user is for example using his laptop on a location where
+wireless radios _must_ be disabled (e.g airplanes).
+Because of this requirement, userspace support for the keys should not be
+made mandatory. Because userspace might want to perform some additional smarter
+tasks when the key is pressed, rfkill still provides userspace the possibility
+to take over the task to handle the key events.
+
+The system inside the kernel has been split into 2 seperate sections:
+ 1 - RFKILL
+ 2 - RFKILL_INPUT
+
+The first option enables rfkill support and will make sure userspace will
+be notified of any events through the input device. It also creates several
+sysfs entries which can be used by userspace. See section "Userspace support".
+
+The second option provides a rfkill input handler. This handler will
+listen to all rfkill key events and will toggle the radio accordingly,
+with this option enabled userspace could either do nothing or simply
+perform monitoring tasks.
+
+====================================
+2: Driver support
+
+Drivers who wish to build in rfkill subsystem support should
+make sure their driver depends of the Kconfig option RFKILL, it should
+_not_ depend on RFKILL_INPUT.
+
+Unless key events trigger a interrupt to which the driver listens, polling
+will be required to determine the key state changes. For this the input
+layer providers the input-polldev handler.
+
+A driver should implement a few steps to correctly make use of the
+rfkill subsystem. First for non-polling drivers:
+
+ - rfkill_allocate()
+ - input_allocate_device()
+ - rfkill_register()
+ - input_register_device()
+
+For polling drivers:
+
+ - rfkill_allocate()
+ - input_allocate_polled_device()
+ - rfkill_register()
+ - input_register_polled_device()
+
+When a key event has been detected, the correct event should be
+send over the input device which has been registered by the driver.
+
+====================================
+3: Userspace support
+
+For each key a input device will be created which will send out the correct
+key event when the rfkill key has been pressed.
+
+The following sysfs entries will be created:
+
+ name: Name assigned by driver to this key (interface or driver name).
+ type: Name of the key type ("wlan", "bluetooth", etc).
+ state: Current state of the key. 1: On, 0: Off.
+ claim: 1: Userspace handles events, 0: Kernel handles events
+
+Both the "state" and "claim" entries are also writable. For the "state" entry
+this means that when 1 or 0 is written all radios will be toggled accordingly.
+For the "claim" entry writing 1 to it will mean that the kernel will no longer
+handle key events even though RFKILL_INPUT input was enabled. When "claim" has
+been set to 0, userspace should make sure it will listen for the input events
+or check the sysfs "state" entry regularly to correctly perform the required
+tasks when the rkfill key is pressed.
--
1.5.3
^ permalink raw reply related
* Re: RFC: possible NAPI improvements to reduce interrupt rates for low traffic rates
From: Andi Kleen @ 2007-09-08 16:32 UTC (permalink / raw)
To: James Chapman; +Cc: netdev, hadi, davem, jeff, mandeep.baines, ossthema
In-Reply-To: <200709061416.l86EG0Vb017675@quickie.katalix.com>
James Chapman <jchapman@katalix.com> writes:
>
> Clearly, keeping a device in polled mode for 1-2 jiffies
1-2 jiffies can be a long time on a HZ=100 kernel (20ms). A fast CPU
could do a lot of loops in this time, which would be waste of power
and CPU time.
On some platforms the precise timers (like ktime_get()) can be slow,
but often they are fast. It might make sense to use a shorter
constant time wait on those with fast timers at least. Right now this
cannot be known by portable code, but there was a proposal some time
ago to export some global estimate to tell how fast
ktime_get().et.al. are. That could be reviewed.
-Andi
^ permalink raw reply
* Re: RFC: possible NAPI improvements to reduce interrupt rates for low traffic rates
From: Mandeep Singh Baines @ 2007-09-08 16:42 UTC (permalink / raw)
To: James Chapman
Cc: Mandeep Singh Baines, netdev, hadi, davem, jeff, ossthema,
Stephen Hemminger
In-Reply-To: <46E11C07.50307@katalix.com>
James Chapman (jchapman@katalix.com) wrote:
> Hi Mandeep,
>
> Mandeep Singh Baines wrote:
>> Hi James,
>> I like the idea of staying in poll longer.
>> My comments are similar to what Jamal and Stephen have already
>> said.
>> A tunable (via sysfs) would be nice.
>> A timer might be preferred to jiffy polling. Jiffy polling will not
>> increase latency the way a timer would. However, jiffy polling will
>> consume a lot more
>> CPU than a timer would. Hence more power. For jiffy polling, you
>> could have thousands of calls to poll for a single packet received.
>> While in a timer approach the numbers of polls per packet is upper
>> bound to 2.
>
> Why would using a timer to hold off the napi_complete() rather than
> jiffy count limit the polls per packet to 2?
>
I was thinking a timer could be used in the way suggested in Jamal's
paper. The driver would do nothing (park) until the timer expires. So
there would be no calls to poll for the duration of the timer. Hence,
this approach would add extra latency not present in a jiffy polling
approach.
>> I think it may difficult to make poll efficient for the no packet
>> case because,
>> at a minimum, you have to poll the device state via the has_work
>> method.
>
> Why wouldn't it be efficient? It would usually be done by reading an
> "interrupt pending" register.
>
Reading the "interrupt pending" register would require an MMIO read.
MMIO reads are very expensive. In some systems the latency of an MMIO
read can be 1000x that of an L1 cache access.
You can use mmio_test to measure MMIO read latency on your system:
http://svn.gnumonks.org/trunk/mmio_test/
However, work_done() doesn't have to be inefficient. For newer
devices you can implement work_done() without an MMIO read by polling
the next ring entry status in memory or some other mechanism. Since
PCI is coherent, acceses to this memory location could be cached
after the first miss. For architectures where PCI is not coherent you'd
have to go to memory for every poll. So for these architectures has_work()
will be moderately expensive (memory access) even when has_work() does
not require an MMIO read. This might affect home routers: not sure if MIPS or
ARM have coherent PCI.
>> If you go to a timer implementation then having a tunable will be
>> important.
>> Different appications will have different requirements on delay and
>> jitter.
>> Some applications may want to trade delay/jitter for less CPU/power
>> consumption and some may not.
>
> I agree. I'm leaning towards a new ethtool parameter to control this
> to be consistent with other per-device tunables.
>
>> imho, the work should definately be pursued further:)
>
> Thanks Mandeep. I'll try. :)
>
> --
> James Chapman
> Katalix Systems Ltd
> http://www.katalix.com
> Catalysts for your Embedded Linux software development
>
^ permalink raw reply
* What's in netdev-2.6.git?
From: Jeff Garzik @ 2007-09-08 17:24 UTC (permalink / raw)
To: netdev; +Cc: LKML
The following is the current contents of
git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
(recently rebased)
The 'upstream' branch is what I will push upstream for 2.6.24, once
the merge window opens. I also have a pile in my inbox I need to go
over, while I was away at conference.
List of branches
----------------
ALL == contents of branches: upstream, stats, ethtool
ethtool
* master
stats
upstream
branch upstream
---------------
Andrew Morton (1):
libertas: printk warning fixes
Auke Kok (13):
e1000e: New pci-express e1000 driver (currently for ICH9 devices only)
e1000e: Remove unused or empty labels
e1000e: Make a few functions static
e1000e: remove duplicate shadowing reference to adapter->hw
e1000e: Fix header includes [v2]
e1000e: remove namespace collisions with e1000
e1000e: Use dma_alloc_coherent where possible
e1000e: Use time_after to account for jiffies wrapping
e1000e: error handling for pci_map_single calls.
e1000e: Remove two compile warnings
e1000e: retire last_tx_tso workaround
e1000e: Add read code and printout of PBA number (board identifier)
e1000e: Remove conditional packet split disable flag
Bill Nottingham (1):
remove gratuitous space in airo module description
Brajesh Dave (1):
libertas: advertise 11g ad-hoc rates
Brian King (6):
ibmveth: Enable TCP checksum offload
ibmveth: Implement ethtool hooks to enable/disable checksum offload
ibmveth: Add ethtool TSO handlers
ibmveth: Add ethtool driver stats hooks
ibmveth: Remove dead frag processing code
ibmveth: Remove use of bitfields
Dan Williams (31):
libertas: kill ieeetypes_capinfo bitfield, use ieee80211.h types
libertas: rename WLAN_802_11_KEY to enc_key and clean up usage
libertas: clean up indentation in libertas_association_worker
libertas: clean up 802.11 IE post-scan handling
libertas: remove if_bootcmd.c
libertas: fix mixed-case abuse in cmd_ds_802_11_scan
libertas: fix mixed-case abuse in cmd_ds_802_11_ad_hoc_result
libertas: fix mixed-case abuse in cmd_ds_802_11_ad_hoc_start
libertas: re-uppercase command defines and other constants
libertas: fix debug build breakage due to field rename
libertas: remove thread.h and make kthread usage clearer
libertas: new mesh control knobs
libertas: bump version to 322.p1
libertas: fix more mixed-case abuse
libertas: move generic firmware reset command to common code
libertas: wlan_ -> libertas_ function prefix renames for main.c
libertas: simplify and clean up data rate handling
libertas: fix WEXT quality reporting
libertas: send association events on adhoc reassociation
libertas: push mesh beacon bit to userspace in scan results
libertas: fix assignment of WEP key type
libertas: push WEXT scan requests to a work queue
libertas: fix misspelling in debug message
libertas: ignore spurious mesh autostart events
libertas: better descriptions for association errors
libertas: fix sparse-reported problems
libertas: bump driver version
libertas: fix inadvertant removal of bits from commit 831441862956fffa17b9801db37e6ea1650b0f69
libertas: reorganize and simplify init sequence
libertas: don't stomp on interface-specific private data
libertas: send reset command directly instead of calling libertas_reset_device
Daniel Drake (2):
zd1211rw: Add ID for Sitecom WL-162
zd1211rw: Add ID for ZyXEL M-202 XtremeMIMO
Denis Cheng (1):
drivers/net/cxgb3: removed several unneeded zero initilization
Divy Le Ray (9):
cxgb3 - MAC workaround update
cxgb3 - Update rx coalescing length
cxgb3 - SGE doorbell overflow warning
cxgb3 - use immediate data for offload Tx
cxgb3 - Expose HW memory page info
cxgb3 - tighten checks on TID values
cxgb3 - Fatal error update
cxgb3 - log adapter serial number
cxgb3 - Update internal memory management
Don Fry (1):
pcnet32: add suspend and resume capability
Eugene Teo (1):
drivers/net/wireless/libertas/cmd.c: fix adapter->driver_lock dereference
Faidon Liambotis (2):
Kconfig: order options
Kconfig: remove references of pcmcia-cs
Holger Schurig (33):
libertas: remove fw.c
libertas: fix one more sparse warning
libertas: make more functions static & remove unused functions
libertas: uppercase some #defines
libertas: access mesh_dev more carefully
libertas: tune hardware info output
libertas: remove debugmode
libertas: make the hex dumper nicer
libertas: remove a hundred CMD_RET_xxx definitions
libertas: use LBS_DEB_HOST for host-to-card communications
libertas: use LBS_DEB_HOST for host-to-card communications
add support for Marvell 8385 CF cards
libertas: remove unused adapter->prev_XXXX variables
libertas: remove adapter->{rx,tx}antenna
libertas: remove adapter->prescan
libertas: remove adapter->scanprobes
libertas: remove adapter->pkttxctrl
libertas: remove adapter->txrate
libertas: remove adapter->rxpd_rate
libertas: remove adapter->{data,bcn}_avg_factor
libertas: remove adapter->nullpktinterval
libertas: remove adapter->locallisteninterval
libertas: remove adapter->multipledtim
libertas: remove adapter->atimwindow
libertas: remove adapter->regiontableindex
libertas: remove adapter->listeninterval
libertas: remove adapter->adhoc_grate_enabled
libertas: remove adapter->beaconperiod
libertas: remove adapter->scanmode
libertas: remove adapter->scantype
libertas: remove bss_descriptior->networktsf
libertas: remove bss_descriptor->timestamp
libertas: fix two debug statements in cmdresp.c
Jean Tourrilhes (1):
libertas: fix a few wext abuses...
Jeff Garzik (6):
[netdrvr] skfp: remove a bunch of dead code
drivers/net/skfp: Remove dead code referencing pci_find_device()
[netdrvr] 8139cp, 8139too: convert to generic DMA
[netdrvr] 8139too: tab-align enums and structs; remove dead code
[netdrvr] 8139too: clean up I/O remapping
[netdrvr] ns83820: add ethtool media support
Jeremy Fitzhardinge (1):
xen-netfront: remove dead code
Jesper Juhl (2):
Clean up duplicate includes in drivers/net/
net: Kill some unneeded allocation return value casts in libertas
Johannes Berg (1):
rtl8187: remove IEEE80211_HW_DATA_NULLFUNC_ACK
John W. Linville (1):
libertas: remove unused adhoc_rates_b definition
Komuro (1):
dl2k: add Sundance/Tamarack TC902x Gigabit Ethernet Adapter support
Luis Carlos Cobo (7):
libertas: specific mesh scan for mshX interface
Support for mesh autostart deactivation through sysfs
libertas: Avoid MESH_AUTOSTARTED spam on console
libertas: revert CAPINFO_MASK to its original value
libertas: keep mesh autostart enabled while asleep
libertas: monitor mode support for OLPC firmware
libertas: pass boot2 version to firmware
Marek Vašut (1):
libertas: region code values specified as 8bit
Mariusz Kozlowski (6):
drivers/net/wireless/prism54/oid_mgt.c: kmalloc + memset conversion to kzalloc
drivers/net/sb1250-mac.c: kmalloc + memset conversion to kcalloc
drivers/net/via-velocity.c: mostly kmalloc + memset conversion to kcalloc
net/tulip/xircom_cb.c: remove superfulous priv assignment
drivers/net: remove superfluous memset
drivers/net/wireless/wl3501_cs.c: remove redundant memset
Mark Hindley (1):
3c59x: check return of pci_enable_device()
Masakazu Mokuno (2):
PS3: changed the way to handle tx skbs
PS3: Remove the workaround no longer needed
Matthias Kaehlcke (1):
Use mutex instead of semaphore in the Host AP driver
Olaf Hering (1):
bmac: add simple ethtool support for network manager
Oliver Neukum (1):
support for USB autosuspend in the asix driver
Olof Johansson (10):
pasemi_mac: Abstract out register access
pasemi_mac: Stop using the pci config space accessors for register read/writes
pasemi_mac: Enable L2 caching of packet headers
pasemi_mac: Fix memcpy amount for short receives
pasemi_mac: RX performance tweaks
pasemi_mac: Batch up TX buffer frees
pasemi_mac: Enable LLTX
pasemi_mac: Fix TX ring wrap checking
pasemi_mac: Fix RX checksum flags
pasemi_mac: Clean TX ring in poll
Pierre Ossman (1):
libertas: properly end commands on hardware failure
Rafael J. Wysocki (1):
uli526x: Add suspend and resume routines (updated)
Ralf Baechle (1):
IOC3: Switch hw checksumming to ethtool configurable.
Richard Knutsson (2):
drivers/net/tokenring: Convert to generic boolean
drivers/net/3c505: Convert to generic boolean
Sivakumar Subramani (3):
S2IO: Making MSIX as default intr_type
S2IO: Fixes in MSIX related code.
S2IO: Fixed Link LED issue when MSI-X is enabled
Stephen Hemminger (6):
sky2: fe+ chip support
sky2: use debugfs rename
sky2: document GPHY_CTRL bits
sky2: dont restrict config space access
sky2: advanced error reporting
sky2: use pci_config access functions
Surya Prabhakar N (1):
drivers/net/tokenring/3c359.c
Ulrich Kunitz (3):
zd1211rw: monitor all packets
zd1211rw: removed noisy debug messages
zd1211rw: consistent handling of ZD1211 specific rates
Yoann Padioleau (2):
dev->priv to netdev_priv(dev), for drivers/net/wireless
dev->priv to netdev_priv(dev), drivers/net/tokenring/
drivers/net/3c505.c | 67
drivers/net/3c59x.c | 36
drivers/net/8139cp.c | 31
drivers/net/8139too.c | 410 +-
drivers/net/Kconfig | 50
drivers/net/Makefile | 1
drivers/net/atl1/atl1_main.c | 1
drivers/net/bfin_mac.c | 5
drivers/net/bmac.c | 13
drivers/net/bonding/bond_sysfs.c | 1
drivers/net/cxgb3/common.h | 5
drivers/net/cxgb3/cxgb3_ctl_defs.h | 52
drivers/net/cxgb3/cxgb3_defs.h | 20
drivers/net/cxgb3/cxgb3_main.c | 16
drivers/net/cxgb3/cxgb3_offload.c | 35
drivers/net/cxgb3/regs.h | 10
drivers/net/cxgb3/sge.c | 21
drivers/net/cxgb3/t3_hw.c | 5
drivers/net/cxgb3/xgmac.c | 22
drivers/net/dl2k.c | 23
drivers/net/dl2k.h | 1
drivers/net/e1000e/82571.c | 1351 ++++++++
drivers/net/e1000e/Makefile | 37
drivers/net/e1000e/defines.h | 739 ++++
drivers/net/e1000e/e1000.h | 512 +++
drivers/net/e1000e/es2lan.c | 1232 +++++++
drivers/net/e1000e/ethtool.c | 1774 ++++++++++
drivers/net/e1000e/hw.h | 864 +++++
drivers/net/e1000e/ich8lan.c | 2225 +++++++++++++
drivers/net/e1000e/lib.c | 2487 +++++++++++++++
drivers/net/e1000e/netdev.c | 4449 +++++++++++++++++++++++++++
drivers/net/e1000e/param.c | 382 ++
drivers/net/e1000e/phy.c | 1773 ++++++++++
drivers/net/fs_enet/fs_enet-main.c | 3
drivers/net/gianfar.h | 1
drivers/net/gianfar_ethtool.c | 1
drivers/net/ibmveth.c | 319 +
drivers/net/ibmveth.h | 55
drivers/net/ioc3-eth.c | 48
drivers/net/irda/kingsun-sir.c | 1
drivers/net/irda/mcs7780.c | 1
drivers/net/mipsnet.c | 1
drivers/net/myri10ge/myri10ge.c | 1
drivers/net/netxen/netxen_nic_main.c | 2
drivers/net/ns83820.c | 151
drivers/net/pasemi_mac.c | 389 +-
drivers/net/pasemi_mac.h | 13
drivers/net/pcnet32.c | 35
drivers/net/ps3_gelic_net.c | 156
drivers/net/qla3xxx.c | 1
drivers/net/s2io-regs.h | 2
drivers/net/s2io.c | 129
drivers/net/s2io.h | 7
drivers/net/sb1250-mac.c | 6
drivers/net/skfp/drvfbi.c | 733 ----
drivers/net/skfp/h/mbuf.h | 4
drivers/net/skfp/h/skfbi.h | 788 ----
drivers/net/skfp/h/skfbiinc.h | 26
drivers/net/skfp/h/targethw.h | 33
drivers/net/skfp/hwt.c | 42
drivers/net/sky2.c | 274 -
drivers/net/sky2.h | 104
drivers/net/sunlance.c | 1
drivers/net/tokenring/3c359.c | 64
drivers/net/tokenring/ibmtr.c | 43
drivers/net/tokenring/lanstreamer.c | 32
drivers/net/tokenring/madgemc.c | 4
drivers/net/tokenring/olympic.c | 36
drivers/net/tokenring/tmspci.c | 4
drivers/net/tsi108_eth.c | 1
drivers/net/tulip/uli526x.c | 108
drivers/net/tulip/xircom_cb.c | 1
drivers/net/usb/asix.c | 1
drivers/net/usb/pegasus.c | 1
drivers/net/usb/rtl8150.c | 1
drivers/net/usb/usbnet.c | 30
drivers/net/usb/usbnet.h | 1
drivers/net/via-velocity.c | 24
drivers/net/wireless/Kconfig | 92
drivers/net/wireless/Makefile | 2
drivers/net/wireless/airo.c | 4
drivers/net/wireless/arlan-proc.c | 14
drivers/net/wireless/hostap/hostap_cs.c | 2
drivers/net/wireless/hostap/hostap_hw.c | 16
drivers/net/wireless/hostap/hostap_ioctl.c | 14
drivers/net/wireless/hostap/hostap_wlan.h | 3
drivers/net/wireless/ipw2200.h | 1
drivers/net/wireless/libertas/11d.c | 124
drivers/net/wireless/libertas/11d.h | 4
drivers/net/wireless/libertas/Makefile | 5
drivers/net/wireless/libertas/assoc.c | 99
drivers/net/wireless/libertas/assoc.h | 2
drivers/net/wireless/libertas/cmd.c | 666 ++--
drivers/net/wireless/libertas/cmdresp.c | 374 +-
drivers/net/wireless/libertas/debugfs.c | 139
drivers/net/wireless/libertas/decl.h | 19
drivers/net/wireless/libertas/defs.h | 157
drivers/net/wireless/libertas/dev.h | 81
drivers/net/wireless/libertas/ethtool.c | 11
drivers/net/wireless/libertas/fw.c | 349 --
drivers/net/wireless/libertas/host.h | 445 +-
drivers/net/wireless/libertas/hostcmd.h | 81
drivers/net/wireless/libertas/if_bootcmd.c | 40
drivers/net/wireless/libertas/if_cs.c | 961 +++++
drivers/net/wireless/libertas/if_usb.c | 370 +-
drivers/net/wireless/libertas/if_usb.h | 8
drivers/net/wireless/libertas/join.c | 471 +-
drivers/net/wireless/libertas/join.h | 35
drivers/net/wireless/libertas/main.c | 874 +++--
drivers/net/wireless/libertas/rx.c | 85
drivers/net/wireless/libertas/scan.c | 585 +--
drivers/net/wireless/libertas/scan.h | 36
drivers/net/wireless/libertas/thread.h | 52
drivers/net/wireless/libertas/tx.c | 41
drivers/net/wireless/libertas/types.h | 67
drivers/net/wireless/libertas/wext.c | 391 --
drivers/net/wireless/libertas/wext.h | 9
drivers/net/wireless/orinoco_tmd.c | 2
drivers/net/wireless/prism54/isl_ioctl.c | 6
drivers/net/wireless/prism54/oid_mgt.c | 4
drivers/net/wireless/ray_cs.c | 66
drivers/net/wireless/rtl8187_dev.c | 3
drivers/net/wireless/strip.c | 2
drivers/net/wireless/wl3501_cs.c | 67
drivers/net/wireless/zd1211rw/zd_chip.c | 69
drivers/net/wireless/zd1211rw/zd_chip.h | 5
drivers/net/wireless/zd1211rw/zd_def.h | 1
drivers/net/wireless/zd1211rw/zd_ieee80211.h | 43
drivers/net/wireless/zd1211rw/zd_mac.c | 143
drivers/net/wireless/zd1211rw/zd_mac.h | 65
drivers/net/wireless/zd1211rw/zd_usb.c | 2
drivers/net/xen-netfront.c | 37
132 files changed, 23510 insertions(+), 6062 deletions(-)
branch stats
------------
Jeff Garzik (1):
drivers/net: statistics cleanup #1 -- save memory and shrink code
drivers/net/3c501.c | 41 ++++-------------
drivers/net/3c501.h | 2
drivers/net/3c507.c | 52 ++++++++--------------
drivers/net/7990.c | 47 ++++++++------------
drivers/net/7990.h | 2
drivers/net/82596.c | 65 +++++++++++-----------------
drivers/net/a2065.c | 51 +++++++++-------------
drivers/net/at1700.c | 39 +++++-----------
drivers/net/atarilance.c | 58 ++++++++-----------------
drivers/net/atp.c | 49 +++++++--------------
drivers/net/au1000_eth.c | 23 +--------
drivers/net/au1000_eth.h | 1
drivers/net/bfin_mac.c | 25 ++--------
drivers/net/bfin_mac.h | 2
drivers/net/bmac.c | 48 ++++++++------------
drivers/net/de600.c | 15 +-----
drivers/net/de600.h | 1
drivers/net/de620.c | 26 +++--------
drivers/net/declance.c | 52 +++++++++-------------
drivers/net/depca.c | 42 ++++++------------
drivers/net/dgrs.c | 24 +---------
drivers/net/dm9000.c | 29 +++---------
drivers/net/e100.c | 23 +++------
drivers/net/eepro.c | 47 +++++++-------------
drivers/net/eexpress.c | 56 +++++++++---------------
drivers/net/eql.c | 12 -----
drivers/net/eth16i.c | 49 ++++++++-------------
drivers/net/ewrk3.c | 37 +++++-----------
drivers/net/fec.c | 50 ++++++++-------------
drivers/net/gianfar.c | 40 ++++++-----------
drivers/net/hplance.c | 1
drivers/net/ibmlana.c | 37 ++++++----------
drivers/net/ibmlana.h | 1
drivers/net/ibmveth.c | 18 ++-----
drivers/net/ifb.c | 20 --------
drivers/net/iseries_veth.c | 22 ++-------
drivers/net/lib82596.c | 64 +++++++++++----------------
drivers/net/lp486e.c | 56 +++++++++---------------
drivers/net/mace.c | 51 ++++++++--------------
drivers/net/macmace.c | 49 ++++++++-------------
drivers/net/meth.c | 28 ++++--------
drivers/net/mipsnet.c | 26 ++---------
drivers/net/mv643xx_eth.c | 25 +---------
drivers/net/myri_sbus.c | 20 +++-----
drivers/net/myri_sbus.h | 1
drivers/net/netx-eth.c | 18 ++-----
drivers/net/ni5010.c | 47 +++++---------------
drivers/net/pasemi_mac.c | 17 +------
drivers/net/pasemi_mac.h | 1
drivers/net/pci-skeleton.c | 74 +++++++++-----------------------
drivers/net/plip.c | 32 ++++---------
drivers/net/qla3xxx.c | 23 +++------
drivers/net/qla3xxx.h | 1
drivers/net/rionet.c | 20 ++------
drivers/net/rrunner.c | 31 ++++---------
drivers/net/rrunner.h | 2
drivers/net/saa9730.c | 93 ++++++++++++++++++----------------------
drivers/net/saa9730.h | 1
drivers/net/sb1000.c | 19 ++------
drivers/net/sb1250-mac.c | 37 +++-------------
drivers/net/seeq8005.c | 33 ++++----------
drivers/net/sgiseeq.c | 34 +++++---------
drivers/net/shaper.c | 15 +-----
drivers/net/sis190.c | 19 ++------
drivers/net/sis900.c | 56 ++++++++----------------
drivers/net/smc911x.c | 77 ++++++++++++---------------------
drivers/net/smc9194.c | 59 +++++++------------------
drivers/net/smc91x.c | 69 ++++++++++-------------------
drivers/net/spider_net.c | 31 +++----------
drivers/net/spider_net.h | 1
drivers/net/sun3lance.c | 53 ++++++++--------------
drivers/net/sunlance.c | 87 ++++++++++++++++---------------------
drivers/net/sunqe.c | 104 ++++++++++++++++++++-------------------------
drivers/net/sunqe.h | 1
drivers/net/tun.c | 23 +++------
drivers/net/ucc_geth.c | 27 +++--------
drivers/net/ucc_geth.h | 1
drivers/net/xen-netfront.c | 26 +++--------
drivers/net/yellowfin.c | 63 +++++++++++----------------
drivers/net/znet.c | 50 ++++++++-------------
include/linux/if_eql.h | 1
include/linux/if_shaper.h | 1
include/linux/if_tun.h | 1
83 files changed, 930 insertions(+), 1745 deletions(-)
branch ethtool
--------------
Jeff Garzik (1):
[ETHTOOL] Provide default behaviors for a few ethtool sub-ioctls
drivers/net/8139cp.c | 3 ---
drivers/net/atl1/atl1_ethtool.c | 3 ---
drivers/net/bnx2.c | 3 ---
drivers/net/bonding/bond_main.c | 4 ----
drivers/net/chelsio/cxgb2.c | 3 ---
drivers/net/cxgb3/cxgb3_main.c | 3 ---
drivers/net/e1000/e1000_ethtool.c | 2 --
drivers/net/ehea/ehea_ethtool.c | 3 ---
drivers/net/epic100.c | 2 --
drivers/net/fealnx.c | 2 --
drivers/net/fec_8xx/fec_main.c | 2 --
drivers/net/forcedeth.c | 3 ---
drivers/net/fs_enet/fs_enet-main.c | 2 --
drivers/net/ibm_emac/ibm_emac_core.c | 2 --
drivers/net/ibmveth.c | 6 +-----
drivers/net/ixgb/ixgb_ethtool.c | 2 --
drivers/net/loopback.c | 1 -
drivers/net/macvlan.c | 4 ----
drivers/net/mv643xx_eth.c | 1 -
drivers/net/myri10ge/myri10ge.c | 3 ---
drivers/net/ne2k-pci.c | 2 --
drivers/net/netxen/netxen_nic_ethtool.c | 3 ---
drivers/net/pcnet32.c | 3 ---
drivers/net/r8169.c | 3 ---
drivers/net/s2io.c | 3 ---
drivers/net/sc92031.c | 4 ----
drivers/net/skge.c | 2 --
drivers/net/sky2.c | 3 ---
drivers/net/spider_net_ethtool.c | 1 -
drivers/net/tg3.c | 3 ---
drivers/net/tulip/de2104x.c | 2 --
drivers/net/tulip/winbond-840.c | 2 --
drivers/net/typhoon.c | 3 ---
drivers/net/ucc_geth_ethtool.c | 2 --
drivers/net/via-rhine.c | 2 --
drivers/net/xen-netfront.c | 3 ---
net/bridge/br_device.c | 3 ---
net/core/ethtool.c | 32 +++++++++++++++++---------------
38 files changed, 18 insertions(+), 112 deletions(-)
^ permalink raw reply
* Re: [PATCH v3 2/2][BNX2]: Add iSCSI support to BNX2 devices.
From: Anil Veerabhadrappa @ 2007-09-08 17:57 UTC (permalink / raw)
To: Michael Chan
Cc: Christoph Hellwig, Mike Christie, davem, netdev, open-iscsi,
Tal Moyal, Robert Lusinsky, Uri Elzur, SCSI Mailing List
In-Reply-To: <1551EAE59135BE47B544934E30FC4FC002AABA51@nt-irva-0751.brcm.ad.broadcom.com>
On Sat, 2007-09-08 at 07:49 -0700, Michael Chan wrote:
> Christoph Hellwig wrote:
>
> > Most of it should just go away, and the other bits shouldn't
> > change over
> > the lifetime of the driver except for additions. So there
> > really isn't
> > any point in auto-generating it.
> >
>
> Yes, I agree with Mike Christie on this. These values in
> question are defined in iSCSI RFC and therefore should be defined
> in a common file.
Sure, we will remove these duplicate defines from bnx2i header file and
work of iscsi_proto.h macro definitions
^ permalink raw reply
* Re: [NFS] problems with lockd in 2.6.22.6
From: Wolfgang Walter @ 2007-09-08 18:20 UTC (permalink / raw)
To: J. Bruce Fields; +Cc: neilb, netdev, nfs
In-Reply-To: <20070907161945.GI24638@fieldses.org>
On Friday 07 September 2007, J. Bruce Fields wrote:
> On Fri, Sep 07, 2007 at 05:49:55PM +0200, Wolfgang Walter wrote:
> > Hello,
> >
> > 3) For unknown reason these sockets then remain open. In the morning
> > when people start their workstation again we therefor not only get a
> > lot of these messages again but often the nfs-server does not proberly
> > work any more. Restarting the nfs-daemon is a workaround.
>
I wonder why these sockets remain open, by the way. Even if they aren't used
for days. Such a socket only gets deleted when the 81. socket must be opened.
If I do not misunderstand the idea then temporary sockets should be destroyed
after some time without activity by svc_age_temp_sockets.
Now I wonder how svc_age_temp_sockets works. Does it ever close and delete a
temporary socket at all?
static void
svc_age_temp_sockets(unsigned long closure)
{
struct svc_serv *serv = (struct svc_serv *)closure;
struct svc_sock *svsk;
struct list_head *le, *next;
LIST_HEAD(to_be_aged);
dprintk("svc_age_temp_sockets\n");
if (!spin_trylock_bh(&serv->sv_lock)) {
/* busy, try again 1 sec later */
dprintk("svc_age_temp_sockets: busy\n");
mod_timer(&serv->sv_temptimer, jiffies + HZ);
return;
}
list_for_each_safe(le, next, &serv->sv_tempsocks) {
svsk = list_entry(le, struct svc_sock, sk_list);
if (!test_and_set_bit(SK_OLD, &svsk->sk_flags))
continue;
if (atomic_read(&svsk->sk_inuse) || test_bit(SK_BUSY, &svsk->sk_flags))
continue;
####
doesn't this mean that svsk->sk_inuse must be zero which means that SK_DEAD is set?
and wouldn't that mean that svc_delete_socket already has been called for that socket
(and probably is already closed) ?
and wouldn't that mean that svc_sock_enqueue which is called later does not make any
sense (it checks for SK_DEAD)?
####
atomic_inc(&svsk->sk_inuse);
list_move(le, &to_be_aged);
set_bit(SK_CLOSE, &svsk->sk_flags);
set_bit(SK_DETACHED, &svsk->sk_flags);
}
spin_unlock_bh(&serv->sv_lock);
while (!list_empty(&to_be_aged)) {
le = to_be_aged.next;
/* fiddling the sk_list node is safe 'cos we're SK_DETACHED */
list_del_init(le);
svsk = list_entry(le, struct svc_sock, sk_list);
dprintk("queuing svsk %p for closing, %lu seconds old\n",
svsk, get_seconds() - svsk->sk_lastrecv);
/* a thread will dequeue and close it soon */
svc_sock_enqueue(svsk);
svc_sock_put(svsk);
}
mod_timer(&serv->sv_temptimer, jiffies + svc_conn_age_period * HZ);
}
Regards,
--
Wolfgang Walter
Studentenwerk München
Anstalt des öffentlichen Rechts
^ permalink raw reply
* [PATCH, 2nd try] remove setup of platform device from jazzsonic.c
From: Thomas Bogendoerfer @ 2007-09-08 19:46 UTC (permalink / raw)
To: akpm, jgarzik; +Cc: netdev
remove setup platform device from jazzsonic, which is done in arch code now
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
---
diff --git a/drivers/net/jazzsonic.c b/drivers/net/jazzsonic.c
index 75f6f44..435060a 100644
--- a/drivers/net/jazzsonic.c
+++ b/drivers/net/jazzsonic.c
@@ -45,7 +45,6 @@
#include <asm/jazzdma.h>
static char jazz_sonic_string[] = "jazzsonic";
-static struct platform_device *jazz_sonic_device;
#define SONIC_MEM_SIZE 0x100
@@ -70,14 +69,6 @@ static unsigned int sonic_debug = 1;
#endif
/*
- * Base address and interrupt of the SONIC controller on JAZZ boards
- */
-static struct {
- unsigned int port;
- unsigned int irq;
-} sonic_portlist[] = { {JAZZ_ETHERNET_BASE, JAZZ_ETHERNET_IRQ}, {0, 0}};
-
-/*
* We cannot use station (ethernet) address prefixes to detect the
* sonic controller since these are board manufacturer depended.
* So we check for known Silicon Revision IDs instead.
@@ -215,13 +206,12 @@ static int __init jazz_sonic_probe(struct platform_device *pdev)
{
struct net_device *dev;
struct sonic_local *lp;
+ struct resource *res;
int err = 0;
int i;
- /*
- * Don't probe if we're not running on a Jazz board.
- */
- if (mips_machgroup != MACH_GROUP_JAZZ)
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!res)
return -ENODEV;
dev = alloc_etherdev(sizeof(struct sonic_local));
@@ -235,20 +225,9 @@ static int __init jazz_sonic_probe(struct platform_device *pdev)
netdev_boot_setup_check(dev);
- if (dev->base_addr >= KSEG0) { /* Check a single specified location. */
- err = sonic_probe1(dev);
- } else if (dev->base_addr != 0) { /* Don't probe at all. */
- err = -ENXIO;
- } else {
- for (i = 0; sonic_portlist[i].port; i++) {
- dev->base_addr = sonic_portlist[i].port;
- dev->irq = sonic_portlist[i].irq;
- if (sonic_probe1(dev) == 0)
- break;
- }
- if (!sonic_portlist[i].port)
- err = -ENODEV;
- }
+ dev->base_addr = res->start;
+ dev->irq = platform_get_irq(pdev, 0);
+ err = sonic_probe1(dev);
if (err)
goto out;
err = register_netdev(dev);
@@ -303,38 +282,12 @@ static struct platform_driver jazz_sonic_driver = {
static int __init jazz_sonic_init_module(void)
{
- int err;
-
- if ((err = platform_driver_register(&jazz_sonic_driver))) {
- printk(KERN_ERR "Driver registration failed\n");
- return err;
- }
-
- jazz_sonic_device = platform_device_alloc(jazz_sonic_string, 0);
- if (!jazz_sonic_device)
- goto out_unregister;
-
- if (platform_device_add(jazz_sonic_device)) {
- platform_device_put(jazz_sonic_device);
- jazz_sonic_device = NULL;
- }
-
- return 0;
-
-out_unregister:
- platform_driver_unregister(&jazz_sonic_driver);
-
- return -ENOMEM;
+ return platform_driver_register(&jazz_sonic_driver);
}
static void __exit jazz_sonic_cleanup_module(void)
{
platform_driver_unregister(&jazz_sonic_driver);
-
- if (jazz_sonic_device) {
- platform_device_unregister(jazz_sonic_device);
- jazz_sonic_device = NULL;
- }
}
module_init(jazz_sonic_init_module);
--
Crap can work. Given enough thrust pigs will fly, but it's not necessary a
good idea. [ RFC1925, 2.3 ]
^ permalink raw reply related
* [PATCH 1/2] remove asm/bitops.h includes
From: Jiri Slaby @ 2007-09-08 19:59 UTC (permalink / raw)
To: Andrew Morton
Cc: linux-kernel, Adrian Bunk, netdev, rth, dhowells, linux-mips
remove asm/bitops.h includes
including asm/bitops directly may cause compile errors. don't include it
and include linux/bitops instead. next patch will deny including asm header
directly.
Cc: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
---
commit 3c05eef3d0a98065323d7d6d9a78e0985eba4b10
tree cb9691832992f570b0363dd568f6fa3d2c81e3f5
parent 132bb039c741d00f066e7501e3613d2d20bf0595
author Jiri Slaby <jirislaby@gmail.com> Tue, 04 Sep 2007 21:01:35 +0200
committer Jiri Slaby <jirislaby@gmail.com> Tue, 04 Sep 2007 21:01:35 +0200
arch/alpha/lib/fls.c | 2 +-
arch/frv/kernel/irq-mb93091.c | 2 +-
arch/frv/kernel/irq-mb93093.c | 2 +-
arch/frv/kernel/irq-mb93493.c | 2 +-
arch/frv/kernel/irq.c | 2 +-
arch/mips/au1000/pb1200/irqmap.c | 2 +-
arch/mips/basler/excite/excite_irq.c | 2 +-
arch/mips/gt64120/wrppmc/irq.c | 1 -
arch/mips/tx4938/common/setup.c | 2 +-
arch/powerpc/platforms/maple/setup.c | 2 +-
drivers/char/esp.c | 2 +-
drivers/char/mxser.c | 2 +-
drivers/char/mxser_new.c | 2 +-
drivers/ide/ide-io.c | 2 +-
drivers/media/dvb/ttpci/av7110_ir.c | 2 +-
drivers/net/bnx2.c | 2 +-
drivers/net/cris/eth_v10.c | 2 +-
drivers/net/cxgb3/adapter.h | 2 +-
drivers/net/hamradio/dmascc.c | 2 +-
drivers/net/mac89x0.c | 2 +-
drivers/net/spider_net.c | 2 +-
drivers/net/tulip/uli526x.c | 2 +-
drivers/net/wireless/bcm43xx/bcm43xx_leds.c | 2 +-
drivers/pcmcia/m32r_pcc.c | 2 +-
drivers/pcmcia/m8xx_pcmcia.c | 2 +-
drivers/ps3/vuart.c | 2 +-
drivers/rtc/rtc-pl031.c | 2 +-
drivers/rtc/rtc-sa1100.c | 2 +-
drivers/s390/cio/idset.c | 2 +-
drivers/s390/net/claw.c | 2 +-
drivers/scsi/ide-scsi.c | 2 +-
drivers/serial/crisv10.c | 2 +-
drivers/watchdog/at91rm9200_wdt.c | 2 +-
drivers/watchdog/ks8695_wdt.c | 2 +-
drivers/watchdog/omap_wdt.c | 2 +-
drivers/watchdog/sa1100_wdt.c | 2 +-
fs/reiser4/jnode.h | 2 +-
fs/reiser4/plugin/space/bitmap.c | 2 +-
include/asm-cris/posix_types.h | 2 +-
include/asm-i386/pgtable.h | 5 +----
include/asm-i386/smp.h | 2 +-
include/asm-ia64/cacheflush.h | 2 +-
include/asm-ia64/pgtable.h | 2 +-
include/asm-ia64/smp.h | 2 +-
include/asm-ia64/spinlock.h | 2 +-
include/asm-m32r/pgtable.h | 2 +-
include/asm-mips/fpu.h | 2 +-
include/asm-parisc/pgtable.h | 2 +-
include/asm-powerpc/iommu.h | 2 +-
include/asm-powerpc/mmu_context.h | 2 +-
include/asm-ppc/mmu_context.h | 3 ++-
include/asm-sparc64/smp.h | 2 +-
include/asm-x86_64/pgtable.h | 2 +-
include/asm-x86_64/topology.h | 2 +-
include/linux/of.h | 2 +-
lib/hweight.c | 2 +-
net/core/gen_estimator.c | 2 +-
net/core/pktgen.c | 2 +-
net/ipv4/fib_trie.c | 2 +-
net/netfilter/xt_connbytes.c | 2 +-
60 files changed, 60 insertions(+), 63 deletions(-)
diff --git a/arch/alpha/lib/fls.c b/arch/alpha/lib/fls.c
index 7ad84ea..32afaa3 100644
--- a/arch/alpha/lib/fls.c
+++ b/arch/alpha/lib/fls.c
@@ -3,7 +3,7 @@
*/
#include <linux/module.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
/* This is fls(x)-1, except zero is held to zero. This allows most
efficent input into extbl, plus it allows easy handling of fls(0)=0. */
diff --git a/arch/frv/kernel/irq-mb93091.c b/arch/frv/kernel/irq-mb93091.c
index ad753c1..9e38f99 100644
--- a/arch/frv/kernel/irq-mb93091.c
+++ b/arch/frv/kernel/irq-mb93091.c
@@ -17,10 +17,10 @@
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/irq.h>
+#include <linux/bitops.h>
#include <asm/io.h>
#include <asm/system.h>
-#include <asm/bitops.h>
#include <asm/delay.h>
#include <asm/irq.h>
#include <asm/irc-regs.h>
diff --git a/arch/frv/kernel/irq-mb93093.c b/arch/frv/kernel/irq-mb93093.c
index e0983f6..3c2752c 100644
--- a/arch/frv/kernel/irq-mb93093.c
+++ b/arch/frv/kernel/irq-mb93093.c
@@ -17,10 +17,10 @@
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/irq.h>
+#include <linux/bitops.h>
#include <asm/io.h>
#include <asm/system.h>
-#include <asm/bitops.h>
#include <asm/delay.h>
#include <asm/irq.h>
#include <asm/irc-regs.h>
diff --git a/arch/frv/kernel/irq-mb93493.c b/arch/frv/kernel/irq-mb93493.c
index c157eef..7754c73 100644
--- a/arch/frv/kernel/irq-mb93493.c
+++ b/arch/frv/kernel/irq-mb93493.c
@@ -17,10 +17,10 @@
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/irq.h>
+#include <linux/bitops.h>
#include <asm/io.h>
#include <asm/system.h>
-#include <asm/bitops.h>
#include <asm/delay.h>
#include <asm/irq.h>
#include <asm/irc-regs.h>
diff --git a/arch/frv/kernel/irq.c b/arch/frv/kernel/irq.c
index c7e59dc..7ddb690 100644
--- a/arch/frv/kernel/irq.c
+++ b/arch/frv/kernel/irq.c
@@ -24,12 +24,12 @@
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/module.h>
+#include <linux/bitops.h>
#include <asm/atomic.h>
#include <asm/io.h>
#include <asm/smp.h>
#include <asm/system.h>
-#include <asm/bitops.h>
#include <asm/uaccess.h>
#include <asm/pgalloc.h>
#include <asm/delay.h>
diff --git a/arch/mips/au1000/pb1200/irqmap.c b/arch/mips/au1000/pb1200/irqmap.c
index b73b2d1..e5cd0da 100644
--- a/arch/mips/au1000/pb1200/irqmap.c
+++ b/arch/mips/au1000/pb1200/irqmap.c
@@ -36,8 +36,8 @@
#include <linux/slab.h>
#include <linux/random.h>
#include <linux/delay.h>
+#include <linux/bitops.h>
-#include <asm/bitops.h>
#include <asm/bootinfo.h>
#include <asm/io.h>
#include <asm/mipsregs.h>
diff --git a/arch/mips/basler/excite/excite_irq.c b/arch/mips/basler/excite/excite_irq.c
index 94ce5d4..934e0a6 100644
--- a/arch/mips/basler/excite/excite_irq.c
+++ b/arch/mips/basler/excite/excite_irq.c
@@ -29,7 +29,7 @@
#include <linux/timex.h>
#include <linux/slab.h>
#include <linux/random.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include <asm/bootinfo.h>
#include <asm/io.h>
#include <asm/irq.h>
diff --git a/arch/mips/gt64120/wrppmc/irq.c b/arch/mips/gt64120/wrppmc/irq.c
index 06177bf..6f30572 100644
--- a/arch/mips/gt64120/wrppmc/irq.c
+++ b/arch/mips/gt64120/wrppmc/irq.c
@@ -24,7 +24,6 @@
#include <linux/bitops.h>
#include <asm/bootinfo.h>
#include <asm/io.h>
-#include <asm/bitops.h>
#include <asm/mipsregs.h>
#include <asm/system.h>
#include <asm/irq_cpu.h>
diff --git a/arch/mips/tx4938/common/setup.c b/arch/mips/tx4938/common/setup.c
index 142abf4..f252a7c 100644
--- a/arch/mips/tx4938/common/setup.c
+++ b/arch/mips/tx4938/common/setup.c
@@ -24,7 +24,7 @@
#include <linux/slab.h>
#include <linux/random.h>
#include <linux/irq.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include <asm/bootinfo.h>
#include <asm/io.h>
#include <asm/irq.h>
diff --git a/arch/powerpc/platforms/maple/setup.c b/arch/powerpc/platforms/maple/setup.c
index 354c058..144177d 100644
--- a/arch/powerpc/platforms/maple/setup.c
+++ b/arch/powerpc/platforms/maple/setup.c
@@ -41,13 +41,13 @@
#include <linux/root_dev.h>
#include <linux/serial.h>
#include <linux/smp.h>
+#include <linux/bitops.h>
#include <asm/processor.h>
#include <asm/sections.h>
#include <asm/prom.h>
#include <asm/system.h>
#include <asm/pgtable.h>
-#include <asm/bitops.h>
#include <asm/io.h>
#include <asm/kexec.h>
#include <asm/pci-bridge.h>
diff --git a/drivers/char/esp.c b/drivers/char/esp.c
index 2e7ae42..0f8fb13 100644
--- a/drivers/char/esp.c
+++ b/drivers/char/esp.c
@@ -58,10 +58,10 @@
#include <linux/mm.h>
#include <linux/init.h>
#include <linux/delay.h>
+#include <linux/bitops.h>
#include <asm/system.h>
#include <asm/io.h>
-#include <asm/bitops.h>
#include <asm/dma.h>
#include <linux/slab.h>
diff --git a/drivers/char/mxser.c b/drivers/char/mxser.c
index a24738e..dfacb66 100644
--- a/drivers/char/mxser.c
+++ b/drivers/char/mxser.c
@@ -56,11 +56,11 @@
#include <linux/mm.h>
#include <linux/delay.h>
#include <linux/pci.h>
+#include <linux/bitops.h>
#include <asm/system.h>
#include <asm/io.h>
#include <asm/irq.h>
-#include <asm/bitops.h>
#include <asm/uaccess.h>
#include "mxser.h"
diff --git a/drivers/char/mxser_new.c b/drivers/char/mxser_new.c
index 854dbf5..081c84c 100644
--- a/drivers/char/mxser_new.c
+++ b/drivers/char/mxser_new.c
@@ -39,11 +39,11 @@
#include <linux/mm.h>
#include <linux/delay.h>
#include <linux/pci.h>
+#include <linux/bitops.h>
#include <asm/system.h>
#include <asm/io.h>
#include <asm/irq.h>
-#include <asm/bitops.h>
#include <asm/uaccess.h>
#include "mxser_new.h"
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
index c1692d9..14b8ab0 100644
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -47,12 +47,12 @@
#include <linux/device.h>
#include <linux/kmod.h>
#include <linux/scatterlist.h>
+#include <linux/bitops.h>
#include <asm/byteorder.h>
#include <asm/irq.h>
#include <asm/uaccess.h>
#include <asm/io.h>
-#include <asm/bitops.h>
static int __ide_end_request(ide_drive_t *drive, struct request *rq,
int uptodate, unsigned int nr_bytes)
diff --git a/drivers/media/dvb/ttpci/av7110_ir.c b/drivers/media/dvb/ttpci/av7110_ir.c
index e8f5537..57212f6 100644
--- a/drivers/media/dvb/ttpci/av7110_ir.c
+++ b/drivers/media/dvb/ttpci/av7110_ir.c
@@ -27,7 +27,7 @@
#include <linux/module.h>
#include <linux/proc_fs.h>
#include <linux/kernel.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include "av7110.h"
#include "av7110_hw.h"
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index b2139c0..38c12f2 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -26,7 +26,7 @@
#include <linux/etherdevice.h>
#include <linux/skbuff.h>
#include <linux/dma-mapping.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <linux/delay.h>
diff --git a/drivers/net/cris/eth_v10.c b/drivers/net/cris/eth_v10.c
index 5bdf5ca..427cd1b 100644
--- a/drivers/net/cris/eth_v10.c
+++ b/drivers/net/cris/eth_v10.c
@@ -234,6 +234,7 @@
#include <linux/spinlock.h>
#include <linux/errno.h>
#include <linux/init.h>
+#include <linux/bitops.h>
#include <linux/if.h>
#include <linux/mii.h>
@@ -247,7 +248,6 @@
#include <asm/irq.h>
#include <asm/dma.h>
#include <asm/system.h>
-#include <asm/bitops.h>
#include <asm/ethernet.h>
#include <asm/cache.h>
diff --git a/drivers/net/cxgb3/adapter.h b/drivers/net/cxgb3/adapter.h
index e723e7b..f7b3a3f 100644
--- a/drivers/net/cxgb3/adapter.h
+++ b/drivers/net/cxgb3/adapter.h
@@ -41,9 +41,9 @@
#include <linux/timer.h>
#include <linux/cache.h>
#include <linux/mutex.h>
+#include <linux/bitops.h>
#include "t3cdev.h"
#include <asm/semaphore.h>
-#include <asm/bitops.h>
#include <asm/io.h>
typedef irqreturn_t(*intr_handler_t) (int, void *);
diff --git a/drivers/net/hamradio/dmascc.c b/drivers/net/hamradio/dmascc.c
index 205f096..db20685 100644
--- a/drivers/net/hamradio/dmascc.c
+++ b/drivers/net/hamradio/dmascc.c
@@ -21,6 +21,7 @@
#include <linux/module.h>
+#include <linux/bitops.h>
#include <linux/delay.h>
#include <linux/errno.h>
#include <linux/if_arp.h>
@@ -35,7 +36,6 @@
#include <linux/sockios.h>
#include <linux/workqueue.h>
#include <asm/atomic.h>
-#include <asm/bitops.h>
#include <asm/dma.h>
#include <asm/io.h>
#include <asm/irq.h>
diff --git a/drivers/net/mac89x0.c b/drivers/net/mac89x0.c
index 62c1c62..1858d92 100644
--- a/drivers/net/mac89x0.c
+++ b/drivers/net/mac89x0.c
@@ -99,9 +99,9 @@ static char *version =
#include <linux/etherdevice.h>
#include <linux/skbuff.h>
#include <linux/delay.h>
+#include <linux/bitops.h>
#include <asm/system.h>
-#include <asm/bitops.h>
#include <asm/io.h>
#include <asm/hwtest.h>
#include <asm/macints.h>
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c
index a144327..ce08ba2 100644
--- a/drivers/net/spider_net.c
+++ b/drivers/net/spider_net.c
@@ -46,7 +46,7 @@
#include <linux/vmalloc.h>
#include <linux/wait.h>
#include <linux/workqueue.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include <asm/pci-bridge.h>
#include <net/checksum.h>
diff --git a/drivers/net/tulip/uli526x.c b/drivers/net/tulip/uli526x.c
index 77a1bfb..6f6a667 100644
--- a/drivers/net/tulip/uli526x.c
+++ b/drivers/net/tulip/uli526x.c
@@ -34,9 +34,9 @@
#include <linux/delay.h>
#include <linux/spinlock.h>
#include <linux/dma-mapping.h>
+#include <linux/bitops.h>
#include <asm/processor.h>
-#include <asm/bitops.h>
#include <asm/io.h>
#include <asm/dma.h>
#include <asm/uaccess.h>
diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_leds.c b/drivers/net/wireless/bcm43xx/bcm43xx_leds.c
index 8f198be..cb51dc5 100644
--- a/drivers/net/wireless/bcm43xx/bcm43xx_leds.c
+++ b/drivers/net/wireless/bcm43xx/bcm43xx_leds.c
@@ -29,7 +29,7 @@
#include "bcm43xx_radio.h"
#include "bcm43xx.h"
-#include <asm/bitops.h>
+#include <linux/bitops.h>
static void bcm43xx_led_changestate(struct bcm43xx_led *led)
diff --git a/drivers/pcmcia/m32r_pcc.c b/drivers/pcmcia/m32r_pcc.c
index 67d28ee..c5e0d89 100644
--- a/drivers/pcmcia/m32r_pcc.c
+++ b/drivers/pcmcia/m32r_pcc.c
@@ -22,9 +22,9 @@
#include <linux/workqueue.h>
#include <linux/interrupt.h>
#include <linux/platform_device.h>
+#include <linux/bitops.h>
#include <asm/irq.h>
#include <asm/io.h>
-#include <asm/bitops.h>
#include <asm/system.h>
#include <asm/addrspace.h>
diff --git a/drivers/pcmcia/m8xx_pcmcia.c b/drivers/pcmcia/m8xx_pcmcia.c
index b019854..d182760 100644
--- a/drivers/pcmcia/m8xx_pcmcia.c
+++ b/drivers/pcmcia/m8xx_pcmcia.c
@@ -48,9 +48,9 @@
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/fsl_devices.h>
+#include <linux/bitops.h>
#include <asm/io.h>
-#include <asm/bitops.h>
#include <asm/system.h>
#include <asm/time.h>
#include <asm/mpc8xx.h>
diff --git a/drivers/ps3/vuart.c b/drivers/ps3/vuart.c
index bea25a1..9dea585 100644
--- a/drivers/ps3/vuart.c
+++ b/drivers/ps3/vuart.c
@@ -22,11 +22,11 @@
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/workqueue.h>
+#include <linux/bitops.h>
#include <asm/ps3.h>
#include <asm/firmware.h>
#include <asm/lv1call.h>
-#include <asm/bitops.h>
#include "vuart.h"
diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c
index e4bf68c..2fd49ed 100644
--- a/drivers/rtc/rtc-pl031.c
+++ b/drivers/rtc/rtc-pl031.c
@@ -21,11 +21,11 @@
#include <linux/interrupt.h>
#include <linux/string.h>
#include <linux/pm.h>
+#include <linux/bitops.h>
#include <linux/amba/bus.h>
#include <asm/io.h>
-#include <asm/bitops.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/rtc.h>
diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c
index 0918b78..6f1e9a9 100644
--- a/drivers/rtc/rtc-sa1100.c
+++ b/drivers/rtc/rtc-sa1100.c
@@ -29,8 +29,8 @@
#include <linux/interrupt.h>
#include <linux/string.h>
#include <linux/pm.h>
+#include <linux/bitops.h>
-#include <asm/bitops.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/rtc.h>
diff --git a/drivers/s390/cio/idset.c b/drivers/s390/cio/idset.c
index 16ea828..ef7bc0a 100644
--- a/drivers/s390/cio/idset.c
+++ b/drivers/s390/cio/idset.c
@@ -6,7 +6,7 @@
*/
#include <linux/slab.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include "idset.h"
#include "css.h"
diff --git a/drivers/s390/net/claw.c b/drivers/s390/net/claw.c
index 023455a..cea28a4 100644
--- a/drivers/s390/net/claw.c
+++ b/drivers/s390/net/claw.c
@@ -59,13 +59,13 @@
* 1.15 Changed for 2.6 Kernel No longer compiles on 2.4 or lower
* 1.25 Added Packing support
*/
-#include <asm/bitops.h>
#include <asm/ccwdev.h>
#include <asm/ccwgroup.h>
#include <asm/debug.h>
#include <asm/idals.h>
#include <asm/io.h>
+#include <linux/bitops.h>
#include <linux/ctype.h>
#include <linux/delay.h>
#include <linux/errno.h>
diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c
index c05b291..948a7fc 100644
--- a/drivers/scsi/ide-scsi.c
+++ b/drivers/scsi/ide-scsi.c
@@ -47,9 +47,9 @@
#include <linux/scatterlist.h>
#include <linux/delay.h>
#include <linux/mutex.h>
+#include <linux/bitops.h>
#include <asm/io.h>
-#include <asm/bitops.h>
#include <asm/uaccess.h>
#include <scsi/scsi.h>
diff --git a/drivers/serial/crisv10.c b/drivers/serial/crisv10.c
index 312bef6..1e9a35a 100644
--- a/drivers/serial/crisv10.c
+++ b/drivers/serial/crisv10.c
@@ -442,11 +442,11 @@ static char *serial_version = "$Revision: 1.25 $";
#include <asm/uaccess.h>
#include <linux/kernel.h>
#include <linux/mutex.h>
+#include <linux/bitops.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/system.h>
-#include <asm/bitops.h>
#include <linux/delay.h>
#include <asm/arch/svinto.h>
diff --git a/drivers/watchdog/at91rm9200_wdt.c b/drivers/watchdog/at91rm9200_wdt.c
index 38bd373..a684b1e 100644
--- a/drivers/watchdog/at91rm9200_wdt.c
+++ b/drivers/watchdog/at91rm9200_wdt.c
@@ -9,6 +9,7 @@
* 2 of the License, or (at your option) any later version.
*/
+#include <linux/bitops.h>
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/init.h>
@@ -19,7 +20,6 @@
#include <linux/platform_device.h>
#include <linux/types.h>
#include <linux/watchdog.h>
-#include <asm/bitops.h>
#include <asm/uaccess.h>
#include <asm/arch/at91_st.h>
diff --git a/drivers/watchdog/ks8695_wdt.c b/drivers/watchdog/ks8695_wdt.c
index 7150fb9..e3a29c3 100644
--- a/drivers/watchdog/ks8695_wdt.c
+++ b/drivers/watchdog/ks8695_wdt.c
@@ -8,6 +8,7 @@
* published by the Free Software Foundation.
*/
+#include <linux/bitops.h>
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/init.h>
@@ -18,7 +19,6 @@
#include <linux/platform_device.h>
#include <linux/types.h>
#include <linux/watchdog.h>
-#include <asm/bitops.h>
#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/arch/regs-timer.h>
diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c
index 719b066..635ca45 100644
--- a/drivers/watchdog/omap_wdt.c
+++ b/drivers/watchdog/omap_wdt.c
@@ -39,11 +39,11 @@
#include <linux/platform_device.h>
#include <linux/moduleparam.h>
#include <linux/clk.h>
+#include <linux/bitops.h>
#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/hardware.h>
-#include <asm/bitops.h>
#include <asm/arch/prcm.h>
diff --git a/drivers/watchdog/sa1100_wdt.c b/drivers/watchdog/sa1100_wdt.c
index 3475f47..34a2b3b 100644
--- a/drivers/watchdog/sa1100_wdt.c
+++ b/drivers/watchdog/sa1100_wdt.c
@@ -25,13 +25,13 @@
#include <linux/miscdevice.h>
#include <linux/watchdog.h>
#include <linux/init.h>
+#include <linux/bitops.h>
#ifdef CONFIG_ARCH_PXA
#include <asm/arch/pxa-regs.h>
#endif
#include <asm/hardware.h>
-#include <asm/bitops.h>
#include <asm/uaccess.h>
#define OSCR_FREQ CLOCK_TICK_RATE
diff --git a/fs/reiser4/jnode.h b/fs/reiser4/jnode.h
index 59b29de..97a8438 100644
--- a/fs/reiser4/jnode.h
+++ b/fs/reiser4/jnode.h
@@ -21,7 +21,7 @@
#include <linux/mm.h>
#include <linux/spinlock.h>
#include <asm/atomic.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include <linux/list.h>
#include <linux/rcupdate.h>
diff --git a/fs/reiser4/plugin/space/bitmap.c b/fs/reiser4/plugin/space/bitmap.c
index a0ff17a..e2ae346 100644
--- a/fs/reiser4/plugin/space/bitmap.c
+++ b/fs/reiser4/plugin/space/bitmap.c
@@ -171,7 +171,7 @@ static int find_next_zero_bit_in_word(ulong_t word, int start_bit)
return i;
}
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#if BITS_PER_LONG == 64
diff --git a/include/asm-cris/posix_types.h b/include/asm-cris/posix_types.h
index 7b9ed22..92000d0 100644
--- a/include/asm-cris/posix_types.h
+++ b/include/asm-cris/posix_types.h
@@ -52,7 +52,7 @@ typedef struct {
} __kernel_fsid_t;
#ifdef __KERNEL__
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#undef __FD_SET
#define __FD_SET(fd,fdsetp) set_bit(fd, (void *)(fdsetp))
diff --git a/include/asm-i386/pgtable.h b/include/asm-i386/pgtable.h
index ae8d9c2..ee53ccd 100644
--- a/include/asm-i386/pgtable.h
+++ b/include/asm-i386/pgtable.h
@@ -17,10 +17,7 @@
#include <linux/threads.h>
#include <asm/paravirt.h>
-#ifndef _I386_BITOPS_H
-#include <asm/bitops.h>
-#endif
-
+#include <linux/bitops.h>
#include <linux/slab.h>
#include <linux/list.h>
#include <linux/spinlock.h>
diff --git a/include/asm-i386/smp.h b/include/asm-i386/smp.h
index 6e1e327..e10b7af 100644
--- a/include/asm-i386/smp.h
+++ b/include/asm-i386/smp.h
@@ -11,7 +11,7 @@
#endif
#if defined(CONFIG_X86_LOCAL_APIC) && !defined(__ASSEMBLY__)
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include <asm/mpspec.h>
#include <asm/apic.h>
#ifdef CONFIG_X86_IO_APIC
diff --git a/include/asm-ia64/cacheflush.h b/include/asm-ia64/cacheflush.h
index 4906916..afcfbda 100644
--- a/include/asm-ia64/cacheflush.h
+++ b/include/asm-ia64/cacheflush.h
@@ -7,8 +7,8 @@
*/
#include <linux/page-flags.h>
+#include <linux/bitops.h>
-#include <asm/bitops.h>
#include <asm/page.h>
/*
diff --git a/include/asm-ia64/pgtable.h b/include/asm-ia64/pgtable.h
index 0971ec9..e6204f1 100644
--- a/include/asm-ia64/pgtable.h
+++ b/include/asm-ia64/pgtable.h
@@ -150,7 +150,7 @@
# ifndef __ASSEMBLY__
#include <linux/sched.h> /* for mm_struct */
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include <asm/cacheflush.h>
#include <asm/mmu_context.h>
#include <asm/processor.h>
diff --git a/include/asm-ia64/smp.h b/include/asm-ia64/smp.h
index 6314b29..8f1e858 100644
--- a/include/asm-ia64/smp.h
+++ b/include/asm-ia64/smp.h
@@ -14,8 +14,8 @@
#include <linux/threads.h>
#include <linux/kernel.h>
#include <linux/cpumask.h>
+#include <linux/bitops.h>
-#include <asm/bitops.h>
#include <asm/io.h>
#include <asm/param.h>
#include <asm/processor.h>
diff --git a/include/asm-ia64/spinlock.h b/include/asm-ia64/spinlock.h
index ff857e3..0229fb9 100644
--- a/include/asm-ia64/spinlock.h
+++ b/include/asm-ia64/spinlock.h
@@ -11,9 +11,9 @@
#include <linux/compiler.h>
#include <linux/kernel.h>
+#include <linux/bitops.h>
#include <asm/atomic.h>
-#include <asm/bitops.h>
#include <asm/intrinsics.h>
#include <asm/system.h>
diff --git a/include/asm-m32r/pgtable.h b/include/asm-m32r/pgtable.h
index 92d7266..8650538 100644
--- a/include/asm-m32r/pgtable.h
+++ b/include/asm-m32r/pgtable.h
@@ -21,9 +21,9 @@
#ifndef __ASSEMBLY__
#include <linux/threads.h>
+#include <linux/bitops.h>
#include <asm/processor.h>
#include <asm/addrspace.h>
-#include <asm/bitops.h>
#include <asm/page.h>
struct mm_struct;
diff --git a/include/asm-mips/fpu.h b/include/asm-mips/fpu.h
index 483685b..e59d4c0 100644
--- a/include/asm-mips/fpu.h
+++ b/include/asm-mips/fpu.h
@@ -12,12 +12,12 @@
#include <linux/sched.h>
#include <linux/thread_info.h>
+#include <linux/bitops.h>
#include <asm/mipsregs.h>
#include <asm/cpu.h>
#include <asm/cpu-features.h>
#include <asm/hazards.h>
-#include <asm/bitops.h>
#include <asm/processor.h>
#include <asm/current.h>
diff --git a/include/asm-parisc/pgtable.h b/include/asm-parisc/pgtable.h
index 33ed0e7..3267ed0 100644
--- a/include/asm-parisc/pgtable.h
+++ b/include/asm-parisc/pgtable.h
@@ -11,9 +11,9 @@
*/
#include <linux/mm.h> /* for vm_area_struct */
+#include <linux/bitops.h>
#include <asm/processor.h>
#include <asm/cache.h>
-#include <asm/bitops.h>
/*
* kern_addr_valid(ADDR) tests if ADDR is pointing to valid kernel
diff --git a/include/asm-powerpc/iommu.h b/include/asm-powerpc/iommu.h
index 870967e..4a82fdc 100644
--- a/include/asm-powerpc/iommu.h
+++ b/include/asm-powerpc/iommu.h
@@ -26,9 +26,9 @@
#include <linux/spinlock.h>
#include <linux/device.h>
#include <linux/dma-mapping.h>
+#include <linux/bitops.h>
#include <asm/machdep.h>
#include <asm/types.h>
-#include <asm/bitops.h>
#define IOMMU_PAGE_SHIFT 12
#define IOMMU_PAGE_SIZE (ASM_CONST(1) << IOMMU_PAGE_SHIFT)
diff --git a/include/asm-powerpc/mmu_context.h b/include/asm-powerpc/mmu_context.h
index f863ac2..9102b8b 100644
--- a/include/asm-powerpc/mmu_context.h
+++ b/include/asm-powerpc/mmu_context.h
@@ -8,7 +8,7 @@
#ifndef CONFIG_PPC64
#include <asm/atomic.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
/*
* On 32-bit PowerPC 6xx/7xx/7xxx CPUs, we use a set of 16 VSIDs
diff --git a/include/asm-ppc/mmu_context.h b/include/asm-ppc/mmu_context.h
index a6441a0..b2e25d8 100644
--- a/include/asm-ppc/mmu_context.h
+++ b/include/asm-ppc/mmu_context.h
@@ -2,8 +2,9 @@
#ifndef __PPC_MMU_CONTEXT_H
#define __PPC_MMU_CONTEXT_H
+#include <linux/bitops.h>
+
#include <asm/atomic.h>
-#include <asm/bitops.h>
#include <asm/mmu.h>
#include <asm/cputable.h>
#include <asm-generic/mm_hooks.h>
diff --git a/include/asm-sparc64/smp.h b/include/asm-sparc64/smp.h
index e8a96a3..60f67fe 100644
--- a/include/asm-sparc64/smp.h
+++ b/include/asm-sparc64/smp.h
@@ -26,7 +26,7 @@
* Private routines/data
*/
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include <asm/atomic.h>
extern cpumask_t cpu_sibling_map[NR_CPUS];
diff --git a/include/asm-x86_64/pgtable.h b/include/asm-x86_64/pgtable.h
index 0bea3e7..da31726 100644
--- a/include/asm-x86_64/pgtable.h
+++ b/include/asm-x86_64/pgtable.h
@@ -9,7 +9,7 @@
* the x86-64 page table tree.
*/
#include <asm/processor.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include <linux/threads.h>
#include <asm/pda.h>
diff --git a/include/asm-x86_64/topology.h b/include/asm-x86_64/topology.h
index 24e9bce..ca33dc8 100644
--- a/include/asm-x86_64/topology.h
+++ b/include/asm-x86_64/topology.h
@@ -5,7 +5,7 @@
#ifdef CONFIG_NUMA
#include <asm/mpspec.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
extern cpumask_t cpu_online_map;
diff --git a/include/linux/of.h b/include/linux/of.h
index 6df80e9..5c39b92 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -16,8 +16,8 @@
* 2 of the License, or (at your option) any later version.
*/
#include <linux/types.h>
+#include <linux/bitops.h>
-#include <asm/bitops.h>
#include <asm/prom.h>
/* flag descriptions */
diff --git a/lib/hweight.c b/lib/hweight.c
index 360556a..389424e 100644
--- a/lib/hweight.c
+++ b/lib/hweight.c
@@ -1,6 +1,6 @@
#include <linux/module.h>
+#include <linux/bitops.h>
#include <asm/types.h>
-#include <asm/bitops.h>
/**
* hweightN - returns the hamming weight of a N-bit word
diff --git a/net/core/gen_estimator.c b/net/core/gen_estimator.c
index 590a767..daadbcc 100644
--- a/net/core/gen_estimator.c
+++ b/net/core/gen_estimator.c
@@ -15,7 +15,7 @@
#include <asm/uaccess.h>
#include <asm/system.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/kernel.h>
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index 91bdacb..65f2ac0 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -157,7 +157,7 @@
#endif
#include <asm/byteorder.h>
#include <linux/rcupdate.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include <asm/io.h>
#include <asm/dma.h>
#include <asm/uaccess.h>
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
index 52b2891..13ca0e3 100644
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
@@ -54,7 +54,7 @@
#include <asm/uaccess.h>
#include <asm/system.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/mm.h>
diff --git a/net/netfilter/xt_connbytes.c b/net/netfilter/xt_connbytes.c
index dd4d79b..0601aea 100644
--- a/net/netfilter/xt_connbytes.c
+++ b/net/netfilter/xt_connbytes.c
@@ -2,13 +2,13 @@
* GPL (C) 2002 Martin Devera (devik@cdi.cz).
*/
#include <linux/module.h>
+#include <linux/bitops.h>
#include <linux/skbuff.h>
#include <linux/netfilter/x_tables.h>
#include <linux/netfilter/xt_connbytes.h>
#include <net/netfilter/nf_conntrack.h>
#include <asm/div64.h>
-#include <asm/bitops.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Harald Welte <laforge@netfilter.org>");
^ permalink raw reply related
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