summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-25 22:57:30 +0200
committerMiguel <m.i@gmx.at>2018-09-25 22:57:30 +0200
commit065de9ace593e41a59ed21b713c5fffbec759d50 (patch)
treed4ca509bf23cecf388246e18ec93127c9e89be0d /driver
parentf93f24f3a5ca4692a28ab4970bbf158e1f486074 (diff)
ip/icmp checksum fix
Diffstat (limited to 'driver')
-rw-r--r--driver/e1000.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/driver/e1000.c b/driver/e1000.c
index 4964dd1..31e1b45 100644
--- a/driver/e1000.c
+++ b/driver/e1000.c
@@ -132,7 +132,7 @@
*/
// buffers
-#define E1000_NUM_RX_DESC 32
+#define E1000_NUM_RX_DESC 16
#define E1000_NUM_TX_DESC 8
// TODO: move all global stuff to some struct so we can run multiple e1000 cards!
@@ -412,7 +412,7 @@ void txinit()
void e1000_handleReceive()
{
- while((rx_descs[rx_cur]->status !=0))
+ while((rx_descs[rx_cur]->status & 0x1 ))
{
uint16_t old_cur;
uint8_t *buf = rx_descs[rx_cur]->addr_lo;
@@ -426,6 +426,8 @@ void e1000_handleReceive()
old_cur = rx_cur;
rx_cur = (rx_cur + 1) % E1000_NUM_RX_DESC;
writeCommand(REG_RDT, old_cur );
+ klog("RDT %d",readCommand(REG_RDT));
+ klog("RDH %d",readCommand(REG_RDH));
}
}
@@ -440,6 +442,8 @@ int e1000_sendPacket(const void * p_data, uint16_t p_len)
uint8_t old_cur = tx_cur;
tx_cur = (tx_cur + 1) % E1000_NUM_TX_DESC;
writeCommand(REG_TDT, tx_cur);
+ klog("TDT %d",readCommand(REG_TDT));
+ klog("TDH %d",readCommand(REG_TDH));
while(!(tx_descs[old_cur]->status & 0xff)); // TODO: seriously wait here!?!?!?
return 0;
}