Changes in uspace/drv/nic/rtl8139/driver.c [99e8fb7b:8820544] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/nic/rtl8139/driver.c
r99e8fb7b r8820544 27 27 */ 28 28 29 /* XXX Fix this */30 #define _DDF_DATA_IMPLANT31 32 29 #include <assert.h> 33 30 #include <errno.h> … … 35 32 #include <byteorder.h> 36 33 #include <libarch/barrier.h> 37 38 34 #include <as.h> 39 35 #include <ddf/log.h> … … 42 38 #include <nic.h> 43 39 #include <pci_dev_iface.h> 44 45 #include <ipc/irc.h> 46 #include <sysinfo.h> 47 #include <ipc/ns.h> 48 40 #include <irc.h> 41 #include <stdio.h> 49 42 #include <str.h> 50 43 … … 859 852 /** Handle device interrupt 860 853 * 861 * @param dev The rtl8139 device 862 * @param iid The IPC call id 863 * @param icall The IPC call structure 864 */ 865 static void rtl8139_interrupt_handler(ddf_dev_t *dev, ipc_callid_t iid, 866 ipc_call_t *icall) 854 * @param iid The IPC call id 855 * @param icall The IPC call structure 856 * @param dev The rtl8139 device 857 * 858 */ 859 static void rtl8139_interrupt_handler(ipc_callid_t iid, ipc_call_t *icall, 860 ddf_dev_t *dev) 867 861 { 868 862 assert(dev); … … 960 954 rtl8139->int_mask = RTL_DEFAULT_INTERRUPTS; 961 955 rtl8139_hw_int_enable(rtl8139); 962 nic_enable_interrupt(nic_data, rtl8139->irq); 956 957 int rc = irc_enable_interrupt(rtl8139->irq); 958 if (rc != EOK) { 959 rtl8139_on_stopped(nic_data); 960 return rc; 961 } 963 962 964 963 ddf_msg(LVL_DEBUG, "Device activated, interrupt %d registered", rtl8139->irq); … … 1141 1140 1142 1141 ddf_msg(LVL_DEBUG, "Creating buffers"); 1143 1142 1143 rtl8139->tx_buff_virt = AS_AREA_ANY; 1144 1144 rc = dmamem_map_anonymous(TX_PAGES * PAGE_SIZE, DMAMEM_4GiB, 1145 1145 AS_AREA_WRITE, 0, &rtl8139->tx_buff_phys, &rtl8139->tx_buff_virt); … … 1161 1161 ddf_msg(LVL_DEBUG, "Allocating receiver buffer of the size %d bytes", 1162 1162 RxBUF_TOT_LENGTH); 1163 1163 1164 rtl8139->rx_buff_virt = AS_AREA_ANY; 1164 1165 rc = dmamem_map_anonymous(RxBUF_TOT_LENGTH, DMAMEM_4GiB, 1165 1166 AS_AREA_READ, 0, &rtl8139->rx_buff_phys, &rtl8139->rx_buff_virt); … … 1323 1324 goto err_pio; 1324 1325 1325 rc = nic_connect_to_services(nic_data);1326 if (rc != EOK) {1327 ddf_msg(LVL_ERROR, "Failed to connect to services (%d)", rc);1328 goto err_irq;1329 }1330 1331 1326 fun = ddf_fun_create(nic_get_ddf_dev(nic_data), fun_exposed, "port0"); 1332 1327 if (fun == NULL) { … … 1334 1329 goto err_srv; 1335 1330 } 1331 1336 1332 nic_set_ddf_fun(nic_data, fun); 1337 1333 ddf_fun_set_ops(fun, &rtl8139_dev_ops); 1338 ddf_fun_data_implant(fun, nic_data);1339 1334 1340 1335 rc = ddf_fun_bind(fun); … … 1359 1354 ddf_fun_destroy(fun); 1360 1355 err_srv: 1361 /* XXX Disconnect from services */1362 err_irq:1363 1356 unregister_interrupt_handler(dev, rtl8139->irq); 1364 1357 err_pio: … … 2178 2171 int main(void) 2179 2172 { 2173 printf("%s: HelenOS RTL8139 network adapter driver\n", NAME); 2174 2180 2175 int rc = nic_driver_init(NAME); 2181 2176 if (rc != EOK) 2182 2177 return rc; 2183 nic_driver_implement( 2184 &rtl8139_driver_ops, &rtl8139_dev_ops, &rtl8139_nic_iface); 2178 2179 nic_driver_implement(&rtl8139_driver_ops, &rtl8139_dev_ops, 2180 &rtl8139_nic_iface); 2185 2181 2186 2182 ddf_log_init(NAME); 2187 ddf_msg(LVL_NOTE, "HelenOS RTL8139 driver started");2188 2183 return ddf_driver_main(&rtl8139_driver); 2189 2184 }
Note:
See TracChangeset
for help on using the changeset viewer.