CONFIG_PCI_DIRECT=y
CONFIG_PCI_NAMES=y
# CONFIG_MCA is not set
-# CONFIG_HOTPLUG is not set
+CONFIG_HOTPLUG=y
+
+#
+# PCMCIA/CardBus support
+#
+CONFIG_PCMCIA=y
+CONFIG_CARDBUS=y
+# CONFIG_I82365 is not set
+CONFIG_TCIC=y
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
#
# CONFIG_WAN is not set
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=y
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_AIRONET4500_CS is not set
+# CONFIG_ARCNET_COM20020_CS is not set
+# CONFIG_PCMCIA_3C575 is not set
+# CONFIG_PCMCIA_TULIP is not set
+# CONFIG_PCMCIA_EPIC100 is not set
+CONFIG_NET_PCMCIA_RADIO=y
+CONFIG_PCMCIA_RAYCS=y
+# CONFIG_PCMCIA_NETWAVE is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+CONFIG_PCMCIA_NETCARD=y
+
#
# Amateur Radio support
#
CONFIG_DRM=y
CONFIG_DRM_TDFX=y
# CONFIG_DRM_GAMMA is not set
+CONFIG_PCMCIA_SERIAL=y
+
+#
+# PCMCIA character device support
+#
+# CONFIG_PCMCIA_SERIAL_CS is not set
+# CONFIG_PCMCIA_SERIAL_CB is not set
#
# USB support
dev->init = &ray_dev_init;
dev->open = &ray_open;
dev->stop = &ray_dev_close;
- dev->tbusy = 1;
+ netif_stop_queue(dev);
/* Register with Card Services */
link->next = dev_list;
switch (event) {
case CS_EVENT_CARD_REMOVAL:
link->state &= ~DEV_PRESENT;
- dev->tbusy = 1; dev->start = 0;
+ netif_stop_queue(dev);
+ clear_bit(LINK_STATE_START, &dev->state);
if (link->state & DEV_CONFIG) {
link->release.expires = jiffies + HZ/20;
add_timer(&link->release);
case CS_EVENT_RESET_PHYSICAL:
if (link->state & DEV_CONFIG) {
if (link->open) {
- dev->tbusy = 1;
- dev->start = 0;
+ netif_stop_queue(dev);
+ clear_bit(LINK_STATE_START, &dev->state);
}
pcmcia_release_configuration(link->handle);
}
pcmcia_request_configuration(link->handle, &link->conf);
if (link->open) {
ray_reset(dev);
- dev->tbusy = 0;
- dev->start = 1;
+ netif_start_queue(dev);
+ set_bit(LINK_STATE_START, &dev->state);
}
}
break;
return -1;
}
DEBUG(3,"ray_dev_start_xmit(skb=%p, dev=%p)\n",skb,dev);
- if (dev->tbusy)
- {
- printk(KERN_NOTICE "ray_dev_start_xmit busy\n");
- return 1;
- }
if (local->authentication_state == NEED_TO_AUTH) {
DEBUG(0,"ray_cs Sending authentication request.\n");
if (!build_auth_frame (local, local->auth_id, OPEN_AUTH_REQUEST)) {
local->authentication_state = AUTHENTICATED;
- dev->tbusy = 1;
+ netif_stop_queue(dev);
return 1;
}
}
switch (ray_hw_xmit( skb->data, length, dev, DATA_TYPE)) {
case XMIT_NO_CCS:
case XMIT_NEED_AUTH:
- dev->tbusy = 1;
+ netif_stop_queue(dev);
return 1;
case XMIT_NO_INTR:
case XMIT_MSG_BAD:
case ECCSFULL:
DEBUG(2,"ray_hw_xmit No free tx ccs\n");
case ECARDGONE:
- dev->tbusy = 1;
+ netif_stop_queue(dev);
return XMIT_NO_CCS;
default:
break;
{
if (local->sparm.b4.a_acting_as_ap_status)
{
- writeb(FC2_FROM_DS, &ptx->mac.frame_ctl_2);;
+ writeb(FC2_FROM_DS, &ptx->mac.frame_ctl_2);
memcpy_toio(ptx->mac.addr_1, ((struct ethhdr *)data)->h_dest, ADDRLEN);
memcpy_toio(ptx->mac.addr_2, local->bss_id, 6);
memcpy_toio(ptx->mac.addr_3, ((struct ethhdr *)data)->h_source, ADDRLEN);
link->open++;
MOD_INC_USE_COUNT;
- dev->interrupt = 0;
- if (sniffer) dev->tbusy = 1;
- else dev->tbusy = 0;
- dev->start = 1;
+ if (sniffer) netif_stop_queue(dev);
+ else netif_start_queue(dev);
DEBUG(2,"ray_open ending\n");
return 0;
if (link == NULL)
return -ENODEV;
- link->open--; dev->start = 0;
+ link->open--;
+ netif_stop_queue(dev);
if (link->state & DEV_STALE_CONFIG) {
link->release.expires = jiffies + HZ/20;
link->state |= DEV_RELEASE_PENDING;
DEBUG(4,"ray_cs: interrupt for *dev=%p\n",dev);
- if (test_and_set_bit(0,&dev->interrupt)) {
- printk("ray_cs Reentering interrupt handler not allowed\n");
- return;
- }
-
local = (ray_dev_t *)dev->priv;
link = (dev_link_t *)local->finder;
if ( ! (link->state & DEV_PRESENT) || link->state & DEV_SUSPEND ) {
{
DEBUG(1,"ray_cs interrupt bad rcsindex = 0x%x\n",rcsindex);
clear_interrupt(local);
- dev->interrupt = 0;
return;
}
if (rcsindex < NUMBER_OF_CCS) /* If it's a returned CCS */
else {
DEBUG(1,"ray_cs interrupt tx request failed\n");
}
- if (!sniffer) dev->tbusy = 0;
- mark_bh(NET_BH);
+ if (!sniffer) netif_start_queue(dev);
+ netif_wake_queue(dev);
break;
case CCS_TEST_MEMORY:
DEBUG(1,"ray_cs interrupt mem test done\n");
local->card_status = CARD_ACQ_COMPLETE;
/* do we need to clear tx buffers CCS's? */
if (local->sparm.b4.a_network_type == ADHOC) {
- if (!sniffer) dev->tbusy = 0;
+ if (!sniffer) netif_start_queue(dev);
}
else {
memcpy_fromio(&local->bss_id, prcs->var.rejoin_net_complete.bssid, ADDRLEN);
break;
case ROAMING_INITIATED:
DEBUG(1,"ray_cs interrupt roaming initiated\n");
- dev->tbusy = 1;
+ netif_stop_queue(dev);
local->card_status = CARD_DOING_ACQ;
break;
case JAPAN_CALL_SIGN_RXD:
writeb(CCS_BUFFER_FREE, &prcs->buffer_status);
}
clear_interrupt(local);
- dev->interrupt = 0;
} /* ray_interrupt */
/*===========================================================================*/
static void ray_rx(struct net_device *dev, ray_dev_t *local, struct rcs *prcs)
local->card_status = CARD_ASSOC_FAILED;
return;
}
- if (!sniffer) dev->tbusy = 0;
+ if (!sniffer) netif_start_queue(dev);
} /* end associate */
/*===========================================================================*/