Changeset 60744cb in mainline for uspace/drv/nic
- Timestamp:
- 2024-05-17T17:51:56Z (23 months ago)
- Branches:
- master
- Children:
- 1801005
- Parents:
- 646849b3
- Location:
- uspace/drv/nic
- Files:
-
- 5 edited
-
e1k/e1k.c (modified) (2 diffs)
-
ne2k/ne2k.c (modified) (3 diffs)
-
rtl8139/driver.c (modified) (2 diffs)
-
rtl8169/driver.c (modified) (6 diffs)
-
virtio-net/virtio-net.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/nic/e1k/e1k.c
r646849b3 r60744cb 1244 1244 * 1245 1245 * @param icall IPC call structure 1246 * @param dev E1000 device 1247 * 1248 */ 1249 static void e1000_interrupt_handler(ipc_call_t *icall, 1250 ddf_dev_t *dev) 1246 * @param arg Argument (nic_t *) 1247 * 1248 */ 1249 static void e1000_interrupt_handler(ipc_call_t *icall, void *arg) 1251 1250 { 1252 1251 uint32_t icr = (uint32_t) ipc_get_arg2(icall); 1253 nic_t *nic = NIC_DATA_DEV(dev);1252 nic_t *nic = (nic_t *)arg; 1254 1253 e1000_t *e1000 = DRIVER_DATA_NIC(nic); 1255 1254 … … 1283 1282 1284 1283 errno_t rc = register_interrupt_handler(nic_get_ddf_dev(nic), e1000->irq, 1285 e1000_interrupt_handler, &e1000_irq_code, handle);1284 e1000_interrupt_handler, (void *)nic, &e1000_irq_code, handle); 1286 1285 1287 1286 fibril_mutex_unlock(&irq_reg_mutex); -
uspace/drv/nic/ne2k/ne2k.c
r646849b3 r60744cb 121 121 }; 122 122 123 static void ne2k_interrupt_handler(ipc_call_t *, ddf_dev_t*);123 static void ne2k_interrupt_handler(ipc_call_t *, void *); 124 124 125 125 static errno_t ne2k_register_interrupt(nic_t *nic_data, … … 161 161 162 162 return register_interrupt_handler(nic_get_ddf_dev(nic_data), 163 ne2k->irq, ne2k_interrupt_handler, &ne2k->code, handle); 163 ne2k->irq, ne2k_interrupt_handler, (void *)nic_data, &ne2k->code, 164 handle); 164 165 } 165 166 … … 237 238 } 238 239 239 void ne2k_interrupt_handler(ipc_call_t *call, ddf_dev_t *dev) 240 { 241 nic_t *nic_data = DRIVER_DATA(dev); 240 /** NE2K interrupt handler 241 * 242 * @param call IRQ event notification 243 * @param arg Argument (nic_t *) 244 */ 245 void ne2k_interrupt_handler(ipc_call_t *call, void *arg) 246 { 247 nic_t *nic_data = (nic_t *)arg; 242 248 ne2k_interrupt(nic_data, IRQ_GET_ISR(*call), IRQ_GET_TSR(*call)); 243 249 } -
uspace/drv/nic/rtl8139/driver.c
r646849b3 r60744cb 819 819 * 820 820 * @param icall The IPC call structure 821 * @param dev The rtl8139 device 822 * 823 */ 824 static void rtl8139_interrupt_handler(ipc_call_t *icall, ddf_dev_t *dev) 825 { 826 assert(dev); 827 assert(icall); 828 821 * @param arg Argument (nic_t *) 822 * 823 */ 824 static void rtl8139_interrupt_handler(ipc_call_t *icall, void *arg) 825 { 829 826 uint16_t isr = (uint16_t) ipc_get_arg2(icall); 830 nic_t *nic_data = nic_get_from_ddf_dev(dev);827 nic_t *nic_data = (nic_t *)arg; 831 828 rtl8139_t *rtl8139 = nic_get_specific(nic_data); 832 829 … … 861 858 rtl8139_irq_code.cmds[3].addr = rtl8139->io_addr + IMR; 862 859 errno_t rc = register_interrupt_handler(nic_get_ddf_dev(nic_data), 863 rtl8139->irq, rtl8139_interrupt_handler, &rtl8139_irq_code, handle); 860 rtl8139->irq, rtl8139_interrupt_handler, (void *)nic_data, 861 &rtl8139_irq_code, handle); 864 862 865 863 RTL8139_IRQ_STRUCT_UNLOCK(); -
uspace/drv/nic/rtl8169/driver.c
r646849b3 r60744cb 74 74 static errno_t rtl8169_on_stopped(nic_t *nic_data); 75 75 static void rtl8169_send_frame(nic_t *nic_data, void *data, size_t size); 76 static void rtl8169_irq_handler(ipc_call_t *icall, ddf_dev_t *dev);76 static void rtl8169_irq_handler(ipc_call_t *icall, void *); 77 77 static inline errno_t rtl8169_register_int_handler(nic_t *nic_data, 78 78 cap_irq_handle_t *handle); … … 372 372 rtl8169_irq_code.cmds[3].addr = rtl8169->regs + IMR; 373 373 errno_t rc = register_interrupt_handler(nic_get_ddf_dev(nic_data), 374 rtl8169->irq, rtl8169_irq_handler, &rtl8169_irq_code, handle); 374 rtl8169->irq, rtl8169_irq_handler, (void *)rtl8169, 375 &rtl8169_irq_code, handle); 375 376 376 377 return rc; … … 1033 1034 } 1034 1035 1035 static void rtl8169_irq_handler(ipc_call_t *icall, ddf_dev_t *dev) 1036 { 1037 assert(dev); 1038 assert(icall); 1039 1036 /** RTL8169 IRQ handler. 1037 * 1038 * @param icall IRQ event notification 1039 * @param arg Argument (rtl8169_t *) 1040 */ 1041 static void rtl8169_irq_handler(ipc_call_t *icall, void *arg) 1042 { 1040 1043 uint16_t isr = (uint16_t) ipc_get_arg2(icall) & INT_KNOWN; 1041 nic_t *nic_data = nic_get_from_ddf_dev(dev); 1042 rtl8169_t *rtl8169 = nic_get_specific(nic_data); 1044 rtl8169_t *rtl8169 = (rtl8169_t *)arg; 1043 1045 1044 1046 ddf_msg(LVL_DEBUG, "rtl8169_irq_handler(): isr=0x%04x", isr); … … 1050 1052 /* Packet underrun or link change */ 1051 1053 if (isr & INT_PUN) { 1052 rtl8169_link_change( dev);1054 rtl8169_link_change(rtl8169->dev); 1053 1055 pio_write_16(rtl8169->regs + ISR, INT_PUN); 1054 1056 } … … 1056 1058 /* Transmit notification */ 1057 1059 if (isr & (INT_TER | INT_TOK | INT_TDU)) { 1058 rtl8169_transmit_done( dev);1060 rtl8169_transmit_done(rtl8169->dev); 1059 1061 pio_write_16(rtl8169->regs + ISR, (INT_TER | INT_TOK | INT_TDU)); 1060 1062 } … … 1072 1074 1073 1075 if (isr & (INT_RER | INT_ROK)) { 1074 rtl8169_receive_done( dev);1076 rtl8169_receive_done(rtl8169->dev); 1075 1077 pio_write_16(rtl8169->regs + ISR, (INT_RER | INT_ROK)); 1076 1078 } -
uspace/drv/nic/virtio-net/virtio-net.c
r646849b3 r60744cb 70 70 }; 71 71 72 static void virtio_net_irq_handler(ipc_call_t *icall, ddf_dev_t *dev) 73 { 74 nic_t *nic = ddf_dev_data_get(dev); 72 /** VirtIO net IRQ handler. 73 * 74 * @param icall IRQ event notification 75 * @param arg Argument (nic_t *) 76 */ 77 static void virtio_net_irq_handler(ipc_call_t *icall, void *arg) 78 { 79 nic_t *nic = (nic_t *)arg; 75 80 virtio_net_t *virtio_net = nic_get_specific(nic); 76 81 virtio_dev_t *vdev = &virtio_net->virtio_dev; … … 164 169 165 170 return register_interrupt_handler(dev, virtio_net->irq, 166 virtio_net_irq_handler, &irq_code, &virtio_net->irq_handle); 171 virtio_net_irq_handler, (void *)nic, &irq_code, 172 &virtio_net->irq_handle); 167 173 } 168 174
Note:
See TracChangeset
for help on using the changeset viewer.
