#include "src/common/shared.hpp"
#include "src/memory/memset.hpp"
#include "src/memory/align.hpp"
#include "src/memory/heap.hpp"
#include "src/memory/pager.hpp"
#include "src/arch/x86/pcibios.hpp"
#include "src/arch/x86/interr.hpp"
#include "src/arch/x86/rtc.hpp"
#include "src/common/io.hpp"
#include "src/net/net.hpp"
#include "src/net/3c556.hpp"
#include "src/thread/timer.hpp"
Idź do kodu źródłowego tego pliku.
Definicja w pliku 3c556.cpp.
#define ETH_ALEN 6 |
Definicja w linii 290 pliku 3c556.cpp.
Odwołania w a3c90x_probe(), e3c556_mac() i e3c556_transmit().
#define INT_INTERRUPTLATCH (1<<0) |
#define XMIT_RETRIES 250 |
enum Commands |
enum Registers |
enum Registers0 |
enum Registers2 |
enum Registers3 |
enum Windows |
int e3c556_irq | ( | struct Arch::x86::Interr::except2_t * | code | ) |
Definicja w linii 495 pliku 3c556.cpp.
Odwołuje się do Thread::Timer::add(), cmdTxEnable, e3c556_nif, Thread::i, IOPorts::inb(), INF_3C556, IOPorts::inw(), INF_3C556_Type::IOAddr, kprintf(), Net::onFramesReceived(), Net::onFramesTransmitted(), IOPorts::outb() i regTxStatus_b.
Odwołania w Net::init_3c556().
void e3c556_mac | ( | uint8 | d[6] | ) |
Definicja w linii 607 pliku 3c556.cpp.
Odwołuje się do ETH_ALEN, INF_3C556_Type::HWAddr, INF_3C556 i memmove().
Odwołania w e3c556_probe().
should be:exported routine that waits for a certain length of time for a packet actually only used by irq
we don't need to acknowledge rxComplete -- the upload engine does it for us.
Build the up-load descriptor
Submit the upload descriptor to the NIC
Wait for upload completion (upComplete(15) or upError (14))
Check for Error (else we have good packet)
Ok, got packet. Set length in nic->packetlen.
Definicja w linii 392 pliku 3c556.cpp.
Odwołuje się do RXD::DataAddr, RXD::DataLength, Thread::i, INF_3C556, IOPorts::inw(), INF_3C556_Type::IOAddr, kprintf(), IOPorts::outl(), INF_3C556_Type::ReceiveDPD, regCommandIntStatus_w, regUpListPtr_l, RXD::UpNextPtr, RXD::UpPktStatus i virt_to_bus.
Odwołania w Net::EthernetFrameReceptionThread() i Net::init_3c556().
int e3c556_probe | ( | uint8 | bus_no, | |
uint8 | dev_no, | |||
struct Net::netif * | nif | |||
) |
Definicja w linii 613 pliku 3c556.cpp.
Odwołuje się do cmdAcknowledgeInterrupt, cmdEnableDcConverter, cmdRxEnable, cmdRxReset, cmdSetIndicationEnable, cmdSetInterruptEnable, cmdSetRxFilter, cmdTxEnable, cmdTxReset, INF_3C556_Type::CurrentWindow, e3c556_mac(), INF_3C556_Type::eeprom, Net::netif::eth_addr, HIWORD, htons, INF_3C556_Type::HWAddr, INF_3C556, IOPorts::inl(), IOPorts::inw(), INF_3C556_Type::IOAddr, kprintf(), LOWORD, IOPorts::outl(), IOPorts::outw(), Pci32_Addr, pci32_read_configuration_dword(), pci32_read_configuration_word(), pci32_write_configuration_byte(), pci32_write_configuration_word(), PCI_BASE_ADDRESS_0, PCI_COMMAND, PCI_COMMAND_IO, PCI_COMMAND_MASTER, PCI_LATENCY_TIMER, PCI_VENDOR_ID, regInternalConfig_3_l, regResetMediaOptions_3_w, regStationAddress_2_3w, winAddressing2 i winTxRxOptions3.
Odwołania w Net::init_3c556().
exported function that transmits a packet.
d[6] | destination address, ethernet; | |
t | protocol type (ARP, IP, etc); | |
s | size of the non-header part of the packet that needs to be transmitted; | |
p | the pointer to the packet data itself. |
Definicja w linii 310 pliku 3c556.cpp.
Odwołuje się do cmdStallCtl, TXD::DataAddr, TXD::DataLength, TXD::DnNextPtr, ETH_ALEN, TXD::FrameStartHeader, TXD::HdrAddr, TXD::HdrLength, htons, INF_3C556_Type::HWAddr, INF_3C556, IOPorts::inl(), IOPorts::inw(), INF_3C556_Type::IOAddr, memmove(), IOPorts::outl(), regCommandIntStatus_w, regDnListPtr_l, INF_3C556_Type::TransmitDPD i virt_to_bus.
Odwołania w Net::init_3c556().
Definicja w linii 179 pliku 3c556.cpp.
Odwołania w Net::Arp::arp_transmit(), Net::Arp::arp_transmit_request(), Net::IP::ip_transmit(), print() i Net::Arp::processArpPacket().
Definicja w linii 186 pliku 3c556.cpp.
Odwołania w Net::IP::onIpReception(), print() i Net::ICMP::processDatagram().
uint32 virt_to_bus | ( | void * | ptr | ) | [inline] |
struct Net::netif* e3c556_nif |
Definicja w linii 611 pliku 3c556.cpp.
Odwołania w Net::Arp::arp_get_ether(), e3c556_irq(), Net::IP::ip_transmit() i VarieteThread().
struct INF_3C556_Type INF_3C556 |
Odwołania w e3c556_irq(), e3c556_mac(), e3c556_poll(), e3c556_probe() i e3c556_transmit().