22#include "main.h"
33#include "ipstack.h"
44
5- int SMAPCommonTxPacketNext (struct SmapDriverData * SmapDrivPrivData , void * * data )
5+ #ifdef BUILDING_SMAP_NETDEV
6+ #include <thevent.h>
7+ #endif
8+
9+ int SMAPCommonTxPacketNext (struct SmapDriverData * SmapDrivPrivData , void * * data , void * * pbuf )
610{
711#ifdef BUILDING_SMAP_MODULAR
812 {
@@ -20,15 +24,49 @@ int SMAPCommonTxPacketNext(struct SmapDriverData *SmapDrivPrivData, void **data)
2024 }
2125#endif
2226#if defined(BUILDING_SMAP_NETMAN )
27+ (void )SmapDrivPrivData ;
28+ (void )pbuf ;
2329 return NetManTxPacketNext (data );
2430#elif defined(BUILDING_SMAP_PS2IP )
31+ (void )SmapDrivPrivData ;
32+ (void )pbuf ;
2533 return SMapTxPacketNext (data );
34+ #elif defined(BUILDING_SMAP_NETDEV )
35+ while (1 ) {
36+ sceInetPkt_t * pkt ;
37+ u8 * rp ;
38+ unsigned int length ;
39+ pkt = sceInetPktDeQ (& SmapDrivPrivData -> m_devops .sndq );
40+ if (pkt == NULL ) {
41+ return 0 ;
42+ }
43+ rp = pkt -> rp ;
44+ length = pkt -> wp - rp ;
45+ if (length == 0 || ((uiptr )rp & 3 ) != 0 ) {
46+ sceInetPrintf ("smap: dropped\n" );
47+ SmapDrivPrivData -> RuntimeStats_NetDev .m_Tx_Dropped += 1 ;
48+
49+ #ifdef BUILDING_SMAP_NETDEV
50+ SmapDrivPrivData -> RuntimeStats_NetDev .m_Tx_Bytes += length ;
51+ SmapDrivPrivData -> RuntimeStats_NetDev .m_Tx_Packets += 1 ;
52+ #endif
53+
54+ sceInetFreePkt (& SmapDrivPrivData -> m_devops , pkt );
55+ continue ;
56+ }
57+ * pbuf = pkt ;
58+ * data = rp ;
59+ return length ;
60+ }
2661#else
62+ (void )SmapDrivPrivData ;
63+ (void )data ;
64+ (void )pbuf ;
2765 return 0 ;
2866#endif
2967}
3068
31- void SMAPCommonTxPacketDeQ (struct SmapDriverData * SmapDrivPrivData , void * * data )
69+ void SMAPCommonTxPacketDeQ (struct SmapDriverData * SmapDrivPrivData , void * * data , void * * pbuf )
3270{
3371#ifdef BUILDING_SMAP_MODULAR
3472 {
@@ -45,9 +83,18 @@ void SMAPCommonTxPacketDeQ(struct SmapDriverData *SmapDrivPrivData, void **data)
4583 (void )data ;
4684#endif
4785#if defined(BUILDING_SMAP_NETMAN )
86+ (void )SmapDrivPrivData ;
87+ (void )pbuf ;
4888 NetManTxPacketDeQ ();
4989#elif defined(BUILDING_SMAP_PS2IP )
90+ (void )SmapDrivPrivData ;
91+ (void )pbuf ;
5092 SMapTxPacketDeQ ();
93+ #elif defined(BUILDING_SMAP_NETDEV )
94+ sceInetFreePkt (& SmapDrivPrivData -> m_devops , * pbuf );
95+ #else
96+ (void )SmapDrivPrivData ;
97+ (void )pbuf ;
5198#endif
5299}
53100
@@ -96,6 +143,8 @@ void SMapCommonLinkStateUp(struct SmapDriverData *SmapDrivPrivData)
96143 (void )SmapDrivPrivData ;
97144
98145 PS2IPLinkStateUp ();
146+ #elif defined(BUILDING_SMAP_NETDEV )
147+ SetEventFlag (SmapDrivPrivData -> m_devops .evfid , sceInetDevEFP_StartDone );
99148#else
100149 (void )SmapDrivPrivData ;
101150#endif
@@ -120,8 +169,10 @@ void *SMapCommonStackAllocRxPacket(struct SmapDriverData *SmapDrivPrivData, u16
120169 }
121170#endif
122171#if defined(BUILDING_SMAP_NETMAN )
172+ (void )SmapDrivPrivData ;
123173 pbuf = NetManNetProtStackAllocRxPacket (LengthRounded , payload );
124174#elif defined(BUILDING_SMAP_PS2IP )
175+ (void )SmapDrivPrivData ;
125176 struct pbuf * pbuf_struct ;
126177
127178 pbuf_struct = pbuf_alloc (PBUF_RAW , LengthRounded , PBUF_POOL );
@@ -130,7 +181,15 @@ void *SMapCommonStackAllocRxPacket(struct SmapDriverData *SmapDrivPrivData, u16
130181 if (pbuf_struct != NULL && payload != NULL ) {
131182 * payload = pbuf_struct -> payload ;
132183 }
184+ #elif defined(BUILDING_SMAP_NETDEV )
185+ sceInetPkt_t * pkt ;
186+ pkt = sceInetAllocPkt (& SmapDrivPrivData -> m_devops , LengthRounded );
187+ if (pkt != NULL && payload != NULL ) {
188+ * payload = pkt -> wp ;
189+ }
190+ pbuf = pkt ;
133191#else
192+ (void )SmapDrivPrivData ;
134193 (void )LengthRounded ;
135194 if (payload != NULL ) {
136195 * payload = NULL ;
@@ -140,7 +199,7 @@ void *SMapCommonStackAllocRxPacket(struct SmapDriverData *SmapDrivPrivData, u16
140199 return pbuf ;
141200}
142201
143- void SMapStackEnQRxPacket (struct SmapDriverData * SmapDrivPrivData , void * pbuf )
202+ void SMapStackEnQRxPacket (struct SmapDriverData * SmapDrivPrivData , void * pbuf , u16 length )
144203{
145204#ifdef BUILDING_SMAP_MODULAR
146205 {
@@ -155,10 +214,24 @@ void SMapStackEnQRxPacket(struct SmapDriverData *SmapDrivPrivData, void *pbuf)
155214 }
156215#endif
157216#if defined(BUILDING_SMAP_NETMAN )
217+ (void )SmapDrivPrivData ;
218+ (void )length ;
158219 NetManNetProtStackEnQRxPacket (pbuf );
159220#elif defined(BUILDING_SMAP_PS2IP )
221+ (void )SmapDrivPrivData ;
222+ (void )length ;
160223 SMapLowLevelInput (pbuf );
224+ #elif defined(BUILDING_SMAP_NETDEV )
225+ {
226+ sceInetPkt_t * pkt ;
227+
228+ pkt = (sceInetPkt_t * )pbuf ;
229+ pkt -> wp = & pkt -> rp [length ];
230+ sceInetPktEnQ (& SmapDrivPrivData -> m_devops .rcvq , pkt );
231+ }
161232#else
233+ (void )SmapDrivPrivData ;
234+ (void )length ;
162235 (void )pbuf ;
163236#endif
164237}
0 commit comments