Commit f2378e38 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'staging-3.6-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging

Pull staging tree fixes from Greg Kroah-Hartman:
 "Here are a few staging tree fixes for problems that have been
  reported.

  Nothing major, just a number of tiny driver fixes.  All of these have
  been in the linux-next tree for a while.

  Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"

* tag 'staging-3.6-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
  drm/omap: add more new timings fields
  drm/omap: update for interlaced
  staging: r8712u: fix bug in r8712_recv_indicatepkt()
  staging: zcache: fix cleancache race condition with shrinker
  Staging: Android alarm: IOCTL command encoding fix
  staging: vt6656: [BUG] - Failed connection, incorrect endian.
  staging: ozwpan: fix memcmp() test in oz_set_active_pd()
  staging: wlan-ng: Fix problem with wrong arguments
  staging: comedi: das08: Correct AO output for das08jr-16-ao
  staging: comedi: das08: Correct AI encoding for das08jr-16-ao
  staging: comedi: das08: Fix PCI ref count
  staging: comedi: amplc_pci230: Fix PCI ref count
  staging: comedi: amplc_pc263: Fix PCI ref count
  staging: comedi: amplc_pc236: Fix PCI ref count
  staging: comedi: amplc_dio200: Fix PCI ref count
  staging: comedi: amplc_pci224: Fix PCI ref count
  drivers/iio/adc/at91_adc.c: adjust inconsistent IS_ERR and PTR_ERR
  staging iio: fix potential memory leak in lis3l02dq_ring.c
  staging:iio: prevent divide by zero bugs
parents 0462bfc8 94254edc
...@@ -617,7 +617,7 @@ static int __devinit at91_adc_probe(struct platform_device *pdev) ...@@ -617,7 +617,7 @@ static int __devinit at91_adc_probe(struct platform_device *pdev)
st->adc_clk = clk_get(&pdev->dev, "adc_op_clk"); st->adc_clk = clk_get(&pdev->dev, "adc_op_clk");
if (IS_ERR(st->adc_clk)) { if (IS_ERR(st->adc_clk)) {
dev_err(&pdev->dev, "Failed to get the ADC clock.\n"); dev_err(&pdev->dev, "Failed to get the ADC clock.\n");
ret = PTR_ERR(st->clk); ret = PTR_ERR(st->adc_clk);
goto error_disable_clk; goto error_disable_clk;
} }
......
...@@ -51,10 +51,12 @@ enum android_alarm_return_flags { ...@@ -51,10 +51,12 @@ enum android_alarm_return_flags {
#define ANDROID_ALARM_WAIT _IO('a', 1) #define ANDROID_ALARM_WAIT _IO('a', 1)
#define ALARM_IOW(c, type, size) _IOW('a', (c) | ((type) << 4), size) #define ALARM_IOW(c, type, size) _IOW('a', (c) | ((type) << 4), size)
#define ALARM_IOR(c, type, size) _IOR('a', (c) | ((type) << 4), size)
/* Set alarm */ /* Set alarm */
#define ANDROID_ALARM_SET(type) ALARM_IOW(2, type, struct timespec) #define ANDROID_ALARM_SET(type) ALARM_IOW(2, type, struct timespec)
#define ANDROID_ALARM_SET_AND_WAIT(type) ALARM_IOW(3, type, struct timespec) #define ANDROID_ALARM_SET_AND_WAIT(type) ALARM_IOW(3, type, struct timespec)
#define ANDROID_ALARM_GET_TIME(type) ALARM_IOW(4, type, struct timespec) #define ANDROID_ALARM_GET_TIME(type) ALARM_IOR(4, type, struct timespec)
#define ANDROID_ALARM_SET_RTC _IOW('a', 5, struct timespec) #define ANDROID_ALARM_SET_RTC _IOW('a', 5, struct timespec)
#define ANDROID_ALARM_BASE_CMD(cmd) (cmd & ~(_IOC(0, 0, 0xf0, 0))) #define ANDROID_ALARM_BASE_CMD(cmd) (cmd & ~(_IOC(0, 0, 0xf0, 0)))
#define ANDROID_ALARM_IOCTL_TO_TYPE(cmd) (_IOC_NR(cmd) >> 4) #define ANDROID_ALARM_IOCTL_TO_TYPE(cmd) (_IOC_NR(cmd) >> 4)
......
...@@ -1412,6 +1412,13 @@ static int __devinit dio200_attach_pci(struct comedi_device *dev, ...@@ -1412,6 +1412,13 @@ static int __devinit dio200_attach_pci(struct comedi_device *dev,
dev_err(dev->class_dev, "BUG! cannot determine board type!\n"); dev_err(dev->class_dev, "BUG! cannot determine board type!\n");
return -EINVAL; return -EINVAL;
} }
/*
* Need to 'get' the PCI device to match the 'put' in dio200_detach().
* TODO: Remove the pci_dev_get() and matching pci_dev_put() once
* support for manual attachment of PCI devices via dio200_attach()
* has been removed.
*/
pci_dev_get(pci_dev);
return dio200_pci_common_attach(dev, pci_dev); return dio200_pci_common_attach(dev, pci_dev);
} }
......
...@@ -565,6 +565,13 @@ static int __devinit pc236_attach_pci(struct comedi_device *dev, ...@@ -565,6 +565,13 @@ static int __devinit pc236_attach_pci(struct comedi_device *dev,
dev_err(dev->class_dev, "BUG! cannot determine board type!\n"); dev_err(dev->class_dev, "BUG! cannot determine board type!\n");
return -EINVAL; return -EINVAL;
} }
/*
* Need to 'get' the PCI device to match the 'put' in pc236_detach().
* TODO: Remove the pci_dev_get() and matching pci_dev_put() once
* support for manual attachment of PCI devices via pc236_attach()
* has been removed.
*/
pci_dev_get(pci_dev);
return pc236_pci_common_attach(dev, pci_dev); return pc236_pci_common_attach(dev, pci_dev);
} }
......
...@@ -298,6 +298,13 @@ static int __devinit pc263_attach_pci(struct comedi_device *dev, ...@@ -298,6 +298,13 @@ static int __devinit pc263_attach_pci(struct comedi_device *dev,
dev_err(dev->class_dev, "BUG! cannot determine board type!\n"); dev_err(dev->class_dev, "BUG! cannot determine board type!\n");
return -EINVAL; return -EINVAL;
} }
/*
* Need to 'get' the PCI device to match the 'put' in pc263_detach().
* TODO: Remove the pci_dev_get() and matching pci_dev_put() once
* support for manual attachment of PCI devices via pc263_attach()
* has been removed.
*/
pci_dev_get(pci_dev);
return pc263_pci_common_attach(dev, pci_dev); return pc263_pci_common_attach(dev, pci_dev);
} }
......
...@@ -1503,6 +1503,13 @@ pci224_attach_pci(struct comedi_device *dev, struct pci_dev *pci_dev) ...@@ -1503,6 +1503,13 @@ pci224_attach_pci(struct comedi_device *dev, struct pci_dev *pci_dev)
DRIVER_NAME ": BUG! cannot determine board type!\n"); DRIVER_NAME ": BUG! cannot determine board type!\n");
return -EINVAL; return -EINVAL;
} }
/*
* Need to 'get' the PCI device to match the 'put' in pci224_detach().
* TODO: Remove the pci_dev_get() and matching pci_dev_put() once
* support for manual attachment of PCI devices via pci224_attach()
* has been removed.
*/
pci_dev_get(pci_dev);
return pci224_attach_common(dev, pci_dev, NULL); return pci224_attach_common(dev, pci_dev, NULL);
} }
......
...@@ -2925,6 +2925,13 @@ static int __devinit pci230_attach_pci(struct comedi_device *dev, ...@@ -2925,6 +2925,13 @@ static int __devinit pci230_attach_pci(struct comedi_device *dev,
"amplc_pci230: BUG! cannot determine board type!\n"); "amplc_pci230: BUG! cannot determine board type!\n");
return -EINVAL; return -EINVAL;
} }
/*
* Need to 'get' the PCI device to match the 'put' in pci230_detach().
* TODO: Remove the pci_dev_get() and matching pci_dev_put() once
* support for manual attachment of PCI devices via pci230_attach()
* has been removed.
*/
pci_dev_get(pci_dev);
return pci230_attach_common(dev, pci_dev); return pci230_attach_common(dev, pci_dev);
} }
......
...@@ -378,7 +378,7 @@ das08jr_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -378,7 +378,7 @@ das08jr_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
int chan; int chan;
lsb = data[0] & 0xff; lsb = data[0] & 0xff;
msb = (data[0] >> 8) & 0xf; msb = (data[0] >> 8) & 0xff;
chan = CR_CHAN(insn->chanspec); chan = CR_CHAN(insn->chanspec);
...@@ -623,7 +623,7 @@ static const struct das08_board_struct das08_boards[] = { ...@@ -623,7 +623,7 @@ static const struct das08_board_struct das08_boards[] = {
.ai = das08_ai_rinsn, .ai = das08_ai_rinsn,
.ai_nbits = 16, .ai_nbits = 16,
.ai_pg = das08_pg_none, .ai_pg = das08_pg_none,
.ai_encoding = das08_encode12, .ai_encoding = das08_encode16,
.ao = das08jr_ao_winsn, .ao = das08jr_ao_winsn,
.ao_nbits = 16, .ao_nbits = 16,
.di = das08jr_di_rbits, .di = das08jr_di_rbits,
...@@ -922,6 +922,13 @@ das08_attach_pci(struct comedi_device *dev, struct pci_dev *pdev) ...@@ -922,6 +922,13 @@ das08_attach_pci(struct comedi_device *dev, struct pci_dev *pdev)
dev_err(dev->class_dev, "BUG! cannot determine board type!\n"); dev_err(dev->class_dev, "BUG! cannot determine board type!\n");
return -EINVAL; return -EINVAL;
} }
/*
* Need to 'get' the PCI device to match the 'put' in das08_detach().
* TODO: Remove the pci_dev_get() and matching pci_dev_put() once
* support for manual attachment of PCI devices via das08_attach()
* has been removed.
*/
pci_dev_get(pdev);
return das08_pci_attach_common(dev, pdev); return das08_pci_attach_common(dev, pdev);
} }
......
...@@ -121,8 +121,10 @@ static int lis3l02dq_get_buffer_element(struct iio_dev *indio_dev, ...@@ -121,8 +121,10 @@ static int lis3l02dq_get_buffer_element(struct iio_dev *indio_dev,
if (rx_array == NULL) if (rx_array == NULL)
return -ENOMEM; return -ENOMEM;
ret = lis3l02dq_read_all(indio_dev, rx_array); ret = lis3l02dq_read_all(indio_dev, rx_array);
if (ret < 0) if (ret < 0) {
kfree(rx_array);
return ret; return ret;
}
for (i = 0; i < scan_count; i++) for (i = 0; i < scan_count; i++)
data[i] = combine_8_to_16(rx_array[i*4+1], data[i] = combine_8_to_16(rx_array[i*4+1],
rx_array[i*4+3]); rx_array[i*4+3]);
......
...@@ -647,6 +647,8 @@ static ssize_t ad7192_write_frequency(struct device *dev, ...@@ -647,6 +647,8 @@ static ssize_t ad7192_write_frequency(struct device *dev,
ret = strict_strtoul(buf, 10, &lval); ret = strict_strtoul(buf, 10, &lval);
if (ret) if (ret)
return ret; return ret;
if (lval == 0)
return -EINVAL;
mutex_lock(&indio_dev->mlock); mutex_lock(&indio_dev->mlock);
if (iio_buffer_enabled(indio_dev)) { if (iio_buffer_enabled(indio_dev)) {
......
...@@ -195,6 +195,8 @@ static ssize_t adis16260_write_frequency(struct device *dev, ...@@ -195,6 +195,8 @@ static ssize_t adis16260_write_frequency(struct device *dev,
ret = strict_strtol(buf, 10, &val); ret = strict_strtol(buf, 10, &val);
if (ret) if (ret)
return ret; return ret;
if (val == 0)
return -EINVAL;
mutex_lock(&indio_dev->mlock); mutex_lock(&indio_dev->mlock);
if (spi_get_device_id(st->us)) { if (spi_get_device_id(st->us)) {
......
...@@ -234,6 +234,8 @@ static ssize_t adis16400_write_frequency(struct device *dev, ...@@ -234,6 +234,8 @@ static ssize_t adis16400_write_frequency(struct device *dev,
ret = strict_strtol(buf, 10, &val); ret = strict_strtol(buf, 10, &val);
if (ret) if (ret)
return ret; return ret;
if (val == 0)
return -EINVAL;
mutex_lock(&indio_dev->mlock); mutex_lock(&indio_dev->mlock);
......
...@@ -425,6 +425,8 @@ static ssize_t ade7753_write_frequency(struct device *dev, ...@@ -425,6 +425,8 @@ static ssize_t ade7753_write_frequency(struct device *dev,
ret = strict_strtol(buf, 10, &val); ret = strict_strtol(buf, 10, &val);
if (ret) if (ret)
return ret; return ret;
if (val == 0)
return -EINVAL;
mutex_lock(&indio_dev->mlock); mutex_lock(&indio_dev->mlock);
......
...@@ -445,6 +445,8 @@ static ssize_t ade7754_write_frequency(struct device *dev, ...@@ -445,6 +445,8 @@ static ssize_t ade7754_write_frequency(struct device *dev,
ret = strict_strtol(buf, 10, &val); ret = strict_strtol(buf, 10, &val);
if (ret) if (ret)
return ret; return ret;
if (val == 0)
return -EINVAL;
mutex_lock(&indio_dev->mlock); mutex_lock(&indio_dev->mlock);
......
...@@ -385,6 +385,8 @@ static ssize_t ade7759_write_frequency(struct device *dev, ...@@ -385,6 +385,8 @@ static ssize_t ade7759_write_frequency(struct device *dev,
ret = strict_strtol(buf, 10, &val); ret = strict_strtol(buf, 10, &val);
if (ret) if (ret)
return ret; return ret;
if (val == 0)
return -EINVAL;
mutex_lock(&indio_dev->mlock); mutex_lock(&indio_dev->mlock);
......
...@@ -48,13 +48,20 @@ static inline void copy_timings_omap_to_drm(struct drm_display_mode *mode, ...@@ -48,13 +48,20 @@ static inline void copy_timings_omap_to_drm(struct drm_display_mode *mode,
mode->vsync_end = mode->vsync_start + timings->vsw; mode->vsync_end = mode->vsync_start + timings->vsw;
mode->vtotal = mode->vsync_end + timings->vbp; mode->vtotal = mode->vsync_end + timings->vbp;
/* note: whether or not it is interlaced, +/- h/vsync, etc, mode->flags = 0;
* which should be set in the mode flags, is not exposed in
* the omap_video_timings struct.. but hdmi driver tracks if (timings->interlace)
* those separately so all we have to have to set the mode mode->flags |= DRM_MODE_FLAG_INTERLACE;
* is the way to recover these timings values, and the
* omap_dss_driver would do the rest. if (timings->hsync_level == OMAPDSS_SIG_ACTIVE_HIGH)
*/ mode->flags |= DRM_MODE_FLAG_PHSYNC;
else
mode->flags |= DRM_MODE_FLAG_NHSYNC;
if (timings->vsync_level == OMAPDSS_SIG_ACTIVE_HIGH)
mode->flags |= DRM_MODE_FLAG_PVSYNC;
else
mode->flags |= DRM_MODE_FLAG_NVSYNC;
} }
static inline void copy_timings_drm_to_omap(struct omap_video_timings *timings, static inline void copy_timings_drm_to_omap(struct omap_video_timings *timings,
...@@ -71,6 +78,22 @@ static inline void copy_timings_drm_to_omap(struct omap_video_timings *timings, ...@@ -71,6 +78,22 @@ static inline void copy_timings_drm_to_omap(struct omap_video_timings *timings,
timings->vfp = mode->vsync_start - mode->vdisplay; timings->vfp = mode->vsync_start - mode->vdisplay;
timings->vsw = mode->vsync_end - mode->vsync_start; timings->vsw = mode->vsync_end - mode->vsync_start;
timings->vbp = mode->vtotal - mode->vsync_end; timings->vbp = mode->vtotal - mode->vsync_end;
timings->interlace = !!(mode->flags & DRM_MODE_FLAG_INTERLACE);
if (mode->flags & DRM_MODE_FLAG_PHSYNC)
timings->hsync_level = OMAPDSS_SIG_ACTIVE_HIGH;
else
timings->hsync_level = OMAPDSS_SIG_ACTIVE_LOW;
if (mode->flags & DRM_MODE_FLAG_PVSYNC)
timings->vsync_level = OMAPDSS_SIG_ACTIVE_HIGH;
else
timings->vsync_level = OMAPDSS_SIG_ACTIVE_LOW;
timings->data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE;
timings->de_level = OMAPDSS_SIG_ACTIVE_HIGH;
timings->sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES;
} }
static void omap_connector_dpms(struct drm_connector *connector, int mode) static void omap_connector_dpms(struct drm_connector *connector, int mode)
...@@ -187,7 +210,7 @@ static int omap_connector_get_modes(struct drm_connector *connector) ...@@ -187,7 +210,7 @@ static int omap_connector_get_modes(struct drm_connector *connector)
} }
} else { } else {
struct drm_display_mode *mode = drm_mode_create(dev); struct drm_display_mode *mode = drm_mode_create(dev);
struct omap_video_timings timings; struct omap_video_timings timings = {0};
dssdrv->get_timings(dssdev, &timings); dssdrv->get_timings(dssdev, &timings);
...@@ -291,7 +314,7 @@ void omap_connector_mode_set(struct drm_connector *connector, ...@@ -291,7 +314,7 @@ void omap_connector_mode_set(struct drm_connector *connector,
struct omap_connector *omap_connector = to_omap_connector(connector); struct omap_connector *omap_connector = to_omap_connector(connector);
struct omap_dss_device *dssdev = omap_connector->dssdev; struct omap_dss_device *dssdev = omap_connector->dssdev;
struct omap_dss_driver *dssdrv = dssdev->driver; struct omap_dss_driver *dssdrv = dssdev->driver;
struct omap_video_timings timings; struct omap_video_timings timings = {0};
copy_timings_drm_to_omap(&timings, mode); copy_timings_drm_to_omap(&timings, mode);
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <linux/cdev.h> #include <linux/cdev.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <linux/netdevice.h> #include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/poll.h> #include <linux/poll.h>
#include <linux/sched.h> #include <linux/sched.h>
#include "ozconfig.h" #include "ozconfig.h"
...@@ -213,7 +214,7 @@ static int oz_set_active_pd(u8 *addr) ...@@ -213,7 +214,7 @@ static int oz_set_active_pd(u8 *addr)
if (old_pd) if (old_pd)
oz_pd_put(old_pd); oz_pd_put(old_pd);
} else { } else {
if (!memcmp(addr, "\0\0\0\0\0\0", sizeof(addr))) { if (is_zero_ether_addr(addr)) {
spin_lock_bh(&g_cdev.lock); spin_lock_bh(&g_cdev.lock);
pd = g_cdev.active_pd; pd = g_cdev.active_pd;
g_cdev.active_pd = 0; g_cdev.active_pd = 0;
......
...@@ -117,13 +117,8 @@ void r8712_recv_indicatepkt(struct _adapter *padapter, ...@@ -117,13 +117,8 @@ void r8712_recv_indicatepkt(struct _adapter *padapter,
if (skb == NULL) if (skb == NULL)
goto _recv_indicatepkt_drop; goto _recv_indicatepkt_drop;
skb->data = precv_frame->u.hdr.rx_data; skb->data = precv_frame->u.hdr.rx_data;
#ifdef NET_SKBUFF_DATA_USES_OFFSET
skb->tail = (sk_buff_data_t)(precv_frame->u.hdr.rx_tail -
precv_frame->u.hdr.rx_head);
#else
skb->tail = (sk_buff_data_t)precv_frame->u.hdr.rx_tail;
#endif
skb->len = precv_frame->u.hdr.len; skb->len = precv_frame->u.hdr.len;
skb_set_tail_pointer(skb, skb->len);
if ((pattrib->tcpchk_valid == 1) && (pattrib->tcp_chkrpt == 1)) if ((pattrib->tcpchk_valid == 1) && (pattrib->tcp_chkrpt == 1))
skb->ip_summed = CHECKSUM_UNNECESSARY; skb->ip_summed = CHECKSUM_UNNECESSARY;
else else
......
...@@ -200,7 +200,7 @@ s_vProcessRxMACHeader ( ...@@ -200,7 +200,7 @@ s_vProcessRxMACHeader (
} else if (!compare_ether_addr(pbyRxBuffer, &pDevice->abySNAP_RFC1042[0])) { } else if (!compare_ether_addr(pbyRxBuffer, &pDevice->abySNAP_RFC1042[0])) {
cbHeaderSize += 6; cbHeaderSize += 6;
pwType = (PWORD) (pbyRxBufferAddr + cbHeaderSize); pwType = (PWORD) (pbyRxBufferAddr + cbHeaderSize);
if ((*pwType == cpu_to_le16(ETH_P_IPX)) || if ((*pwType == cpu_to_be16(ETH_P_IPX)) ||
(*pwType == cpu_to_le16(0xF380))) { (*pwType == cpu_to_le16(0xF380))) {
cbHeaderSize -= 8; cbHeaderSize -= 8;
pwType = (PWORD) (pbyRxBufferAddr + cbHeaderSize); pwType = (PWORD) (pbyRxBufferAddr + cbHeaderSize);
......
...@@ -1699,7 +1699,7 @@ s_bPacketToWirelessUsb( ...@@ -1699,7 +1699,7 @@ s_bPacketToWirelessUsb(
// 802.1H // 802.1H
if (ntohs(psEthHeader->wType) > ETH_DATA_LEN) { if (ntohs(psEthHeader->wType) > ETH_DATA_LEN) {
if (pDevice->dwDiagRefCount == 0) { if (pDevice->dwDiagRefCount == 0) {
if ((psEthHeader->wType == cpu_to_le16(ETH_P_IPX)) || if ((psEthHeader->wType == cpu_to_be16(ETH_P_IPX)) ||
(psEthHeader->wType == cpu_to_le16(0xF380))) { (psEthHeader->wType == cpu_to_le16(0xF380))) {
memcpy((PBYTE) (pbyPayloadHead), memcpy((PBYTE) (pbyPayloadHead),
abySNAP_Bridgetunnel, 6); abySNAP_Bridgetunnel, 6);
...@@ -2838,10 +2838,10 @@ int nsDMA_tx_packet(PSDevice pDevice, unsigned int uDMAIdx, struct sk_buff *skb) ...@@ -2838,10 +2838,10 @@ int nsDMA_tx_packet(PSDevice pDevice, unsigned int uDMAIdx, struct sk_buff *skb)
Packet_Type = skb->data[ETH_HLEN+1]; Packet_Type = skb->data[ETH_HLEN+1];
Descriptor_type = skb->data[ETH_HLEN+1+1+2]; Descriptor_type = skb->data[ETH_HLEN+1+1+2];
Key_info = (skb->data[ETH_HLEN+1+1+2+1] << 8)|(skb->data[ETH_HLEN+1+1+2+2]); Key_info = (skb->data[ETH_HLEN+1+1+2+1] << 8)|(skb->data[ETH_HLEN+1+1+2+2]);
if (pDevice->sTxEthHeader.wType == cpu_to_le16(ETH_P_PAE)) { if (pDevice->sTxEthHeader.wType == cpu_to_be16(ETH_P_PAE)) {
/* 802.1x OR eapol-key challenge frame transfer */ /* 802.1x OR eapol-key challenge frame transfer */
if (((Protocol_Version == 1) || (Protocol_Version == 2)) && if (((Protocol_Version == 1) || (Protocol_Version == 2)) &&
(Packet_Type == 3)) { (Packet_Type == 3)) {
bTxeapol_key = TRUE; bTxeapol_key = TRUE;
if(!(Key_info & BIT3) && //WPA or RSN group-key challenge if(!(Key_info & BIT3) && //WPA or RSN group-key challenge
(Key_info & BIT8) && (Key_info & BIT9)) { //send 2/2 key (Key_info & BIT8) && (Key_info & BIT9)) { //send 2/2 key
...@@ -2987,19 +2987,19 @@ int nsDMA_tx_packet(PSDevice pDevice, unsigned int uDMAIdx, struct sk_buff *skb) ...@@ -2987,19 +2987,19 @@ int nsDMA_tx_packet(PSDevice pDevice, unsigned int uDMAIdx, struct sk_buff *skb)
} }
} }
if (pDevice->sTxEthHeader.wType == cpu_to_le16(ETH_P_PAE)) { if (pDevice->sTxEthHeader.wType == cpu_to_be16(ETH_P_PAE)) {
if (pDevice->byBBType != BB_TYPE_11A) { if (pDevice->byBBType != BB_TYPE_11A) {
pDevice->wCurrentRate = RATE_1M; pDevice->wCurrentRate = RATE_1M;
pDevice->byACKRate = RATE_1M; pDevice->byACKRate = RATE_1M;
pDevice->byTopCCKBasicRate = RATE_1M; pDevice->byTopCCKBasicRate = RATE_1M;
pDevice->byTopOFDMBasicRate = RATE_6M; pDevice->byTopOFDMBasicRate = RATE_6M;
} else { } else {
pDevice->wCurrentRate = RATE_6M; pDevice->wCurrentRate = RATE_6M;
pDevice->byACKRate = RATE_6M; pDevice->byACKRate = RATE_6M;
pDevice->byTopCCKBasicRate = RATE_1M; pDevice->byTopCCKBasicRate = RATE_1M;
pDevice->byTopOFDMBasicRate = RATE_6M; pDevice->byTopOFDMBasicRate = RATE_6M;
} }
} }
DBG_PRT(MSG_LEVEL_DEBUG, DBG_PRT(MSG_LEVEL_DEBUG,
KERN_INFO "dma_tx: pDevice->wCurrentRate = %d\n", KERN_INFO "dma_tx: pDevice->wCurrentRate = %d\n",
...@@ -3015,7 +3015,7 @@ int nsDMA_tx_packet(PSDevice pDevice, unsigned int uDMAIdx, struct sk_buff *skb) ...@@ -3015,7 +3015,7 @@ int nsDMA_tx_packet(PSDevice pDevice, unsigned int uDMAIdx, struct sk_buff *skb)
if (bNeedEncryption == TRUE) { if (bNeedEncryption == TRUE) {
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ntohs Pkt Type=%04x\n", ntohs(pDevice->sTxEthHeader.wType)); DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ntohs Pkt Type=%04x\n", ntohs(pDevice->sTxEthHeader.wType));
if ((pDevice->sTxEthHeader.wType) == cpu_to_le16(ETH_P_PAE)) { if ((pDevice->sTxEthHeader.wType) == cpu_to_be16(ETH_P_PAE)) {
bNeedEncryption = FALSE; bNeedEncryption = FALSE;
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Pkt Type=%04x\n", (pDevice->sTxEthHeader.wType)); DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Pkt Type=%04x\n", (pDevice->sTxEthHeader.wType));
if ((pMgmt->eCurrMode == WMAC_MODE_ESS_STA) && (pMgmt->eCurrState == WMAC_STATE_ASSOC)) { if ((pMgmt->eCurrMode == WMAC_MODE_ESS_STA) && (pMgmt->eCurrState == WMAC_STATE_ASSOC)) {
......
...@@ -327,9 +327,9 @@ int prism2_get_station(struct wiphy *wiphy, struct net_device *dev, ...@@ -327,9 +327,9 @@ int prism2_get_station(struct wiphy *wiphy, struct net_device *dev,
return result; return result;
} }
int prism2_scan(struct wiphy *wiphy, struct net_device *dev, int prism2_scan(struct wiphy *wiphy, struct cfg80211_scan_request *request)
struct cfg80211_scan_request *request)
{ {
struct net_device *dev = request->wdev->netdev;
struct prism2_wiphy_private *priv = wiphy_priv(wiphy); struct prism2_wiphy_private *priv = wiphy_priv(wiphy);
wlandevice_t *wlandev = dev->ml_priv; wlandevice_t *wlandev = dev->ml_priv;
struct p80211msg_dot11req_scan msg1; struct p80211msg_dot11req_scan msg1;
......
...@@ -1251,13 +1251,12 @@ static int zcache_pampd_get_data_and_free(char *data, size_t *bufsize, bool raw, ...@@ -1251,13 +1251,12 @@ static int zcache_pampd_get_data_and_free(char *data, size_t *bufsize, bool raw,
void *pampd, struct tmem_pool *pool, void *pampd, struct tmem_pool *pool,
struct tmem_oid *oid, uint32_t index) struct tmem_oid *oid, uint32_t index)
{ {
int ret = 0;
BUG_ON(!is_ephemeral(pool)); BUG_ON(!is_ephemeral(pool));
zbud_decompress((struct page *)(data), pampd); if (zbud_decompress((struct page *)(data), pampd) < 0)
return -EINVAL;
zbud_free_and_delist((struct zbud_hdr *)pampd); zbud_free_and_delist((struct zbud_hdr *)pampd);
atomic_dec(&zcache_curr_eph_pampd_count); atomic_dec(&zcache_curr_eph_pampd_count);
return ret; return 0;
} }
/* /*
......
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