亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? cs8900a.c

?? linux和2410結(jié)合開(kāi)發(fā) 用他可以生成2410所需的zImage文件
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
 bad_out:    return ret;}static void net_timeout(struct net_device *dev){  /* If we get here, some higher level has decided we are broken.     There should really be a "kick me" function call instead. */    DPRINTK(1, "%s: transmit timed out, %s?\n", dev->name,	    tx_done(dev) ? "IRQ conflict ?" : "network cable problem");    /* Try to restart the adaptor. */    //netif_wake_queue(dev);    net_close(dev);    writereg(dev, PP_SelfCTL, readreg(dev, PP_SelfCTL) | POWER_ON_RESET);    net_open(dev);}static int net_send_packet(struct sk_buff *skb, struct net_device *dev){    struct net_local *lp = (struct net_local *)dev->priv;    writereg(dev, PP_BusCTL, 0x0);    writereg(dev, PP_BusCTL, readreg(dev, PP_BusCTL) | ENABLE_IRQ);    DPRINTK(3, "%s: sent %d byte packet of type %x\n",	    dev->name, skb->len,	    (skb->data[ETH_ALEN+ETH_ALEN] << 8) |	    (skb->data[ETH_ALEN+ETH_ALEN+1]));    /* keep the upload from being interrupted, since we       ask the chip to start transmitting before the       whole packet has been completely uploaded. */    spin_lock_irq(&lp->lock);    netif_stop_queue(dev);    /* initiate a transmit sequence */    writeword(dev, TX_CMD_PORT, lp->send_cmd);    writeword(dev, TX_LEN_PORT, skb->len);    /* Test to see if the chip has allocated memory for the packet */    if ((readreg(dev, PP_BusST) & READY_FOR_TX_NOW) == 0) {      /*       * Gasp!  It hasn't.  But that shouldn't happen since       * we're waiting for TxOk, so return 1 and requeue this packet.       */		      spin_unlock_irq(&lp->lock);      DPRINTK(1, "cs89x0: Tx buffer not free!\n");      return 1;    }    /* Write the contents of the packet */    writeblock(dev, skb->data, skb->len);    spin_unlock_irq(&lp->lock);    dev->trans_start = jiffies;    dev_kfree_skb (skb);    /*     * We DO NOT call netif_wake_queue() here.     * We also DO NOT call netif_start_queue().     *     * Either of these would cause another bottom half run through     * net_send_packet() before this packet has fully gone out.  That causes     * us to hit the "Gasp!" above and the send is rescheduled.  it runs like     * a dog.  We just return and wait for the Tx completion interrupt handler     * to restart the netdevice layer     */    return 0;}/* The typical workload of the driver:   Handle the network interface interrupts. */   static void net_interrupt(int irq, void *dev_id, struct pt_regs * regs){    struct net_device *dev = dev_id;    struct net_local *lp;    int ioaddr, status;    ioaddr = dev->base_addr;    lp = (struct net_local *)dev->priv;//printk("here net interrupt\n");    /* we MUST read all the events out of the ISQ, otherwise we'll never       get interrupted again.  As a consequence, we can't have any limit       on the number of times we loop in the interrupt handler.  The       hardware guarantees that eventually we'll run out of events.  Of       course, if you're on a slow machine, and packets are arriving       faster than you can read them off, you're screwed.  Hasta la       vista, baby!  */    while ((status = readword(dev, ISQ_PORT))) {      DPRINTK(4, "%s: event=%04x\n", dev->name, status);      switch(status & ISQ_EVENT_MASK) {      case ISQ_RECEIVER_EVENT:	/* Got a packet(s). */	net_rx(dev);	break;      case ISQ_TRANSMITTER_EVENT:	lp->stats.tx_packets++;	netif_wake_queue(dev);	/* Inform upper layers. */	if ((status & (	TX_OK |			TX_LOST_CRS | TX_SQE_ERROR |			TX_LATE_COL | TX_16_COL)) != TX_OK) {	  if ((status & TX_OK) == 0) lp->stats.tx_errors++;	  if (status & TX_LOST_CRS) lp->stats.tx_carrier_errors++;	  if (status & TX_SQE_ERROR) lp->stats.tx_heartbeat_errors++;	  if (status & TX_LATE_COL) lp->stats.tx_window_errors++;	  if (status & TX_16_COL) lp->stats.tx_aborted_errors++;	}	break;      case ISQ_BUFFER_EVENT:	if (status & READY_FOR_TX) {	  /* we tried to transmit a packet earlier,	     but inexplicably ran out of buffers.	     That shouldn't happen since we only ever	     load one packet.  Shrug.  Do the right	     thing anyway. */	  netif_wake_queue(dev);	/* Inform upper layers. */	}	if (status & TX_UNDERRUN) {	  DPRINTK(1, "%s: transmit underrun\n", dev->name);	  lp->send_underrun++;	  if (lp->send_underrun == 3)		lp->send_cmd = TX_AFTER_381;	  else if (lp->send_underrun == 6)	lp->send_cmd = TX_AFTER_ALL;	  /* transmit cycle is done, although	     frame wasn't transmitted - this	     avoids having to wait for the upper	     layers to timeout on us, in the	     event of a tx underrun */	  netif_wake_queue(dev);	/* Inform upper layers. */	}	break;      case ISQ_RX_MISS_EVENT:	lp->stats.rx_missed_errors += (status >>6);	break;      case ISQ_TX_COL_EVENT:	lp->stats.collisions += (status >>6);	break;      }    }}static void count_rx_errors(int status, struct net_local *lp) {    lp->stats.rx_errors++;    if (status & RX_RUNT) lp->stats.rx_length_errors++;    if (status & RX_EXTRA_DATA) lp->stats.rx_length_errors++;    if (status & RX_CRC_ERROR) if (!(status & (RX_EXTRA_DATA|RX_RUNT)))      /* per str 172 */      lp->stats.rx_crc_errors++;    if (status & RX_DRIBBLE) lp->stats.rx_frame_errors++;    return;}/* We have a good packet(s), get it/them out of the buffers. */static void net_rx(struct net_device *dev) {    struct net_local *lp = (struct net_local *)dev->priv;    struct sk_buff *skb;    int status, length;    int ioaddr = dev->base_addr;    status = inw(ioaddr + RX_FRAME_PORT);    if ((status & RX_OK) == 0) {      count_rx_errors(status, lp);      return;    }    length = inw(ioaddr + RX_FRAME_PORT);    /* Malloc up new buffer. */    skb = dev_alloc_skb(length + 2);    if (skb == NULL) {      lp->stats.rx_dropped++;      return;    }    skb_reserve(skb, 2);	/* longword align L3 header */    skb->len = length;    skb->dev = dev;    readblock(dev, skb->data, skb->len);    DPRINTK(3, "%s: received %d byte packet of type %x\n",	    dev->name, length,	    (skb->data[ETH_ALEN+ETH_ALEN] << 8) | skb->data[ETH_ALEN+ETH_ALEN+1]);    skb->protocol=eth_type_trans(skb,dev);    netif_rx(skb);    dev->last_rx = jiffies;    lp->stats.rx_packets++;    lp->stats.rx_bytes += length;}/* The inverse routine to net_open(). */static int net_close(struct net_device *dev){	netif_stop_queue(dev);		writereg(dev, PP_RxCFG, 0);	writereg(dev, PP_TxCFG, 0);	writereg(dev, PP_BufCFG, 0);	writereg(dev, PP_BusCTL, 0);	free_irq(dev->irq, dev);	/* Update the statistics here. */	return 0;}/* Get the current statistics.	This may be called with the card open or   closed. */static struct net_device_stats *net_get_stats(struct net_device *dev){	struct net_local *lp = (struct net_local *)dev->priv;	unsigned long flags;	spin_lock_irqsave(&lp->lock, flags);	/* Update the statistics from the device registers. */	lp->stats.rx_missed_errors += (readreg(dev, PP_RxMiss) >> 6);	lp->stats.collisions += (readreg(dev, PP_TxCol) >> 6);	spin_unlock_irqrestore(&lp->lock, flags);	return &lp->stats;}static void set_multicast_list(struct net_device *dev){	struct net_local *lp = (struct net_local *)dev->priv;	unsigned long flags;	spin_lock_irqsave(&lp->lock, flags);	if (dev->flags&IFF_PROMISC) {		lp->rx_mode = RX_ALL_ACCEPT;	} else if((dev->flags&IFF_ALLMULTI)||dev->mc_list) {		/* The multicast-accept list is initialized to accept-all,		   and we rely on higher-level filtering for now. */		lp->rx_mode = RX_MULTCAST_ACCEPT;	} else		lp->rx_mode = 0;	writereg(dev, PP_RxCTL, DEF_RX_ACCEPT | lp->rx_mode);	/* in promiscuous mode, we accept errored packets,	   so we have to enable interrupts on them also */	writereg(dev, PP_RxCFG, lp->curr_rx_cfg |		 (lp->rx_mode == RX_ALL_ACCEPT ?		  (RX_CRC_ERROR_ENBL|RX_RUNT_ENBL|RX_EXTRA_DATA_ENBL) : 0));	spin_unlock_irqrestore(&lp->lock, flags);}static int set_mac_address(struct net_device *dev, void *addr){    int i;    if (netif_running(dev))      return -EBUSY;    DPRINTK(1, "%s: Setting MAC address to ", dev->name);    for (i = 0; i < 6; i++) {      dev->dev_addr[i] = ((unsigned char *)addr)[i];      DPRINTK(1, " %2.2x", dev->dev_addr[i]);    }    DPRINTK(1, ".\n");    /* set the Ethernet address */    for (i=0; i < ETH_ALEN/2; i++)      writereg(dev, PP_IA+i*2, dev->dev_addr[i*2] | (dev->dev_addr[i*2+1] << 8));    return 0;}//#ifdef MODULEstatic struct net_device dev_cs89x0 = {        "",        0, 0, 0, 0,        0, 0,        0, 0, 0, NULL, NULL };/* * Support the 'debug' module parm even if we're compiled for non-debug to  * avoid breaking someone's startup scripts  */static int io = vCS8900_BASE + 0x300;static int irq = IRQ_LAN;static char media[8];static int duplex= 0;MODULE_PARM(io, "i");MODULE_PARM(irq, "i");MODULE_PARM(media, "c8");MODULE_PARM(duplex, "i");MODULE_PARM_DESC(io, "cs89x0 I/O base address");MODULE_PARM_DESC(irq, "cs89x0 IRQ number");MODULE_PARM_DESC(media, "Set cs89x0 adapter(s) media type(s) (rj45,bnc,aui)");/* No other value than -1 for duplex seems to be currently interpreted */MODULE_PARM_DESC(duplex, "(ignored)");MODULE_AUTHOR("Mike Cruse, Russwll Nelson <nelson@crynwr.com>, Andrew Morton <andrewm@uow.edu.au>");MODULE_LICENSE("GPL");EXPORT_NO_SYMBOLS;/** media=t             - specify media type   or media=2   or media=aui   or medai=auto* duplex=0            - specify forced half/full/autonegotiate duplex* debug=#             - debug level* Default Chip Configuration:  * DMA Burst = enabled  * IOCHRDY Enabled = enabled    * UseSA = enabled    * CS8900 defaults to half-duplex if not specified on command-line    * CS8920 defaults to autoneg if not specified on command-line    * Use reset defaults for other config parameters* Assumptions:  * media type specified is supported (circuitry is present)  * if memory address is > 1MB, then required mem decode hw is present  * if 10B-2, then agent other than driver will enable DC/DC converter    (hw or software util)*/static int __init init_cs8900a_s3c2410(void) {    struct net_local *lp;    int ret = 0;    dev_cs89x0.irq = irq;    dev_cs89x0.base_addr = io;    dev_cs89x0.init = cs89x0_probe;    dev_cs89x0.priv = kmalloc(sizeof(struct net_local), GFP_KERNEL);    if (dev_cs89x0.priv == 0) {      printk(KERN_ERR "cs89x0.c: Out of memory.\n");      return -ENOMEM;    }    memset(dev_cs89x0.priv, 0, sizeof(struct net_local));    lp = (struct net_local *)dev_cs89x0.priv;    request_region(dev_cs89x0.base_addr, NETCARD_IO_EXTENT, "cs8900a");    spin_lock_init(&lp->lock);    /* boy, they'd better get these right */    if (!strcmp(media, "rj45"))      lp->adapter_cnf = A_CNF_MEDIA_10B_T | A_CNF_10B_T;    else if (!strcmp(media, "aui"))      lp->adapter_cnf = A_CNF_MEDIA_AUI   | A_CNF_AUI;    else if (!strcmp(media, "bnc"))      lp->adapter_cnf = A_CNF_MEDIA_10B_2 | A_CNF_10B_2;    else      lp->adapter_cnf = A_CNF_MEDIA_10B_T | A_CNF_10B_T;    if (duplex==-1)      lp->auto_neg_cnf = AUTO_NEG_ENABLE;    if (io == 0) {      printk(KERN_ERR "cs89x0.c: Module autoprobing not allowed.\n");      printk(KERN_ERR "cs89x0.c: Append io=0xNNN\n");      ret = -EPERM;      goto out;    }    if (register_netdev(&dev_cs89x0) != 0) {      printk(KERN_ERR "cs89x0.c: No card found at 0x%x\n", io);      ret = -ENXIO;      goto out;    }out:    if (ret)      kfree(dev_cs89x0.priv);    return ret;}static void __exit cleanup_cs8900a_s3c2410(void) {    if (dev_cs89x0.priv != NULL) {      /* Free up the private structure, or leak memory :-)  */      unregister_netdev(&dev_cs89x0);      outw(PP_ChipID, dev_cs89x0.base_addr + ADD_PORT);      kfree(dev_cs89x0.priv);      dev_cs89x0.priv = NULL;	/* gets re-allocated by cs89x0_probe1 */      /* If we don't do this, we can't re-insmod it later. */      release_region(dev_cs89x0.base_addr, NETCARD_IO_EXTENT);    }}module_init(init_cs8900a_s3c2410);module_exit(cleanup_cs8900a_s3c2410);//#else__setup("mac=",mac_setup);//#endif/* | $Id: cs8900a.c,v 1.1.2.5 2002/10/16 09:08:07 tolkien Exp $ | | Local Variables: | mode: c | mode: font-lock | version-control: t | delete-old-versions: t | End: | | -*- End-Of-File -*- */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久九九99视频| 国产亚洲欧美在线| 国产成人亚洲综合a∨婷婷图片| 亚洲欧洲在线观看av| 欧美一区二区三区四区视频| 北条麻妃国产九九精品视频| 日本伊人午夜精品| 亚洲精品福利视频网站| 久久久久久久性| 欧美精品粉嫩高潮一区二区| voyeur盗摄精品| 国产一区美女在线| 日本中文在线一区| 一区二区成人在线| 国产精品久久久久久户外露出| 日韩精品一区二区三区中文精品| 欧美色视频在线观看| 成人av免费观看| 国产在线精品一区二区不卡了| 五月婷婷久久综合| 一区二区三区四区五区视频在线观看| 久久久99精品久久| 精品人在线二区三区| 欧美日韩中文精品| 欧美午夜精品电影| 色琪琪一区二区三区亚洲区| 不卡电影免费在线播放一区| 国产成人精品免费在线| 精品在线一区二区三区| 美女国产一区二区| 日韩精品色哟哟| 午夜精品久久久久久久99樱桃| 亚洲卡通动漫在线| 亚洲人精品午夜| 亚洲色图20p| 亚洲欧美日韩国产一区二区三区 | 日韩西西人体444www| 欧美亚洲另类激情小说| 日本精品裸体写真集在线观看| 国产91富婆露脸刺激对白| 国产福利一区二区| 国产成人精品1024| 成人丝袜视频网| www.亚洲在线| 91免费看`日韩一区二区| 91麻豆蜜桃一区二区三区| 91麻豆视频网站| 在线免费不卡电影| 欧美美女bb生活片| 69久久99精品久久久久婷婷| 欧美一区二区黄色| 精品久久久久久久久久久久久久久 | 91网页版在线| 在线国产电影不卡| 欧美电影一区二区| 精品三级在线观看| 国产精品免费免费| 亚洲综合色网站| 日韩va欧美va亚洲va久久| 久久精品国产澳门| 成人综合婷婷国产精品久久免费| jiyouzz国产精品久久| 日本高清不卡视频| 日韩一卡二卡三卡四卡| 久久久精品天堂| 亚洲视频一区在线观看| 亚洲成人在线免费| 精品午夜一区二区三区在线观看| 国产精品77777| 91麻豆视频网站| 日韩一区二区在线播放| 欧美激情中文字幕| 亚洲国产日韩a在线播放性色| 麻豆国产欧美一区二区三区| 国产91高潮流白浆在线麻豆| 在线精品视频小说1| 欧美成人综合网站| 亚洲天堂2014| 麻豆一区二区在线| 99re亚洲国产精品| 欧美一区二区三区人| 国产精品私人影院| 午夜精品久久久| 高清日韩电视剧大全免费| 欧美性一级生活| 国产视频一区在线播放| 亚洲激情成人在线| 国产一区二区三区精品欧美日韩一区二区三区 | www.欧美日韩国产在线| 欧美日韩国产另类不卡| 国产精品网站在线播放| 日韩黄色免费电影| 暴力调教一区二区三区| 日韩精品最新网址| 亚洲美女一区二区三区| 国产伦精品一区二区三区免费| 在线观看免费视频综合| 久久久久久99精品| 图片区小说区国产精品视频| av成人动漫在线观看| 欧美一区二区三区日韩视频| 亚洲免费观看高清完整版在线观看 | 亚洲精品ww久久久久久p站| 裸体在线国模精品偷拍| 在线观看亚洲一区| 中文字幕av一区二区三区免费看| 奇米色一区二区| 91黄色免费观看| 中文字幕中文字幕在线一区| 免播放器亚洲一区| 精品视频色一区| 亚洲色图在线播放| 国产成人欧美日韩在线电影| 欧美一级片在线| 五月激情六月综合| 91久久一区二区| 亚洲精品国产视频| 99亚偷拍自图区亚洲| 中文字幕免费一区| 国产精品一区在线观看你懂的| 日韩三级电影网址| 免费在线成人网| 日韩一区二区三区在线视频| 亚洲成人动漫一区| 欧美色中文字幕| 亚洲精品成人悠悠色影视| 99视频精品在线| 中文字幕在线观看不卡视频| 国产黄色精品视频| 国产日韩欧美a| 风间由美性色一区二区三区| 欧美经典一区二区三区| 国产伦精一区二区三区| 国产偷国产偷亚洲高清人白洁 | 亚洲另类春色国产| 色综合久久精品| 樱花草国产18久久久久| 色综合天天综合狠狠| 亚洲精品欧美激情| 色悠悠久久综合| 亚洲国产精品一区二区久久恐怖片 | 国产精品1区二区.| 久久精品一区二区三区四区| 国产美女视频91| 国产女人18毛片水真多成人如厕| 国产精品一区二区91| 国产精品乱码妇女bbbb| 成人国产亚洲欧美成人综合网| 国产精品久久网站| 色老汉av一区二区三区| 香蕉av福利精品导航| 日韩欧美激情在线| 国产成人鲁色资源国产91色综| 国产女人18水真多18精品一级做| av激情成人网| 香蕉影视欧美成人| 亚洲精品一区在线观看| 成人午夜电影网站| 一区二区三区精品| 欧美久久久久久久久久| 欧美aaaaaa午夜精品| 久久综合国产精品| 97久久超碰精品国产| 午夜视频久久久久久| 精品国产乱码久久久久久影片| 丁香另类激情小说| 亚洲v精品v日韩v欧美v专区| 日韩一区二区在线播放| 成人国产在线观看| 亚洲成人动漫在线免费观看| 久久网站热最新地址| 91在线观看视频| 免费日韩伦理电影| 中文字幕欧美激情| 欧美日韩国产在线播放网站| 国模一区二区三区白浆| 一区在线观看免费| 欧美精品久久99久久在免费线 | 欧美最猛黑人xxxxx猛交| 蜜桃视频在线观看一区二区| 久久精品亚洲精品国产欧美| 日本久久一区二区| 黑人精品欧美一区二区蜜桃| 亚洲男人电影天堂| 亚洲精品在线电影| 精品污污网站免费看| 国产99久久精品| 日本午夜一区二区| 日韩一区欧美小说| 精品免费视频.| 在线影院国内精品| 国产成人精品三级| 日韩电影网1区2区| 亚洲精品成人在线| 国产亚洲成av人在线观看导航 | 91久久奴性调教| 国产一区二区三区四区五区入口| 亚洲第一综合色| 国产精品福利一区二区| 精品三级在线看|