VM: Fix nasty and subtle race in shared mmap'ed page writeback

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7658cc289288b8ae7dd2c2224549a048431222b3
Commit: 7658cc289288b8ae7dd2c2224549a048431222b3
Parent: 3bf8ba38f38d3647368e4edcf7d019f9f8d9184a
Author: Linus Torvalds [EMAIL PROTECTED]
AuthorDate: Fri Dec 29 10:00:58 2006 -0800
Committer:  Linus Torvalds [EMAIL PROTECTED]
CommitDate: Fri Dec 29 10:00:58 2006 -0800

VM: Fix nasty and subtle race in shared mmap'ed page writeback

The VM layer (on the face of it, fairly reasonably) expected that when
it does a -writepage() call to the filesystem, it would write out the
full page at that point in time.  Especially since it had earlier marked
the whole page dirty with set_page_dirty().

But that isn't actually the case: -writepage() does not actually write
a page, it writes the parts of the page that have been explicitly marked
dirty before, *and* that had not got written out for other reasons since
the last time we told it they were dirty.

That last caveat is the important one.

Which _most_ of the time ends up being the whole page (since we had
called set_page_dirty() on the page earlier), but if the filesystem
had done any dirty flushing of its own (for example, to honor some
internal write ordering guarantees), it might end up doing only a
partial page IO (or none at all) when -writepage() is actually called.

That is the correct thing in general (since we actually often _want_
only the known-dirty parts of the page to be written out), but the
shared dirty page handling had implicitly forgotten about these details,
and had a number of cases where it was doing just the -writepage()
part, without telling the low-level filesystem that the whole page might
have been re-dirtied as part of being mapped writably into user space.

Since most of the time the FS did actually write out the full page, we
didn't notice this for a loong time, and this needed some really odd
patterns to trigger.  But it caused occasional corruption with rtorrent
and with the Debian apt database, because both use shared mmaps to
update the end result.

This fixes it. Finally. After way too much hair-pulling.

Acked-by: Nick Piggin [EMAIL PROTECTED]
Acked-by: Martin J. Bligh [EMAIL PROTECTED]
Acked-by: Martin Michlmayr [EMAIL PROTECTED]
Acked-by: Martin Johansson [EMAIL PROTECTED]
Acked-by: Ingo Molnar [EMAIL PROTECTED]
Acked-by: Andrei Popa [EMAIL PROTECTED]
Cc: High Dickins [EMAIL PROTECTED]
Cc: Andrew Morton [EMAIL PROTECTED],
Cc: Peter Zijlstra [EMAIL PROTECTED]
Cc: Segher Boessenkool [EMAIL PROTECTED]
Cc: David Miller [EMAIL PROTECTED]
Cc: Arjan van de Ven [EMAIL PROTECTED]
Cc: Gordon Farquharson [EMAIL PROTECTED]
Cc: Guillaume Chazarain [EMAIL PROTECTED]
Cc: Theodore Tso [EMAIL PROTECTED]
Cc: Kenneth Cheng [EMAIL PROTECTED]
Cc: Tobias Diedrich [EMAIL PROTECTED]
Signed-off-by: Linus Torvalds [EMAIL PROTECTED]
---
 mm/page-writeback.c |   45 +
 1 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index b3a198c..1d2fc89 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -862,17 +862,46 @@ int clear_page_dirty_for_io(struct page *page)
 {
struct address_space *mapping = page_mapping(page);
 
-   if (!mapping)
-   return TestClearPageDirty(page);
-
-   if (TestClearPageDirty(page)) {
-   if (mapping_cap_account_dirty(mapping)) {
-   page_mkclean(page);
+   if (mapping  mapping_cap_account_dirty(mapping)) {
+   /*
+* Yes, Virginia, this is indeed insane.
+*
+* We use this sequence to make sure that
+*  (a) we account for dirty stats properly
+*  (b) we tell the low-level filesystem to
+*  mark the whole page dirty if it was
+*  dirty in a pagetable. Only to then
+*  (c) clean the page again and return 1 to
+*  cause the writeback.
+*
+* This way we avoid all nasty races with the
+* dirty bit in multiple places and clearing
+* them concurrently from different threads.
+*
+* Note! Normally the set_page_dirty(page)
+* has no effect on the actual dirty bit - since
+* that will already usually be set. But we
+* need the side effects, and it can help us
+* avoid races.
+*
+* We basically use the page master dirty bit
+* as a serialization point for all the different
+* threads doing their things.
+*
+* 

netxen: remove private ioctl

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=92104e94806f47e090e3bb40f6ae45f695351a5e
Commit: 92104e94806f47e090e3bb40f6ae45f695351a5e
Parent: 3bf8ba38f38d3647368e4edcf7d019f9f8d9184a
Author: Stephen Hemminger [EMAIL PROTECTED]
AuthorDate: Fri Dec 15 07:57:08 2006 -0800
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 16:17:36 2006 -0500

netxen: remove private ioctl

The netxen driver includes a private ioctl that provides access
to functionality that is already available in other ways. The PCI
layer has application access hooks (see setpci), and the statistics
are available in ethtool/netstats.

Signed-off-by: Stephen Hemminger [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/netxen/netxen_nic.h |   11 --
 drivers/net/netxen/netxen_nic_ethtool.c |5 +-
 drivers/net/netxen/netxen_nic_hw.c  |  294 ---
 drivers/net/netxen/netxen_nic_init.c|  237 -
 drivers/net/netxen/netxen_nic_ioctl.h   |   77 
 drivers/net/netxen/netxen_nic_main.c|   45 -
 6 files changed, 1 insertions(+), 668 deletions(-)

diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h
index b5410be..b4c4fc0 100644
--- a/drivers/net/netxen/netxen_nic.h
+++ b/drivers/net/netxen/netxen_nic.h
@@ -1027,14 +1027,6 @@ int netxen_nic_hw_read_wx(struct netxen_adapter 
*adapter, u64 off, void *data,
  int len);
 int netxen_nic_hw_write_wx(struct netxen_adapter *adapter, u64 off, void *data,
   int len);
-int netxen_nic_hw_read_ioctl(struct netxen_adapter *adapter, u64 off,
-void *data, int len);
-int netxen_nic_hw_write_ioctl(struct netxen_adapter *adapter, u64 off,
- void *data, int len);
-int netxen_nic_pci_mem_write_ioctl(struct netxen_adapter *adapter,
-  u64 off, void *data, int size);
-int netxen_nic_pci_mem_read_ioctl(struct netxen_adapter *adapter,
- u64 off, void *data, int size);
 void netxen_crb_writelit_adapter(struct netxen_adapter *adapter,
 unsigned long off, int data);
 
@@ -1067,9 +1059,6 @@ void netxen_tso_check(struct netxen_adapter *adapter,
  struct cmd_desc_type0 *desc, struct sk_buff *skb);
 int netxen_nic_hw_resources(struct netxen_adapter *adapter);
 void netxen_nic_clear_stats(struct netxen_adapter *adapter);
-int
-netxen_nic_do_ioctl(struct netxen_adapter *adapter, void *u_data,
-   struct netxen_port *port);
 int netxen_nic_rx_has_work(struct netxen_adapter *adapter);
 int netxen_nic_tx_has_work(struct netxen_adapter *adapter);
 void netxen_watchdog_task(struct work_struct *work);
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c 
b/drivers/net/netxen/netxen_nic_ethtool.c
index 2ab4885..3404461 100644
--- a/drivers/net/netxen/netxen_nic_ethtool.c
+++ b/drivers/net/netxen/netxen_nic_ethtool.c
@@ -42,7 +42,6 @@
 #include netxen_nic_hw.h
 #include netxen_nic.h
 #include netxen_nic_phan_reg.h
-#include netxen_nic_ioctl.h
 
 struct netxen_nic_stats {
char stat_string[ETH_GSTRING_LEN];
@@ -79,8 +78,7 @@ static const struct netxen_nic_stats 
netxen_nic_gstrings_stats[] = {
{tx_bytes, NETXEN_NIC_STAT(stats.txbytes)},
 };
 
-#define NETXEN_NIC_STATS_LEN   \
-   sizeof(netxen_nic_gstrings_stats) / sizeof(struct netxen_nic_stats)
+#define NETXEN_NIC_STATS_LEN   ARRAY_SIZE(netxen_nic_gstrings_stats)
 
 static const char netxen_nic_gstrings_test[][ETH_GSTRING_LEN] = {
Register_Test_offline, EEPROM_Test_offline,
@@ -711,7 +709,6 @@ netxen_nic_get_ethtool_stats(struct net_device *dev,
(netxen_nic_gstrings_stats[index].sizeof_stat ==
 sizeof(u64)) ? *(u64 *) p : *(u32 *) p;
}
-
 }
 
 struct ethtool_ops netxen_nic_ethtool_ops = {
diff --git a/drivers/net/netxen/netxen_nic_hw.c 
b/drivers/net/netxen/netxen_nic_hw.c
index 9147b60..5dac50c 100644
--- a/drivers/net/netxen/netxen_nic_hw.c
+++ b/drivers/net/netxen/netxen_nic_hw.c
@@ -997,297 +997,3 @@ void netxen_nic_flash_print(struct netxen_adapter 
*adapter)
   fw_major, fw_minor);
 }
 
-int netxen_crb_read_val(struct netxen_adapter *adapter, unsigned long off)
-{
-   int data;
-   netxen_nic_hw_read_wx(adapter, off, data, 4);
-   return data;
-}
-
-int netxen_nic_hw_write_ioctl(struct netxen_adapter *adapter, u64 off,
- void *data, int len)
-{
-   void *addr;
-   u64 offset = off;
-   u8 *mem_ptr = NULL;
-   unsigned long mem_base;
-   unsigned long mem_page;
-
-   if (ADDR_IN_WINDOW1(off)) {
-   addr = NETXEN_CRB_NORMALIZE(adapter, off);
-   if (!addr) {
-   mem_base = pci_resource_start(adapter-ahw.pdev, 0);
- 

[PATCH] e1000: The user-supplied itr setting needs the lower 2 bits masked off

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7d16e65ba57f181732ec52626736b27904198edf
Commit: 7d16e65ba57f181732ec52626736b27904198edf
Parent: 3bf8ba38f38d3647368e4edcf7d019f9f8d9184a
Author: Jesse Brandeburg [EMAIL PROTECTED]
AuthorDate: Fri Dec 15 10:29:31 2006 +0100
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 15:51:28 2006 -0500

[PATCH] e1000: The user-supplied itr setting needs the lower 2 bits masked 
off

The lower 2 bits of a user-supplied itr setting (via ethtool) need to be
masked off: These lower two bits are used as control bits.

Signed-off-by: Jesse Brandeburg [EMAIL PROTECTED]
Signed-off-by: Auke Kok [EMAIL PROTECTED]
Signed-off-by: Arjan van de Ven [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/e1000/e1000_param.c |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/e1000/e1000_param.c b/drivers/net/e1000/e1000_param.c
index cbfcd7f..cf2a279 100644
--- a/drivers/net/e1000/e1000_param.c
+++ b/drivers/net/e1000/e1000_param.c
@@ -487,7 +487,9 @@ e1000_check_options(struct e1000_adapter *adapter)
e1000_validate_option(adapter-itr, opt,
adapter);
/* save the setting, because the dynamic bits 
change itr */
-   adapter-itr_setting = adapter-itr;
+   /* clear the lower two bits because they are
+* used as control */
+   adapter-itr_setting = adapter-itr  ~3;
break;
}
} else {
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


e1000: omit stats for broken counter in 82543

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=167fb2841633edd2812e385af4b593d870abd15a
Commit: 167fb2841633edd2812e385af4b593d870abd15a
Parent: bd2371ebcc71d0a276ae341d735326a8beab6627
Author: Jeff Garzik [EMAIL PROTECTED]
AuthorDate: Fri Dec 15 10:41:15 2006 -0500
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 15:51:28 2006 -0500

e1000: omit stats for broken counter in 82543

The 82543 chip does not count tx_carrier_errors properly in FD mode;
report zeros instead of garbage.

Originally from Jesse Brandeburg [EMAIL PROTECTED], rewritten
to use feature flags by me.

Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/e1000/e1000_hw.c   |6 ++
 drivers/net/e1000/e1000_hw.h   |1 +
 drivers/net/e1000/e1000_main.c |5 +
 3 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c
index 0201ca5..ce82eb5 100644
--- a/drivers/net/e1000/e1000_hw.c
+++ b/drivers/net/e1000/e1000_hw.c
@@ -442,6 +442,12 @@ e1000_set_mac_type(struct e1000_hw *hw)
break;
}
 
+   /* The 82543 chip does not count tx_carrier_errors properly in
+* FD mode
+*/
+   if (hw-mac_type == e1000_82543)
+   hw-bad_tx_carr_stats_fd = TRUE;
+
return E1000_SUCCESS;
 }
 
diff --git a/drivers/net/e1000/e1000_hw.h b/drivers/net/e1000/e1000_hw.h
index 28cdfe3..fef1f7b 100644
--- a/drivers/net/e1000/e1000_hw.h
+++ b/drivers/net/e1000/e1000_hw.h
@@ -1460,6 +1460,7 @@ struct e1000_hw {
boolean_t   mng_reg_access_disabled;
boolean_t   leave_av_bit_off;
boolean_t   kmrn_lock_loss_workaround_disabled;
+   boolean_t   bad_tx_carr_stats_fd;
 };
 
 
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 62ef267..0816de2 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -3581,6 +3581,11 @@ e1000_update_stats(struct e1000_adapter *adapter)
adapter-net_stats.tx_aborted_errors = adapter-stats.ecol;
adapter-net_stats.tx_window_errors = adapter-stats.latecol;
adapter-net_stats.tx_carrier_errors = adapter-stats.tncrs;
+   if (adapter-hw.bad_tx_carr_stats_fd 
+   adapter-link_duplex == FULL_DUPLEX) {
+   adapter-net_stats.tx_carrier_errors = 0;
+   adapter-stats.tncrs = 0;
+   }
 
/* Tx Dropped needs to be maintained elsewhere */
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


e1000: consolidate managability enabling/disabling

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0fccd0e9e3802748855d967940c16f8c59d4e2b6
Commit: 0fccd0e9e3802748855d967940c16f8c59d4e2b6
Parent: 167fb2841633edd2812e385af4b593d870abd15a
Author: Jeff Garzik [EMAIL PROTECTED]
AuthorDate: Fri Dec 15 10:56:10 2006 -0500
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 15:51:29 2006 -0500

e1000: consolidate managability enabling/disabling

Several bugs existed in how we handle manageability issues all
over the driver.  This patch consolidates all the managability
release and init code in two single functions and call them from
appropriate locations. This fixes several BMC packet redirect issues
and powerup/down hiccups.

Originally from Jesse Brandeburg [EMAIL PROTECTED], rewritten
to use feature flags by me.

Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/e1000/e1000_hw.c   |9 ++-
 drivers/net/e1000/e1000_hw.h   |2 +
 drivers/net/e1000/e1000_main.c |  128 +--
 3 files changed, 77 insertions(+), 62 deletions(-)

diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c
index ce82eb5..1ea556e 100644
--- a/drivers/net/e1000/e1000_hw.c
+++ b/drivers/net/e1000/e1000_hw.c
@@ -448,6 +448,10 @@ e1000_set_mac_type(struct e1000_hw *hw)
if (hw-mac_type == e1000_82543)
hw-bad_tx_carr_stats_fd = TRUE;
 
+   /* capable of receiving management packets to the host */
+   if (hw-mac_type = e1000_82571)
+   hw-has_manc2h = TRUE;
+
return E1000_SUCCESS;
 }
 
@@ -7823,9 +7827,8 @@ e1000_enable_mng_pass_thru(struct e1000_hw *hw)
 fwsm = E1000_READ_REG(hw, FWSM);
 factps = E1000_READ_REG(hw, FACTPS);
 
-if (((fwsm  E1000_FWSM_MODE_MASK) ==
-(e1000_mng_mode_pt  E1000_FWSM_MODE_SHIFT)) 
-(factps  E1000_FACTPS_MNGCG))
+if fwsm  E1000_FWSM_MODE_MASK)  E1000_FWSM_MODE_SHIFT) ==
+   e1000_mng_mode_pt)  !(factps  E1000_FACTPS_MNGCG))
 return TRUE;
 } else
 if ((manc  E1000_MANC_SMBUS_EN)  !(manc  E1000_MANC_ASF_EN))
diff --git a/drivers/net/e1000/e1000_hw.h b/drivers/net/e1000/e1000_hw.h
index fef1f7b..18a4ae4 100644
--- a/drivers/net/e1000/e1000_hw.h
+++ b/drivers/net/e1000/e1000_hw.h
@@ -1301,6 +1301,7 @@ struct e1000_ffvt_entry {
 #define E1000_82542_RSSIR   E1000_RSSIR
 #define E1000_82542_KUMCTRLSTA E1000_KUMCTRLSTA
 #define E1000_82542_SW_FW_SYNC E1000_SW_FW_SYNC
+#define E1000_82542_MANC2H  E1000_MANC2H
 
 /* Statistics counters collected by the MAC */
 struct e1000_hw_stats {
@@ -1461,6 +1462,7 @@ struct e1000_hw {
boolean_t   leave_av_bit_off;
boolean_t   kmrn_lock_loss_workaround_disabled;
boolean_t   bad_tx_carr_stats_fd;
+   boolean_t   has_manc2h;
 };
 
 
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 0816de2..7a51283 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -464,6 +464,52 @@ e1000_get_hw_control(struct e1000_adapter *adapter)
}
 }
 
+static void
+e1000_init_manageability(struct e1000_adapter *adapter)
+{
+   if (adapter-en_mng_pt) {
+   uint32_t manc = E1000_READ_REG(adapter-hw, MANC);
+
+   /* disable hardware interception of ARP */
+   manc = ~(E1000_MANC_ARP_EN);
+
+   /* enable receiving management packets to the host */
+   /* this will probably generate destination unreachable messages
+* from the host OS, but the packets will be handled on SMBUS */
+   if (adapter-hw.has_manc2h) {
+   uint32_t manc2h = E1000_READ_REG(adapter-hw, MANC2H);
+
+   manc |= E1000_MANC_EN_MNG2HOST;
+#define E1000_MNG2HOST_PORT_623 (1  5)
+#define E1000_MNG2HOST_PORT_664 (1  6)
+   manc2h |= E1000_MNG2HOST_PORT_623;
+   manc2h |= E1000_MNG2HOST_PORT_664;
+   E1000_WRITE_REG(adapter-hw, MANC2H, manc2h);
+   }
+
+   E1000_WRITE_REG(adapter-hw, MANC, manc);
+   }
+}
+
+static void
+e1000_release_manageability(struct e1000_adapter *adapter)
+{
+   if (adapter-en_mng_pt) {
+   uint32_t manc = E1000_READ_REG(adapter-hw, MANC);
+
+   /* re-enable hardware interception of ARP */
+   manc |= E1000_MANC_ARP_EN;
+
+   if (adapter-hw.has_manc2h)
+   manc = ~E1000_MANC_EN_MNG2HOST;
+
+   /* don't explicitly have to mess with MANC2H since
+* MANC has an enable disable that gates MANC2H */
+
+   E1000_WRITE_REG(adapter-hw, MANC, manc);
+   }
+}
+
 int
 e1000_up(struct e1000_adapter *adapter)
 {
@@ -475,6 +521,7 @@ e1000_up(struct 

[PATCH] e1000: Fix Wake-on-Lan with forced gigabit speed

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3d5460a0ba17437cf278ee46886d557340d028da
Commit: 3d5460a0ba17437cf278ee46886d557340d028da
Parent: 0fccd0e9e3802748855d967940c16f8c59d4e2b6
Author: Jesse Brandeburg [EMAIL PROTECTED]
AuthorDate: Fri Dec 15 10:33:46 2006 +0100
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 15:51:29 2006 -0500

[PATCH] e1000: Fix Wake-on-Lan with forced gigabit speed

If the user has forced gigabit speed, phy power management must be disabled;
otherwise the NIC would try to negotiate to a linkspeed of 10/100 mbit on
shutdown, which would lead to a total loss of link. This loss of link breaks
Wake-on-Lan and IPMI.

Signed-off-by: Jesse Brandeburg [EMAIL PROTECTED]
Signed-off-by: Auke Kok [EMAIL PROTECTED]
Signed-off-by: Arjan van de Ven [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/e1000/e1000_main.c |   14 ++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 7a51283..f772e4d 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -732,6 +732,20 @@ e1000_reset(struct e1000_adapter *adapter)
if (e1000_init_hw(adapter-hw))
DPRINTK(PROBE, ERR, Hardware Error\n);
e1000_update_mng_vlan(adapter);
+
+   /* if (adapter-hwflags  HWFLAGS_PHY_PWR_BIT) { */
+   if (adapter-hw.mac_type = e1000_82544 
+   adapter-hw.mac_type = e1000_82547_rev_2 
+   adapter-hw.autoneg == 1 
+   adapter-hw.autoneg_advertised == ADVERTISE_1000_FULL) {
+   uint32_t ctrl = E1000_READ_REG(adapter-hw, CTRL);
+   /* clear phy power management bit if we are in gig only mode,
+* which if enabled will attempt negotiation to 100Mb, which
+* can cause a loss of link at power off or driver unload */
+   ctrl = ~E1000_CTRL_SWDPIN3;
+   E1000_WRITE_REG(adapter-hw, CTRL, ctrl);
+   }
+
/* Enable h/w to recognize an 802.1Q VLAN Ethernet packet */
E1000_WRITE_REG(adapter-hw, VET, ETHERNET_IEEE_VLAN_TYPE);
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] e1000: disable TSO on the 82544 with slab debugging

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=72f3ab7462f4e153d1e8ac78e379716ad71d6923
Commit: 72f3ab7462f4e153d1e8ac78e379716ad71d6923
Parent: 3d5460a0ba17437cf278ee46886d557340d028da
Author: Jesse Brandeburg [EMAIL PROTECTED]
AuthorDate: Fri Dec 15 10:34:46 2006 +0100
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 15:51:29 2006 -0500

[PATCH] e1000: disable TSO on the 82544 with slab debugging

CONFIG_DEBUG_SLAB changes alignments of the data structures the slab
allocators return. These break certain workarounds for TSO on the 82544.
Since DEBUG_SLAB is relatively rare and not used for performance sensitive
cases, the simplest fix is to disable TSO in this special situation.

Signed-off-by: Jesse Brandeburg [EMAIL PROTECTED]
Signed-off-by: Auke Kok [EMAIL PROTECTED]
Signed-off-by: Arjan van de Ven [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/e1000/e1000_main.c |6 ++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index f772e4d..9c24949 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -911,6 +911,12 @@ e1000_probe(struct pci_dev *pdev,
   (adapter-hw.mac_type != e1000_82547))
netdev-features |= NETIF_F_TSO;
 
+#ifdef CONFIG_DEBUG_SLAB
+   /* 82544's work arounds do not play nicely with DEBUG SLAB */
+   if (adapter-hw.mac_type == e1000_82544)
+   netdev-features = ~NETIF_F_TSO;
+#endif
+
 #ifdef NETIF_F_TSO6
if (adapter-hw.mac_type  e1000_82547_rev_2)
netdev-features |= NETIF_F_TSO6;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


e1000: workaround for the ESB2 NIC RX unit issue

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bb8e3311ef9de8e72f45f910e4a977c313c7009c
Commit: bb8e3311ef9de8e72f45f910e4a977c313c7009c
Parent: 72f3ab7462f4e153d1e8ac78e379716ad71d6923
Author: Jeff Garzik [EMAIL PROTECTED]
AuthorDate: Fri Dec 15 11:06:17 2006 -0500
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 15:51:30 2006 -0500

e1000: workaround for the ESB2 NIC RX unit issue

In rare occasions, ESB2 systems would end up started without the RX
unit being turned on. Add a check that runs post-init to work around
this issue.

Originally from Jesse Brandeburg [EMAIL PROTECTED],
rewritten to use feature flags by me.

Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/e1000/e1000_hw.c   |6 ++
 drivers/net/e1000/e1000_hw.h   |1 +
 drivers/net/e1000/e1000_main.c |7 +++
 3 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c
index 1ea556e..ea7b371 100644
--- a/drivers/net/e1000/e1000_hw.c
+++ b/drivers/net/e1000/e1000_hw.c
@@ -452,6 +452,12 @@ e1000_set_mac_type(struct e1000_hw *hw)
if (hw-mac_type = e1000_82571)
hw-has_manc2h = TRUE;
 
+   /* In rare occasions, ESB2 systems would end up started without
+* the RX unit being turned on.
+*/
+   if (hw-mac_type == e1000_80003es2lan)
+   hw-rx_needs_kicking = TRUE;
+
return E1000_SUCCESS;
 }
 
diff --git a/drivers/net/e1000/e1000_hw.h b/drivers/net/e1000/e1000_hw.h
index 18a4ae4..f4d01e1 100644
--- a/drivers/net/e1000/e1000_hw.h
+++ b/drivers/net/e1000/e1000_hw.h
@@ -1463,6 +1463,7 @@ struct e1000_hw {
boolean_t   kmrn_lock_loss_workaround_disabled;
boolean_t   bad_tx_carr_stats_fd;
boolean_t   has_manc2h;
+   boolean_t   rx_needs_kicking;
 };
 
 
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 9c24949..343eb68 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -2579,6 +2579,13 @@ e1000_watchdog(unsigned long data)
netif_wake_queue(netdev);
mod_timer(adapter-phy_info_timer, jiffies + 2 * HZ);
adapter-smartspeed = 0;
+   } else {
+   /* make sure the receive unit is started */
+   if (adapter-hw.rx_needs_kicking) {
+   struct e1000_hw *hw = adapter-hw;
+   uint32_t rctl = E1000_READ_REG(hw, RCTL);
+   E1000_WRITE_REG(hw, RCTL, rctl | E1000_RCTL_EN);
+   }
}
} else {
if (netif_carrier_ok(netdev)) {
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] e1000: fix ethtool reported bus type for older adapters

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c3813ae6615107cc93c79200f477ffd2a870c8ab
Commit: c3813ae6615107cc93c79200f477ffd2a870c8ab
Parent: 83cd827977d8d20ac8c4fe56c88b53a70ac54af3
Author: Jeff Kirsher [EMAIL PROTECTED]
AuthorDate: Fri Dec 15 10:37:32 2006 +0100
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 15:51:30 2006 -0500

[PATCH] e1000: fix ethtool reported bus type for older adapters

For older adapters we know that they are of the PCI bus type, so we can
just set this.

Signed-off-by: Jeff Kirsher [EMAIL PROTECTED]
Signed-off-by: Auke Kok [EMAIL PROTECTED]
Signed-off-by: Arjan van de Ven [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/e1000/e1000_hw.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c
index ea7b371..5a6a61e 100644
--- a/drivers/net/e1000/e1000_hw.c
+++ b/drivers/net/e1000/e1000_hw.c
@@ -6591,7 +6591,7 @@ e1000_get_bus_info(struct e1000_hw *hw)
 switch (hw-mac_type) {
 case e1000_82542_rev2_0:
 case e1000_82542_rev2_1:
-hw-bus_type = e1000_bus_type_unknown;
+hw-bus_type = e1000_bus_type_pci;
 hw-bus_speed = e1000_bus_speed_unknown;
 hw-bus_width = e1000_bus_width_unknown;
 break;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] e1000: narrow down the scope of the tipg timer tweak

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d89b6c6750e7d7527603b573ec60ba787f5c04a6
Commit: d89b6c6750e7d7527603b573ec60ba787f5c04a6
Parent: c3813ae6615107cc93c79200f477ffd2a870c8ab
Author: Jesse Brandeburg [EMAIL PROTECTED]
AuthorDate: Fri Dec 15 10:38:32 2006 +0100
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 15:51:30 2006 -0500

[PATCH] e1000: narrow down the scope of the tipg timer tweak

the driver has (ancient) code for messing with TIPG from the 82542 days.
Unfortunately this code was running on our current adapters and setting
TIPG for fiber to be +1 over the copper value.  This caused 1.45Mpps
to be sent instead of 1.487Mpps.

Signed-off-by: Jesse Brandeburg [EMAIL PROTECTED]
Signed-off-by: Auke Kok [EMAIL PROTECTED]
Signed-off-by: Arjan van de Ven [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/e1000/e1000_main.c |6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 0d7c458..e04f1ba 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -1582,9 +1582,9 @@ e1000_configure_tx(struct e1000_adapter *adapter)
}
 
/* Set the default values for the Tx Inter Packet Gap timer */
-
-   if (hw-media_type == e1000_media_type_fiber ||
-   hw-media_type == e1000_media_type_internal_serdes)
+   if (adapter-hw.mac_type = e1000_82547_rev_2 
+   (hw-media_type == e1000_media_type_fiber ||
+hw-media_type == e1000_media_type_internal_serdes))
tipg = DEFAULT_82543_TIPG_IPGT_FIBER;
else
tipg = DEFAULT_82543_TIPG_IPGT_COPPER;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] e1000: Fix PBA allocation calculations

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=018ea44ef1eade417296c4a57afe3cd963268433
Commit: 018ea44ef1eade417296c4a57afe3cd963268433
Parent: d89b6c6750e7d7527603b573ec60ba787f5c04a6
Author: Bruce Allan [EMAIL PROTECTED]
AuthorDate: Fri Dec 15 10:39:45 2006 +0100
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 15:51:30 2006 -0500

[PATCH] e1000: Fix PBA allocation calculations

Assign the PBA to be large enough to contain at least 2 jumbo frames on
all adapters. This dramatically increases performance on several adapters
and fixes TX performance degradation issues where the PBA was misallocated
in the old algorithm.

Signed-off-by: Bruce Allan [EMAIL PROTECTED]
Signed-off-by: Auke Kok [EMAIL PROTECTED]
Signed-off-by: Arjan van de Ven [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/e1000/e1000_hw.h   |1 +
 drivers/net/e1000/e1000_main.c |   99 ++--
 2 files changed, 86 insertions(+), 14 deletions(-)

diff --git a/drivers/net/e1000/e1000_hw.h b/drivers/net/e1000/e1000_hw.h
index f4d01e1..15b8625 100644
--- a/drivers/net/e1000/e1000_hw.h
+++ b/drivers/net/e1000/e1000_hw.h
@@ -2422,6 +2422,7 @@ struct e1000_host_command_info {
 #define E1000_PBA_8K 0x0008/* 8KB, default Rx allocation */
 #define E1000_PBA_12K 0x000C/* 12KB, default Rx allocation */
 #define E1000_PBA_16K 0x0010/* 16KB, default TX allocation */
+#define E1000_PBA_20K 0x0014
 #define E1000_PBA_22K 0x0016
 #define E1000_PBA_24K 0x0018
 #define E1000_PBA_30K 0x001E
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index e04f1ba..6c3618d 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -661,16 +661,34 @@ e1000_reinit_locked(struct e1000_adapter *adapter)
 void
 e1000_reset(struct e1000_adapter *adapter)
 {
-   uint32_t pba;
+   uint32_t pba = 0, tx_space, min_tx_space, min_rx_space;
uint16_t fc_high_water_mark = E1000_FC_HIGH_DIFF;
+   boolean_t legacy_pba_adjust = FALSE;
 
/* Repartition Pba for greater than 9k mtu
 * To take effect CTRL.RST is required.
 */
 
switch (adapter-hw.mac_type) {
+   case e1000_82542_rev2_0:
+   case e1000_82542_rev2_1:
+   case e1000_82543:
+   case e1000_82544:
+   case e1000_82540:
+   case e1000_82541:
+   case e1000_82541_rev_2:
+   legacy_pba_adjust = TRUE;
+   pba = E1000_PBA_48K;
+   break;
+   case e1000_82545:
+   case e1000_82545_rev_3:
+   case e1000_82546:
+   case e1000_82546_rev_3:
+   pba = E1000_PBA_48K;
+   break;
case e1000_82547:
case e1000_82547_rev_2:
+   legacy_pba_adjust = TRUE;
pba = E1000_PBA_30K;
break;
case e1000_82571:
@@ -679,27 +697,80 @@ e1000_reset(struct e1000_adapter *adapter)
pba = E1000_PBA_38K;
break;
case e1000_82573:
-   pba = E1000_PBA_12K;
+   pba = E1000_PBA_20K;
break;
case e1000_ich8lan:
pba = E1000_PBA_8K;
-   break;
-   default:
-   pba = E1000_PBA_48K;
+   case e1000_undefined:
+   case e1000_num_macs:
break;
}
 
-   if ((adapter-hw.mac_type != e1000_82573) 
-  (adapter-netdev-mtu  E1000_RXBUFFER_8192))
-   pba -= 8; /* allocate more FIFO for Tx */
+   if (legacy_pba_adjust == TRUE) {
+   if (adapter-netdev-mtu  E1000_RXBUFFER_8192)
+   pba -= 8; /* allocate more FIFO for Tx */
 
+   if (adapter-hw.mac_type == e1000_82547) {
+   adapter-tx_fifo_head = 0;
+   adapter-tx_head_addr = pba  E1000_TX_HEAD_ADDR_SHIFT;
+   adapter-tx_fifo_size =
+   (E1000_PBA_40K - pba)  E1000_PBA_BYTES_SHIFT;
+   atomic_set(adapter-tx_fifo_stall, 0);
+   }
+   } else if (adapter-hw.max_frame_size  MAXIMUM_ETHERNET_FRAME_SIZE) {
+   /* adjust PBA for jumbo frames */
+   E1000_WRITE_REG(adapter-hw, PBA, pba);
+
+   /* To maintain wire speed transmits, the Tx FIFO should be
+* large enough to accomodate two full transmit packets,
+* rounded up to the next 1KB and expressed in KB.  Likewise,
+* the Rx FIFO should be large enough to accomodate at least
+* one full receive packet and is similarly rounded up and
+* expressed in KB. */
+   pba = E1000_READ_REG(adapter-hw, PBA);
+   /* upper 16 bits has Tx packet buffer allocation size in KB */
+   tx_space = pba  16;
+   /* lower 16 bits has Rx packet 

[PATCH] e1000: No-delay link detection at interface up

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=79f3d3996f06ee339c6f173e573826eccd3914ab
Commit: 79f3d3996f06ee339c6f173e573826eccd3914ab
Parent: 15e376b4eed2575b323d575403569ec1b5f63fda
Author: Jesse Brandeburg [EMAIL PROTECTED]
AuthorDate: Fri Dec 15 10:42:34 2006 +0100
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 15:51:30 2006 -0500

[PATCH] e1000: No-delay link detection at interface up

Currently after an interface up, the link state is detected 2 seconds later
when the first watchdog timer runs. This patch changes that by triggering
the hardware to generate a link-change interrupt from the up() function
instead. This has the result that the link state gets detected immediately
and without races. This has the potential to speed up booting since a normal
distribution boot process waits for a link before DHCP is attempted.

Signed-off-by: Jesse Brandeburg [EMAIL PROTECTED]
Signed-off-by: Auke Kok [EMAIL PROTECTED]
Signed-off-by: Arjan van de Ven [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/e1000/e1000_main.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index b06b51a..8c4924f 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -556,7 +556,8 @@ e1000_up(struct e1000_adapter *adapter)
 
clear_bit(__E1000_DOWN, adapter-flags);
 
-   mod_timer(adapter-watchdog_timer, jiffies + 2 * HZ);
+   /* fire a link change interrupt to start the watchdog */
+   E1000_WRITE_REG(adapter-hw, ICS, E1000_ICS_LSC);
return 0;
 }
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


netpoll: drivers must not enable IRQ unconditionally in their NAPI handler

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d15e9c4d9a75702b30e00cdf95c71c88e3f3f51e
Commit: d15e9c4d9a75702b30e00cdf95c71c88e3f3f51e
Parent: 79f3d3996f06ee339c6f173e573826eccd3914ab
Author: Francois Romieu [EMAIL PROTECTED]
AuthorDate: Sun Dec 17 23:03:15 2006 +0100
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 16:24:11 2006 -0500

netpoll: drivers must not enable IRQ unconditionally in their NAPI handler

net/core/netpoll.c::netpoll_send_skb() calls the poll handler when
it is available. As netconsole can be used from almost any context,
IRQ must not be enabled blindly in the NAPI handler of a driver which
supports netpoll.

b57bd06655a028aba7b92e1c19c2093e7fcfb341 fixed the issue for the
8139too.c driver.

Signed-off-by: Francois Romieu [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/8139cp.c|6 --
 drivers/net/b44.c   |6 --
 drivers/net/forcedeth.c |   11 +++
 drivers/net/skge.c  |5 +++--
 4 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c
index 458dd9f..e2cb19b 100644
--- a/drivers/net/8139cp.c
+++ b/drivers/net/8139cp.c
@@ -617,13 +617,15 @@ rx_next:
 * this round of polling
 */
if (rx_work) {
+   unsigned long flags;
+
if (cpr16(IntrStatus)  cp_rx_intr_mask)
goto rx_status_loop;
 
-   local_irq_disable();
+   local_irq_save(flags);
cpw16_f(IntrMask, cp_intr_mask);
__netif_rx_complete(dev);
-   local_irq_enable();
+   local_irq_restore(flags);
 
return 0;   /* done */
}
diff --git a/drivers/net/b44.c b/drivers/net/b44.c
index 474a4e3..5eb2ec6 100644
--- a/drivers/net/b44.c
+++ b/drivers/net/b44.c
@@ -879,12 +879,14 @@ static int b44_poll(struct net_device *netdev, int 
*budget)
}
 
if (bp-istat  ISTAT_ERRORS) {
-   spin_lock_irq(bp-lock);
+   unsigned long flags;
+
+   spin_lock_irqsave(bp-lock, flags);
b44_halt(bp);
b44_init_rings(bp);
b44_init_hw(bp, 1);
netif_wake_queue(bp-dev);
-   spin_unlock_irq(bp-lock);
+   spin_unlock_irqrestore(bp-lock, flags);
done = 1;
}
 
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
index 439f413..820f8c7 100644
--- a/drivers/net/forcedeth.c
+++ b/drivers/net/forcedeth.c
@@ -2576,14 +2576,15 @@ static int nv_napi_poll(struct net_device *dev, int 
*budget)
int pkts, limit = min(*budget, dev-quota);
struct fe_priv *np = netdev_priv(dev);
u8 __iomem *base = get_hwbase(dev);
+   unsigned long flags;
 
pkts = nv_rx_process(dev, limit);
 
if (nv_alloc_rx(dev)) {
-   spin_lock_irq(np-lock);
+   spin_lock_irqsave(np-lock, flags);
if (!np-in_shutdown)
mod_timer(np-oom_kick, jiffies + OOM_REFILL);
-   spin_unlock_irq(np-lock);
+   spin_unlock_irqrestore(np-lock, flags);
}
 
if (pkts  limit) {
@@ -2591,13 +2592,15 @@ static int nv_napi_poll(struct net_device *dev, int 
*budget)
netif_rx_complete(dev);
 
/* re-enable receive interrupts */
-   spin_lock_irq(np-lock);
+   spin_lock_irqsave(np-lock, flags);
+
np-irqmask |= NVREG_IRQ_RX_ALL;
if (np-msi_flags  NV_MSI_X_ENABLED)
writel(NVREG_IRQ_RX_ALL, base + NvRegIrqMask);
else
writel(np-irqmask, base + NvRegIrqMask);
-   spin_unlock_irq(np-lock);
+
+   spin_unlock_irqrestore(np-lock, flags);
return 0;
} else {
/* used up our quantum, so reschedule */
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index 8a39376..deedfd5 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -2920,6 +2920,7 @@ static int skge_poll(struct net_device *dev, int *budget)
struct skge_hw *hw = skge-hw;
struct skge_ring *ring = skge-rx_ring;
struct skge_element *e;
+   unsigned long flags;
int to_do = min(dev-quota, *budget);
int work_done = 0;
 
@@ -2957,12 +2958,12 @@ static int skge_poll(struct net_device *dev, int 
*budget)
if (work_done =  to_do)
return 1; /* not done */
 
-   spin_lock_irq(hw-hw_lock);
+   spin_lock_irqsave(hw-hw_lock, flags);
__netif_rx_complete(dev);
hw-intr_mask |= irqmask[skge-port];
skge_write32(hw, B0_IMSK, hw-intr_mask);
skge_read32(hw, B0_IMSK);
-   spin_unlock_irq(hw-hw_lock);
+   spin_unlock_irqrestore(hw-hw_lock, flags);
 

r8169: use the broken_parity_status field in pci_dev

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a27993f3d9daca0dffa26577a83822db99c952e2
Commit: a27993f3d9daca0dffa26577a83822db99c952e2
Parent: d15e9c4d9a75702b30e00cdf95c71c88e3f3f51e
Author: Francois Romieu [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 00:04:19 2006 +0100
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 16:24:11 2006 -0500

r8169: use the broken_parity_status field in pci_dev

The former option is removed and platform code can now specify the
expected behavior.

Signed-off-by: Lennert Buytenhek [EMAIL PROTECTED]
Signed-off-by: Francois Romieu [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/r8169.c |5 +
 1 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index f83b41d..1489100 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -225,7 +225,6 @@ MODULE_DEVICE_TABLE(pci, rtl8169_pci_tbl);
 
 static int rx_copybreak = 200;
 static int use_dac;
-static int ignore_parity_err;
 static struct {
u32 msg_enable;
 } debug = { -1 };
@@ -471,8 +470,6 @@ module_param(use_dac, int, 0);
 MODULE_PARM_DESC(use_dac, Enable PCI DAC. Unsafe on 32 bit PCI slot.);
 module_param_named(debug, debug.msg_enable, int, 0);
 MODULE_PARM_DESC(debug, Debug verbosity level (0=none, ..., 16=all));
-module_param_named(ignore_parity_err, ignore_parity_err, bool, 0);
-MODULE_PARM_DESC(ignore_parity_err, Ignore PCI parity error as target. 
Default: false);
 MODULE_LICENSE(GPL);
 MODULE_VERSION(RTL8169_VERSION);
 
@@ -2388,7 +2385,7 @@ static void rtl8169_pcierr_interrupt(struct net_device 
*dev)
 *
 * Feel free to adjust to your needs.
 */
-   if (ignore_parity_err)
+   if (pdev-broken_parity_status)
pci_cmd = ~PCI_COMMAND_PARITY;
else
pci_cmd |= PCI_COMMAND_SERR | PCI_COMMAND_PARITY;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


myri10ge: make msi configurable at runtime through sysfs

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3621cec5b5847348248e749c647219f409550f2f
Commit: 3621cec5b5847348248e749c647219f409550f2f
Parent: df30a740e4647b035e44a94e6977ad42a94cb850
Author: Brice Goglin [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 11:51:22 2006 +0100
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 16:28:20 2006 -0500

myri10ge: make msi configurable at runtime through sysfs

Now that IRQ are requested is called on open() and freed on close(),
we can safely switch from/to MSI without unloading the module.

We are guaranteed to correctly free IRQ even if the sysfs file got
written in the meantime since the MSI initialization is stored in
mgp-msi_enabled.

Signed-off-by: Brice Goglin [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/myri10ge/myri10ge.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 53325ba..1ce3c9e 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -228,7 +228,7 @@ module_param(myri10ge_small_bytes, int, S_IRUGO | S_IWUSR);
 MODULE_PARM_DESC(myri10ge_small_bytes, Threshold of small packets\n);
 
 static int myri10ge_msi = 1;   /* enable msi by default */
-module_param(myri10ge_msi, int, S_IRUGO);
+module_param(myri10ge_msi, int, S_IRUGO | S_IWUSR);
 MODULE_PARM_DESC(myri10ge_msi, Enable Message Signalled Interrupts\n);
 
 static int myri10ge_intr_coal_delay = 25;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


myri10ge: no need to save MSI and PCIe state in the driver

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=83f6e1524586119df84f70b7127688c57349664a
Commit: 83f6e1524586119df84f70b7127688c57349664a
Parent: 3621cec5b5847348248e749c647219f409550f2f
Author: Brice Goglin [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 11:52:02 2006 +0100
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 16:28:20 2006 -0500

myri10ge: no need to save MSI and PCIe state in the driver

The PCI MSI and express state are already saved and restored by the
current versions of pci_save_state/pci_restore_state.
Therefore it is no longer necessary for the driver to do it.

Signed-off-by: Brice Goglin [EMAIL PROTECTED]
Signed-off-by: Stephen Hemminger [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/myri10ge/myri10ge.c |   47 +++---
 1 files changed, 9 insertions(+), 38 deletions(-)

diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 1ce3c9e..9bc5dab 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -199,8 +199,6 @@ struct myri10ge_priv {
unsigned long serial_number;
int vendor_specific_offset;
int fw_multicast_support;
-   u32 devctl;
-   u16 msi_flags;
u32 read_dma;
u32 write_dma;
u32 read_write_dma;
@@ -2520,34 +2518,6 @@ static void myri10ge_select_firmware(struct 
myri10ge_priv *mgp)
}
 }
 
-static void myri10ge_save_state(struct myri10ge_priv *mgp)
-{
-   struct pci_dev *pdev = mgp-pdev;
-   int cap;
-
-   pci_save_state(pdev);
-   /* now save PCIe and MSI state that Linux will not
-* save for us */
-   cap = pci_find_capability(pdev, PCI_CAP_ID_EXP);
-   pci_read_config_dword(pdev, cap + PCI_EXP_DEVCTL, mgp-devctl);
-   cap = pci_find_capability(pdev, PCI_CAP_ID_MSI);
-   pci_read_config_word(pdev, cap + PCI_MSI_FLAGS, mgp-msi_flags);
-}
-
-static void myri10ge_restore_state(struct myri10ge_priv *mgp)
-{
-   struct pci_dev *pdev = mgp-pdev;
-   int cap;
-
-   /* restore PCIe and MSI state that linux will not */
-   cap = pci_find_capability(pdev, PCI_CAP_ID_EXP);
-   pci_write_config_dword(pdev, cap + PCI_CAP_ID_EXP, mgp-devctl);
-   cap = pci_find_capability(pdev, PCI_CAP_ID_MSI);
-   pci_write_config_word(pdev, cap + PCI_MSI_FLAGS, mgp-msi_flags);
-
-   pci_restore_state(pdev);
-}
-
 #ifdef CONFIG_PM
 
 static int myri10ge_suspend(struct pci_dev *pdev, pm_message_t state)
@@ -2568,7 +2538,7 @@ static int myri10ge_suspend(struct pci_dev *pdev, 
pm_message_t state)
rtnl_unlock();
}
myri10ge_dummy_rdma(mgp, 0);
-   myri10ge_save_state(mgp);
+   pci_save_state(pdev);
pci_disable_device(pdev);
pci_set_power_state(pdev, pci_choose_state(pdev, state));
return 0;
@@ -2593,7 +2563,8 @@ static int myri10ge_resume(struct pci_dev *pdev)
   mgp-dev-name);
return -EIO;
}
-   myri10ge_restore_state(mgp);
+
+   pci_restore_state(pdev);
 
status = pci_enable_device(pdev);
if (status  0) {
@@ -2608,7 +2579,7 @@ static int myri10ge_resume(struct pci_dev *pdev)
 
/* Save configuration space to be restored if the
 * nic resets due to a parity error */
-   myri10ge_save_state(mgp);
+   pci_save_state(pdev);
 
if (netif_running(netdev)) {
rtnl_lock();
@@ -2674,10 +2645,10 @@ static void myri10ge_watchdog(struct work_struct *work)
 * when the driver was loaded, or the last time the
 * nic was resumed from power saving mode.
 */
-   myri10ge_restore_state(mgp);
+   pci_restore_state(mgp-pdev);
 
/* save state again for accounting reasons */
-   myri10ge_save_state(mgp);
+   pci_save_state(mgp-pdev);
 
} else {
/* if we get back -1's from our slot, perhaps somebody
@@ -2917,7 +2888,7 @@ static int myri10ge_probe(struct pci_dev *pdev, const 
struct pci_device_id *ent)
 
/* Save configuration space to be restored if the
 * nic resets due to a parity error */
-   myri10ge_save_state(mgp);
+   pci_save_state(pdev);
 
/* Setup the watchdog timer */
setup_timer(mgp-watchdog_timer, myri10ge_watchdog_timer,
@@ -2937,7 +2908,7 @@ static int myri10ge_probe(struct pci_dev *pdev, const 
struct pci_device_id *ent)
return 0;
 
 abort_with_state:
-   myri10ge_restore_state(mgp);
+   pci_restore_state(pdev);
 
 abort_with_firmware:
myri10ge_dummy_rdma(mgp, 0);
@@ -2992,7 +2963,7 @@ static void myri10ge_remove(struct pci_dev *pdev)
myri10ge_dummy_rdma(mgp, 0);
 
/* avoid a memory leak */
-   myri10ge_restore_state(mgp);
+   pci_restore_state(pdev);
 
bytes = 

via-velocity uses INET interfaces

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ce9f7fe3c3f5b9ed1d3e91db78c45d0df5672816
Commit: ce9f7fe3c3f5b9ed1d3e91db78c45d0df5672816
Parent: 683a2aa339f607c8a422835161ceab68b2a5a18a
Author: Randy Dunlap [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 21:21:10 2006 -0800
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 16:28:20 2006 -0500

via-velocity uses INET interfaces

via-velocity doesn't build when CONFIG_INET=n:

drivers/built-in.o: In function `velocity_unregister_notifier':
via-velocity.c:(.text+0xe9b46): undefined reference to 
`unregister_inetaddr_notifier'
drivers/built-in.o: In function `velocity_init_module':
via-velocity.c:(.init.text+0xa027): undefined reference to 
`register_inetaddr_notifier'

I wanted to make this change in drivers/net/Kconfig, but
this isn't legal kconfig language:

 config VIA_VELOCITY
tristate VIA Velocity support
depends on NET_PCI  PCI
+   depends on INET if PM
select CRC32
select CRC_CCITT
select MII

so fix it in via-velocity.c instead.
Builds with all 4 combinations of CONFIG_NET  CONFIG_PM.

Signed-off-by: Randy Dunlap [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/via-velocity.c |   18 +-
 1 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
index 4587f23..8e5d820 100644
--- a/drivers/net/via-velocity.c
+++ b/drivers/net/via-velocity.c
@@ -265,15 +265,19 @@ static int velocity_set_media_mode(struct velocity_info 
*vptr, u32 mii_status);
 static int velocity_suspend(struct pci_dev *pdev, pm_message_t state);
 static int velocity_resume(struct pci_dev *pdev);
 
+static DEFINE_SPINLOCK(velocity_dev_list_lock);
+static LIST_HEAD(velocity_dev_list);
+
+#endif
+
+#if defined(CONFIG_PM)  defined(CONFIG_INET)
+
 static int velocity_netdev_event(struct notifier_block *nb, unsigned long 
notification, void *ptr);
 
 static struct notifier_block velocity_inetaddr_notifier = {
   .notifier_call   = velocity_netdev_event,
 };
 
-static DEFINE_SPINLOCK(velocity_dev_list_lock);
-static LIST_HEAD(velocity_dev_list);
-
 static void velocity_register_notifier(void)
 {
register_inetaddr_notifier(velocity_inetaddr_notifier);
@@ -284,12 +288,12 @@ static void velocity_unregister_notifier(void)
unregister_inetaddr_notifier(velocity_inetaddr_notifier);
 }
 
-#else  /* CONFIG_PM */
+#else
 
 #define velocity_register_notifier()   do {} while (0)
 #define velocity_unregister_notifier() do {} while (0)
 
-#endif /* !CONFIG_PM */
+#endif
 
 /*
  * Internal board variants. At the moment we have only one
@@ -3292,6 +3296,8 @@ static int velocity_resume(struct pci_dev *pdev)
return 0;
 }
 
+#ifdef CONFIG_INET
+
 static int velocity_netdev_event(struct notifier_block *nb, unsigned long 
notification, void *ptr)
 {
struct in_ifaddr *ifa = (struct in_ifaddr *) ptr;
@@ -3312,4 +3318,6 @@ static int velocity_netdev_event(struct notifier_block 
*nb, unsigned long notifi
}
return NOTIFY_DONE;
 }
+
+#endif
 #endif
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


sky2: dual port NAPI problem

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=25d82d7a2fc20cc4be414d738139594dc0adf179
Commit: 25d82d7a2fc20cc4be414d738139594dc0adf179
Parent: ce9f7fe3c3f5b9ed1d3e91db78c45d0df5672816
Author: Stephen Hemminger [EMAIL PROTECTED]
AuthorDate: Wed Dec 20 13:06:33 2006 -0800
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 16:36:42 2006 -0500

sky2: dual port NAPI problem

Shutting down port 0 disables the NAPI poll used by both ports.
The long term fix will be to separate NAPI object from net device
until then just reenable if needed.

Signed-off-by: Stephen Hemminger [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/sky2.c |7 +++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index fb1d2c3..4fb3db9 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -1511,6 +1511,13 @@ static int sky2_down(struct net_device *dev)
imask = ~portirq_msk[port];
sky2_write32(hw, B0_IMSK, imask);
 
+   /*
+* Both ports share the NAPI poll on port 0, so if necessary undo the
+* the disable that is done in dev_close.
+*/
+   if (sky2-port == 0  hw-ports  1)
+   netif_poll_enable(dev);
+
sky2_gmac_reset(hw, port);
 
/* Stop transmitter */
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


sky2: power management/MSI workaround

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=44ade178249fe53d055fd92113eaa271e06acddd
Commit: 44ade178249fe53d055fd92113eaa271e06acddd
Parent: 25d82d7a2fc20cc4be414d738139594dc0adf179
Author: Stephen Hemminger [EMAIL PROTECTED]
AuthorDate: Wed Dec 20 13:06:34 2006 -0800
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 16:36:42 2006 -0500

sky2: power management/MSI workaround

MSI doesn't work properly on resume on many platforms because the
BIOS goes and changes it back to INTx mode after the sky2 driver has
restored in resume.

It is really a bug in the base power management resume code, and
this workaround is temporary until the change to PM code works it's way
through the release process.  The PM fix is non-trivial since it needs
to change when non-boot CPU's are enabled.

Signed-off-by: Stephen Hemminger [EMAIL PROTECTED]
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/sky2.c |   25 +
 1 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 4fb3db9..93cb393 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -3638,6 +3638,29 @@ static int sky2_resume(struct pci_dev *pdev)
 out:
return err;
 }
+
+/* BIOS resume runs after device (it's a bug in PM)
+ * as a temporary workaround on suspend/resume leave MSI disabled
+ */
+static int sky2_suspend_late(struct pci_dev *pdev, pm_message_t state)
+{
+   struct sky2_hw *hw = pci_get_drvdata(pdev);
+
+   free_irq(pdev-irq, hw);
+   if (hw-msi) {
+   pci_disable_msi(pdev);
+   hw-msi = 0;
+   }
+   return 0;
+}
+
+static int sky2_resume_early(struct pci_dev *pdev)
+{
+   struct sky2_hw *hw = pci_get_drvdata(pdev);
+   struct net_device *dev = hw-dev[0];
+
+   return request_irq(pdev-irq, sky2_intr, IRQF_SHARED, dev-name, hw);
+}
 #endif
 
 static struct pci_driver sky2_driver = {
@@ -3648,6 +3671,8 @@ static struct pci_driver sky2_driver = {
 #ifdef CONFIG_PM
.suspend = sky2_suspend,
.resume = sky2_resume,
+   .suspend_late = sky2_suspend_late,
+   .resume_early = sky2_resume_early,
 #endif
 };
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] ieee80211softmac: Fix errors related to the work_struct changes

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6f07a8a3eb2adbfacd1322862368da4eb9dd3b45
Commit: 6f07a8a3eb2adbfacd1322862368da4eb9dd3b45
Parent: 4d1feabcbf41f875447a392015acd0796f57baf6
Author: Ulrich Kunitz [EMAIL PROTECTED]
AuthorDate: Sun Dec 10 18:39:08 2006 +0100
Committer:  John W. Linville [EMAIL PROTECTED]
CommitDate: Tue Dec 19 16:16:15 2006 -0500

[PATCH] ieee80211softmac: Fix errors related to the work_struct changes

The signature of work functions changed recently from a context
pointer to the work structure pointer. This caused a problem in
the ieee80211softmac code, because the ieee80211softmac_assox_work
function has  been called directly with a parameter explicitly
casted to (void*). This compiled correctly but resulted in a
softlock, because mutex_lock was called with the wrong memory
address. The patch fixes the problem. Another issue was a wrong
call of the schedule_work function. Softmac works again and this
fixes the problem I mentioned earlier in the zd1211rw rx tasklet
patch. The patch is against Linus' tree (commit af1713e0).

Signed-off-by: Ulrich Kunitz [EMAIL PROTECTED]
Acked-by: Michael Buesch [EMAIL PROTECTED]
Signed-off-by: Larry Finger [EMAIL PROTECTED]
Signed-off-by: Andrew Morton [EMAIL PROTECTED]
Signed-off-by: John W. Linville [EMAIL PROTECTED]
---
 net/ieee80211/softmac/ieee80211softmac_assoc.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/ieee80211/softmac/ieee80211softmac_assoc.c 
b/net/ieee80211/softmac/ieee80211softmac_assoc.c
index e3f37fd..a824852 100644
--- a/net/ieee80211/softmac/ieee80211softmac_assoc.c
+++ b/net/ieee80211/softmac/ieee80211softmac_assoc.c
@@ -167,7 +167,7 @@ static void
 ieee80211softmac_assoc_notify_scan(struct net_device *dev, int event_type, 
void *context)
 {
struct ieee80211softmac_device *mac = ieee80211_priv(dev);
-   ieee80211softmac_assoc_work((void*)mac);
+   ieee80211softmac_assoc_work(mac-associnfo.work.work);
 }
 
 static void
@@ -177,7 +177,7 @@ ieee80211softmac_assoc_notify_auth(struct net_device *dev, 
int event_type, void
 
switch (event_type) {
case IEEE80211SOFTMAC_EVENT_AUTHENTICATED:
-   ieee80211softmac_assoc_work((void*)mac);
+   ieee80211softmac_assoc_work(mac-associnfo.work.work);
break;
case IEEE80211SOFTMAC_EVENT_AUTH_FAILED:
case IEEE80211SOFTMAC_EVENT_AUTH_TIMEOUT:
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


NetXen: Adding new device ids.

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0d39073484d6e01d325e6d94a3967ce0e98161a7
Commit: 0d39073484d6e01d325e6d94a3967ce0e98161a7
Parent: 3e65bb94a9de542c464bf00035a08b0e0a76993d
Author: Amit S. Kale [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 05:50:59 2006 -0800
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 16:45:25 2006 -0500

NetXen: Adding new device ids.

Signed-off-by: Amit S. Kale [EMAIL PROTECTED]

netxen_nic_main.c |2 ++
 1 files changed, 2 insertions(+)
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/netxen/netxen_nic_main.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/net/netxen/netxen_nic_main.c 
b/drivers/net/netxen/netxen_nic_main.c
index 575b71b..d8b1daf 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -90,6 +90,8 @@ static struct pci_device_id netxen_pci_tbl[] __devinitdata = {
{PCI_DEVICE(0x4040, 0x0003)},
{PCI_DEVICE(0x4040, 0x0004)},
{PCI_DEVICE(0x4040, 0x0005)},
+   {PCI_DEVICE(0x4040, 0x0024)},
+   {PCI_DEVICE(0x4040, 0x0025)},
{0,}
 };
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


NetXen: driver reload fix for newer firmware.

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b0d541dbb940fe8899e3020fcc9ee5a1e2be0306
Commit: b0d541dbb940fe8899e3020fcc9ee5a1e2be0306
Parent: 0d39073484d6e01d325e6d94a3967ce0e98161a7
Author: Amit S. Kale [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 05:51:29 2006 -0800
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 16:45:25 2006 -0500

NetXen: driver reload fix for newer firmware.

Signed-off-by: Amit S. Kale [EMAIL PROTECTED]

netxen_nic_main.c |7 +++
 1 files changed, 7 insertions(+)
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/netxen/netxen_nic_main.c |7 +++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/drivers/net/netxen/netxen_nic_main.c 
b/drivers/net/netxen/netxen_nic_main.c
index d8b1daf..f2b3fbc 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -446,6 +446,11 @@ netxen_nic_probe(struct pci_dev *pdev, const struct 
pci_device_id *ent)
adapter-port[i] = port;
}
 
+   writel(0, NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
+   netxen_pinit_from_rom(adapter, 0);
+   udelay(500);
+   netxen_load_firmware(adapter);
+   netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE);
/*
 * delay a while to ensure that the Pegs are up  running.
 * Otherwise, we might see some flaky behaviour.
@@ -533,6 +538,8 @@ static void __devexit netxen_nic_remove(struct pci_dev 
*pdev)
 
netxen_nic_stop_all_ports(adapter);
/* leave the hw in the same state as reboot */
+   netxen_pinit_from_rom(adapter, 0);
+   writel(0, NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
netxen_load_firmware(adapter);
netxen_free_adapter_offload(adapter);
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


NetXen: Reducing ring sizes for IOMMU issue.

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bd56c6b15e809d0fcb43bc8d505ca4d15debac62
Commit: bd56c6b15e809d0fcb43bc8d505ca4d15debac62
Parent: ed33ebe464d973ab656cfc9ff0ca40a4c1e38238
Author: Amit S. Kale [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 05:54:36 2006 -0800
Committer:  Jeff Garzik [EMAIL PROTECTED]
CommitDate: Tue Dec 26 16:46:39 2006 -0500

NetXen: Reducing ring sizes for IOMMU issue.

Signed-off-by: Amit S. Kale [EMAIL PROTECTED]

 netxen_nic.h |   10 +-
 1 files changed, 5 insertions(+), 5 deletions(-)
Signed-off-by: Jeff Garzik [EMAIL PROTECTED]
---
 drivers/net/netxen/netxen_nic.h |   10 +-
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h
index 31b2553..edd725e 100644
--- a/drivers/net/netxen/netxen_nic.h
+++ b/drivers/net/netxen/netxen_nic.h
@@ -63,7 +63,7 @@
 
 #include netxen_nic_hw.h
 
-#define NETXEN_NIC_BUILD_NO 3
+#define NETXEN_NIC_BUILD_NO 4
 #define _NETXEN_NIC_LINUX_MAJOR 3
 #define _NETXEN_NIC_LINUX_MINOR 3
 #define _NETXEN_NIC_LINUX_SUBVERSION 2
@@ -137,7 +137,7 @@ extern struct workqueue_struct *netxen_workq;
 #define THIRD_PAGE_GROUP_SIZE  THIRD_PAGE_GROUP_END - THIRD_PAGE_GROUP_START
 
 #define MAX_RX_BUFFER_LENGTH   1760
-#define MAX_RX_JUMBO_BUFFER_LENGTH 9046
+#define MAX_RX_JUMBO_BUFFER_LENGTH 8062
 #define MAX_RX_LRO_BUFFER_LENGTH   ((48*1024)-512)
 #define RX_DMA_MAP_LEN (MAX_RX_BUFFER_LENGTH - 2)
 #define RX_JUMBO_DMA_MAP_LEN   \
@@ -199,9 +199,9 @@ enum {
(RCV_DESC_NORMAL)))
 
 #define MAX_CMD_DESCRIPTORS1024
-#define MAX_RCV_DESCRIPTORS32768
-#define MAX_JUMBO_RCV_DESCRIPTORS  4096
-#define MAX_LRO_RCV_DESCRIPTORS2048
+#define MAX_RCV_DESCRIPTORS16384
+#define MAX_JUMBO_RCV_DESCRIPTORS  1024
+#define MAX_LRO_RCV_DESCRIPTORS64
 #define MAX_RCVSTATUS_DESCRIPTORS  MAX_RCV_DESCRIPTORS
 #define MAX_JUMBO_RCV_DESC MAX_JUMBO_RCV_DESCRIPTORS
 #define MAX_RCV_DESC   MAX_RCV_DESCRIPTORS
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


r8169: extraneous Cmd{Tx/Rx}Enb write

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=81f4e6c190a0fa016fd7eecaf76a5f95d121afc2
Commit: 81f4e6c190a0fa016fd7eecaf76a5f95d121afc2
Parent: 87046e5062c483820f20c1fa6ed0826bb38fd4f0
Author: Francois Romieu [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 00:00:55 2006 +0100
Committer:  Francois Romieu [EMAIL PROTECTED]
CommitDate: Tue Dec 26 23:28:02 2006 +0100

r8169: extraneous Cmd{Tx/Rx}Enb write

Checked in Realtek's driver, this one has no business being there.
The driver still works but there is a noticeable performance drop.

Signed-off-by: Francois Romieu [EMAIL PROTECTED]
---
 drivers/net/r8169.c |1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index 1489100..577babd 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -1882,7 +1882,6 @@ static void rtl8169_hw_start(struct net_device *dev)
(tp-mac_version == RTL_GIGA_MAC_VER_02) ||
(tp-mac_version == RTL_GIGA_MAC_VER_03) ||
(tp-mac_version == RTL_GIGA_MAC_VER_04))
-   RTL_W8(ChipCmd, CmdTxEnb | CmdRxEnb);
rtl8169_set_rx_tx_config_registers(tp);
 
cmd = RTL_R16(CPlusCmd);
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4955): Fix autosearch index

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a821e990e4db77cd87bec488fb425d8d4ced79bd
Commit: a821e990e4db77cd87bec488fb425d8d4ced79bd
Parent: 3bf8ba38f38d3647368e4edcf7d019f9f8d9184a
Author: Mario Rossi [EMAIL PROTECTED]
AuthorDate: Mon Dec 11 05:37:31 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 10:23:24 2006 -0200

V4L/DVB (4955): Fix autosearch index

After rewriting the driver the wrong autosearch index was used when
COFDM-parameter needed to be detected.
Thanks to Mario Rossi who found it.

Signed-off-by: Mario Rossi [EMAIL PROTECTED]
Signed-off-by: Patrick Boettcher [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/dvb/frontends/dib3000mc.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/media/dvb/frontends/dib3000mc.c 
b/drivers/media/dvb/frontends/dib3000mc.c
index 5da6617..23aa75a 100644
--- a/drivers/media/dvb/frontends/dib3000mc.c
+++ b/drivers/media/dvb/frontends/dib3000mc.c
@@ -515,7 +515,7 @@ static int dib3000mc_autosearch_start(struct dvb_frontend 
*demod, struct dibx000
fchan.vit_alpha = 1; fchan.vit_code_rate_hp = 2; fchan.vit_code_rate_lp 
= 2;
fchan.vit_hrch = 0; fchan.vit_select_hp = 1;
 
-   dib3000mc_set_channel_cfg(state, fchan, 7);
+   dib3000mc_set_channel_cfg(state, fchan, 11);
 
reg = dib3000mc_read_word(state, 0);
dib3000mc_write_word(state, 0, reg | (1  8));
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4956): [NOVA-T-USB2] Put remote-debugging in the right place

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6ccd60172e271d156dba8a4002568d3bf1912e01
Commit: 6ccd60172e271d156dba8a4002568d3bf1912e01
Parent: a821e990e4db77cd87bec488fb425d8d4ced79bd
Author: Mario Rossi [EMAIL PROTECTED]
AuthorDate: Mon Dec 11 05:42:36 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 10:23:24 2006 -0200

V4L/DVB (4956): [NOVA-T-USB2] Put remote-debugging in the right place

This patch removes unnecessary (and misleading) debug
output (it printed the values of the keys in the table up to the value
of the key pressed).

Signed-off-by: Mario Rossi [EMAIL PROTECTED]
Signed-off-by: Patrick Boettcher [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/dvb/dvb-usb/nova-t-usb2.c |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/media/dvb/dvb-usb/nova-t-usb2.c 
b/drivers/media/dvb/dvb-usb/nova-t-usb2.c
index d48622e..badc468 100644
--- a/drivers/media/dvb/dvb-usb/nova-t-usb2.c
+++ b/drivers/media/dvb/dvb-usb/nova-t-usb2.c
@@ -90,9 +90,11 @@ static int nova_t_rc_query(struct dvb_usb_device *d, u32 
*event, int *state)
deb_rc(raw key code 0x%02x, 0x%02x, 0x%02x to c: %02x 
d: %02x toggle: %d\n,key[1],key[2],key[3],custom,data,toggle);
 
for (i = 0; i  ARRAY_SIZE(haupp_rc_keys); i++) {
-   deb_rc(c: %x, d: 
%x\n,haupp_rc_keys[i].data,haupp_rc_keys[i].custom);
if (haupp_rc_keys[i].data == data 
haupp_rc_keys[i].custom == custom) {
+
+   deb_rc(c: %x, d: 
%x\n,haupp_rc_keys[i].data,haupp_rc_keys[i].custom);
+
*event = haupp_rc_keys[i].event;
*state = REMOTE_KEY_PRESSED;
if (st-old_toggle == toggle) {
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4959): Usbvision: possible cleanups

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0a0ceadebd4551c26110f5daf0b38d9054674c9e
Commit: 0a0ceadebd4551c26110f5daf0b38d9054674c9e
Parent: bee8a44ecb37c1d80afd2af932f60e786f0eabc2
Author: Adrian Bunk [EMAIL PROTECTED]
AuthorDate: Mon Dec 11 15:51:36 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 10:23:25 2006 -0200

V4L/DVB (4959): Usbvision: possible cleanups

This patch contains the following possible cleanups:
- make needlessly global functions static
- remove the unused EXPORT_SYMBOL's

Signed-off-by: Adrian Bunk [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/usbvision/usbvision-core.c  |   33 +-
 drivers/media/video/usbvision/usbvision-i2c.c   |5 +---
 drivers/media/video/usbvision/usbvision-video.c |2 +-
 drivers/media/video/usbvision/usbvision.h   |2 -
 4 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/drivers/media/video/usbvision/usbvision-core.c 
b/drivers/media/video/usbvision/usbvision-core.c
index 797b97b..6126873 100644
--- a/drivers/media/video/usbvision/usbvision-core.c
+++ b/drivers/media/video/usbvision/usbvision-core.c
@@ -118,7 +118,7 @@ static int usbvision_measure_bandwidth (struct 
usb_usbvision *usbvision);
  * This is used when initializing the contents of the area.
  */
 
-void *usbvision_rvmalloc(unsigned long size)
+static void *usbvision_rvmalloc(unsigned long size)
 {
void *mem;
unsigned long adr;
@@ -181,7 +181,7 @@ static void usbvision_hexdump(const unsigned char *data, 
int len)
 /
  * scratch ring buffer handling
  /
-int scratch_len(struct usb_usbvision *usbvision)/*This returns the amount 
of data actually in the buffer */
+static int scratch_len(struct usb_usbvision *usbvision)/*This returns the 
amount of data actually in the buffer */
 {
int len = usbvision-scratch_write_ptr - usbvision-scratch_read_ptr;
if (len  0) {
@@ -194,7 +194,7 @@ int scratch_len(struct usb_usbvision *usbvision)/*This 
returns the amount of
 
 
 /* This returns the free space left in the buffer */
-int scratch_free(struct usb_usbvision *usbvision)
+static int scratch_free(struct usb_usbvision *usbvision)
 {
int free = usbvision-scratch_read_ptr - usbvision-scratch_write_ptr;
if (free = 0) {
@@ -211,7 +211,8 @@ int scratch_free(struct usb_usbvision *usbvision)
 
 
 /* This puts data into the buffer */
-int scratch_put(struct usb_usbvision *usbvision, unsigned char *data, int len)
+static int scratch_put(struct usb_usbvision *usbvision, unsigned char *data,
+  int len)
 {
int len_part;
 
@@ -237,7 +238,7 @@ int scratch_put(struct usb_usbvision *usbvision, unsigned 
char *data, int len)
 }
 
 /* This marks the write_ptr as position of new frame header */
-void scratch_mark_header(struct usb_usbvision *usbvision)
+static void scratch_mark_header(struct usb_usbvision *usbvision)
 {
PDEBUG(DBG_SCRATCH, header at write_ptr=%d\n, 
usbvision-scratch_headermarker_write_ptr);
 
@@ -248,7 +249,8 @@ void scratch_mark_header(struct usb_usbvision *usbvision)
 }
 
 /* This gets data from the buffer at the given ptr position */
-int scratch_get_extra(struct usb_usbvision *usbvision, unsigned char *data, 
int *ptr, int len)
+static int scratch_get_extra(struct usb_usbvision *usbvision,
+unsigned char *data, int *ptr, int len)
 {
int len_part;
if (*ptr + len  scratch_buf_size) {
@@ -274,7 +276,8 @@ int scratch_get_extra(struct usb_usbvision *usbvision, 
unsigned char *data, int
 
 
 /* This sets the scratch extra read pointer */
-void scratch_set_extra_ptr(struct usb_usbvision *usbvision, int *ptr, int len)
+static void scratch_set_extra_ptr(struct usb_usbvision *usbvision, int *ptr,
+ int len)
 {
*ptr = (usbvision-scratch_read_ptr + len)%scratch_buf_size;
 
@@ -283,7 +286,7 @@ void scratch_set_extra_ptr(struct usb_usbvision *usbvision, 
int *ptr, int len)
 
 
 /*This increments the scratch extra read pointer */
-void scratch_inc_extra_ptr(int *ptr, int len)
+static void scratch_inc_extra_ptr(int *ptr, int len)
 {
*ptr = (*ptr + len) % scratch_buf_size;
 
@@ -292,7 +295,8 @@ void scratch_inc_extra_ptr(int *ptr, int len)
 
 
 /* This gets data from the buffer */
-int scratch_get(struct usb_usbvision *usbvision, unsigned char *data, int len)
+static int scratch_get(struct usb_usbvision *usbvision, unsigned char *data,
+  int len)
 {
int len_part;
if (usbvision-scratch_read_ptr + len  scratch_buf_size) {
@@ -318,7 +322,8 @@ int scratch_get(struct usb_usbvision *usbvision, unsigned 
char *data, int len)
 
 
 /* This sets read pointer to next header and returns it */
-int scratch_get_header(struct 

V4L/DVB (4960): Removal of unused code from usbvision-i2c.c

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c6268461473e1c62e31afde657069c050ee8dea7
Commit: c6268461473e1c62e31afde657069c050ee8dea7
Parent: 0a0ceadebd4551c26110f5daf0b38d9054674c9e
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Mon Dec 11 17:18:15 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 10:23:25 2006 -0200

V4L/DVB (4960): Removal of unused code from usbvision-i2c.c

i2c_adap is almost not used. This patch removes it, cleaning the i2c 
support,
and improving driver understanding.
Thanks to Thierry Merle for testing it.

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/usbvision/usbvision-i2c.c |   27 +++-
 drivers/media/video/usbvision/usbvision.h |   23 -
 2 files changed, 4 insertions(+), 46 deletions(-)

diff --git a/drivers/media/video/usbvision/usbvision-i2c.c 
b/drivers/media/video/usbvision/usbvision-i2c.c
index 9540bd0..efcd25b 100644
--- a/drivers/media/video/usbvision/usbvision-i2c.c
+++ b/drivers/media/video/usbvision/usbvision-i2c.c
@@ -58,7 +58,6 @@ static int usbvision_i2c_read(void *data, unsigned char addr, 
char *buf,
 static inline int try_write_address(struct i2c_adapter *i2c_adap,
unsigned char addr, int retries)
 {
-   struct i2c_algo_usb_data *adap = i2c_adap-algo_data;
void *data;
int i, ret = -1;
char buf[4];
@@ -69,10 +68,10 @@ static inline int try_write_address(struct i2c_adapter 
*i2c_adap,
ret = (usbvision_i2c_write(data, addr, buf, 1));
if (ret == 1)
break;  /* success! */
-   udelay(5 /*adap-udelay */ );
+   udelay(5);
if (i == retries)   /* no success */
break;
-   udelay(adap-udelay);
+   udelay(10);
}
if (i) {
PDEBUG(DBG_ALGO,Needed %d retries for address %#2x, i, addr);
@@ -84,7 +83,6 @@ static inline int try_write_address(struct i2c_adapter 
*i2c_adap,
 static inline int try_read_address(struct i2c_adapter *i2c_adap,
   unsigned char addr, int retries)
 {
-   struct i2c_algo_usb_data *adap = i2c_adap-algo_data;
void *data;
int i, ret = -1;
char buf[4];
@@ -94,10 +92,10 @@ static inline int try_read_address(struct i2c_adapter 
*i2c_adap,
ret = (usbvision_i2c_read(data, addr, buf, 1));
if (ret == 1)
break;  /* success! */
-   udelay(5 /*adap-udelay */ );
+   udelay(5);
if (i == retries)   /* no success */
break;
-   udelay(adap-udelay);
+   udelay(10);
}
if (i) {
PDEBUG(DBG_ALGO,Needed %d retries for address %#2x, i, addr);
@@ -248,15 +246,12 @@ int usbvision_i2c_usb_del_bus(struct i2c_adapter *adap)
 /* usbvision specific I2C functions*/
 /* --- */
 static struct i2c_adapter i2c_adap_template;
-static struct i2c_algo_usb_data i2c_algo_template;
 static struct i2c_client i2c_client_template;
 
 int usbvision_init_i2c(struct usb_usbvision *usbvision)
 {
memcpy(usbvision-i2c_adap, i2c_adap_template,
   sizeof(struct i2c_adapter));
-   memcpy(usbvision-i2c_algo, i2c_algo_template,
-  sizeof(struct i2c_algo_usb_data));
memcpy(usbvision-i2c_client, i2c_client_template,
   sizeof(struct i2c_client));
 
@@ -266,9 +261,7 @@ int usbvision_init_i2c(struct usb_usbvision *usbvision)
 
i2c_set_adapdata(usbvision-i2c_adap, usbvision);
i2c_set_clientdata(usbvision-i2c_client, usbvision);
-   i2c_set_algo_usb_data(usbvision-i2c_algo, usbvision);
 
-   usbvision-i2c_adap.algo_data = usbvision-i2c_algo;
usbvision-i2c_client.adapter = usbvision-i2c_adap;
 
if (usbvision_write_reg(usbvision, USBVISION_SER_MODE, 
USBVISION_IIC_LRNACK)  0) {
@@ -297,7 +290,6 @@ int usbvision_init_i2c(struct usb_usbvision *usbvision)
 void call_i2c_clients(struct usb_usbvision *usbvision, unsigned int cmd,
  void *arg)
 {
-   BUG_ON(NULL == usbvision-i2c_adap.algo_data);
i2c_clients_command(usbvision-i2c_adap, cmd, arg);
 }
 
@@ -531,21 +523,10 @@ static int usbvision_i2c_read(void *data, unsigned char 
addr, char *buf,
return rdcount;
 }
 
-static struct i2c_algo_usb_data i2c_algo_template = {
-   .data   = NULL,
-   .inb= usbvision_i2c_read,
-   .outb   = usbvision_i2c_write,
-   .udelay = 10,
-   .mdelay = 10,
-   .timeout= 100,
-};
-
 static struct i2c_adapter i2c_adap_template = {
.owner = 

V4L/DVB (4964): VIDEO_PALETTE_YUYV and VIDEO_PALETTE_YUV422 are the same palette

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2485eb0a553f2ac8c73267ce48fcdee8a9728d43
Commit: 2485eb0a553f2ac8c73267ce48fcdee8a9728d43
Parent: c6268461473e1c62e31afde657069c050ee8dea7
Author: [EMAIL PROTECTED] [EMAIL PROTECTED]
AuthorDate: Tue Dec 12 10:35:57 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:18:50 2006 -0200

V4L/DVB (4964): VIDEO_PALETTE_YUYV and VIDEO_PALETTE_YUV422 are the same 
palette

Consistent handling of VIDEO_PALETTE_YUYV and VIDEO_PALETTE_YUV422

Signed-off-by: Andrea A Odetti [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/meye.c |4 ++--
 drivers/media/video/w9966.c|2 +-
 drivers/media/video/zoran_device.c |3 ++-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/media/video/meye.c b/drivers/media/video/meye.c
index b083338..616a35d 100644
--- a/drivers/media/video/meye.c
+++ b/drivers/media/video/meye.c
@@ -923,7 +923,7 @@ static int meye_do_ioctl(struct inode *inode, struct file 
*file,
struct video_picture *p = arg;
if (p-depth != 16)
return -EINVAL;
-   if (p-palette != VIDEO_PALETTE_YUV422)
+   if (p-palette != VIDEO_PALETTE_YUV422  p-palette != 
VIDEO_PALETTE_YUYV)
return -EINVAL;
mutex_lock(meye.lock);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERABRIGHTNESS,
@@ -978,7 +978,7 @@ static int meye_do_ioctl(struct inode *inode, struct file 
*file,
 
if (vm-frame = gbuffers || vm-frame  0)
return -EINVAL;
-   if (vm-format != VIDEO_PALETTE_YUV422)
+   if (vm-format != VIDEO_PALETTE_YUV422  vm-format != 
VIDEO_PALETTE_YUYV)
return -EINVAL;
if (vm-height * vm-width * 2  gbufsize)
return -EINVAL;
diff --git a/drivers/media/video/w9966.c b/drivers/media/video/w9966.c
index 4bdc886..8d14f30 100644
--- a/drivers/media/video/w9966.c
+++ b/drivers/media/video/w9966.c
@@ -789,7 +789,7 @@ static int w9966_v4l_do_ioctl(struct inode *inode, struct 
file *file,
case VIDIOCSPICT:
{
struct video_picture *vpic = arg;
-   if (vpic-depth != 16 || vpic-palette != VIDEO_PALETTE_YUV422)
+   if (vpic-depth != 16 || (vpic-palette != VIDEO_PALETTE_YUV422 
 vpic-palette != VIDEO_PALETTE_YUYV))
return -EINVAL;
 
cam-brightness = vpic-brightness  8;
diff --git a/drivers/media/video/zoran_device.c 
b/drivers/media/video/zoran_device.c
index 168e431..b075276 100644
--- a/drivers/media/video/zoran_device.c
+++ b/drivers/media/video/zoran_device.c
@@ -429,7 +429,7 @@ zr36057_set_vfe (struct zoran  *zr,
reg |= (HorDcm  ZR36057_VFESPFR_HorDcm);
reg |= (VerDcm  ZR36057_VFESPFR_VerDcm);
reg |= (DispMode  ZR36057_VFESPFR_DispMode);
-   if (format-palette != VIDEO_PALETTE_YUV422)
+   if (format-palette != VIDEO_PALETTE_YUV422  format-palette != 
VIDEO_PALETTE_YUYV)
reg |= ZR36057_VFESPFR_LittleEndian;
/* RJ: I don't know, why the following has to be the opposite
 * of the corresponding ZR36060 setting, but only this way
@@ -441,6 +441,7 @@ zr36057_set_vfe (struct zoran  *zr,
reg |= ZR36057_VFESPFR_TopField;
switch (format-palette) {
 
+   case VIDEO_PALETTE_YUYV:
case VIDEO_PALETTE_YUV422:
reg |= ZR36057_VFESPFR_YUV422;
break;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4970): Usbvision memory fixes

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=38284ba361d69eca34a3bfc553ebfac81fea2698
Commit: 38284ba361d69eca34a3bfc553ebfac81fea2698
Parent: 3a4456a073150c8b0d790daa007d2aab9ebdecb5
Author: Thierry MERLE [EMAIL PROTECTED]
AuthorDate: Fri Dec 15 16:46:53 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:19:04 2006 -0200

V4L/DVB (4970): Usbvision memory fixes

- fix decompression buffer allocation not done at first driver open
- simplification of USB sbuf allocation (use of usb_buffer_alloc)
- replaced vmalloc by vmalloc_32 (for homogeneity)
- add of saa7111 (i2cAddr=0x48) detection printout in attach_inform

Signed-off-by: Thierry MERLE [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/usbvision/usbvision-core.c  |   48 ++-
 drivers/media/video/usbvision/usbvision-i2c.c   |3 +
 drivers/media/video/usbvision/usbvision-video.c |   14 ++-
 drivers/media/video/usbvision/usbvision.h   |2 -
 4 files changed, 19 insertions(+), 48 deletions(-)

diff --git a/drivers/media/video/usbvision/usbvision-core.c 
b/drivers/media/video/usbvision/usbvision-core.c
index 6126873..68542f2 100644
--- a/drivers/media/video/usbvision/usbvision-core.c
+++ b/drivers/media/video/usbvision/usbvision-core.c
@@ -374,7 +374,7 @@ static void scratch_reset(struct usb_usbvision *usbvision)
 
 int usbvision_scratch_alloc(struct usb_usbvision *usbvision)
 {
-   usbvision-scratch = vmalloc(scratch_buf_size);
+   usbvision-scratch = vmalloc_32(scratch_buf_size);
scratch_reset(usbvision);
if(usbvision-scratch == NULL) {
err(%s: unable to allocate %d bytes for scratch,
@@ -485,7 +485,7 @@ static void usbvision_testpattern(struct usb_usbvision 
*usbvision,
 int usbvision_decompress_alloc(struct usb_usbvision *usbvision)
 {
int IFB_size = MAX_FRAME_WIDTH * MAX_FRAME_HEIGHT * 3 / 2;
-   usbvision-IntraFrameBuffer = vmalloc(IFB_size);
+   usbvision-IntraFrameBuffer = vmalloc_32(IFB_size);
if (usbvision-IntraFrameBuffer == NULL) {
err(%s: unable to allocate %d for compr. frame buffer, 
__FUNCTION__, IFB_size);
return -ENOMEM;
@@ -2204,6 +2204,7 @@ int usbvision_power_on(struct usb_usbvision *usbvision)
usbvision_write_reg(usbvision, USBVISION_PWR_REG, USBVISION_SSPND_EN);
usbvision_write_reg(usbvision, USBVISION_PWR_REG,
 USBVISION_SSPND_EN | USBVISION_RES2);
+
usbvision_write_reg(usbvision, USBVISION_PWR_REG,
 USBVISION_SSPND_EN | USBVISION_PWR_VID);
errCode = usbvision_write_reg(usbvision, USBVISION_PWR_REG,
@@ -2351,40 +2352,6 @@ int usbvision_setup(struct usb_usbvision *usbvision,int 
format)
return USBVISION_IS_OPERATIONAL(usbvision);
 }
 
-
-int usbvision_sbuf_alloc(struct usb_usbvision *usbvision)
-{
-   int i, errCode = 0;
-   const int sb_size = USBVISION_URB_FRAMES * 
USBVISION_MAX_ISOC_PACKET_SIZE;
-
-   /* Clean pointers so we know if we allocated something */
-   for (i = 0; i  USBVISION_NUMSBUF; i++)
-   usbvision-sbuf[i].data = NULL;
-
-   for (i = 0; i  USBVISION_NUMSBUF; i++) {
-   usbvision-sbuf[i].data = kzalloc(sb_size, GFP_KERNEL);
-   if (usbvision-sbuf[i].data == NULL) {
-   err(%s: unable to allocate %d bytes for sbuf, 
__FUNCTION__, sb_size);
-   errCode = -ENOMEM;
-   break;
-   }
-   }
-   return errCode;
-}
-
-
-void usbvision_sbuf_free(struct usb_usbvision *usbvision)
-{
-   int i;
-
-   for (i = 0; i  USBVISION_NUMSBUF; i++) {
-   if (usbvision-sbuf[i].data != NULL) {
-   kfree(usbvision-sbuf[i].data);
-   usbvision-sbuf[i].data = NULL;
-   }
-   }
-}
-
 /*
  * usbvision_init_isoc()
  *
@@ -2393,6 +2360,7 @@ int usbvision_init_isoc(struct usb_usbvision *usbvision)
 {
struct usb_device *dev = usbvision-dev;
int bufIdx, errCode, regValue;
+   const int sb_size = USBVISION_URB_FRAMES * 
USBVISION_MAX_ISOC_PACKET_SIZE;
 
if (!USBVISION_IS_OPERATIONAL(usbvision))
return -EFAULT;
@@ -2428,6 +2396,7 @@ int usbvision_init_isoc(struct usb_usbvision *usbvision)
return -ENOMEM;
}
usbvision-sbuf[bufIdx].urb = urb;
+   usbvision-sbuf[bufIdx].data = usb_buffer_alloc(usbvision-dev, 
sb_size, GFP_KERNEL,urb-transfer_dma);
urb-dev = dev;
urb-context = usbvision;
urb-pipe = usb_rcvisocpipe(dev, usbvision-video_endp);
@@ -2469,6 +2438,7 @@ int usbvision_init_isoc(struct usb_usbvision *usbvision)
 void usbvision_stop_isoc(struct usb_usbvision *usbvision)
 {
int bufIdx, 

V4L/DVB (4972): Dvb-core: fix bug in CRC-32 checking on 64-bit systems

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=dedcefb085fe98a1feaf63590fe2fc7e0ecb1987
Commit: dedcefb085fe98a1feaf63590fe2fc7e0ecb1987
Parent: 38284ba361d69eca34a3bfc553ebfac81fea2698
Author: Ang Way Chuang [EMAIL PROTECTED]
AuthorDate: Thu Dec 14 13:51:44 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:19:10 2006 -0200

V4L/DVB (4972): Dvb-core: fix bug in CRC-32 checking on 64-bit systems

CRC-32 checking during ULE decapsulation always failed on x86_64 systems due
to the size of a variable used to store CRC. This bug was discovered on
Fedora Core 6 with kernel-2.6.18-1.2849. The i386 counterpart has no such
problem. This patch has been tested on 64-bit system as well as 32-bit 
system.

Signed-off-by: Ang Way Chuang [EMAIL PROTECTED]
Signed-off-by: Michael Krufky [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/dvb/dvb-core/dvb_net.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/media/dvb/dvb-core/dvb_net.c 
b/drivers/media/dvb/dvb-core/dvb_net.c
index ebf4dc5..8138b37 100644
--- a/drivers/media/dvb/dvb-core/dvb_net.c
+++ b/drivers/media/dvb/dvb-core/dvb_net.c
@@ -605,7 +605,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 
*buf, size_t buf_len )
{ utype, sizeof utype },
{ priv-ule_skb-data, priv-ule_skb-len - 4 }
};
-   unsigned long ule_crc = ~0L, expected_crc;
+   u32 ule_crc = ~0L, expected_crc;
if (priv-ule_dbit) {
/* Set D-bit for CRC32 verification,
 * if it was set originally. */
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4973): Dvb-core: fix printk type warning

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5ef35be42dfaa155e02718a9bd34cc341f327883
Commit: 5ef35be42dfaa155e02718a9bd34cc341f327883
Parent: dedcefb085fe98a1feaf63590fe2fc7e0ecb1987
Author: Michael Krufky [EMAIL PROTECTED]
AuthorDate: Thu Dec 14 13:53:33 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:19:15 2006 -0200

V4L/DVB (4973): Dvb-core: fix printk type warning

dvb_net.c: In function 'dvb_net_ule':
dvb_net.c:628: warning: format '%#lx' expects type 'long unsigned int', but 
argument 3 has type 'u32'
dvb_net.c:628: warning: format '%#lx' expects type 'long unsigned int', but 
argument 4 has type 'u32'

Signed-off-by: Michael Krufky [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/dvb/dvb-core/dvb_net.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/media/dvb/dvb-core/dvb_net.c 
b/drivers/media/dvb/dvb-core/dvb_net.c
index 8138b37..76e9c36 100644
--- a/drivers/media/dvb/dvb-core/dvb_net.c
+++ b/drivers/media/dvb/dvb-core/dvb_net.c
@@ -618,7 +618,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 
*buf, size_t buf_len )
   *((u8 *)priv-ule_skb-tail - 2)  8 |
   *((u8 *)priv-ule_skb-tail - 1);
if (ule_crc != expected_crc) {
-   printk(KERN_WARNING %lu: CRC32 check FAILED: 
%#lx / %#lx, SNDU len %d type %#x, ts_remain %d, next 2: %x.\n,
+   printk(KERN_WARNING %lu: CRC32 check FAILED: 
%08x / %08x, SNDU len %d type %#x, ts_remain %d, next 2: %x.\n,
   priv-ts_count, ule_crc, expected_crc, 
priv-ule_sndu_len, priv-ule_sndu_type, ts_remain, ts_remain  2 ? *(unsigned 
short *)from_where : 0);
 
 #ifdef ULE_DEBUG
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4979): Fixes compilation when CONFIG_V4L1_COMPAT is not selected

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ed00b41dc8bc286682d31ad64060ccc70513e90b
Commit: ed00b41dc8bc286682d31ad64060ccc70513e90b
Parent: 5ef35be42dfaa155e02718a9bd34cc341f327883
Author: Dwaine Garden [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 10:23:28 2006 -0200
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:19:21 2006 -0200

V4L/DVB (4979): Fixes compilation when CONFIG_V4L1_COMPAT is not selected

- SYSFS: Replaced all to_video_device(cd), video_device_create_file,
  video_device_remove_file and add the proper checks at create_file
- Converted old norm values to V4L2 ones.
- Robustness on sysfs hue/contrast/saturation queries.
  Additional check in order to return 0 if the driver is not opened.
- Whitespace cleanups in usbvision-cards.c

This patch merges two fixes by Thierry MERLE and Mauro Chehab, and adds
additional checks.

Signed-off-by: Dwaine Garden[EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/usbvision/usbvision-cards.c |   11 +-
 drivers/media/video/usbvision/usbvision-video.c |  134 +++
 2 files changed, 94 insertions(+), 51 deletions(-)

diff --git a/drivers/media/video/usbvision/usbvision-cards.c 
b/drivers/media/video/usbvision/usbvision-cards.c
index 134eb98..a40e583 100644
--- a/drivers/media/video/usbvision/usbvision-cards.c
+++ b/drivers/media/video/usbvision/usbvision-cards.c
@@ -39,8 +39,8 @@ struct usbvision_device_data_st  usbvision_device_data[] = {
{0x0573, 0x0400, -1, CODEC_SAA7113, 4, V4L2_STD_NTSC,  0, 0, 1, 0, 0,   
   -1, -1,  0,  3,  7, D-Link V100},
{0x0573, 0x2000, -1, CODEC_SAA7111, 2, V4L2_STD_NTSC,  1, 0, 1, 0, 0,   
   -1, -1, -1, -1, -1, X10 USB Camera},
{0x0573, 0x2d00, -1, CODEC_SAA7111, 2, V4L2_STD_PAL,   1, 0, 1, 0, 0,   
   -1, -1, -1,  3,  7, Osprey 50},
-   {0x0573, 0x2d01, -1, CODEC_SAA7113, 2, V4L2_STD_NTSC,0, 0, 1, 0, 0, 
 -1, -1,  0,  3,  7, Hauppauge USB-Live Model 600},
-   {0x0573, 0x2101, -1, CODEC_SAA7113, 2, V4L2_STD_PAL, 2, 0, 1, 0, 0, 
 -1, -1,  0,  3,  7, Zoran Co. PMD (Nogatech) 
AV-grabber Manhattan},
+   {0x0573, 0x2d01, -1, CODEC_SAA7113, 2, V4L2_STD_NTSC,  0, 0, 1, 0, 0,   
   -1, -1,  0,  3,  7, Hauppauge USB-Live Model 600},
+   {0x0573, 0x2101, -1, CODEC_SAA7113, 2, V4L2_STD_PAL,   2, 0, 1, 0, 0,   
   -1, -1,  0,  3,  7, Zoran Co. PMD (Nogatech) AV-grabber 
Manhattan},
{0x0573, 0x4100, -1, CODEC_SAA7111, 3, V4L2_STD_NTSC,  1, 1, 1, 1, 
TUNER_PHILIPS_NTSC_M,   -1, -1, -1, 20, -1, Nogatech USB-TV (NTSC) FM},
{0x0573, 0x4110, -1, CODEC_SAA7111, 3, V4L2_STD_NTSC,  1, 1, 1, 1, 
TUNER_PHILIPS_NTSC_M,   -1, -1, -1, 20, -1, PNY USB-TV (NTSC) FM},
{0x0573, 0x4450,  0, CODEC_SAA7113, 3, V4L2_STD_PAL,   1, 1, 1, 1, 
TUNER_PHILIPS_PAL,  -1, -1,  0,  3,  7, PixelView PlayTv-USB PRO (PAL) 
FM},
@@ -71,10 +71,10 @@ struct usbvision_device_data_st  usbvision_device_data[] = {
{0x0573, 0x4d37,  0, CODEC_SAA7113, 3, V4L2_STD_PAL,   1, 1, 1, 1, 
TUNER_PHILIPS_FM1216ME_MK3, -1, -1,  0,  3,  7, Hauppauge WinTV USB device 
Model 40219 Rev E189},
{0x0768, 0x0006, -1, CODEC_SAA7113, 3, V4L2_STD_NTSC,  1, 1, 1, 1, 
TUNER_PHILIPS_NTSC_M,   -1, -1,  5,  5, -1, Camtel Technology USB TV Genie 
Pro FM Model TVB330},
{0x07d0, 0x0001, -1, CODEC_SAA7113, 2, V4L2_STD_PAL,   0, 0, 1, 0, 0,   
   -1, -1,  0,  3,  7, Digital Video Creator I},
-   {0x07d0, 0x0002, -1, CODEC_SAA7111, 2, V4L2_STD_NTSC,  0, 0, 1, 0, 0,   
 -1, -1, 82, 20,  7, Global Village GV-007 (NTSC)},
+   {0x07d0, 0x0002, -1, CODEC_SAA7111, 2, V4L2_STD_NTSC,  0, 0, 1, 0, 0,   
   -1, -1, 82, 20,  7, Global Village GV-007 (NTSC)},
{0x07d0, 0x0003,  0, CODEC_SAA7113, 2, V4L2_STD_NTSC,  0, 0, 1, 0, 0,   
   -1, -1,  0,  3,  7, Dazzle Fusion Model DVC-50 Rev 1 
(NTSC)},
{0x07d0, 0x0004,  0, CODEC_SAA7113, 2, V4L2_STD_PAL,   0, 0, 1, 0, 0,   
   -1, -1,  0,  3,  7, Dazzle Fusion Model DVC-80 Rev 1 
(PAL)},
-   {0x07d0, 0x0005,  0, CODEC_SAA7113, 2, V4L2_STD_SECAM, 0, 0, 1, 0, 0,   
 -1, -1,  0,  3,  7, Dazzle Fusion Model DVC-90 Rev 1 
(SECAM)},
+   {0x07d0, 0x0005,  0, CODEC_SAA7113, 2, V4L2_STD_SECAM, 0, 0, 1, 0, 0,   
   -1, -1,  0,  3,  7, Dazzle Fusion Model DVC-90 Rev 1 
(SECAM)},
{0x2304, 0x010d, -1, CODEC_SAA7111, 3, V4L2_STD_PAL,   1, 0, 0, 1, 
TUNER_TEMIC_4066FY5_PAL_I,  -1, -1, -1, -1, -1, Pinnacle Studio PCTV USB 
(PAL)},
{0x2304, 0x0109, -1, CODEC_SAA7111, 3, V4L2_STD_SECAM, 1, 0, 1, 1, 
TUNER_PHILIPS_SECAM,-1, -1, -1, -1, 

V4L/DVB (4980): Fixes bug 7267: PAL/60 is not working

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=315eb962d2e9438bc10da2488b604f04a1c0006f
Commit: 315eb962d2e9438bc10da2488b604f04a1c0006f
Parent: ed00b41dc8bc286682d31ad64060ccc70513e90b
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Sun Dec 17 23:30:47 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:19:26 2006 -0200

V4L/DVB (4980): Fixes bug 7267: PAL/60 is not working

On cx88 driver, sampling rate should be at chroma subcarrier freq (FSC).
However, driver were programming wrong values for PAL/60, PAL/Nc and
NTSC 4.43. This patch do the proper calculation. It also calculates
htotal, hdelay and hactive constants, according with the sampling
rate.
It is tested with PAL/60 by Piotr Maksymuk and Olivier. Also tested with
the already-supported standards.

Test is still required for PAL/Nc.

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cx88/cx88-core.c |   35 +
 drivers/media/video/cx88/cx88.h  |2 +-
 2 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/drivers/media/video/cx88/cx88-core.c 
b/drivers/media/video/cx88/cx88-core.c
index 453af5e..1899736 100644
--- a/drivers/media/video/cx88/cx88-core.c
+++ b/drivers/media/video/cx88/cx88-core.c
@@ -633,12 +633,12 @@ int cx88_reset(struct cx88_core *core)
 
 static unsigned int inline norm_swidth(struct cx88_tvnorm *norm)
 {
-   return (norm-id  V4L2_STD_625_50) ? 922 : 754;
+   return (norm-id  (V4L2_STD_MN  ~V4L2_STD_PAL_Nc)) ? 754 : 922;
 }
 
 static unsigned int inline norm_hdelay(struct cx88_tvnorm *norm)
 {
-   return (norm-id  V4L2_STD_625_50) ? 186 : 135;
+   return (norm-id  (V4L2_STD_MN  ~V4L2_STD_PAL_Nc)) ? 135 : 186;
 }
 
 static unsigned int inline norm_vdelay(struct cx88_tvnorm *norm)
@@ -648,24 +648,33 @@ static unsigned int inline norm_vdelay(struct cx88_tvnorm 
*norm)
 
 static unsigned int inline norm_fsc8(struct cx88_tvnorm *norm)
 {
-   static const unsigned int ntsc = 28636360;
-   static const unsigned int pal  = 35468950;
-   static const unsigned int palm  = 28604892;
-
if (norm-id  V4L2_STD_PAL_M)
-   return palm;
+   return 28604892;  // 3.575611 MHz
+
+   if (norm-id  (V4L2_STD_PAL_Nc))
+   return 28656448;  // 3.582056 MHz
+
+   if (norm-id  V4L2_STD_NTSC) // All NTSC/M and variants
+   return 28636360;  // 3.57954545 MHz +/- 10 Hz
 
-   return (norm-id  V4L2_STD_625_50) ? pal : ntsc;
+   /* SECAM have also different sub carrier for chroma,
+  but step_db and step_dr, at cx88_set_tvnorm already handles that.
+
+  The same FSC applies to PAL/BGDKIH, PAL/60, NTSC/4.43 and PAL/N
+*/
+
+   return 35468950;  // 4.43361875 MHz +/- 5 Hz
 }
 
 static unsigned int inline norm_htotal(struct cx88_tvnorm *norm)
 {
-   /* Should always be Line Draw Time / (4*FSC) */
 
-   if (norm-id  V4L2_STD_PAL_M)
-   return 909;
+   unsigned int fsc4=norm_fsc8(norm)/2;
 
-   return (norm-id  V4L2_STD_625_50) ? 1135 : 910;
+   /* returns 4*FSC / vtotal / frames per seconds */
+   return (norm-id  V4L2_STD_625_50) ?
+   ((fsc4+312)/625+12)/25 :
+   ((fsc4+262)/525*1001+15000)/3;
 }
 
 static unsigned int inline norm_vbipack(struct cx88_tvnorm *norm)
@@ -692,7 +701,7 @@ int cx88_set_scale(struct cx88_core *core, unsigned int 
width, unsigned int heig
value = 0x3fe;
cx_write(MO_HDELAY_EVEN,  value);
cx_write(MO_HDELAY_ODD,   value);
-   dprintk(1,set_scale: hdelay  0x%04x\n, value);
+   dprintk(1,set_scale: hdelay  0x%04x (width %d)\n, value,swidth);
 
value = (swidth * 4096 / width) - 4096;
cx_write(MO_HSCALE_EVEN,  value);
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h
index 7054e94..a9575ad 100644
--- a/drivers/media/video/cx88/cx88.h
+++ b/drivers/media/video/cx88/cx88.h
@@ -91,7 +91,7 @@ struct cx88_tvnorm {
 
 static unsigned int inline norm_maxw(struct cx88_tvnorm *norm)
 {
-   return (norm-id  V4L2_STD_625_50) ? 768 : 640;
+   return (norm-id  (V4L2_STD_MN  ~V4L2_STD_PAL_Nc)) ? 720 : 768;
 }
 
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4982): Fix broken audio mode handling for line-in in msp3400.

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b331def2d382d7a51c379f336fe80ef87d6674e3
Commit: b331def2d382d7a51c379f336fe80ef87d6674e3
Parent: 315eb962d2e9438bc10da2488b604f04a1c0006f
Author: Hans Verkuil [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 13:18:28 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:19:32 2006 -0200

V4L/DVB (4982): Fix broken audio mode handling for line-in in msp3400.

The wrong matrix was used when an external input was selected instead of
the tuner input. The rxsubchans field was also not initialized to STEREO
for an external input. And finally the msp34xxg_detect_stereo() should
not try to detect stereo for an external input, that code is for the
tuner input only.
Together these bugs made it hit 'n miss whether you ever got stereo out
of the msp3400 for an external input.

Signed-off-by: Hans Verkuil [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/msp3400-driver.c   |6 ++
 drivers/media/video/msp3400-kthreads.c |   11 ---
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/drivers/media/video/msp3400-driver.c 
b/drivers/media/video/msp3400-driver.c
index e1b56dc..295cb99 100644
--- a/drivers/media/video/msp3400-driver.c
+++ b/drivers/media/video/msp3400-driver.c
@@ -633,10 +633,8 @@ static int msp_command(struct i2c_client *client, unsigned 
int cmd, void *arg)
if (((rt-input  (4 + i * 4))  0xf) == 0)
extern_input = 0;
}
-   if (extern_input)
-   state-mode = MSP_MODE_EXTERN;
-   else
-   state-mode = MSP_MODE_AM_DETECT;
+   state-mode = extern_input ? MSP_MODE_EXTERN : 
MSP_MODE_AM_DETECT;
+   state-rxsubchans = V4L2_TUNER_SUB_STEREO;
msp_set_scart(client, sc_in, 0);
msp_set_scart(client, sc1_out, 1);
msp_set_scart(client, sc2_out, 2);
diff --git a/drivers/media/video/msp3400-kthreads.c 
b/drivers/media/video/msp3400-kthreads.c
index 4c7f85b..e1821eb 100644
--- a/drivers/media/video/msp3400-kthreads.c
+++ b/drivers/media/video/msp3400-kthreads.c
@@ -483,7 +483,6 @@ int msp3400c_thread(void *data)
/* no carrier scan, just unmute */
v4l_dbg(1, msp_debug, client, thread: no carrier 
scan\n);
state-scan_in_progress = 0;
-   state-rxsubchans = V4L2_TUNER_SUB_STEREO;
msp_set_audio(client);
continue;
}
@@ -851,12 +850,15 @@ static void msp34xxg_set_source(struct i2c_client 
*client, u16 reg, int in)
source = 1; /* stereo or A|B */
matrix = 0x20;
break;
-   case V4L2_TUNER_MODE_STEREO:
case V4L2_TUNER_MODE_LANG1:
-   default:
source = 3; /* stereo or A */
matrix = 0x00;
break;
+   case V4L2_TUNER_MODE_STEREO:
+   default:
+   source = 3; /* stereo or A */
+   matrix = 0x20;
+   break;
}
 
if (in == MSP_DSP_IN_TUNER)
@@ -1030,6 +1032,9 @@ static int msp34xxg_detect_stereo(struct i2c_client 
*client)
int is_stereo = status  0x40;
int oldrx = state-rxsubchans;
 
+   if (state-mode == MSP_MODE_EXTERN)
+   return 0;
+
state-rxsubchans = 0;
if (is_stereo)
state-rxsubchans = V4L2_TUNER_SUB_STEREO;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4983): Force temporal filter to 0 when scaling to prevent ghosting.

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=12b896e436a3b1bc83856962388ae1ab154742a6
Commit: 12b896e436a3b1bc83856962388ae1ab154742a6
Parent: b331def2d382d7a51c379f336fe80ef87d6674e3
Author: Hans Verkuil [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 13:37:50 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:19:38 2006 -0200

V4L/DVB (4983): Force temporal filter to 0 when scaling to prevent ghosting.

Change the code to unconditionally turn off the temporal filter when 
scaling.
If the window is not full screen the filter will introduce a nasty ghosting
effect.

Signed-off-by: Hans Verkuil [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cx2341x.c |   15 ++-
 1 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/drivers/media/video/cx2341x.c b/drivers/media/video/cx2341x.c
index 657e0b9..e796afd 100644
--- a/drivers/media/video/cx2341x.c
+++ b/drivers/media/video/cx2341x.c
@@ -742,7 +742,6 @@ int cx2341x_update(void *priv, cx2341x_mbox_func func,
 
if (old == NULL || old-width != new-width || old-height != 
new-height ||
old-video_encoding != new-video_encoding) {
-   int is_scaling;
u16 w = new-width;
u16 h = new-height;
 
@@ -752,20 +751,18 @@ int cx2341x_update(void *priv, cx2341x_mbox_func func,
}
err = cx2341x_api(priv, func, CX2341X_ENC_SET_FRAME_SIZE, 2, h, 
w);
if (err) return err;
+   }
 
+   if (new-width != 720 || new-height != (new-is_50hz ? 576 : 480)) {
/* Adjust temporal filter if necessary. The problem with the 
temporal
   filter is that it works well with full resolution capturing, 
but
   not when the capture window is scaled (the filter introduces
-  a ghosting effect). So if the capture window changed, and 
there is
-  no updated filter value, then the filter is set depending on 
whether
-  the new window is full resolution or not.
+  a ghosting effect). So if the capture window is scaled, then
+  force the filter to 0.
 
-  For full resolution a setting of 8 really improves the video
+  For full resolution the filter really improves the video
   quality, especially if the original video quality is 
suboptimal. */
-   is_scaling = new-width != 720 || new-height != (new-is_50hz 
? 576 : 480);
-   if (old  old-video_temporal_filter == temporal) {
-   temporal = is_scaling ? 0 : 8;
-   }
+   temporal = 0;
}
 
if (old == NULL || old-stream_type != new-stream_type) {
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4984): LOG_STATUS should show the real temporal filter value.

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=83aaf13c5ba5e1e244339807d8a752808e763cdd
Commit: 83aaf13c5ba5e1e244339807d8a752808e763cdd
Parent: 12b896e436a3b1bc83856962388ae1ab154742a6
Author: Hans Verkuil [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 13:40:23 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:19:42 2006 -0200

V4L/DVB (4984): LOG_STATUS should show the real temporal filter value.

The temporal filter is forced off when scaling. The VIDIOC_LOG_STATUS
handler still showed the old temporal filter. It is now consistent with
the real temporal filter value.

Signed-off-by: Hans Verkuil [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cx2341x.c |6 +-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/cx2341x.c b/drivers/media/video/cx2341x.c
index e796afd..2f5ca71 100644
--- a/drivers/media/video/cx2341x.c
+++ b/drivers/media/video/cx2341x.c
@@ -863,6 +863,7 @@ invalid:
 void cx2341x_log_status(struct cx2341x_mpeg_params *p, const char *prefix)
 {
int is_mpeg1 = p-video_encoding == V4L2_MPEG_VIDEO_ENCODING_MPEG_1;
+   int temporal = p-video_temporal_filter;
 
/* Stream */
printk(KERN_INFO %s: Stream: %s\n,
@@ -919,10 +920,13 @@ void cx2341x_log_status(struct cx2341x_mpeg_params *p, 
const char *prefix)
cx2341x_menu_item(p, 
V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE),
cx2341x_menu_item(p, 
V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE),
p-video_spatial_filter);
+   if (p-width != 720 || p-height != (p-is_50hz ? 576 : 480)) {
+   temporal = 0;
+   }
printk(KERN_INFO %s: Temporal Filter: %s, %d\n,
prefix,
cx2341x_menu_item(p, 
V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE),
-   p-video_temporal_filter);
+   temporal);
printk(KERN_INFO %s: Median Filter:   %s, Luma [%d, %d], Chroma [%d, 
%d]\n,
prefix,
cx2341x_menu_item(p, 
V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE),
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4988): Cx2341x audio_properties is an u16, not u8

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cb2c7b4927c8f376b7ba9557978d8c59ed472664
Commit: cb2c7b4927c8f376b7ba9557978d8c59ed472664
Parent: 83aaf13c5ba5e1e244339807d8a752808e763cdd
Author: Hans Verkuil [EMAIL PROTECTED]
AuthorDate: Wed Dec 20 06:51:37 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:19:47 2006 -0200

V4L/DVB (4988): Cx2341x audio_properties is an u16, not u8

This bug broke the MPEG audio mode controls.

Signed-off-by: Hans Verkuil [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 include/media/cx2341x.h |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/include/media/cx2341x.h b/include/media/cx2341x.h
index d91d88f..ecad55b 100644
--- a/include/media/cx2341x.h
+++ b/include/media/cx2341x.h
@@ -49,7 +49,7 @@ struct cx2341x_mpeg_params {
enum v4l2_mpeg_audio_mode_extension audio_mode_extension;
enum v4l2_mpeg_audio_emphasis audio_emphasis;
enum v4l2_mpeg_audio_crc audio_crc;
-   u8 audio_properties;
+   u16 audio_properties;
 
/* video */
enum v4l2_mpeg_video_encoding video_encoding;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4991): Cafe_ccic.c: fix NULL dereference

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d4f60baf7827c6a46b7ee2ed0a2a32a373febfcb
Commit: d4f60baf7827c6a46b7ee2ed0a2a32a373febfcb
Parent: d82d418a3af4d7d07151f9d45ca20f2ce61289a0
Author: Adrian Bunk [EMAIL PROTECTED]
AuthorDate: Wed Dec 20 09:34:32 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:19:56 2006 -0200

V4L/DVB (4991): Cafe_ccic.c: fix NULL dereference

We shouldn't dereference cam when we already know it's NULL.
Spotted by the Coverity checker.

Signed-off-by: Adrian Bunk [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cafe_ccic.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/cafe_ccic.c b/drivers/media/video/cafe_ccic.c
index e347c7e..3083c80 100644
--- a/drivers/media/video/cafe_ccic.c
+++ b/drivers/media/video/cafe_ccic.c
@@ -2166,7 +2166,7 @@ static void cafe_pci_remove(struct pci_dev *pdev)
struct cafe_camera *cam = cafe_find_by_pdev(pdev);
 
if (cam == NULL) {
-   cam_warn(cam, pci_remove on unknown pdev %p\n, pdev);
+   printk(KERN_WARNING pci_remove on unknown pdev %p\n, pdev);
return;
}
mutex_lock(cam-s_mutex);
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4992): Fix typo in saa7134-dvb.c

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b331daa03cd949b1b0a4b761b4b4a92d71f7d626
Commit: b331daa03cd949b1b0a4b761b4b4a92d71f7d626
Parent: d4f60baf7827c6a46b7ee2ed0a2a32a373febfcb
Author: Stephan Berberig [EMAIL PROTECTED]
AuthorDate: Wed Dec 20 09:37:05 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:20:00 2006 -0200

V4L/DVB (4992): Fix typo in saa7134-dvb.c

Fix a typo (use_frontent - use_frontend) in saa7134-dvb.c.

Signed-off-by: Stephan Berberig [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/saa7134/saa7134-dvb.c |8 
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/media/video/saa7134/saa7134-dvb.c 
b/drivers/media/video/saa7134/saa7134-dvb.c
index fa83398..c33f6a6 100644
--- a/drivers/media/video/saa7134/saa7134-dvb.c
+++ b/drivers/media/video/saa7134/saa7134-dvb.c
@@ -50,9 +50,9 @@ static unsigned int antenna_pwr = 0;
 module_param(antenna_pwr, int, 0444);
 MODULE_PARM_DESC(antenna_pwr,enable antenna power (Pinnacle 300i));
 
-static int use_frontent = 0;
-module_param(use_frontent, int, 0644);
-MODULE_PARM_DESC(use_frontent,for cards with multiple frontends (0: 
terrestrial, 1: satellite));
+static int use_frontend = 0;
+module_param(use_frontend, int, 0644);
+MODULE_PARM_DESC(use_frontend,for cards with multiple frontends (0: 
terrestrial, 1: satellite));
 
 /* -- */
 static int pinnacle_antenna_pwr(struct saa7134_dev *dev, int on)
@@ -1303,7 +1303,7 @@ static int dvb_init(struct saa7134_dev *dev)
}
break;
case SAA7134_BOARD_FLYDVB_TRIO:
-   if(! use_frontent) {//terrestrial
+   if(! use_frontend) {//terrestrial
dev-dvb.frontend = dvb_attach(tda10046_attach,
   lifeview_trio_config,
   dev-i2c_adap);
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4994): Vivi: fix use after free in list_for_each()

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=72f678c30185df18ac38ef14c9045d139c2263bc
Commit: 72f678c30185df18ac38ef14c9045d139c2263bc
Parent: b331daa03cd949b1b0a4b761b4b4a92d71f7d626
Author: Akinobu Mita [EMAIL PROTECTED]
AuthorDate: Wed Dec 20 10:03:53 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:20:07 2006 -0200

V4L/DVB (4994): Vivi: fix use after free in list_for_each()

Freeing data including list_head in list_for_each() is not safe.

Signed-off-by: Akinobu Mita [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/vivi.c |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/vivi.c b/drivers/media/video/vivi.c
index 474ddb7..3cead24 100644
--- a/drivers/media/video/vivi.c
+++ b/drivers/media/video/vivi.c
@@ -1363,7 +1363,9 @@ static void __exit vivi_exit(void)
struct vivi_dev *h;
struct list_head *list;
 
-   list_for_each(list,vivi_devlist) {
+   while (!list_empty(vivi_devlist)) {
+   list = vivi_devlist.next;
+   list_del(list);
h = list_entry(list, struct vivi_dev, vivi_devlist);
kfree (h);
}
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4990): Cpia2/cpia2_usb.c: fix error-path leak

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d82d418a3af4d7d07151f9d45ca20f2ce61289a0
Commit: d82d418a3af4d7d07151f9d45ca20f2ce61289a0
Parent: cb2c7b4927c8f376b7ba9557978d8c59ed472664
Author: Amit Choudhary [EMAIL PROTECTED]
AuthorDate: Wed Dec 20 09:30:45 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:19:51 2006 -0200

V4L/DVB (4990): Cpia2/cpia2_usb.c: fix error-path leak

Free previously allocated memory (in array elements) if kmalloc() returns
NULL in submit_urbs().

Signed-off-by: Amit Choudhary [EMAIL PROTECTED]
Signed-off-by: Andrew Morton [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cpia2/cpia2_usb.c |4 
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/cpia2/cpia2_usb.c 
b/drivers/media/video/cpia2/cpia2_usb.c
index 28dc6a1..d8e9298 100644
--- a/drivers/media/video/cpia2/cpia2_usb.c
+++ b/drivers/media/video/cpia2/cpia2_usb.c
@@ -640,6 +640,10 @@ static int submit_urbs(struct camera_data *cam)
cam-sbuf[i].data =
kmalloc(FRAMES_PER_DESC * FRAME_SIZE_PER_DESC, GFP_KERNEL);
if (!cam-sbuf[i].data) {
+   while (--i = 0) {
+   kfree(cam-sbuf[i].data);
+   cam-sbuf[i].data = NULL;
+   }
return -ENOMEM;
}
}
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4995): Vivi: fix kthread_run() error check

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=054afee4736677a00982f6414a983dec8ee511db
Commit: 054afee4736677a00982f6414a983dec8ee511db
Parent: 72f678c30185df18ac38ef14c9045d139c2263bc
Author: Akinobu Mita [EMAIL PROTECTED]
AuthorDate: Wed Dec 20 10:04:00 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:20:12 2006 -0200

V4L/DVB (4995): Vivi: fix kthread_run() error check

The return value of kthread_run() should be checked by IS_ERR().

Signed-off-by: Akinobu Mita [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/vivi.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/vivi.c b/drivers/media/video/vivi.c
index 3cead24..bacb311 100644
--- a/drivers/media/video/vivi.c
+++ b/drivers/media/video/vivi.c
@@ -535,9 +535,9 @@ static int vivi_start_thread(struct vivi_dmaqueue  *dma_q)
 
dma_q-kthread = kthread_run(vivi_thread, dma_q, vivi);
 
-   if (dma_q-kthread == NULL) {
+   if (IS_ERR(dma_q-kthread)) {
printk(KERN_ERR vivi: kernel_thread() failed\n);
-   return -EINVAL;
+   return PTR_ERR(dma_q-kthread);
}
dprintk(1,returning from %s\n,__FUNCTION__);
return 0;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5014): Allyesconfig build fixes on some non x86 arch

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9a2816c1c4ca7f5d02de4339589913701251dd5a
Commit: 9a2816c1c4ca7f5d02de4339589913701251dd5a
Parent: 5f1693fe82b499a3306993020ef14011ed0420d0
Author: David Brownell [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 09:53:44 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:20:41 2006 -0200

V4L/DVB (5014): Allyesconfig build fixes on some non x86 arch

- CAFE_CCIC needs to depend on PCI, else allyesconfig breaks
   on systems without PCI
- em28xx-video can't udelay(2500) else allyesconfig breaks
   on systems that refuse to spin that long (I saw it on ARM)

Signed-off-by: David Brownell [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/Kconfig   |2 +-
 drivers/media/video/em28xx/em28xx-video.c |4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
index 29a11c1..57357db 100644
--- a/drivers/media/video/Kconfig
+++ b/drivers/media/video/Kconfig
@@ -668,7 +668,7 @@ config VIDEO_M32R_AR_M64278
 
 config VIDEO_CAFE_CCIC
tristate Marvell 88ALP01 (Cafe) CMOS Camera Controller support
-   depends on I2C  VIDEO_V4L2
+   depends on PCI  I2C  VIDEO_V4L2
select VIDEO_OV7670
---help---
  This is a video4linux2 driver for the Marvell 88ALP01 integrated
diff --git a/drivers/media/video/em28xx/em28xx-video.c 
b/drivers/media/video/em28xx/em28xx-video.c
index 2a461dd..36e72c2 100644
--- a/drivers/media/video/em28xx/em28xx-video.c
+++ b/drivers/media/video/em28xx/em28xx-video.c
@@ -1674,9 +1674,9 @@ static int em28xx_init_dev(struct em28xx **devhandle, 
struct usb_device *udev,
if (dev-has_msp34xx) {
/* Send a reset to other chips via gpio */
em28xx_write_regs_req(dev, 0x00, 0x08, \xf7, 1);
-   udelay(2500);
+   msleep(3);
em28xx_write_regs_req(dev, 0x00, 0x08, \xff, 1);
-   udelay(2500);
+   msleep(3);
 
}
video_mux(dev, 0);
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5001): Add two required headers on kernel 2.6.20-rc1

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0b778a56e342e0e1d274298ad47d9af22a9de633
Commit: 0b778a56e342e0e1d274298ad47d9af22a9de633
Parent: 9a2816c1c4ca7f5d02de4339589913701251dd5a
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 14:04:09 2006 -0200
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:20:46 2006 -0200

V4L/DVB (5001): Add two required headers on kernel 2.6.20-rc1

include/media/ir-common.h:78: error: field 'work' has incomplete type
drivers/media/common/ir-functions.c: In function 'ir_rc5_timer_end':
drivers/media/common/ir-functions.c:301: error: 'jiffies' undeclared (first 
use in this function)
drivers/media/common/ir-functions.c:301: error: (Each undeclared identifier 
is reported only once)
drivers/media/common/ir-functions.c:301: error: for each function it 
appears in.)
drivers/media/common/ir-functions.c:347: error: 'HZ' undeclared (first use 
in this function)

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/common/ir-functions.c |1 +
 include/media/ir-common.h   |1 +
 2 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/media/common/ir-functions.c 
b/drivers/media/common/ir-functions.c
index 8eaa88f..9a8dd87 100644
--- a/drivers/media/common/ir-functions.c
+++ b/drivers/media/common/ir-functions.c
@@ -23,6 +23,7 @@
 #include linux/module.h
 #include linux/moduleparam.h
 #include linux/string.h
+#include linux/jiffies.h
 #include media/ir-common.h
 
 /* -- 
*/
diff --git a/include/media/ir-common.h b/include/media/ir-common.h
index 2b25f5c..4bb0ad8 100644
--- a/include/media/ir-common.h
+++ b/include/media/ir-common.h
@@ -24,6 +24,7 @@
 #define _IR_COMMON
 
 #include linux/input.h
+#include linux/workqueue.h
 
 #define IR_TYPE_RC5 1
 #define IR_TYPE_PD  2 /* Pulse distance encoded IR */
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5012): Usbvision fix: It was using instead

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=70bdd9c83a6e757e5fb9cc3195f27d2c1d0a4c39
Commit: 70bdd9c83a6e757e5fb9cc3195f27d2c1d0a4c39
Parent: 0b778a56e342e0e1d274298ad47d9af22a9de633
Author: Alexey Dobriyan [EMAIL PROTECTED]
AuthorDate: Tue Dec 26 07:43:25 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Dec 27 14:23:41 2006 -0200

V4L/DVB (5012): Usbvision fix: It was using  instead 

Signed-off-by: Alexey Dobriyan [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/usbvision/usbvision-core.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/usbvision/usbvision-core.c 
b/drivers/media/video/usbvision/usbvision-core.c
index 68542f2..a807d97 100644
--- a/drivers/media/video/usbvision/usbvision-core.c
+++ b/drivers/media/video/usbvision/usbvision-core.c
@@ -2311,7 +2311,7 @@ int usbvision_restart_isoc(struct usb_usbvision 
*usbvision)
  usbvision-Vin_Reg2_Preset))  0) return ret;
 
/* TODO: schedule timeout */
-   while ((usbvision_read_reg(usbvision, USBVISION_STATUS_REG)  0x01) != 
1);
+   while ((usbvision_read_reg(usbvision, USBVISION_STATUS_REG)  0x01) != 
1);
 
return 0;
 }
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[S390] Change max. buffer size for monwriter device.

2006-12-29 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=524a237e4512038d6e07ad3b2e44e70902b76738
Commit: 524a237e4512038d6e07ad3b2e44e70902b76738
Parent: 3bf8ba38f38d3647368e4edcf7d019f9f8d9184a
Author: Melissa Howland [EMAIL PROTECTED]
AuthorDate: Thu Dec 28 00:35:25 2006 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Thu Dec 28 00:35:25 2006 +0100

[S390] Change max. buffer size for monwriter device.

Reduce the max. buffer size for the monwriter device to prevent a
possible problem with the z/VM monitor service.

Signed-off-by: Melissa Howland [EMAIL PROTECTED]
Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 drivers/s390/char/monwriter.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/s390/char/monwriter.c b/drivers/s390/char/monwriter.c
index b9b0fc3..cdb24f5 100644
--- a/drivers/s390/char/monwriter.c
+++ b/drivers/s390/char/monwriter.c
@@ -23,7 +23,7 @@
 #include asm/appldata.h
 #include asm/monwriter.h
 
-#define MONWRITE_MAX_DATALEN   4024
+#define MONWRITE_MAX_DATALEN   4010
 
 static int mon_max_bufs = 255;
 static int mon_buf_count;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html