免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1515 | 回复: 1
打印 上一主题 下一主题

[硬件及驱动] Linux网络驱动疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-19 18:49 |只看该作者 |倒序浏览
大虾门,帮我分析下./driver/net/korina.c下面的一段代码

RX中断申请:
ret = request_irq(lp->rx_irq, &korina_rx_dma_interrupt,
                IRQF_SHARED | IRQF_DISABLED, "Korina ethernet Rx", dev);

Rx中断处理:
/* Ethernet Rx DMA interrupt */
static irqreturn_t korina_rx_dma_interrupt(int irq, void *dev_id)
{
        struct net_device *dev = dev_id;
        struct korina_private *lp = netdev_priv(dev);
        u32 dmas, dmasm;
        irqreturn_t retval;

        dmas = readl (&lp->rx_dma_regs->dmas);
        if (dmas & (DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR)) {
                netif_rx_schedule_prep (dev, &lp->napi);

                dmasm = readl (&lp->rx_dma_regs->dmasm);
                writel (dmasm | (DMA_STAT_DONE |
                                DMA_STAT_HALT | DMA_STAT_ERR),
                                &lp->rx_dma_regs->dmasm);

                if (dmas & DMA_STAT_ERR)
                        printk(KERN_ERR DRV_NAME "%s: DMA error\n", dev->name);

                retval = IRQ_HANDLED;
        } else
                retval = IRQ_NONE;

        return retval;
}

问题:
为什么这里面没有调用:__netif_rx_schedule函数,他是怎么触发软中断的?

论坛徽章:
0
2 [报告]
发表于 2012-06-19 21:16 |只看该作者
我的代码版本跟你不一样,看不到这个函数netif_rx_schedule_prep ,我觉得这函数里面会出发软中断。


回复 1# linuxLife12345


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP