sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
netdev.h
Go to the documentation of this file.
1/*
2# _____ ___ ____ ___ ____
3# ____| | ____| | | |____|
4# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5#-----------------------------------------------------------------------
6# Copyright ps2dev - http://www.ps2dev.org
7# Licenced under Academic Free License version 2.0
8# Review ps2sdk README & LICENSE files for further details.
9*/
10
15#ifndef _NETDEV_H
16#define _NETDEV_H
17
18#include <tamtypes.h>
19
20#define sceInetBus_Unknown 0
21#define sceInetBus_USB 1
22#define sceInetBus_1394 2
23#define sceInetBus_PCMCIA 3
24#define sceInetBus_PSEUDO 4
25#define sceInetBus_NIC 5
26
27#define sceInetDevProtVer 2
28
29#define sceInetDevF_Up 0x0001
30#define sceInetDevF_Running 0x0002
31#define sceInetDevF_Broadcast 0x0004
32#define sceInetDevF_ARP 0x0010
33#define sceInetDevF_DHCP 0x0020
34#define sceInetDevF_PPP 0x0040
35#define sceInetDevF_NIC 0x0080
36#define sceInetDevF_Error 0x0100
37#define sceInetDevF_PPPoE 0x0200
38#define sceInetDevF_Multicast 0x0400
39
40#define sceInetDevEFP_StartDone 0x00000001
41#define sceInetDevEFP_PlugOut 0x00000002
42#define sceInetDevEFP_Recv 0x00000004
43#define sceInetDevEFP_Error 0x00000010
44#define sceInetDevEFP_TimeOut 0x00000020
45#define sceInetDevEFP_InetUse 0xffff0000
46
47#define sceInetDevDHCP_RelOnStop 0x00000001
48
49#define sceInetNDCC_GET_THPRI 0x80000000
50#define sceInetNDCC_SET_THPRI 0x81000000
51#define sceInetNDCC_GET_IF_TYPE 0x80000100
52#define sceInetNDCC_GET_RX_PACKETS 0x80010000
53#define sceInetNDCC_GET_TX_PACKETS 0x80010001
54#define sceInetNDCC_GET_RX_BYTES 0x80010002
55#define sceInetNDCC_GET_TX_BYTES 0x80010003
56#define sceInetNDCC_GET_RX_ERRORS 0x80010004
57#define sceInetNDCC_GET_TX_ERRORS 0x80010005
58#define sceInetNDCC_GET_RX_DROPPED 0x80010006
59#define sceInetNDCC_GET_TX_DROPPED 0x80010007
60#define sceInetNDCC_GET_RX_BROADCAST_PACKETS 0x80010008
61#define sceInetNDCC_GET_TX_BROADCAST_PACKETS 0x80010009
62#define sceInetNDCC_GET_RX_BROADCAST_BYTES 0x8001000a
63#define sceInetNDCC_GET_TX_BROADCAST_BYTES 0x8001000b
64#define sceInetNDCC_GET_RX_MULTICAST_PACKETS 0x8001000c
65#define sceInetNDCC_GET_TX_MULTICAST_PACKETS 0x8001000d
66#define sceInetNDCC_GET_RX_MULTICAST_BYTES 0x8001000e
67#define sceInetNDCC_GET_TX_MULTICAST_BYTES 0x8001000f
68
69#define sceInetNDIFT_GENERIC 0x00000000
70#define sceInetNDIFT_ETHERNET 0x00000001
71#define sceInetNDIFT_PPP 0x00000002
72
73#define sceInetNDCC_GET_MULTICAST 0x80011000
74#define sceInetNDCC_GET_COLLISIONS 0x80011001
75#define sceInetNDCC_GET_RX_LENGTH_ER 0x80011002
76#define sceInetNDCC_GET_RX_OVER_ER 0x80011003
77#define sceInetNDCC_GET_RX_CRC_ER 0x80011004
78#define sceInetNDCC_GET_RX_FRAME_ER 0x80011005
79#define sceInetNDCC_GET_RX_FIFO_ER 0x80011006
80#define sceInetNDCC_GET_RX_MISSED_ER 0x80011007
81#define sceInetNDCC_GET_TX_ABORTED_ER 0x80011008
82#define sceInetNDCC_GET_TX_CARRIER_ER 0x80011009
83#define sceInetNDCC_GET_TX_FIFO_ER 0x8001100a
84#define sceInetNDCC_GET_TX_HEARTBEAT_ER 0x8001100b
85#define sceInetNDCC_GET_TX_WINDOW_ER 0x8001100c
86#define sceInetNDCC_GET_NEGO_MODE 0x80020000
87#define sceInetNDCC_SET_NEGO_MODE 0x81020000
88#define sceInetNDCC_GET_NEGO_STATUS 0x80020001
89#define sceInetNDCC_GET_LINK_STATUS 0x80030000
90#define sceInetNDCC_SET_MULTICAST_LIST 0x81040000
91
92#define sceInetNDNEGO_10 0x0001
93#define sceInetNDNEGO_10_FD 0x0002
94#define sceInetNDNEGO_TX 0x0004
95#define sceInetNDNEGO_TX_FD 0x0008
96#define sceInetNDNEGO_PAUSE 0x0040
97#define sceInetNDNEGO_AUTO 0x0080
98
99typedef struct sceInetPkt
100{
101 struct sceInetPkt *forw;
102 struct sceInetPkt *back;
103#ifdef NETDEV_OPAQUE
104 int reserved[2];
105#else
106 void *m_reserved1;
107 void *m_reserved2;
108#endif
109 u8 *rp;
110 u8 *wp;
111} sceInetPkt_t;
112
113typedef struct sceInetPktQ
114{
115 struct sceInetPkt *head;
116 struct sceInetPkt *tail;
117} sceInetPktQ_t;
118
119typedef struct sceInetDevOps
120{
121 struct sceInetDevOps *forw;
122 struct sceInetDevOps *back;
123 char interface[9];
124 char *module_name;
125 char *vendor_name;
126 char *device_name;
127 u8 bus_type;
128 u8 bus_loc[31];
129 u16 prot_ver;
130 u16 impl_ver;
131 void *priv;
132 int flags;
133 int evfid;
134 struct sceInetPktQ rcvq;
135 struct sceInetPktQ sndq;
136 int (*start)(void *priv, int flags);
137 int (*stop)(void *priv, int flags);
138 int (*xmit)(void *priv, int flags);
139 int (*control)(void *priv, int code, void *ptr, int len);
140 unsigned int ip_addr;
141 unsigned int ip_mask;
142 unsigned int broad_addr;
143 unsigned int gw_addr;
144 unsigned int ns_addr1;
145 int mtu;
146 u8 hw_addr[16];
147 u8 dhcp_hostname[256];
148 int dhcp_hostname_len;
149 int dhcp_flags;
150 void *reserved[4];
151 unsigned int ns_addr2;
152 void *pppoe_priv;
153} sceInetDevOps_t;
154
155extern int sceInetRegisterNetDevice(sceInetDevOps_t *ops);
156extern int sceInetUnregisterNetDevice(sceInetDevOps_t *ops);
157extern void *sceInetAllocMem(sceInetDevOps_t *ops, int siz);
158extern void sceInetFreeMem(sceInetDevOps_t *ops, void *ptr);
159extern void sceInetPktEnQ(sceInetPktQ_t *que, sceInetPkt_t *pkt);
160extern sceInetPkt_t *sceInetPktDeQ(sceInetPktQ_t *que);
161extern unsigned int sceInetRand(void);
162extern int sceInetPrintf(const char *fmt, ...);
163extern sceInetPkt_t *sceInetAllocPkt(sceInetDevOps_t *ops, int siz);
164extern void sceInetFreePkt(sceInetDevOps_t *ops, sceInetPkt_t *pkt);
165// TODO: sceInetRegisterPPPoE
166// TODO: sceInetUnregisterPPPoE
167
168#define netdev_IMPORTS_start DECLARE_IMPORT_TABLE(netdev, 1, 1)
169#define netdev_IMPORTS_end END_IMPORT_TABLE
170
171#define I_sceInetRegisterNetDevice DECLARE_IMPORT(4, sceInetRegisterNetDevice)
172#define I_sceInetUnregisterNetDevice DECLARE_IMPORT(5, sceInetUnregisterNetDevice)
173#define I_sceInetAllocMem DECLARE_IMPORT(6, sceInetAllocMem)
174#define I_sceInetFreeMem DECLARE_IMPORT(7, sceInetFreeMem)
175#define I_sceInetPktEnQ DECLARE_IMPORT(8, sceInetPktEnQ)
176#define I_sceInetPktDeQ DECLARE_IMPORT(9, sceInetPktDeQ)
177#define I_sceInetRand DECLARE_IMPORT(10, sceInetRand)
178#define I_sceInetPrintf DECLARE_IMPORT(11, sceInetPrintf)
179#define I_sceInetAllocPkt DECLARE_IMPORT(12, sceInetAllocPkt)
180#define I_sceInetFreePkt DECLARE_IMPORT(13, sceInetFreePkt)
181#define I_sceInetRegisterPPPoE DECLARE_IMPORT(14, sceInetRegisterPPPoE)
182#define I_sceInetUnregisterPPPoE DECLARE_IMPORT(15, sceInetUnregisterPPPoE)
183
184#endif