Commit 96d4cbb6 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6:
  Staging: wlan-ng: Explicitly set some fields in cfg80211 interface
  Staging: octeon: depends on NETDEVICES
  Staging: spectra: depend on X86_MRST
  Staging: zram: free device memory when init fails
  Staging: rt2870sta: Add more device IDs from vendor drivers
  staging: comedi das08_cs.c: Fix io_req_t conversion
  staging: spectra needs <linux/slab.h>
  staging: hv: Fixed lockup problem with bounce_buffer scatter list
  staging: hv: Increased storvsc ringbuffer and max_io_requests
  staging: hv: Fixed the value of the 64bit-hole inside ring buffer
  staging: hv: Fixed bounce kmap problem by using correct index
  staging: hv: Fix missing functions for net_device_ops
parents d3de0eb1 aff3ea4e
...@@ -222,7 +222,6 @@ static int das08_pcmcia_config_loop(struct pcmcia_device *p_dev, ...@@ -222,7 +222,6 @@ static int das08_pcmcia_config_loop(struct pcmcia_device *p_dev,
p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH;
p_dev->resource[0]->flags |= p_dev->resource[0]->flags |=
pcmcia_io_cfg_data_width(io->flags); pcmcia_io_cfg_data_width(io->flags);
p_dev->io.IOAddrLines = io->flags & CISTPL_IO_LINES_MASK;
p_dev->resource[0]->start = io->win[0].base; p_dev->resource[0]->start = io->win[0].base;
p_dev->resource[0]->end = io->win[0].len; p_dev->resource[0]->end = io->win[0].len;
if (io->nwin > 1) { if (io->nwin > 1) {
......
...@@ -327,6 +327,9 @@ static const struct net_device_ops device_ops = { ...@@ -327,6 +327,9 @@ static const struct net_device_ops device_ops = {
.ndo_stop = netvsc_close, .ndo_stop = netvsc_close,
.ndo_start_xmit = netvsc_start_xmit, .ndo_start_xmit = netvsc_start_xmit,
.ndo_set_multicast_list = netvsc_set_multicast_list, .ndo_set_multicast_list = netvsc_set_multicast_list,
.ndo_change_mtu = eth_change_mtu,
.ndo_validate_addr = eth_validate_addr,
.ndo_set_mac_address = eth_mac_addr,
}; };
static int netvsc_probe(struct device *device) static int netvsc_probe(struct device *device)
......
...@@ -193,8 +193,7 @@ GetRingBufferSize(struct hv_ring_buffer_info *RingInfo) ...@@ -193,8 +193,7 @@ GetRingBufferSize(struct hv_ring_buffer_info *RingInfo)
static inline u64 static inline u64
GetRingBufferIndices(struct hv_ring_buffer_info *RingInfo) GetRingBufferIndices(struct hv_ring_buffer_info *RingInfo)
{ {
return ((u64)RingInfo->RingBuffer->WriteIndex << 32) return (u64)RingInfo->RingBuffer->WriteIndex << 32;
|| RingInfo->RingBuffer->ReadIndex;
} }
......
...@@ -28,10 +28,10 @@ ...@@ -28,10 +28,10 @@
#include "vmbus_api.h" #include "vmbus_api.h"
/* Defines */ /* Defines */
#define STORVSC_RING_BUFFER_SIZE (10*PAGE_SIZE) #define STORVSC_RING_BUFFER_SIZE (20*PAGE_SIZE)
#define BLKVSC_RING_BUFFER_SIZE (20*PAGE_SIZE) #define BLKVSC_RING_BUFFER_SIZE (20*PAGE_SIZE)
#define STORVSC_MAX_IO_REQUESTS 64 #define STORVSC_MAX_IO_REQUESTS 128
/* /*
* In Hyper-V, each port/path/target maps to 1 scsi host adapter. In * In Hyper-V, each port/path/target maps to 1 scsi host adapter. In
......
...@@ -495,7 +495,7 @@ static unsigned int copy_to_bounce_buffer(struct scatterlist *orig_sgl, ...@@ -495,7 +495,7 @@ static unsigned int copy_to_bounce_buffer(struct scatterlist *orig_sgl,
/* ASSERT(orig_sgl[i].offset + orig_sgl[i].length <= PAGE_SIZE); */ /* ASSERT(orig_sgl[i].offset + orig_sgl[i].length <= PAGE_SIZE); */
if (j == 0) if (bounce_addr == 0)
bounce_addr = (unsigned long)kmap_atomic(sg_page((&bounce_sgl[j])), KM_IRQ0); bounce_addr = (unsigned long)kmap_atomic(sg_page((&bounce_sgl[j])), KM_IRQ0);
while (srclen) { while (srclen) {
...@@ -556,7 +556,7 @@ static unsigned int copy_from_bounce_buffer(struct scatterlist *orig_sgl, ...@@ -556,7 +556,7 @@ static unsigned int copy_from_bounce_buffer(struct scatterlist *orig_sgl,
destlen = orig_sgl[i].length; destlen = orig_sgl[i].length;
/* ASSERT(orig_sgl[i].offset + orig_sgl[i].length <= PAGE_SIZE); */ /* ASSERT(orig_sgl[i].offset + orig_sgl[i].length <= PAGE_SIZE); */
if (j == 0) if (bounce_addr == 0)
bounce_addr = (unsigned long)kmap_atomic(sg_page((&bounce_sgl[j])), KM_IRQ0); bounce_addr = (unsigned long)kmap_atomic(sg_page((&bounce_sgl[j])), KM_IRQ0);
while (destlen) { while (destlen) {
...@@ -615,6 +615,7 @@ static int storvsc_queuecommand(struct scsi_cmnd *scmnd, ...@@ -615,6 +615,7 @@ static int storvsc_queuecommand(struct scsi_cmnd *scmnd,
unsigned int request_size = 0; unsigned int request_size = 0;
int i; int i;
struct scatterlist *sgl; struct scatterlist *sgl;
unsigned int sg_count = 0;
DPRINT_DBG(STORVSC_DRV, "scmnd %p dir %d, use_sg %d buf %p len %d " DPRINT_DBG(STORVSC_DRV, "scmnd %p dir %d, use_sg %d buf %p len %d "
"queue depth %d tagged %d", scmnd, scmnd->sc_data_direction, "queue depth %d tagged %d", scmnd, scmnd->sc_data_direction,
...@@ -697,6 +698,7 @@ static int storvsc_queuecommand(struct scsi_cmnd *scmnd, ...@@ -697,6 +698,7 @@ static int storvsc_queuecommand(struct scsi_cmnd *scmnd,
request->DataBuffer.Length = scsi_bufflen(scmnd); request->DataBuffer.Length = scsi_bufflen(scmnd);
if (scsi_sg_count(scmnd)) { if (scsi_sg_count(scmnd)) {
sgl = (struct scatterlist *)scsi_sglist(scmnd); sgl = (struct scatterlist *)scsi_sglist(scmnd);
sg_count = scsi_sg_count(scmnd);
/* check if we need to bounce the sgl */ /* check if we need to bounce the sgl */
if (do_bounce_buffer(sgl, scsi_sg_count(scmnd)) != -1) { if (do_bounce_buffer(sgl, scsi_sg_count(scmnd)) != -1) {
...@@ -731,11 +733,12 @@ static int storvsc_queuecommand(struct scsi_cmnd *scmnd, ...@@ -731,11 +733,12 @@ static int storvsc_queuecommand(struct scsi_cmnd *scmnd,
scsi_sg_count(scmnd)); scsi_sg_count(scmnd));
sgl = cmd_request->bounce_sgl; sgl = cmd_request->bounce_sgl;
sg_count = cmd_request->bounce_sgl_count;
} }
request->DataBuffer.Offset = sgl[0].offset; request->DataBuffer.Offset = sgl[0].offset;
for (i = 0; i < scsi_sg_count(scmnd); i++) { for (i = 0; i < sg_count; i++) {
DPRINT_DBG(STORVSC_DRV, "sgl[%d] len %d offset %d\n", DPRINT_DBG(STORVSC_DRV, "sgl[%d] len %d offset %d\n",
i, sgl[i].length, sgl[i].offset); i, sgl[i].length, sgl[i].offset);
request->DataBuffer.PfnArray[i] = request->DataBuffer.PfnArray[i] =
......
config OCTEON_ETHERNET config OCTEON_ETHERNET
tristate "Cavium Networks Octeon Ethernet support" tristate "Cavium Networks Octeon Ethernet support"
depends on CPU_CAVIUM_OCTEON depends on CPU_CAVIUM_OCTEON && NETDEVICES
select PHYLIB select PHYLIB
select MDIO_OCTEON select MDIO_OCTEON
help help
......
...@@ -44,6 +44,7 @@ struct usb_device_id rtusb_usb_id[] = { ...@@ -44,6 +44,7 @@ struct usb_device_id rtusb_usb_id[] = {
{USB_DEVICE(0x07B8, 0x2870)}, /* AboCom */ {USB_DEVICE(0x07B8, 0x2870)}, /* AboCom */
{USB_DEVICE(0x07B8, 0x2770)}, /* AboCom */ {USB_DEVICE(0x07B8, 0x2770)}, /* AboCom */
{USB_DEVICE(0x0DF6, 0x0039)}, /* Sitecom 2770 */ {USB_DEVICE(0x0DF6, 0x0039)}, /* Sitecom 2770 */
{USB_DEVICE(0x0DF6, 0x003F)}, /* Sitecom 2770 */
{USB_DEVICE(0x083A, 0x7512)}, /* Arcadyan 2770 */ {USB_DEVICE(0x083A, 0x7512)}, /* Arcadyan 2770 */
{USB_DEVICE(0x0789, 0x0162)}, /* Logitec 2870 */ {USB_DEVICE(0x0789, 0x0162)}, /* Logitec 2870 */
{USB_DEVICE(0x0789, 0x0163)}, /* Logitec 2870 */ {USB_DEVICE(0x0789, 0x0163)}, /* Logitec 2870 */
...@@ -95,7 +96,8 @@ struct usb_device_id rtusb_usb_id[] = { ...@@ -95,7 +96,8 @@ struct usb_device_id rtusb_usb_id[] = {
{USB_DEVICE(0x050d, 0x815c)}, {USB_DEVICE(0x050d, 0x815c)},
{USB_DEVICE(0x1482, 0x3C09)}, /* Abocom */ {USB_DEVICE(0x1482, 0x3C09)}, /* Abocom */
{USB_DEVICE(0x14B2, 0x3C09)}, /* Alpha */ {USB_DEVICE(0x14B2, 0x3C09)}, /* Alpha */
{USB_DEVICE(0x04E8, 0x2018)}, /* samsung */ {USB_DEVICE(0x04E8, 0x2018)}, /* samsung linkstick2 */
{USB_DEVICE(0x1690, 0x0740)}, /* Askey */
{USB_DEVICE(0x5A57, 0x0280)}, /* Zinwell */ {USB_DEVICE(0x5A57, 0x0280)}, /* Zinwell */
{USB_DEVICE(0x5A57, 0x0282)}, /* Zinwell */ {USB_DEVICE(0x5A57, 0x0282)}, /* Zinwell */
{USB_DEVICE(0x7392, 0x7718)}, {USB_DEVICE(0x7392, 0x7718)},
...@@ -105,21 +107,34 @@ struct usb_device_id rtusb_usb_id[] = { ...@@ -105,21 +107,34 @@ struct usb_device_id rtusb_usb_id[] = {
{USB_DEVICE(0x1737, 0x0071)}, /* Linksys WUSB600N */ {USB_DEVICE(0x1737, 0x0071)}, /* Linksys WUSB600N */
{USB_DEVICE(0x0411, 0x00e8)}, /* Buffalo WLI-UC-G300N */ {USB_DEVICE(0x0411, 0x00e8)}, /* Buffalo WLI-UC-G300N */
{USB_DEVICE(0x050d, 0x815c)}, /* Belkin F5D8053 */ {USB_DEVICE(0x050d, 0x815c)}, /* Belkin F5D8053 */
{USB_DEVICE(0x100D, 0x9031)}, /* Motorola 2770 */
#endif /* RT2870 // */ #endif /* RT2870 // */
#ifdef RT3070 #ifdef RT3070
{USB_DEVICE(0x148F, 0x3070)}, /* Ralink 3070 */ {USB_DEVICE(0x148F, 0x3070)}, /* Ralink 3070 */
{USB_DEVICE(0x148F, 0x3071)}, /* Ralink 3071 */ {USB_DEVICE(0x148F, 0x3071)}, /* Ralink 3071 */
{USB_DEVICE(0x148F, 0x3072)}, /* Ralink 3072 */ {USB_DEVICE(0x148F, 0x3072)}, /* Ralink 3072 */
{USB_DEVICE(0x0DB0, 0x3820)}, /* Ralink 3070 */ {USB_DEVICE(0x0DB0, 0x3820)}, /* Ralink 3070 */
{USB_DEVICE(0x0DB0, 0x871C)}, /* Ralink 3070 */
{USB_DEVICE(0x0DB0, 0x822C)}, /* Ralink 3070 */
{USB_DEVICE(0x0DB0, 0x871B)}, /* Ralink 3070 */
{USB_DEVICE(0x0DB0, 0x822B)}, /* Ralink 3070 */
{USB_DEVICE(0x0DF6, 0x003E)}, /* Sitecom 3070 */ {USB_DEVICE(0x0DF6, 0x003E)}, /* Sitecom 3070 */
{USB_DEVICE(0x0DF6, 0x0042)}, /* Sitecom 3072 */ {USB_DEVICE(0x0DF6, 0x0042)}, /* Sitecom 3072 */
{USB_DEVICE(0x0DF6, 0x0048)}, /* Sitecom 3070 */
{USB_DEVICE(0x0DF6, 0x0047)}, /* Sitecom 3071 */
{USB_DEVICE(0x14B2, 0x3C12)}, /* AL 3070 */ {USB_DEVICE(0x14B2, 0x3C12)}, /* AL 3070 */
{USB_DEVICE(0x18C5, 0x0012)}, /* Corega 3070 */ {USB_DEVICE(0x18C5, 0x0012)}, /* Corega 3070 */
{USB_DEVICE(0x083A, 0x7511)}, /* Arcadyan 3070 */ {USB_DEVICE(0x083A, 0x7511)}, /* Arcadyan 3070 */
{USB_DEVICE(0x083A, 0xA701)}, /* SMC 3070 */
{USB_DEVICE(0x083A, 0xA702)}, /* SMC 3072 */
{USB_DEVICE(0x1740, 0x9703)}, /* EnGenius 3070 */ {USB_DEVICE(0x1740, 0x9703)}, /* EnGenius 3070 */
{USB_DEVICE(0x1740, 0x9705)}, /* EnGenius 3071 */ {USB_DEVICE(0x1740, 0x9705)}, /* EnGenius 3071 */
{USB_DEVICE(0x1740, 0x9706)}, /* EnGenius 3072 */ {USB_DEVICE(0x1740, 0x9706)}, /* EnGenius 3072 */
{USB_DEVICE(0x1740, 0x9707)}, /* EnGenius 3070 */
{USB_DEVICE(0x1740, 0x9708)}, /* EnGenius 3071 */
{USB_DEVICE(0x1740, 0x9709)}, /* EnGenius 3072 */
{USB_DEVICE(0x13D3, 0x3273)}, /* AzureWave 3070 */ {USB_DEVICE(0x13D3, 0x3273)}, /* AzureWave 3070 */
{USB_DEVICE(0x13D3, 0x3305)}, /* AzureWave 3070*/
{USB_DEVICE(0x1044, 0x800D)}, /* Gigabyte GN-WB32L 3070 */ {USB_DEVICE(0x1044, 0x800D)}, /* Gigabyte GN-WB32L 3070 */
{USB_DEVICE(0x2019, 0xAB25)}, /* Planex Communications, Inc. RT3070 */ {USB_DEVICE(0x2019, 0xAB25)}, /* Planex Communications, Inc. RT3070 */
{USB_DEVICE(0x07B8, 0x3070)}, /* AboCom 3070 */ {USB_DEVICE(0x07B8, 0x3070)}, /* AboCom 3070 */
...@@ -132,14 +147,36 @@ struct usb_device_id rtusb_usb_id[] = { ...@@ -132,14 +147,36 @@ struct usb_device_id rtusb_usb_id[] = {
{USB_DEVICE(0x07D1, 0x3C0D)}, /* D-Link 3070 */ {USB_DEVICE(0x07D1, 0x3C0D)}, /* D-Link 3070 */
{USB_DEVICE(0x07D1, 0x3C0E)}, /* D-Link 3070 */ {USB_DEVICE(0x07D1, 0x3C0E)}, /* D-Link 3070 */
{USB_DEVICE(0x07D1, 0x3C0F)}, /* D-Link 3070 */ {USB_DEVICE(0x07D1, 0x3C0F)}, /* D-Link 3070 */
{USB_DEVICE(0x07D1, 0x3C16)}, /* D-Link 3070 */
{USB_DEVICE(0x07D1, 0x3C17)}, /* D-Link 8070 */
{USB_DEVICE(0x1D4D, 0x000C)}, /* Pegatron Corporation 3070 */ {USB_DEVICE(0x1D4D, 0x000C)}, /* Pegatron Corporation 3070 */
{USB_DEVICE(0x1D4D, 0x000E)}, /* Pegatron Corporation 3070 */ {USB_DEVICE(0x1D4D, 0x000E)}, /* Pegatron Corporation 3070 */
{USB_DEVICE(0x5A57, 0x5257)}, /* Zinwell 3070 */ {USB_DEVICE(0x5A57, 0x5257)}, /* Zinwell 3070 */
{USB_DEVICE(0x5A57, 0x0283)}, /* Zinwell 3072 */ {USB_DEVICE(0x5A57, 0x0283)}, /* Zinwell 3072 */
{USB_DEVICE(0x04BB, 0x0945)}, /* I-O DATA 3072 */ {USB_DEVICE(0x04BB, 0x0945)}, /* I-O DATA 3072 */
{USB_DEVICE(0x04BB, 0x0947)}, /* I-O DATA 3070 */
{USB_DEVICE(0x04BB, 0x0948)}, /* I-O DATA 3072 */
{USB_DEVICE(0x203D, 0x1480)}, /* Encore 3070 */ {USB_DEVICE(0x203D, 0x1480)}, /* Encore 3070 */
{USB_DEVICE(0x20B8, 0x8888)}, /* PARA INDUSTRIAL 3070 */
{USB_DEVICE(0x0B05, 0x1784)}, /* Asus 3072 */
{USB_DEVICE(0x203D, 0x14A9)}, /* Encore 3070*/
{USB_DEVICE(0x0DB0, 0x899A)}, /* MSI 3070*/
{USB_DEVICE(0x0DB0, 0x3870)}, /* MSI 3070*/
{USB_DEVICE(0x0DB0, 0x870A)}, /* MSI 3070*/
{USB_DEVICE(0x0DB0, 0x6899)}, /* MSI 3070 */
{USB_DEVICE(0x0DB0, 0x3822)}, /* MSI 3070 */
{USB_DEVICE(0x0DB0, 0x3871)}, /* MSI 3070 */
{USB_DEVICE(0x0DB0, 0x871A)}, /* MSI 3070 */
{USB_DEVICE(0x0DB0, 0x822A)}, /* MSI 3070 */
{USB_DEVICE(0x0DB0, 0x3821)}, /* Ralink 3070 */
{USB_DEVICE(0x0DB0, 0x821A)}, /* Ralink 3070 */
{USB_DEVICE(0x083A, 0xA703)}, /* IO-MAGIC */
{USB_DEVICE(0x13D3, 0x3307)}, /* Azurewave */
{USB_DEVICE(0x13D3, 0x3321)}, /* Azurewave */
{USB_DEVICE(0x07FA, 0x7712)}, /* Edimax */
{USB_DEVICE(0x0789, 0x0166)}, /* Edimax */
{USB_DEVICE(0x148F, 0x2070)}, /* Edimax */
#endif /* RT3070 // */ #endif /* RT3070 // */
{USB_DEVICE(0x0DF6, 0x003F)}, /* Sitecom WL-608 */
{USB_DEVICE(0x1737, 0x0077)}, /* Linksys WUSB54GC-EU v3 */ {USB_DEVICE(0x1737, 0x0077)}, /* Linksys WUSB54GC-EU v3 */
{USB_DEVICE(0x2001, 0x3C09)}, /* D-Link */ {USB_DEVICE(0x2001, 0x3C09)}, /* D-Link */
{USB_DEVICE(0x2001, 0x3C0A)}, /* D-Link 3072 */ {USB_DEVICE(0x2001, 0x3C0A)}, /* D-Link 3072 */
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
menuconfig SPECTRA menuconfig SPECTRA
tristate "Denali Spectra Flash Translation Layer" tristate "Denali Spectra Flash Translation Layer"
depends on BLOCK depends on BLOCK
depends on X86_MRST
default n default n
---help--- ---help---
Enable the FTL pseudo-filesystem used with the NAND Flash Enable the FTL pseudo-filesystem used with the NAND Flash
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <linux/log2.h> #include <linux/log2.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/smp_lock.h> #include <linux/smp_lock.h>
#include <linux/slab.h>
/**** Helper functions used for Div, Remainder operation on u64 ****/ /**** Helper functions used for Div, Remainder operation on u64 ****/
......
...@@ -219,6 +219,7 @@ int prism2_get_key(struct wiphy *wiphy, struct net_device *dev, ...@@ -219,6 +219,7 @@ int prism2_get_key(struct wiphy *wiphy, struct net_device *dev,
return -ENOENT; return -ENOENT;
params.key_len = len; params.key_len = len;
params.key = wlandev->wep_keys[key_index]; params.key = wlandev->wep_keys[key_index];
params.seq_len = 0;
callback(cookie, &params); callback(cookie, &params);
...@@ -735,6 +736,8 @@ struct wiphy *wlan_create_wiphy(struct device *dev, wlandevice_t *wlandev) ...@@ -735,6 +736,8 @@ struct wiphy *wlan_create_wiphy(struct device *dev, wlandevice_t *wlandev)
priv->band.n_channels = ARRAY_SIZE(prism2_channels); priv->band.n_channels = ARRAY_SIZE(prism2_channels);
priv->band.bitrates = priv->rates; priv->band.bitrates = priv->rates;
priv->band.n_bitrates = ARRAY_SIZE(prism2_rates); priv->band.n_bitrates = ARRAY_SIZE(prism2_rates);
priv->band.band = IEEE80211_BAND_2GHZ;
priv->band.ht_cap.ht_supported = false;
wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->band; wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->band;
set_wiphy_dev(wiphy, dev); set_wiphy_dev(wiphy, dev);
......
...@@ -769,6 +769,7 @@ static int __init zram_init(void) ...@@ -769,6 +769,7 @@ static int __init zram_init(void)
free_devices: free_devices:
while (dev_id) while (dev_id)
destroy_device(&devices[--dev_id]); destroy_device(&devices[--dev_id]);
kfree(devices);
unregister: unregister:
unregister_blkdev(zram_major, "zram"); unregister_blkdev(zram_major, "zram");
out: out:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment