sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
netman.h
Go to the documentation of this file.
1
6
7#ifndef __NETMAN_H__
8#define __NETMAN_H__
9
10#include <tamtypes.h>
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16// Common structures
17#define NETMAN_NETIF_NAME_MAX_LEN 4
18#define NETMAN_NETIF_FRAME_SIZE 1514
19#define NETMAN_FRAME_GROUP_SIZE 8 // The actual number of DMA transfer tags is twice this. The total number presented to sceSifSetDma must never exceed 32.
20
22{
23 void (*LinkStateUp)(void);
24 void (*LinkStateDown)(void);
25 void *(*AllocRxPacket)(unsigned int size, void **payload);
26 void (*FreeRxPacket)(void *packet);
27 void (*EnQRxPacket)(void *packet);
28 int (*NextTxPacket)(void **payload);
29 void (*DeQTxPacket)(void);
30 int (*AfterTxPacket)(void **payload); // For EE only, peek at the packet after the current packet.
31 void (*ReallocRxPacket)(void *packet, unsigned int size); // For EE only, update the size of the Rx packet (size will be always smaller than NETMAN_NETIF_FRAME_SIZE).
32};
33
35{
36 u32 RxDroppedFrameCount;
37 u32 RxErrorCount;
38 u16 RxFrameOverrunCount;
39 u16 RxFrameBadLengthCount;
40 u16 RxFrameBadFCSCount;
41 u16 RxFrameBadAlignmentCount;
42 u32 TxDroppedFrameCount;
43 u32 TxErrorCount;
44 u16 TxFrameLOSSCRCount;
45 u16 TxFrameEDEFERCount;
46 u16 TxFrameCollisionCount;
47 u16 TxFrameUnderrunCount;
48 u16 RxAllocFail;
49};
50
52{
53 u8 LinkStatus, LinkMode;
54 struct NetManEthRuntimeStats stats;
55};
56
58#define NETMAN_NETIF_ETH_LINK_DISABLE_PAUSE 0x40
59
74
75enum NETMAN_NETIF_ETH_LINK_STATE {
76 NETMAN_NETIF_ETH_LINK_STATE_DOWN = 0,
77 NETMAN_NETIF_ETH_LINK_STATE_UP
78};
79
81 // Ethernet I/F-only IOCTL codes
84 // Function codes with no input and no output; the result is in the return value.
85 NETMAN_NETIF_IOCTL_ETH_GET_LINK_MODE,
86 NETMAN_NETIF_IOCTL_ETH_GET_RX_EOVERRUN_CNT,
87 NETMAN_NETIF_IOCTL_ETH_GET_RX_EBADLEN_CNT,
88 NETMAN_NETIF_IOCTL_ETH_GET_RX_EBADFCS_CNT,
89 NETMAN_NETIF_IOCTL_ETH_GET_RX_EBADALIGN_CNT,
90 NETMAN_NETIF_IOCTL_ETH_GET_TX_ELOSSCR_CNT,
91 NETMAN_NETIF_IOCTL_ETH_GET_TX_EEDEFER_CNT,
92 NETMAN_NETIF_IOCTL_ETH_GET_TX_ECOLL_CNT,
93 NETMAN_NETIF_IOCTL_ETH_GET_TX_EUNDERRUN_CNT,
94 // Returns struct NetManEthStatus
95 NETMAN_NETIF_IOCTL_ETH_GET_STATUS,
96
99
100 // Dial-up I/F-only IOCTL codes
101 // 0x2000
102
103 // Common IOCTL codes
104 NETMAN_NETIF_IOCTL_GET_LINK_STATUS = 0x3000,
105 NETMAN_NETIF_IOCTL_GET_TX_DROPPED_COUNT,
106 NETMAN_NETIF_IOCTL_GET_RX_DROPPED_COUNT,
107};
108
109//*** Higher-level services, for the running user program ***
110// Initialization and deinitialization functions, for the EE side.
111#ifdef _EE
112
113extern int NetManInit(void);
114extern void NetManDeinit(void);
115
116#endif
117
118// Network Interface (IF) control.
119extern int NetManGetGlobalNetIFLinkState(void);
120extern int NetManSetMainIF(const char *name);
121extern int NetManQueryMainIF(char *name);
122
123//*** System functions for either the Network IF driver or the network protocol stack ***
124// For the network protocol stack to initialize/deinitialize NETMAN.
125extern int NetManRegisterNetworkStack(const struct NetManNetProtStack *stack);
126extern void NetManUnregisterNetworkStack(void);
127
128/* Common network Interface (IF) management functions. Used by the user program and the protocol stack. */
129extern int NetManIoctl(unsigned int command, void *args, unsigned int args_len, void *output, unsigned int length);
130extern int NetManSetLinkMode(int mode);
131
132/* Network Interface (IF) management functions. Used by the protocol stack. */
133extern void NetManNetIFXmit(void); // Notify the interface of available packets. May be called from the interrupt context.
134
135/* Network protocol stack management functions. Used by the Network InterFace (IF) driver. */
136extern void *NetManNetProtStackAllocRxPacket(unsigned int length, void **payload);
137extern void NetManNetProtStackFreeRxPacket(void *packet);
138extern void NetManNetProtStackEnQRxPacket(void *packet);
139extern int NetManTxPacketNext(void **payload);
140extern void NetManTxPacketDeQ(void);
141
142extern int NetManTxPacketAfter(void **payload); // For EE only, for NETMAN's internal use.
143extern void NetManNetProtStackReallocRxPacket(void *packet, unsigned int length); // For EE only, for NETMAN's internal use.
144
145/* NETIF flags. */
147#define NETMAN_NETIF_IN_USE 0x80
149#define NETMAN_NETIF_ETHERNET 1
151#define NETMAN_NETIF_DIALUP 2
153#define NETMAN_NETIF_LINK_UP 4
154
156{
157 char name[NETMAN_NETIF_NAME_MAX_LEN];
158 unsigned short int flags;
160 short int id;
161 int (*init)(void);
162 void (*deinit)(void);
163 void (*xmit)(void);
164 int (*ioctl)(unsigned int command, void *args, unsigned int args_len, void *output, unsigned int length);
165 int EventFlagID;
166};
167
168// IF event flag bits, set by NETMAN
169#define NETMAN_NETIF_EVF_UP 0x01
170#define NETMAN_NETIF_EVF_DOWN 0x02
171
172#define NETMAN_MAX_NETIF_COUNT 2
173
174/* Network InterFace (IF) management functions. Used by the network InterFace (IF). */
175extern int NetManRegisterNetIF(struct NetManNetIF *NetIF);
176extern void NetManUnregisterNetIF(const char *name);
177extern void NetManToggleNetIFLinkState(int NetIFID, unsigned char state); // Also toggles NETMAN_NETIF_EVF_UP and NETMAN_NETIF_EVF_DOWN
178
179#ifdef _IOP
180
181#define netman_IMPORTS_start DECLARE_IMPORT_TABLE(netman, 3, 1)
182#define netman_IMPORTS_end END_IMPORT_TABLE
183
184#define I_NetManRegisterNetworkStack DECLARE_IMPORT(4, NetManRegisterNetworkStack)
185#define I_NetManUnregisterNetworkStack DECLARE_IMPORT(5, NetManUnregisterNetworkStack)
186
187#define I_NetManNetIFXmit DECLARE_IMPORT(6, NetManNetIFXmit)
188#define I_NetManIoctl DECLARE_IMPORT(7, NetManIoctl)
189
190#define I_NetManNetProtStackAllocPacket DECLARE_IMPORT(8, NetManNetProtStackAllocRxPacket)
191#define I_NetManNetProtStackFreePacket DECLARE_IMPORT(9, NetManNetProtStackFreeRxPacket)
192#define I_NetManNetProtStackEnQPacket DECLARE_IMPORT(10, NetManNetProtStackEnQRxPacket)
193
194#define I_NetManRegisterNetIF DECLARE_IMPORT(11, NetManRegisterNetIF)
195#define I_NetManUnregisterNetIF DECLARE_IMPORT(12, NetManUnregisterNetIF)
196#define I_NetManToggleNetIFLinkState DECLARE_IMPORT(13, NetManToggleNetIFLinkState)
197#define I_NetManGetGlobalNetIFLinkState DECLARE_IMPORT(14, NetManGetGlobalNetIFLinkState)
198
199#define I_NetManSetMainIF DECLARE_IMPORT(15, NetManSetMainIF)
200#define I_NetManQueryMainIF DECLARE_IMPORT(16, NetManQueryMainIF)
201
202#define I_NetManSetLinkMode DECLARE_IMPORT(17, NetManSetLinkMode)
203
204#define I_NetManTxPacketNext DECLARE_IMPORT(18, NetManTxPacketNext)
205#define I_NetManTxPacketDeQ DECLARE_IMPORT(19, NetManTxPacketDeQ)
206
207#endif
208
209#ifdef __cplusplus
210}
211#endif
212
213#endif /* __NETMAN_H__ */
NETMAN_NETIF_ETH_LINK_MODE
Definition netman.h:60
@ NETMAN_NETIF_ETH_LINK_MODE_100M_HDX
Definition netman.h:68
@ NETMAN_NETIF_ETH_LINK_MODE_10M_FDX
Definition netman.h:66
@ NETMAN_NETIF_ETH_LINK_MODE_10M_HDX
Definition netman.h:64
@ NETMAN_NETIF_ETH_LINK_MODE_AUTO
Definition netman.h:62
@ NETMAN_NETIF_ETH_LINK_MODE_100M_FDX
Definition netman.h:70
NETMAN_NETIF_IOCTL_CODES
Definition netman.h:80
@ NETMAN_NETIF_IOCTL_ETH_GET_MAC
Definition netman.h:83
@ NETMAN_NETIF_IOCTL_ETH_SET_LINK_MODE
Definition netman.h:98
short int id
Definition netman.h:160