2#include <irx_imports.h>
8static int NetDevAdaptorStart(
void)
14 g_ops->start(g_ops->priv, 0);
18static void NetDevAdaptorStop(
void)
24 g_ops->stop(g_ops->priv, 0);
27static void NetDevAdaptorXmit(
void)
33 g_ops->xmit(g_ops->priv, 0);
36static int NetDevAdaptorIoctl(
unsigned int command,
void *args,
unsigned int args_len,
void *output,
unsigned int length)
54 memcpy(output, g_ops->hw_addr, (length >
sizeof(g_ops->hw_addr)) ?
sizeof(g_ops->hw_addr) : length);
56 case NETMAN_NETIF_IOCTL_ETH_GET_LINK_MODE:
57 g_ops->control(g_ops->priv, sceInetNDCC_GET_NEGO_MODE, &ret2,
sizeof(ret2));
69 case NETMAN_NETIF_IOCTL_GET_LINK_STATUS:
70 g_ops->control(g_ops->priv, sceInetNDCC_GET_LINK_STATUS, &ret2,
sizeof(ret2));
71 result = (ret2 > 0) ? NETMAN_NETIF_ETH_LINK_STATE_UP : NETMAN_NETIF_ETH_LINK_STATE_DOWN;
73 case NETMAN_NETIF_IOCTL_GET_TX_DROPPED_COUNT:
74 g_ops->control(g_ops->priv, sceInetNDCC_GET_TX_ERRORS, &result,
sizeof(result));
76 case NETMAN_NETIF_IOCTL_GET_RX_DROPPED_COUNT:
77 g_ops->control(g_ops->priv, sceInetNDCC_GET_RX_ERRORS, &result,
sizeof(result));
79 case NETMAN_NETIF_IOCTL_ETH_GET_RX_EOVERRUN_CNT:
80 g_ops->control(g_ops->priv, sceInetNDCC_GET_RX_OVER_ER, &result,
sizeof(result));
82 case NETMAN_NETIF_IOCTL_ETH_GET_RX_EBADLEN_CNT:
83 g_ops->control(g_ops->priv, sceInetNDCC_GET_RX_LENGTH_ER, &result,
sizeof(result));
85 case NETMAN_NETIF_IOCTL_ETH_GET_RX_EBADFCS_CNT:
86 g_ops->control(g_ops->priv, sceInetNDCC_GET_RX_CRC_ER, &result,
sizeof(result));
88 case NETMAN_NETIF_IOCTL_ETH_GET_RX_EBADALIGN_CNT:
89 g_ops->control(g_ops->priv, sceInetNDCC_GET_RX_FRAME_ER, &result,
sizeof(result));
91 case NETMAN_NETIF_IOCTL_ETH_GET_TX_ELOSSCR_CNT:
92 g_ops->control(g_ops->priv, sceInetNDCC_GET_TX_CARRIER_ER, &result,
sizeof(result));
94 case NETMAN_NETIF_IOCTL_ETH_GET_TX_EEDEFER_CNT:
95 g_ops->control(g_ops->priv, sceInetNDCC_GET_TX_WINDOW_ER, &result,
sizeof(result));
97 case NETMAN_NETIF_IOCTL_ETH_GET_TX_ECOLL_CNT:
98 g_ops->control(g_ops->priv, sceInetNDCC_GET_COLLISIONS, &result,
sizeof(result));
100 case NETMAN_NETIF_IOCTL_ETH_GET_TX_EUNDERRUN_CNT:
101 g_ops->control(g_ops->priv, sceInetNDCC_GET_TX_FIFO_ER, &result,
sizeof(result));
107 baseMode = mode & (~NETMAN_NETIF_ETH_LINK_DISABLE_PAUSE);
108 ret2 = sceInetNDNEGO_AUTO | sceInetNDNEGO_TX_FD | sceInetNDNEGO_TX | sceInetNDNEGO_10_FD | sceInetNDNEGO_10;
113 ret2 = sceInetNDNEGO_10;
116 ret2 = sceInetNDNEGO_10_FD;
119 ret2 = sceInetNDNEGO_TX;
122 ret2 = sceInetNDNEGO_TX_FD;
129 ret2 |= sceInetNDNEGO_PAUSE;
130 g_ops->control(g_ops->priv, sceInetNDCC_SET_NEGO_MODE, &ret2,
sizeof(ret2));
132 case NETMAN_NETIF_IOCTL_ETH_GET_STATUS:
133 g_ops->control(g_ops->priv, sceInetNDCC_GET_NEGO_MODE, &ret2,
sizeof(ret2));
145 g_ops->control(g_ops->priv, sceInetNDCC_GET_LINK_STATUS, &ret2,
sizeof(ret2));
146 result = (ret2 > 0) ? NETMAN_NETIF_ETH_LINK_STATE_UP : NETMAN_NETIF_ETH_LINK_STATE_DOWN;
148 g_ops->control(g_ops->priv, sceInetNDCC_GET_TX_ERRORS, &result,
sizeof(result));
149 ((
struct NetManEthStatus *)output)->stats.RxDroppedFrameCount = result;
152 g_ops->control(g_ops->priv, sceInetNDCC_GET_RX_OVER_ER, &result,
sizeof(result));
153 ((
struct NetManEthStatus *)output)->stats.RxFrameOverrunCount = result;
154 g_ops->control(g_ops->priv, sceInetNDCC_GET_RX_LENGTH_ER, &result,
sizeof(result));
155 ((
struct NetManEthStatus *)output)->stats.RxFrameBadLengthCount = result;
156 g_ops->control(g_ops->priv, sceInetNDCC_GET_RX_CRC_ER, &result,
sizeof(result));
158 g_ops->control(g_ops->priv, sceInetNDCC_GET_RX_FRAME_ER, &result,
sizeof(result));
159 ((
struct NetManEthStatus *)output)->stats.RxFrameBadAlignmentCount = result;
160 g_ops->control(g_ops->priv, sceInetNDCC_GET_TX_ERRORS, &result,
sizeof(result));
161 ((
struct NetManEthStatus *)output)->stats.TxDroppedFrameCount = result;
164 g_ops->control(g_ops->priv, sceInetNDCC_GET_TX_CARRIER_ER, &result,
sizeof(result));
166 g_ops->control(g_ops->priv, sceInetNDCC_GET_TX_WINDOW_ER, &result,
sizeof(result));
168 g_ops->control(g_ops->priv, sceInetNDCC_GET_COLLISIONS, &result,
sizeof(result));
169 ((
struct NetManEthStatus *)output)->stats.TxFrameCollisionCount = result;
170 g_ops->control(g_ops->priv, sceInetNDCC_GET_TX_FIFO_ER, &result,
sizeof(result));
171 ((
struct NetManEthStatus *)output)->stats.TxFrameUnderrunCount = result;
172 g_ops->control(g_ops->priv, sceInetNDCC_GET_RX_DROPPED, &result,
sizeof(result));
190 strcpy(device.name, ops->module_name);
191 device.init = &NetDevAdaptorStart;
192 device.deinit = &NetDevAdaptorStop;
193 device.xmit = &NetDevAdaptorXmit;
194 device.ioctl = &NetDevAdaptorIoctl;
195 if (NetManRegisterNetIF(&device) >= 0)
199 return (g_ops != NULL) ? 0 : -1;
209 strcpy(device.name, ops->module_name);
210 NetManUnregisterNetIF(device.name);
227 NetManNetProtStackEnQRxPacket(pkt->m_reserved1);
235 memset(&pkt, 0,
sizeof(pkt));
238 len = NetManTxPacketNext(&data);
240 pkt.wp = (
void *)(((u8 *)data) + len);
241 return len ? &pkt : NULL;
244unsigned int sceInetRand(
void)
250int sceInetPrintf(
const char *fmt, ...)
264 memset(&pkt, 0,
sizeof(pkt));
265 pbuf = NetManNetProtStackAllocRxPacket(siz, &payload);
267 pkt.m_reserved1 =
pbuf;
268 return pbuf ? &pkt : NULL;
@ NETMAN_NETIF_ETH_LINK_MODE_100M_HDX
@ NETMAN_NETIF_ETH_LINK_MODE_10M_FDX
@ NETMAN_NETIF_ETH_LINK_MODE_10M_HDX
@ NETMAN_NETIF_ETH_LINK_MODE_AUTO
@ NETMAN_NETIF_ETH_LINK_MODE_100M_FDX
@ NETMAN_NETIF_IOCTL_ETH_GET_MAC
@ NETMAN_NETIF_IOCTL_ETH_SET_LINK_MODE
#define NETMAN_NETIF_ETH_LINK_DISABLE_PAUSE