@@ -204,7 +204,14 @@ static void e1000e_receive_init(void) {
204204 e1000e_write_command (REG_RDTR , 0 );
205205 e1000e_write_command (REG_RADV , 0 );
206206
207- e1000e_write_command (REG_RXDCTL , E1000_RXDCTL_QUEUE_ENABLE );
207+ //e1000e_write_command(REG_RXDCTL, E1000_RXDCTL_QUEUE_ENABLE);
208+ uint32_t rxdctl =
209+ (1 << 25 ) | // ENABLE
210+ (8 << 0 ) | // PTHRESH
211+ (1 << 8 ) | // HTHRESH
212+ (1 << 16 ); // WTHRESH
213+ e1000e_write_command (REG_RXDCTL , rxdctl );
214+ e1000e_write_flush ();
208215
209216 rx_cur = 0 ;
210217
@@ -252,7 +259,14 @@ static void e1000e_transmit_init(void) {
252259 e1000e_write_command (REG_TIDV , 0 );
253260 e1000e_write_command (REG_TADV , 0 );
254261
255- e1000e_write_command (REG_TXDCTL , E1000_TXDCTL_QUEUE_ENABLE );
262+ //e1000e_write_command(REG_TXDCTL, E1000_TXDCTL_QUEUE_ENABLE);
263+ uint32_t txdctl =
264+ (1 << 25 ) | // ENABLE
265+ (8 << 0 ) | // PTHRESH
266+ (1 << 8 ) | // HTHRESH
267+ (1 << 16 ); // WTHRESH
268+ e1000e_write_command (REG_TXDCTL , txdctl );
269+ e1000e_write_flush ();
256270
257271 tx_cur = 0 ;
258272
@@ -267,6 +281,9 @@ static void e1000e_transmit_init(void) {
267281
268282 e1000e_write_command (REG_TIPG , E1000E_TIPG_DEFAULT );
269283 e1000e_write_flush ();
284+
285+ e1000e_write_command (REG_TXDESCTAIL , 0 );
286+ e1000e_write_flush ();
270287}
271288
272289static void e1000e_handle_receive (void ) {
@@ -540,4 +557,4 @@ bool EXPORTED MOD_INIT_SYM(KMOD_ABI)(void) {
540557
541558bool EXPORTED MOD_EXIT_SYM (KMOD_ABI )(void ) {
542559 return false;
543- }
560+ }
0 commit comments