Changes in uspace/drv/nic/rtl8139/driver.c [e777847:d87561c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/nic/rtl8139/driver.c
re777847 rd87561c 27 27 */ 28 28 29 /* XXX Fix this */ 30 #define _DDF_DATA_IMPLANT 31 29 32 #include <assert.h> 30 33 #include <errno.h> 31 34 #include <align.h> 32 35 #include <byteorder.h> 33 #include <libarch/ddi.h>34 36 #include <libarch/barrier.h> 35 37 … … 39 41 #include <io/log.h> 40 42 #include <nic.h> 41 #include <packet_client.h>42 43 #include <device/pci.h> 43 44 … … 46 47 #include <ipc/ns.h> 47 48 48 #include <net_checksum.h>49 50 49 #include <str.h> 51 50 … … 56 55 /** Global mutex for work with shared irq structure */ 57 56 FIBRIL_MUTEX_INITIALIZE(irq_reg_lock); 57 58 58 /** Lock interrupt structure mutex */ 59 #define RTL8139_IRQ_STRUCT_LOCK() fibril_mutex_lock(&irq_reg_lock) 59 #define RTL8139_IRQ_STRUCT_LOCK() \ 60 fibril_mutex_lock(&irq_reg_lock) 61 60 62 /** Unlock interrupt structure mutex */ 61 #define RTL8139_IRQ_STRUCT_UNLOCK() fibril_mutex_unlock(&irq_reg_lock) 63 #define RTL8139_IRQ_STRUCT_UNLOCK() \ 64 fibril_mutex_unlock(&irq_reg_lock) 62 65 63 66 /** PCI clock frequency in kHz */ 64 #define RTL8139_PCI_FREQ_KHZ 3300065 66 #define RTL8139_AUTONEG_CAPS (ETH_AUTONEG_10BASE_T_HALF \67 | ETH_AUTONEG_10BASE_T_FULL | ETH_AUTONEG_100BASE_TX_HALF\68 |ETH_AUTONEG_100BASE_TX_FULL | ETH_AUTONEG_PAUSE_SYMETRIC)67 #define RTL8139_PCI_FREQ_KHZ 33000 68 69 #define RTL8139_AUTONEG_CAPS (ETH_AUTONEG_10BASE_T_HALF | \ 70 ETH_AUTONEG_10BASE_T_FULL | ETH_AUTONEG_100BASE_TX_HALF | \ 71 ETH_AUTONEG_100BASE_TX_FULL | ETH_AUTONEG_PAUSE_SYMETRIC) 69 72 70 73 /** Lock transmitter and receiver data 71 * This function shall be called whenever both transmitter and receiver locking 72 * to force safe lock ordering (deadlock prevention) 73 * 74 * @param rtl8139 RTL8139 private data 74 * 75 * This function shall be called whenever 76 * both transmitter and receiver locking 77 * to force safe lock ordering (deadlock prevention) 78 * 79 * @param rtl8139 RTL8139 private data 80 * 75 81 */ 76 82 inline static void rtl8139_lock_all(rtl8139_t *rtl8139) … … 83 89 /** Unlock transmitter and receiver data 84 90 * 85 * @param rtl8139 RTL8139 private data 91 * @param rtl8139 RTL8139 private data 92 * 86 93 */ 87 94 inline static void rtl8139_unlock_all(rtl8139_t *rtl8139) … … 152 159 } 153 160 154 /** Update the mask of accepted packets in the RCR register according to161 /** Update the mask of accepted frames in the RCR register according to 155 162 * rcr_accept_mode value in rtl8139_t 156 163 * … … 170 177 } 171 178 172 /** Fill the mask of accepted multicast packets in the card registers179 /** Fill the mask of accepted multicast frames in the card registers 173 180 * 174 181 * @param rtl8139 The rtl8139 private data … … 207 214 rtl8139_regs_lock(rtl8139->io_port); 208 215 216 async_sess_t *pci_sess = 217 ddf_dev_parent_sess_get(nic_get_ddf_dev(rtl8139->nic_data)); 218 209 219 if (bit_val) { 210 async_sess_t *pci_sess =211 nic_get_ddf_dev(rtl8139->nic_data)->parent_sess;212 220 uint8_t pmen; 213 221 pci_config_space_read_8(pci_sess, 0x55, &pmen); 214 222 pci_config_space_write_8(pci_sess, 0x55, pmen | 1 | (1 << 7)); 215 223 } else { 216 async_sess_t *pci_sess =217 nic_get_ddf_dev(rtl8139->nic_data)->parent_sess;218 224 uint8_t pmen; 219 225 pci_config_space_read_8(pci_sess, 0x55, &pmen); … … 394 400 #define rtl8139_tbuf_busy(tsd) ((pio_read_32(tsd) & TSD_OWN) == 0) 395 401 396 /** Send packetwith the hardware402 /** Send frame with the hardware 397 403 * 398 404 * note: the main_lock is locked when framework calls this function … … 412 418 ddf_msg(LVL_DEBUG, "Sending frame"); 413 419 414 if (size > RTL8139_ PACKET_MAX_LENGTH) {420 if (size > RTL8139_FRAME_MAX_LENGTH) { 415 421 ddf_msg(LVL_ERROR, "Send frame: frame too long, %zu bytes", 416 422 size); … … 437 443 fibril_mutex_unlock(&rtl8139->tx_lock); 438 444 439 /* Get address of the buffer descriptor and packetdata */445 /* Get address of the buffer descriptor and frame data */ 440 446 void *tsd = rtl8139->io_port + TSD0 + tx_curr * 4; 441 447 void *buf_addr = rtl8139->tx_buff[tx_curr]; … … 458 464 pio_write_32(tsd, tsd_value); 459 465 return; 460 466 461 467 err_busy_no_inc: 462 468 err_size: … … 505 511 } 506 512 507 /** Create packetstructure from the buffer data513 /** Create frame structure from the buffer data 508 514 * 509 515 * @param nic_data NIC driver data 510 516 * @param rx_buffer The receiver buffer 511 517 * @param rx_size The buffer size 512 * @param packet_start The offset where packet data start 513 * @param packet_size The size of the packet data 514 * 515 * @return The packet list node (not connected) 516 */ 517 static nic_frame_t *rtl8139_read_packet(nic_t *nic_data, 518 void *rx_buffer, size_t rx_size, size_t packet_start, size_t packet_size) 519 { 520 nic_frame_t *frame = nic_alloc_frame(nic_data, packet_size); 518 * @param frame_start The offset where packet data start 519 * @param frame_size The size of the frame data 520 * 521 * @return The frame list node (not connected) 522 * 523 */ 524 static nic_frame_t *rtl8139_read_frame(nic_t *nic_data, 525 void *rx_buffer, size_t rx_size, size_t frame_start, size_t frame_size) 526 { 527 nic_frame_t *frame = nic_alloc_frame(nic_data, frame_size); 521 528 if (! frame) { 522 ddf_msg(LVL_ERROR, "Can not allocate frame for received packet.");529 ddf_msg(LVL_ERROR, "Can not allocate frame for received frame."); 523 530 return NULL; 524 531 } 525 532 526 void *packet_data = packet_suffix(frame->packet, packet_size); 527 if (!packet_data) { 528 ddf_msg(LVL_ERROR, "Can not get the packet suffix."); 529 nic_release_frame(nic_data, frame); 530 return NULL; 531 } 532 533 void *ret = rtl8139_memcpy_wrapped(packet_data, rx_buffer, packet_start, 534 RxBUF_SIZE, packet_size); 533 void *ret = rtl8139_memcpy_wrapped(frame->data, rx_buffer, frame_start, 534 RxBUF_SIZE, frame_size); 535 535 if (ret == NULL) { 536 536 nic_release_frame(nic_data, frame); … … 568 568 } 569 569 570 /** Receive all packets in queue570 /** Receive all frames in queue 571 571 * 572 572 * @param nic_data The controller data 573 * @return The linked list of packet_list_t nodes, each containing one packet574 */ 575 static nic_frame_list_t *rtl8139_ packet_receive(nic_t *nic_data)573 * @return The linked list of nic_frame_list_t nodes, each containing one frame 574 */ 575 static nic_frame_list_t *rtl8139_frame_receive(nic_t *nic_data) 576 576 { 577 577 rtl8139_t *rtl8139 = nic_get_specific(nic_data); … … 581 581 nic_frame_list_t *frames = nic_alloc_frame_list(); 582 582 if (!frames) 583 ddf_msg(LVL_ERROR, "Can not allocate frame list for received packets.");583 ddf_msg(LVL_ERROR, "Can not allocate frame list for received frames."); 584 584 585 585 void *rx_buffer = rtl8139->rx_buff_virt; … … 605 605 while (!rtl8139_hw_buffer_empty(rtl8139)) { 606 606 void *rx_ptr = rx_buffer + rx_offset % RxBUF_SIZE; 607 uint32_t packet_header = uint32_t_le2host( *((uint32_t*)rx_ptr) );608 uint16_t size = packet_header >> 16;609 uint16_t packet_size = size - RTL8139_CRC_SIZE;610 /* received packet flags in packetheader */611 uint16_t rcs = (uint16_t) packet_header;607 uint32_t frame_header = uint32_t_le2host( *((uint32_t*)rx_ptr) ); 608 uint16_t size = frame_header >> 16; 609 uint16_t frame_size = size - RTL8139_CRC_SIZE; 610 /* received frame flags in frame header */ 611 uint16_t rcs = (uint16_t) frame_header; 612 612 613 613 if (size == RTL8139_EARLY_SIZE) { 614 /* The packetcopying is still in progress, break receiving */614 /* The frame copying is still in progress, break receiving */ 615 615 ddf_msg(LVL_DEBUG, "Early threshold reached, not completely coppied"); 616 616 break; … … 618 618 619 619 /* Check if the header is valid, otherwise we are lost in the buffer */ 620 if (size == 0 || size > RTL8139_ PACKET_MAX_LENGTH) {621 ddf_msg(LVL_ERROR, "Receiver error -> receiver reset (size: %4" PRIu16", "622 "header 0x%4" PRIx16". Offset: %zu)", size, packet_header,620 if (size == 0 || size > RTL8139_FRAME_MAX_LENGTH) { 621 ddf_msg(LVL_ERROR, "Receiver error -> receiver reset (size: %4" PRIu16 ", " 622 "header 0x%4" PRIx32 ". Offset: %" PRIu16 ")", size, frame_header, 623 623 rx_offset); 624 624 goto rx_err; … … 629 629 } 630 630 631 cur_read += size + RTL_ PACKET_HEADER_SIZE;631 cur_read += size + RTL_FRAME_HEADER_SIZE; 632 632 if (cur_read > max_read) 633 633 break; 634 634 635 635 if (frames) { 636 nic_frame_t *frame = rtl8139_read_ packet(nic_data, rx_buffer,637 RxBUF_SIZE, rx_offset + RTL_ PACKET_HEADER_SIZE, packet_size);636 nic_frame_t *frame = rtl8139_read_frame(nic_data, rx_buffer, 637 RxBUF_SIZE, rx_offset + RTL_FRAME_HEADER_SIZE, frame_size); 638 638 639 639 if (frame) … … 642 642 643 643 /* Update offset */ 644 rx_offset = ALIGN_UP(rx_offset + size + RTL_ PACKET_HEADER_SIZE, 4);645 646 /* Write lesser value to prevent overflow into unread packet644 rx_offset = ALIGN_UP(rx_offset + size + RTL_FRAME_HEADER_SIZE, 4); 645 646 /* Write lesser value to prevent overflow into unread frame 647 647 * (the recomendation from the RealTech rtl8139 programming guide) 648 648 */ … … 735 735 tx_used++; 736 736 737 /* If the packetwas sent */737 /* If the frame was sent */ 738 738 if (tsd_value & TSD_TOK) { 739 739 size_t size = REG_GET_VAL(tsd_value, TSD_SIZE); … … 765 765 } 766 766 767 /** Receive all packets from the buffer767 /** Receive all frames from the buffer 768 768 * 769 769 * @param rtl8139 driver private data 770 770 */ 771 static void rtl8139_receive_ packets(nic_t *nic_data)771 static void rtl8139_receive_frames(nic_t *nic_data) 772 772 { 773 773 assert(nic_data); … … 777 777 778 778 fibril_mutex_lock(&rtl8139->rx_lock); 779 nic_frame_list_t *frames = rtl8139_ packet_receive(nic_data);779 nic_frame_list_t *frames = rtl8139_frame_receive(nic_data); 780 780 fibril_mutex_unlock(&rtl8139->rx_lock); 781 781 … … 833 833 } 834 834 835 /* Check transmittion interrupts first to allow transmit next packets835 /* Check transmittion interrupts first to allow transmit next frames 836 836 * sooner 837 837 */ … … 840 840 } 841 841 if (isr & INT_ROK) { 842 rtl8139_receive_ packets(nic_data);842 rtl8139_receive_frames(nic_data); 843 843 } 844 844 if (isr & (INT_RER | INT_RXOVW | INT_FIFOOVW)) { … … 942 942 } 943 943 944 /** Activate the device to receive and transmit packets944 /** Activate the device to receive and transmit frames 945 945 * 946 946 * @param nic_data The nic driver data … … 1020 1020 } 1021 1021 1022 bzero(rtl8139, sizeof(rtl8139_t));1022 memset(rtl8139, 0, sizeof(rtl8139_t)); 1023 1023 1024 1024 rtl8139->nic_data = nic_data; … … 1053 1053 assert(dev); 1054 1054 1055 if (d ev->driver_data)1055 if (ddf_dev_data_get(dev)) 1056 1056 nic_unbind_and_destroy(dev); 1057 1058 if (dev->parent_sess != NULL) {1059 async_hangup(dev->parent_sess);1060 dev->parent_sess = NULL;1061 }1062 1057 } 1063 1058 … … 1081 1076 1082 1077 if (hw_resources->irqs.count != 1) { 1083 ddf_msg(LVL_ERROR, "%s device: unexpected irq count", d ev->name);1078 ddf_msg(LVL_ERROR, "%s device: unexpected irq count", ddf_dev_get_name(dev)); 1084 1079 return EINVAL; 1085 1080 }; 1086 1081 if (hw_resources->io_ranges.count != 1) { 1087 ddf_msg(LVL_ERROR, "%s device: unexpected io ranges count", d ev->name);1082 ddf_msg(LVL_ERROR, "%s device: unexpected io ranges count", ddf_dev_get_name(dev)); 1088 1083 return EINVAL; 1089 1084 } 1090 1085 1091 1086 rtl8139->irq = hw_resources->irqs.irqs[0]; 1092 ddf_msg(LVL_DEBUG, "%s device: irq 0x%x assigned", d ev->name, rtl8139->irq);1087 ddf_msg(LVL_DEBUG, "%s device: irq 0x%x assigned", ddf_dev_get_name(dev), rtl8139->irq); 1093 1088 1094 1089 rtl8139->io_addr = IOADDR_TO_PTR(hw_resources->io_ranges.ranges[0].address); 1095 1090 if (hw_resources->io_ranges.ranges[0].size < RTL8139_IO_SIZE) { 1096 1091 ddf_msg(LVL_ERROR, "i/o range assigned to the device " 1097 "%s is too small.", d ev->name);1092 "%s is too small.", ddf_dev_get_name(dev)); 1098 1093 return EINVAL; 1099 1094 } 1100 ddf_msg(LVL_DEBUG, "%s device: i/o addr %p assigned.", d ev->name, rtl8139->io_addr);1095 ddf_msg(LVL_DEBUG, "%s device: i/o addr %p assigned.", ddf_dev_get_name(dev), rtl8139->io_addr); 1101 1096 1102 1097 return EOK; … … 1166 1161 1167 1162 /* Allocate buffer for receiver */ 1168 ddf_msg(LVL_DEBUG, "Allocating receiver buffer of the size % zubytes",1163 ddf_msg(LVL_DEBUG, "Allocating receiver buffer of the size %d bytes", 1169 1164 RxBUF_TOT_LENGTH); 1170 1165 … … 1193 1188 static int rtl8139_device_initialize(ddf_dev_t *dev) 1194 1189 { 1195 ddf_msg(LVL_DEBUG, "rtl8139_dev_initialize %s", d ev->name);1190 ddf_msg(LVL_DEBUG, "rtl8139_dev_initialize %s", ddf_dev_get_name(dev)); 1196 1191 1197 1192 int ret = EOK; … … 1202 1197 rtl8139_t *rtl8139 = rtl8139_create_dev_data(dev); 1203 1198 if (rtl8139 == NULL) { 1204 ddf_msg(LVL_ERROR, "Not enough memory for initializing %s.", d ev->name);1199 ddf_msg(LVL_ERROR, "Not enough memory for initializing %s.", ddf_dev_get_name(dev)); 1205 1200 return ENOMEM; 1206 1201 } … … 1222 1217 goto failed; 1223 1218 1224 /* Set default packetacceptance */1219 /* Set default frame acceptance */ 1225 1220 rtl8139->rcr_data.ucast_mask = RTL8139_RCR_UCAST_DEFAULT; 1226 1221 rtl8139->rcr_data.mcast_mask = RTL8139_RCR_MCAST_DEFAULT; 1227 1222 rtl8139->rcr_data.bcast_mask = RTL8139_RCR_BCAST_DEFAULT; 1228 1223 rtl8139->rcr_data.defect_mask = RTL8139_RCR_DEFECT_DEFAULT; 1229 /* Set receiver early treshold to 8/16 of packetlength */1224 /* Set receiver early treshold to 8/16 of frame length */ 1230 1225 rtl8139->rcr_data.rcr_base = (0x8 << RCR_ERTH_SHIFT); 1231 1226 1232 1227 ddf_msg(LVL_DEBUG, "The device is initialized"); 1233 1228 return ret; 1234 1229 1235 1230 failed: 1236 1231 ddf_msg(LVL_ERROR, "The device initialization failed"); … … 1247 1242 static int rtl8139_pio_enable(ddf_dev_t *dev) 1248 1243 { 1249 ddf_msg(LVL_DEBUG, NAME ": rtl8139_pio_enable %s", d ev->name);1244 ddf_msg(LVL_DEBUG, NAME ": rtl8139_pio_enable %s", ddf_dev_get_name(dev)); 1250 1245 1251 1246 rtl8139_t *rtl8139 = nic_get_specific(nic_get_from_ddf_dev(dev)); … … 1253 1248 /* Gain control over port's registers. */ 1254 1249 if (pio_enable(rtl8139->io_addr, RTL8139_IO_SIZE, &rtl8139->io_port)) { 1255 ddf_msg(LVL_ERROR, "Cannot gain the port % lxfor device %s.", rtl8139->io_addr,1256 d ev->name);1250 ddf_msg(LVL_ERROR, "Cannot gain the port %p for device %s.", rtl8139->io_addr, 1251 ddf_dev_get_name(dev)); 1257 1252 return EADDRNOTAVAIL; 1258 1253 } … … 1297 1292 int rtl8139_dev_add(ddf_dev_t *dev) 1298 1293 { 1294 ddf_fun_t *fun; 1295 1299 1296 assert(dev); 1300 ddf_msg(LVL_NOTE, "RTL8139_dev_add %s (handle = %d)", dev->name, dev->handle); 1297 ddf_msg(LVL_NOTE, "RTL8139_dev_add %s (handle = %zu)", 1298 ddf_dev_get_name(dev), ddf_dev_get_handle(dev)); 1301 1299 1302 1300 /* Init device structure for rtl8139 */ … … 1329 1327 rc = nic_connect_to_services(nic_data); 1330 1328 if (rc != EOK) { 1331 ddf_msg(LVL_ERROR, "Failed to connect to services ", rc);1329 ddf_msg(LVL_ERROR, "Failed to connect to services (%d)", rc); 1332 1330 goto err_irq; 1333 1331 } 1334 1332 1335 rc = nic_register_as_ddf_fun(nic_data, &rtl8139_dev_ops); 1333 fun = ddf_fun_create(nic_get_ddf_dev(nic_data), fun_exposed, "port0"); 1334 if (fun == NULL) { 1335 ddf_msg(LVL_ERROR, "Failed creating device function"); 1336 goto err_srv; 1337 } 1338 nic_set_ddf_fun(nic_data, fun); 1339 ddf_fun_set_ops(fun, &rtl8139_dev_ops); 1340 ddf_fun_data_implant(fun, nic_data); 1341 1342 rc = ddf_fun_bind(fun); 1336 1343 if (rc != EOK) { 1337 ddf_msg(LVL_ERROR, "Failed to register as DDF function - error %d", rc); 1338 goto err_irq; 1344 ddf_msg(LVL_ERROR, "Failed binding device function"); 1345 goto err_fun_create; 1346 } 1347 rc = ddf_fun_add_to_category(fun, DEVICE_CATEGORY_NIC); 1348 if (rc != EOK) { 1349 ddf_msg(LVL_ERROR, "Failed adding function to category"); 1350 goto err_fun_bind; 1339 1351 } 1340 1352 1341 1353 ddf_msg(LVL_NOTE, "The %s device has been successfully initialized.", 1342 dev->name); 1343 1344 return EOK; 1345 1354 ddf_dev_get_name(dev)); 1355 1356 return EOK; 1357 1358 err_fun_bind: 1359 ddf_fun_unbind(fun); 1360 err_fun_create: 1361 ddf_fun_destroy(fun); 1362 err_srv: 1363 /* XXX Disconnect from services */ 1346 1364 err_irq: 1347 1365 unregister_interrupt_handler(dev, rtl8139->irq); … … 1486 1504 }; 1487 1505 1488 /** Check if pause packetoperations are valid in current situation1506 /** Check if pause frame operations are valid in current situation 1489 1507 * 1490 1508 * @param rtl8139 RTL8139 private structure … … 1511 1529 } 1512 1530 1513 /** Get current pause packetconfiguration1531 /** Get current pause frame configuration 1514 1532 * 1515 1533 * Values are filled with NIC_RESULT_NOT_AVAILABLE if the value has no sense in … … 1517 1535 * 1518 1536 * @param[in] fun The DDF structure of the RTL8139 1519 * @param[out] we_send Sign if local constroller sends pause packets1520 * @param[out] we_receive Sign if local constroller receives pause packets1521 * @param[out] time Time filled in pause packets. 0xFFFF in rtl81391537 * @param[out] we_send Sign if local constroller sends pause frame 1538 * @param[out] we_receive Sign if local constroller receives pause frame 1539 * @param[out] time Time filled in pause frames. 0xFFFF in rtl8139 1522 1540 * 1523 1541 * @return EOK if succeed … … 1549 1567 }; 1550 1568 1551 /** Set current pause packetconfiguration1569 /** Set current pause frame configuration 1552 1570 * 1553 1571 * @param fun The DDF structure of the RTL8139 1554 * @param allow_send Sign if local constroller sends pause packets1555 * @param allow_receive Sign if local constroller receives pause packets1572 * @param allow_send Sign if local constroller sends pause frame 1573 * @param allow_receive Sign if local constroller receives pause frames 1556 1574 * @param time Time to use, ignored (not supported by device) 1557 1575 * 1558 * @return EOK if succeed, INVAL if the pause packethas no sence1576 * @return EOK if succeed, INVAL if the pause frame has no sence 1559 1577 */ 1560 1578 static int rtl8139_pause_set(ddf_fun_t *fun, int allow_send, int allow_receive, … … 1805 1823 } 1806 1824 1807 /** Set unicast packets acceptance mode1825 /** Set unicast frames acceptance mode 1808 1826 * 1809 1827 * @param nic_data The nic device to update … … 1863 1881 } 1864 1882 1865 /** Set multicast packets acceptance mode1883 /** Set multicast frames acceptance mode 1866 1884 * 1867 1885 * @param nic_data The nic device to update … … 1908 1926 } 1909 1927 1910 /** Set broadcast packets acceptance mode1928 /** Set broadcast frames acceptance mode 1911 1929 * 1912 1930 * @param nic_data The nic device to update … … 1938 1956 } 1939 1957 1940 /** Get state of acceptance of weird packets1958 /** Get state of acceptance of weird frames 1941 1959 * 1942 1960 * @param[in] device The device to check … … 1960 1978 }; 1961 1979 1962 /** Set acceptance of weird packets1980 /** Set acceptance of weird frames 1963 1981 * 1964 1982 * @param device The device to update … … 2120 2138 pio_write_32(rtl8139->io_port + TCTR, 0); 2121 2139 2122 ddf_msg(LVL_DEBUG, "Periodic mode. Interrupt mask %"PRIx16", poll.full_skips %" 2123 PRIu32", last timer %"PRIu32".", rtl8139->int_mask, 2124 rtl8139->poll_timer.full_skips, rtl8139->poll_timer.last_val); 2140 ddf_msg(LVL_DEBUG, "Periodic mode. Interrupt mask %" PRIx16 ", " 2141 "poll.full_skips %zu, last timer %" PRIu32, 2142 rtl8139->int_mask, rtl8139->poll_timer.full_skips, 2143 rtl8139->poll_timer.last_val); 2125 2144 break; 2126 2145 default: … … 2136 2155 } 2137 2156 2138 /** Force receiving all packets in the receive buffer2157 /** Force receiving all frames in the receive buffer 2139 2158 * 2140 2159 * @param device The device to receive … … 2167 2186 &rtl8139_driver_ops, &rtl8139_dev_ops, &rtl8139_nic_iface); 2168 2187 2169 ddf_log_init(NAME , LVL_ERROR);2188 ddf_log_init(NAME); 2170 2189 ddf_msg(LVL_NOTE, "HelenOS RTL8139 driver started"); 2171 2190 return ddf_driver_main(&rtl8139_driver);
Note:
See TracChangeset
for help on using the changeset viewer.