WEB开发网
开发学院软件开发Shell Linux编程:网络设备驱动详解 阅读

Linux编程:网络设备驱动详解

 2009-06-30 04:36:00 来源:WEB开发网   
核心提示: 6,硬件处理数据包发送static int tg3_start_xmit(struct sk_buff *skb, struct net_device *dev){len = (skb->len - skb->data_len);//以DMA方式向网卡物理设备传输包,Linux编程:网络设备驱动详解(5)

6,硬件处理数据包发送

static int tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)

{

len = (skb->len - skb->data_len);

//以DMA方式向网卡物理设备传输包。如果是wireless的话,需要根据802.11协议及硬件的规范从新填充

//硬件帧头,然后提交给硬件发送。

mapping = pci_map_single(tp->pdev, skb->data, len, PCI_DMA_TODEVICE);

tp->tx_buffers[entry].skb = skb;

pci_unmap_addr_set(&tp->tx_buffers[entry], mapping, mapping);

//硬件发送

tg3_set_txd(tp, entry, mapping, len, base_flags, mss_and_is_end);

//记录发包开始时间

dev->trans_start = jiffies;

}

7,中断处理收包,发包

static void tg3_interrupt(int irq, void *dev_id, struct pt_regs *regs)

{

//如果要收包

tg3_rx(tp);

//如果要发包

tg3_tx(tp);

}

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Linux 编程 网络设备

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接