Распечатка 5.7 Функции приёма и передачи |
Предыдущая Содержание Следующая |
Распечатка 5.7.
void LXNWIsr(int irq, void *id, struct pt_regs *regs) { struct net_device *dev = id;
switch (READ_INTERRUPT_CONDITION()) { case TX_EVENT: netif_wake_queue(dev); break; case RX_Event: LXHWReceive(nCS); break; } }
int LXNWSendPacket(struct sk_buff *skb, struct net_device *dev) { /* Запрещаем прерывание, так как это может вызвать программное * прерывание */ disable_irq(dev->irq); netif_stop_queue(dev); FILL_TX_NW(skb); enable_irq(dev->irq); dev_kfree_skb(skb);
return 0; }
void LXHWReceive(struct net_device *dev) { struct sk_buff *skb;
/* * После получения длины фрейма выделяем память для skb */ skb = dev_alloc_skb(READ_RX_LEN + 2);
/* Это выполняется для выравнивания по границе 16 байт */ skb_reserve(skb,2);
skb->dev = dev; READ_RX_NW(skb); skb->protocol = eth_type_trans(skb,dev); netif_rx(skb); }
|
Предыдущая Содержание Следующая |