Commit 783707a1 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://gkernel.bkbits.net/net-drivers-2.6

into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents ba7f30a8 428e1c17
...@@ -233,7 +233,7 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr) ...@@ -233,7 +233,7 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr)
} }
/* Set the wrap registers for string I/O reads. */ /* Set the wrap registers for string I/O reads. */
outw((HP_START_PG + TX_2X_PAGES) | ((HP_STOP_PG - 1) << 8), ioaddr + 14); outw((HP_START_PG + TX_PAGES/2) | ((HP_STOP_PG - 1) << 8), ioaddr + 14);
/* Set the base address to point to the NIC, not the "real" base! */ /* Set the base address to point to the NIC, not the "real" base! */
dev->base_addr = ioaddr + NIC_OFFSET; dev->base_addr = ioaddr + NIC_OFFSET;
...@@ -247,7 +247,7 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr) ...@@ -247,7 +247,7 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr)
ei_status.name = name; ei_status.name = name;
ei_status.word16 = 0; /* Agggghhhhh! Debug time: 2 days! */ ei_status.word16 = 0; /* Agggghhhhh! Debug time: 2 days! */
ei_status.tx_start_page = HP_START_PG; ei_status.tx_start_page = HP_START_PG;
ei_status.rx_start_page = HP_START_PG + TX_2X_PAGES; ei_status.rx_start_page = HP_START_PG + TX_PAGES/2;
ei_status.stop_page = HP_STOP_PG; ei_status.stop_page = HP_STOP_PG;
ei_status.reset_8390 = &hpp_reset_8390; ei_status.reset_8390 = &hpp_reset_8390;
...@@ -261,7 +261,7 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr) ...@@ -261,7 +261,7 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr)
ei_status.block_output = &hpp_mem_block_output; ei_status.block_output = &hpp_mem_block_output;
ei_status.get_8390_hdr = &hpp_mem_get_8390_hdr; ei_status.get_8390_hdr = &hpp_mem_get_8390_hdr;
dev->mem_start = mem_start; dev->mem_start = mem_start;
ei_status.rmem_start = dev->mem_start + TX_2X_PAGES*256; ei_status.rmem_start = dev->mem_start + TX_PAGES/2*256;
dev->mem_end = ei_status.rmem_end dev->mem_end = ei_status.rmem_end
= dev->mem_start + (HP_STOP_PG - HP_START_PG)*256; = dev->mem_start + (HP_STOP_PG - HP_START_PG)*256;
} }
...@@ -297,7 +297,7 @@ hpp_open(struct net_device *dev) ...@@ -297,7 +297,7 @@ hpp_open(struct net_device *dev)
/* Set the wrap registers for programmed-I/O operation. */ /* Set the wrap registers for programmed-I/O operation. */
outw(HW_Page, ioaddr + HP_PAGING); outw(HW_Page, ioaddr + HP_PAGING);
outw((HP_START_PG + TX_2X_PAGES) | ((HP_STOP_PG - 1) << 8), ioaddr + 14); outw((HP_START_PG + TX_PAGES/2) | ((HP_STOP_PG - 1) << 8), ioaddr + 14);
/* Select the operational page. */ /* Select the operational page. */
outw(Perf_Page, ioaddr + HP_PAGING); outw(Perf_Page, ioaddr + HP_PAGING);
......
...@@ -1178,7 +1178,7 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1178,7 +1178,7 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
} }
else if (ei_local->tx2 == 0) else if (ei_local->tx2 == 0)
{ {
output_page = ei_local->tx_start_page + TX_1X_PAGES; output_page = ei_local->tx_start_page + TX_PAGES/2;
ei_local->tx2 = send_length; ei_local->tx2 = send_length;
if (ei_debug && ei_local->tx1 > 0) if (ei_debug && ei_local->tx1 > 0)
printk(KERN_DEBUG "%s: idle transmitter, tx1=%d, lasttx=%d, txing=%d.\n", printk(KERN_DEBUG "%s: idle transmitter, tx1=%d, lasttx=%d, txing=%d.\n",
......
...@@ -1535,7 +1535,7 @@ static int __devinit tulip_init_one (struct pci_dev *pdev, ...@@ -1535,7 +1535,7 @@ static int __devinit tulip_init_one (struct pci_dev *pdev,
} }
} }
/* Lite-On boards have the address byte-swapped. */ /* Lite-On boards have the address byte-swapped. */
if ((dev->dev_addr[0] == 0xA0 || dev->dev_addr[0] == 0xC0) if ((dev->dev_addr[0] == 0xA0 || dev->dev_addr[0] == 0xC0 || dev->dev_addr[0] == 0x02)
&& dev->dev_addr[1] == 0x00) && dev->dev_addr[1] == 0x00)
for (i = 0; i < 6; i+=2) { for (i = 0; i < 6; i+=2) {
char tmp = dev->dev_addr[i]; char tmp = dev->dev_addr[i];
......
...@@ -2647,12 +2647,12 @@ static void send_authentication_request(struct atmel_private *priv, u8 *challeng ...@@ -2647,12 +2647,12 @@ static void send_authentication_request(struct atmel_private *priv, u8 *challeng
memcpy(header.addr3, priv->CurrentBSSID, 6); memcpy(header.addr3, priv->CurrentBSSID, 6);
if (priv->wep_is_on) { if (priv->wep_is_on) {
auth.alg = C80211_MGMT_AAN_SHAREDKEY; auth.alg = cpu_to_le16(C80211_MGMT_AAN_SHAREDKEY);
/* no WEP for authentication frames with TrSeqNo 1 */ /* no WEP for authentication frames with TrSeqNo 1 */
if (priv->CurrentAuthentTransactionSeqNum != 1) if (priv->CurrentAuthentTransactionSeqNum != 1)
header.frame_ctl |= cpu_to_le16(IEEE802_11_FCTL_WEP); header.frame_ctl |= cpu_to_le16(IEEE802_11_FCTL_WEP);
} else { } else {
auth.alg = C80211_MGMT_AAN_OPENSYSTEM; auth.alg = cpu_to_le16(C80211_MGMT_AAN_OPENSYSTEM);
} }
auth.status = 0; auth.status = 0;
......
...@@ -436,7 +436,7 @@ prism54_get_range(struct net_device *ndev, struct iw_request_info *info, ...@@ -436,7 +436,7 @@ prism54_get_range(struct net_device *ndev, struct iw_request_info *info,
{ {
struct iw_range *range = (struct iw_range *) extra; struct iw_range *range = (struct iw_range *) extra;
islpci_private *priv = netdev_priv(ndev); islpci_private *priv = netdev_priv(ndev);
char *data; u8 *data;
int i, m, rvalue; int i, m, rvalue;
struct obj_frequencies *freq; struct obj_frequencies *freq;
union oid_res_t r; union oid_res_t r;
...@@ -513,8 +513,7 @@ prism54_get_range(struct net_device *ndev, struct iw_request_info *info, ...@@ -513,8 +513,7 @@ prism54_get_range(struct net_device *ndev, struct iw_request_info *info,
i = 0; i = 0;
while ((i < IW_MAX_BITRATES) && (*data != 0)) { while ((i < IW_MAX_BITRATES) && (*data != 0)) {
/* the result must be in bps. The card gives us 500Kbps */ /* the result must be in bps. The card gives us 500Kbps */
range->bitrate[i] = (__s32) (*data >> 1); range->bitrate[i] = *data * 500000;
range->bitrate[i] *= 1000000;
i++; i++;
data++; data++;
} }
...@@ -820,9 +819,11 @@ prism54_set_rate(struct net_device *ndev, ...@@ -820,9 +819,11 @@ prism54_set_rate(struct net_device *ndev,
return mgt_set_request(priv, DOT11_OID_PROFILES, 0, &profile); return mgt_set_request(priv, DOT11_OID_PROFILES, 0, &profile);
} }
if ((ret = ret = mgt_get_request(priv, DOT11_OID_SUPPORTEDRATES, 0, NULL, &r);
mgt_get_request(priv, DOT11_OID_SUPPORTEDRATES, 0, NULL, &r))) if (ret) {
kfree(r.ptr);
return ret; return ret;
}
rate = (u32) (vwrq->value / 500000); rate = (u32) (vwrq->value / 500000);
data = r.ptr; data = r.ptr;
...@@ -840,6 +841,7 @@ prism54_set_rate(struct net_device *ndev, ...@@ -840,6 +841,7 @@ prism54_set_rate(struct net_device *ndev,
} }
if (!data[i]) { if (!data[i]) {
kfree(r.ptr);
return -EINVAL; return -EINVAL;
} }
...@@ -888,8 +890,11 @@ prism54_get_rate(struct net_device *ndev, ...@@ -888,8 +890,11 @@ prism54_get_rate(struct net_device *ndev,
vwrq->value = r.u * 500000; vwrq->value = r.u * 500000;
/* request the device for the enabled rates */ /* request the device for the enabled rates */
if ((rvalue = mgt_get_request(priv, DOT11_OID_RATES, 0, NULL, &r))) rvalue = mgt_get_request(priv, DOT11_OID_RATES, 0, NULL, &r);
if (rvalue) {
kfree(r.ptr);
return rvalue; return rvalue;
}
data = r.ptr; data = r.ptr;
vwrq->fixed = (data[0] != 0) && (data[1] == 0); vwrq->fixed = (data[0] != 0) && (data[1] == 0);
kfree(r.ptr); kfree(r.ptr);
......
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
#include "oid_mgt.h" #include "oid_mgt.h"
#define ISL3877_IMAGE_FILE "isl3877" #define ISL3877_IMAGE_FILE "isl3877"
#define ISL3886_IMAGE_FILE "isl3886"
#define ISL3890_IMAGE_FILE "isl3890" #define ISL3890_IMAGE_FILE "isl3890"
static int prism54_bring_down(islpci_private *); static int prism54_bring_down(islpci_private *);
...@@ -185,6 +186,9 @@ islpci_interrupt(int irq, void *config, struct pt_regs *regs) ...@@ -185,6 +186,9 @@ islpci_interrupt(int irq, void *config, struct pt_regs *regs)
void *device = priv->device_base; void *device = priv->device_base;
int powerstate = ISL38XX_PSM_POWERSAVE_STATE; int powerstate = ISL38XX_PSM_POWERSAVE_STATE;
/* lock the interrupt handler */
spin_lock(&priv->slock);
/* received an interrupt request on a shared IRQ line /* received an interrupt request on a shared IRQ line
* first check whether the device is in sleep mode */ * first check whether the device is in sleep mode */
reg = readl(device + ISL38XX_CTRL_STAT_REG); reg = readl(device + ISL38XX_CTRL_STAT_REG);
...@@ -194,14 +198,10 @@ islpci_interrupt(int irq, void *config, struct pt_regs *regs) ...@@ -194,14 +198,10 @@ islpci_interrupt(int irq, void *config, struct pt_regs *regs)
#if VERBOSE > SHOW_ERROR_MESSAGES #if VERBOSE > SHOW_ERROR_MESSAGES
DEBUG(SHOW_TRACING, "Assuming someone else called the IRQ\n"); DEBUG(SHOW_TRACING, "Assuming someone else called the IRQ\n");
#endif #endif
spin_unlock(&priv->slock);
return IRQ_NONE; return IRQ_NONE;
} }
if (islpci_get_state(priv) != PRV_STATE_SLEEP)
powerstate = ISL38XX_PSM_ACTIVE_STATE;
/* lock the interrupt handler */
spin_lock(&priv->slock);
/* check whether there is any source of interrupt on the device */ /* check whether there is any source of interrupt on the device */
reg = readl(device + ISL38XX_INT_IDENT_REG); reg = readl(device + ISL38XX_INT_IDENT_REG);
...@@ -212,6 +212,9 @@ islpci_interrupt(int irq, void *config, struct pt_regs *regs) ...@@ -212,6 +212,9 @@ islpci_interrupt(int irq, void *config, struct pt_regs *regs)
reg &= ISL38XX_INT_SOURCES; reg &= ISL38XX_INT_SOURCES;
if (reg != 0) { if (reg != 0) {
if (islpci_get_state(priv) != PRV_STATE_SLEEP)
powerstate = ISL38XX_PSM_ACTIVE_STATE;
/* reset the request bits in the Identification register */ /* reset the request bits in the Identification register */
isl38xx_w32_flush(device, reg, ISL38XX_INT_ACK_REG); isl38xx_w32_flush(device, reg, ISL38XX_INT_ACK_REG);
...@@ -339,6 +342,12 @@ islpci_interrupt(int irq, void *config, struct pt_regs *regs) ...@@ -339,6 +342,12 @@ islpci_interrupt(int irq, void *config, struct pt_regs *regs)
isl38xx_handle_wakeup(priv->control_block, isl38xx_handle_wakeup(priv->control_block,
&powerstate, priv->device_base); &powerstate, priv->device_base);
} }
} else {
#if VERBOSE > SHOW_ERROR_MESSAGES
DEBUG(SHOW_TRACING, "Assuming someone else called the IRQ\n");
#endif
spin_unlock(&priv->slock);
return IRQ_NONE;
} }
/* sleep -> ready */ /* sleep -> ready */
...@@ -856,14 +865,14 @@ islpci_setup(struct pci_dev *pdev) ...@@ -856,14 +865,14 @@ islpci_setup(struct pci_dev *pdev)
/* select the firmware file depending on the device id */ /* select the firmware file depending on the device id */
switch (pdev->device) { switch (pdev->device) {
case PCIDEVICE_ISL3890: case 0x3877:
case PCIDEVICE_3COM6001:
strcpy(priv->firmware, ISL3890_IMAGE_FILE);
break;
case PCIDEVICE_ISL3877:
strcpy(priv->firmware, ISL3877_IMAGE_FILE); strcpy(priv->firmware, ISL3877_IMAGE_FILE);
break; break;
case 0x3886:
strcpy(priv->firmware, ISL3886_IMAGE_FILE);
break;
default: default:
strcpy(priv->firmware, ISL3890_IMAGE_FILE); strcpy(priv->firmware, ISL3890_IMAGE_FILE);
break; break;
......
...@@ -44,102 +44,30 @@ module_param(init_pcitm, int, 0); ...@@ -44,102 +44,30 @@ module_param(init_pcitm, int, 0);
* If you have an update for this please contact prism54-devel@prism54.org * If you have an update for this please contact prism54-devel@prism54.org
* The latest list can be found at http://prism54.org/supported_cards.php */ * The latest list can be found at http://prism54.org/supported_cards.php */
static const struct pci_device_id prism54_id_tbl[] = { static const struct pci_device_id prism54_id_tbl[] = {
/* 3COM 3CRWE154G72 Wireless LAN adapter */ /* Intersil PRISM Duette/Prism GT Wireless LAN adapter */
{
PCIVENDOR_3COM, PCIDEVICE_3COM6001,
PCIVENDOR_3COM, PCIDEVICE_3COM6001,
0, 0, 0
},
/* D-Link Air Plus Xtreme G A1 - DWL-g650 A1 */
{
PCIVENDOR_INTERSIL, PCIDEVICE_ISL3890,
PCIVENDOR_DLINK, 0x3202UL,
0, 0, 0
},
/* I-O Data WN-G54/CB - WN-G54/CB */
{
PCIVENDOR_INTERSIL, PCIDEVICE_ISL3890,
PCIVENDOR_IODATA, 0xd019UL,
0, 0, 0
},
/* Netgear WG511 */
{
PCIVENDOR_INTERSIL, PCIDEVICE_ISL3890,
PCIVENDOR_NETGEAR, 0x4800UL,
0, 0, 0
},
/* Tekram Technology clones, Allnet, Netcomm, Zyxel */
{
PCIVENDOR_INTERSIL, PCIDEVICE_ISL3890,
PCIVENDOR_TTL, 0x1605UL,
0, 0, 0
},
/* SMC2802W */
{
PCIVENDOR_INTERSIL, PCIDEVICE_ISL3890,
PCIVENDOR_SMC, 0x2802UL,
0, 0, 0
},
/* SMC2835W */
{
PCIVENDOR_INTERSIL, PCIDEVICE_ISL3890,
PCIVENDOR_SMC, 0x2835UL,
0, 0, 0
},
/* Corega CG-WLCB54GT */
{
PCIVENDOR_INTERSIL, PCIDEVICE_ISL3890,
PCIVENDOR_ATI, 0xc104UL,
0, 0, 0
},
/* I4 Z-Com XG-600 */
{
PCIVENDOR_INTERSIL, PCIDEVICE_ISL3890,
PCIVENDOR_I4, 0x0014UL,
0, 0, 0
},
/* I4 Z-Com XG-900 and clones Macer, Ovislink, Planex, Peabird, */
/* Sitecom, Xterasys */
{
PCIVENDOR_INTERSIL, PCIDEVICE_ISL3890,
PCIVENDOR_I4, 0x0020UL,
0, 0, 0
},
/* SMC 2802W V2 */
{ {
PCIVENDOR_INTERSIL, PCIDEVICE_ISL3890, 0x1260, 0x3890,
PCIVENDOR_ACCTON, 0xee03UL, PCI_ANY_ID, PCI_ANY_ID,
0, 0, 0 0, 0, 0
}, },
/* SMC 2835W V2 */ /* 3COM 3CRWE154G72 Wireless LAN adapter */
{ {
PCIVENDOR_INTERSIL, PCIDEVICE_ISL3890, 0x10b7, 0x6001,
PCIVENDOR_SMC, 0xa835UL, PCI_ANY_ID, PCI_ANY_ID,
0, 0, 0 0, 0, 0
}, },
/* Intersil PRISM Indigo Wireless LAN adapter */ /* Intersil PRISM Indigo Wireless LAN adapter */
{ {
PCIVENDOR_INTERSIL, PCIDEVICE_ISL3877, 0x1260, 0x3877,
PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
0, 0, 0 0, 0, 0
}, },
/* Intersil PRISM Duette/Prism GT Wireless LAN adapter */ /* Intersil PRISM Javelin/Xbow Wireless LAN adapter */
/* Default */
{ {
PCIVENDOR_INTERSIL, PCIDEVICE_ISL3890, 0x1260, 0x3886,
PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
0, 0, 0 0, 0, 0
}, },
...@@ -166,85 +94,6 @@ static struct pci_driver prism54_driver = { ...@@ -166,85 +94,6 @@ static struct pci_driver prism54_driver = {
/* .enable_wake ; we don't support this yet */ /* .enable_wake ; we don't support this yet */
}; };
static void
prism54_get_card_model(struct net_device *ndev)
{
islpci_private *priv;
char *modelp;
int notwork = 0;
priv = netdev_priv(ndev);
switch (priv->pdev->subsystem_device) {
case PCIDEVICE_ISL3877:
modelp = "PRISM Indigo";
break;
case PCIDEVICE_ISL3886:
modelp = "PRISM Javelin / Xbow";
break;
case PCIDEVICE_3COM6001:
modelp = "3COM 3CRWE154G72";
break;
case 0x3202UL:
modelp = "D-Link DWL-g650 A1";
break;
case 0xd019UL:
modelp = "WN-G54/CB";
break;
case 0x4800UL:
modelp = "Netgear WG511";
break;
case 0x2802UL:
modelp = "SMC2802W";
break;
case 0xee03UL:
modelp = "SMC2802W V2";
notwork = 1;
break;
case 0x2835UL:
modelp = "SMC2835W";
break;
case 0xa835UL:
modelp = "SMC2835W V2";
notwork = 1;
break;
case 0xc104UL:
modelp = "CG-WLCB54GT";
break;
case 0x1605UL:
modelp = "Tekram Technology clone";
break;
/* Let's leave this one out for now since it seems bogus/wrong
* Even if the manufacturer did use 0x0000UL it may not be correct
* by their part, therefore deserving no name ;) */
/* case 0x0000UL:
* modelp = "SparkLAN WL-850F";
* break;*/
/* We have two reported for the one below :( */
case 0x0014UL:
modelp = "I4 Z-Com XG-600 and clones";
break;
case 0x0020UL:
modelp = "I4 Z-Com XG-900 and clones";
break;
/* Default it */
/*
case PCIDEVICE_ISL3890:
modelp = "PRISM Duette/GT";
break;
*/
default:
modelp = "PRISM Duette/GT";
}
printk(KERN_DEBUG "%s: %s driver detected card model: %s\n",
ndev->name, DRV_NAME, modelp);
if ( notwork ) {
printk(KERN_DEBUG "%s: %s Warning - This may not work\n",
ndev->name, DRV_NAME);
}
return;
}
/****************************************************************************** /******************************************************************************
Module initialization functions Module initialization functions
******************************************************************************/ ******************************************************************************/
...@@ -354,9 +203,6 @@ prism54_probe(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -354,9 +203,6 @@ prism54_probe(struct pci_dev *pdev, const struct pci_device_id *id)
/* firmware upload is triggered in islpci_open */ /* firmware upload is triggered in islpci_open */
/* Pretty card model discovery output */
prism54_get_card_model(ndev);
return 0; return 0;
do_unregister_netdev: do_unregister_netdev:
......
...@@ -38,21 +38,6 @@ extern int pc_debug; ...@@ -38,21 +38,6 @@ extern int pc_debug;
/* General driver definitions */ /* General driver definitions */
#define PCIVENDOR_INTERSIL 0x1260UL
#define PCIVENDOR_3COM 0x10b7UL
#define PCIVENDOR_DLINK 0x1186UL
#define PCIVENDOR_I4 0x17cfUL
#define PCIVENDOR_IODATA 0x10fcUL
#define PCIVENDOR_NETGEAR 0x1385UL
#define PCIVENDOR_SMC 0x10b8UL
#define PCIVENDOR_ACCTON 0x1113UL
#define PCIVENDOR_ATI 0x1259UL
#define PCIVENDOR_TTL 0x16a5UL
#define PCIDEVICE_ISL3877 0x3877UL
#define PCIDEVICE_ISL3886 0x3886UL
#define PCIDEVICE_ISL3890 0x3890UL
#define PCIDEVICE_3COM6001 0x6001UL
#define PCIDEVICE_LATENCY_TIMER_MIN 0x40 #define PCIDEVICE_LATENCY_TIMER_MIN 0x40
#define PCIDEVICE_LATENCY_TIMER_VAL 0x50 #define PCIDEVICE_LATENCY_TIMER_VAL 0x50
......
...@@ -219,7 +219,7 @@ struct oid_t isl_oid[] = { ...@@ -219,7 +219,7 @@ struct oid_t isl_oid[] = {
OID_UNKNOWN(OID_INL_MEMORY, 0xFF020002), OID_UNKNOWN(OID_INL_MEMORY, 0xFF020002),
OID_U32_C(OID_INL_MODE, 0xFF020003), OID_U32_C(OID_INL_MODE, 0xFF020003),
OID_UNKNOWN(OID_INL_COMPONENT_NR, 0xFF020004), OID_UNKNOWN(OID_INL_COMPONENT_NR, 0xFF020004),
OID_UNKNOWN(OID_INL_VERSION, 0xFF020005), OID_STRUCT(OID_INL_VERSION, 0xFF020005, u8[8], OID_TYPE_RAW),
OID_UNKNOWN(OID_INL_INTERFACE_ID, 0xFF020006), OID_UNKNOWN(OID_INL_INTERFACE_ID, 0xFF020006),
OID_UNKNOWN(OID_INL_COMPONENT_ID, 0xFF020007), OID_UNKNOWN(OID_INL_COMPONENT_ID, 0xFF020007),
OID_U32_C(OID_INL_CONFIG, 0xFF020008), OID_U32_C(OID_INL_CONFIG, 0xFF020008),
...@@ -481,6 +481,8 @@ mgt_get_request(islpci_private *priv, enum oid_num_t n, int extra, void *data, ...@@ -481,6 +481,8 @@ mgt_get_request(islpci_private *priv, enum oid_num_t n, int extra, void *data,
BUG_ON(OID_NUM_LAST <= n); BUG_ON(OID_NUM_LAST <= n);
BUG_ON(extra > isl_oid[n].range); BUG_ON(extra > isl_oid[n].range);
res->ptr = NULL;
if (!priv->mib) if (!priv->mib)
/* memory has been freed */ /* memory has been freed */
return -1; return -1;
......
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