VM: Fix nasty and subtle race in shared mmap'ed page writeback
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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.
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
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
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
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()
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
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
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
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
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
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.
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