]> git.neil.brown.name Git - history.git/commitdiff
Import 2.3.43pre8 2.3.43pre8
authorLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:30:54 +0000 (15:30 -0500)
committerLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:30:54 +0000 (15:30 -0500)
arch/i386/defconfig
drivers/net/pcmcia/pcnet_cs.c
drivers/net/pcmcia/ray_cs.c

index 4f000c9dd62401407c3ccfa6d8550a520182641e..75e1be547bd19fa10107eca38644c3fa3454686b 100644 (file)
@@ -56,7 +56,15 @@ CONFIG_PCI_BIOS=y
 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
@@ -301,6 +309,28 @@ CONFIG_EEXPRESS_PRO100=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
 #
@@ -375,6 +405,13 @@ CONFIG_PSMOUSE=y
 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
index e47f6145b7218966d8390be531ab3acb5ff48433..0af9aa04d6702d175bca927feed2d12f38bc184b 100644 (file)
@@ -825,7 +825,7 @@ static int pcnet_event(event_t event, int priority,
        if (link->state & DEV_CONFIG) {
            if (link->open) {
                netif_stop_queue(&info->dev);
-               clear_bit(LINK_STATE_START, &info->dev);
+               clear_bit(LINK_STATE_START, &info->dev.state);
            }
            CardServices(ReleaseConfiguration, link->handle);
        }
@@ -840,7 +840,7 @@ static int pcnet_event(event_t event, int priority,
                pcnet_reset_8390(&info->dev);
                NS8390_init(&info->dev, 1);
                netif_start_queue(&info->dev);
-               set_bit(LINK_STATE_START, &info->dev);
+               set_bit(LINK_STATE_START, &info->dev.state);
            }
        }
        break;
index da372be1f74f34017c9f5d40208bbcaa4bff6cfd..ea3ffa2cbd32bac4f06ddb47b1ddf8e299aaf61d 100644 (file)
@@ -389,7 +389,7 @@ static dev_link_t *ray_attach(void)
     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;
@@ -926,7 +926,8 @@ static int ray_event(event_t event, int priority,
     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);
@@ -943,8 +944,8 @@ static int ray_event(event_t event, int priority,
     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);
         }
@@ -957,8 +958,8 @@ static int ray_event(event_t event, int priority,
             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;
@@ -1019,16 +1020,11 @@ static int ray_dev_start_xmit(struct sk_buff *skb, struct net_device *dev)
         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;
         }
     }
@@ -1037,7 +1033,7 @@ static int ray_dev_start_xmit(struct sk_buff *skb, struct net_device *dev)
     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:
@@ -1072,7 +1068,7 @@ static int ray_hw_xmit(unsigned char* data, int len, struct net_device* dev,
        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;
@@ -1175,7 +1171,7 @@ AP to AP        1    1        dest AP    src AP          dest     source
     {
         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);
@@ -1512,10 +1508,8 @@ static int ray_open(struct net_device *dev)
     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;
@@ -1532,7 +1526,8 @@ static int ray_dev_close(struct net_device *dev)
     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;
@@ -1848,11 +1843,6 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs)
 
     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 ) {
@@ -1865,7 +1855,6 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs)
     {
         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 */
@@ -1961,8 +1950,8 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs)
             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");
@@ -1996,7 +1985,7 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs)
             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);
@@ -2008,7 +1997,7 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs)
             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:
@@ -2022,7 +2011,6 @@ static void ray_interrupt(int irq, void *dev_id, struct pt_regs * regs)
         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)
@@ -2477,7 +2465,7 @@ static void associate(ray_dev_t *local)
         local->card_status = CARD_ASSOC_FAILED;
         return;
     }
-    if (!sniffer) dev->tbusy = 0;
+    if (!sniffer) netif_start_queue(dev);
 
 } /* end associate */
 /*===========================================================================*/