Курсовая работа: Реализация сети в операционной системе Linux

size -= 4; /* Ignore trailing 4 CRC-bytes */

/* Сообщаем адаптеру куда ложить следующий пакет и получаем */

read_from = rx_page_adr();

next_rx_page();

de600_put_command(RX_ENABLE);

restore_flags(flags);

if ((size < 32) || (size > 1535)) {

printk("%s: Bogus packet size %d.\n", dev->name, size);

if (size > 10000)

adapter_init(dev);

return;

}

skb = dev_alloc_skb(size+2);

if (skb == NULL) {

printk("%s: Couldn't allocate a sk_buff of size %d.\n",

dev->name, size);

return;

}

/* Иначе*/

skb->dev = dev;

skb_reserve(skb,2); /* Align */

/* 'skb->data' указывет на начало буфера данных. */

buffer = skb_put(skb,size);

/* копируемпакетвбуфер */

de600_setup_address(read_from, RW_ADDR);

for (i = size; i > 0; --i, ++buffer)

*buffer = de600_read_byte(READ_DATA, dev);

/* Определяемтиппротокола

skb->protocol=eth_type_trans(skb,dev);

К-во Просмотров: 1527
Бесплатно скачать Курсовая работа: Реализация сети в операционной системе Linux