ladybird/Kernel/Net
Liav A 0cede94c39 Kernel/Net: Introduce a new mechanism to initialize a PCI device
Instead of using a clunky if-statement paradigm, we now have all drivers
being declaring two methods for their adapter class - create and probe.
These methods are linked in each PCINetworkDriverInitializer structure,
in a new s_initializers static list of them.
Then, when we probe for a PCI device, we use each probe method and if
there's a match, then the corresponding create method is called. After
the adapter instance is created, we call the virtual initialize method
on it, because many drivers actually require a sort of post-construction
initialization sequence to ensure the network adapter can properly
function.

As a result of this change, it's much more easy to add more drivers and
the initialization code is more readable and it's easier to understand
when and where things could fail in the whole initialization sequence.
2023-01-07 12:36:57 +01:00
..
Intel Kernel/Net: Introduce a new mechanism to initialize a PCI device 2023-01-07 12:36:57 +01:00
NE2000 Kernel/Net: Introduce a new mechanism to initialize a PCI device 2023-01-07 12:36:57 +01:00
Realtek Kernel/Net: Introduce a new mechanism to initialize a PCI device 2023-01-07 12:36:57 +01:00
ARP.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
EthernetFrameHeader.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
EtherType.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
ICMP.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
IPv4.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
IPv4Socket.cpp AK+Kernel: Handle some allocation failures in IPv4Socket and TCPSocket 2022-11-01 14:31:48 +00:00
IPv4Socket.h AK: Combine SinglyLinkedList and SinglyLinkedListWithCount 2023-01-02 20:13:24 +00:00
IPv4SocketTuple.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LocalSocket.cpp Kernel: Make sys$recvfrom() with MSG_DONTWAIT not so racy 2022-08-21 16:45:42 +02:00
LocalSocket.h Kernel: Make sys$recvfrom() with MSG_DONTWAIT not so racy 2022-08-21 16:45:42 +02:00
LoopbackAdapter.cpp Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
LoopbackAdapter.h Kernel/Net: Introduce a new mechanism to initialize a PCI device 2023-01-07 12:36:57 +01:00
NetworkAdapter.cpp Kernel: Move InterruptDisabler out of Arch directory 2022-10-17 20:11:31 +02:00
NetworkAdapter.h Kernel/Net: Introduce a new mechanism to initialize a PCI device 2023-01-07 12:36:57 +01:00
NetworkingManagement.cpp Kernel/Net: Introduce a new mechanism to initialize a PCI device 2023-01-07 12:36:57 +01:00
NetworkingManagement.h Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
NetworkTask.cpp Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
NetworkTask.h Kernel: Avoid deadlock when trying to send packets from the NetworkTask 2021-04-30 23:11:56 +02:00
Routing.cpp Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
Routing.h Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
Socket.cpp Kernel: Make sys$recvfrom() with MSG_DONTWAIT not so racy 2022-08-21 16:45:42 +02:00
Socket.h Kernel: Make sys$recvfrom() with MSG_DONTWAIT not so racy 2022-08-21 16:45:42 +02:00
TCP.h Everywhere: Remove unused includes of AK/StdLibExtras.h 2023-01-02 20:27:20 -05:00
TCPSocket.cpp Kernel: Check against TCP packet size overflows in checksum calculation 2022-12-14 15:17:05 +00:00
TCPSocket.h Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
UDP.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
UDPSocket.cpp Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
UDPSocket.h Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00