|
@@ -22,8 +22,6 @@
|
|
|
#include "config.h"
|
|
#include "config.h"
|
|
|
#include "network.h"
|
|
#include "network.h"
|
|
|
|
|
|
|
|
-extern bool g_log_debug;
|
|
|
|
|
-
|
|
|
|
|
static bool scsiNetworkEnabled = false;
|
|
static bool scsiNetworkEnabled = false;
|
|
|
|
|
|
|
|
static uint8_t scsiNetworkPacketsInbound[NETWORK_PACKET_QUEUE_SIZE][NETWORK_PACKET_MAX_SIZE];
|
|
static uint8_t scsiNetworkPacketsInbound[NETWORK_PACKET_QUEUE_SIZE][NETWORK_PACKET_MAX_SIZE];
|
|
@@ -103,10 +101,7 @@ int scsiNetworkCommand()
|
|
|
uint8_t command = scsiDev.cdb[0];
|
|
uint8_t command = scsiDev.cdb[0];
|
|
|
uint8_t cont = (scsiDev.cdb[5] == 0x80);
|
|
uint8_t cont = (scsiDev.cdb[5] == 0x80);
|
|
|
|
|
|
|
|
- if (g_log_debug)
|
|
|
|
|
- {
|
|
|
|
|
- logmsg_f("in scsiNetworkCommand with command 0x%02x (size %d)", command, size);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ DBGMSG_F("------ in scsiNetworkCommand with command 0x%02x (size %d)", command, size);
|
|
|
|
|
|
|
|
switch (command) {
|
|
switch (command) {
|
|
|
case 0x08:
|
|
case 0x08:
|
|
@@ -139,10 +134,7 @@ int scsiNetworkCommand()
|
|
|
psize = size - 6;
|
|
psize = size - 6;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (g_log_debug)
|
|
|
|
|
- {
|
|
|
|
|
- logmsg_f("%s: sending packet[%d] to host of size %zu + 6", __func__, scsiNetworkPacketInboundReadIndex, psize);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ DBGMSG_F("%s: sending packet[%d] to host of size %zu + 6", __func__, scsiNetworkPacketInboundReadIndex, psize);
|
|
|
|
|
|
|
|
scsiDev.dataLen = psize + 6; // 2-byte length + 4-byte flag + packet
|
|
scsiDev.dataLen = psize + 6; // 2-byte length + 4-byte flag + packet
|
|
|
memcpy(scsiDev.data + 6, scsiNetworkPacketsInbound[scsiNetworkPacketInboundReadIndex], psize);
|
|
memcpy(scsiDev.data + 6, scsiNetworkPacketsInbound[scsiNetworkPacketInboundReadIndex], psize);
|
|
@@ -161,10 +153,7 @@ int scsiNetworkCommand()
|
|
|
// more data to read?
|
|
// more data to read?
|
|
|
scsiDev.data[5] = (scsiNetworkPacketInboundReadIndex == scsiNetworkPacketInboundWriteIndex ? 0 : 0x10);
|
|
scsiDev.data[5] = (scsiNetworkPacketInboundReadIndex == scsiNetworkPacketInboundWriteIndex ? 0 : 0x10);
|
|
|
|
|
|
|
|
- if (g_log_debug)
|
|
|
|
|
- {
|
|
|
|
|
- logmsg_buf(scsiDev.data, scsiDev.dataLen);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ DBGMSG_BUF(scsiDev.data, scsiDev.dataLen);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// DaynaPort driver needs a delay between reading the initial packet size and the data so manually do two transfers
|
|
// DaynaPort driver needs a delay between reading the initial packet size and the data so manually do two transfers
|
|
@@ -216,11 +205,15 @@ int scsiNetworkCommand()
|
|
|
parityError = 0;
|
|
parityError = 0;
|
|
|
scsiRead(scsiDev.data, size, &parityError);
|
|
scsiRead(scsiDev.data, size, &parityError);
|
|
|
|
|
|
|
|
- if (g_log_debug)
|
|
|
|
|
|
|
+ if (parityError)
|
|
|
{
|
|
{
|
|
|
- logmsg_f("%s: read packet from host of size %zu - %d (parity error %d)", __func__, size, (cont ? 4 : 0), parityError);
|
|
|
|
|
- logmsg_buf(scsiDev.data, size);
|
|
|
|
|
|
|
+ DBGMSG_F("------ %s: read packet from host of size %zu - %d (parity error raised: %d)", __func__, size, (cont ? 4 : 0), parityError);
|
|
|
}
|
|
}
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ DBGMSG_F("------ %s: read packet from host of size %zu - %d", __func__, size, (cont ? 4 : 0));
|
|
|
|
|
+ }
|
|
|
|
|
+ DBGMSG_BUF(scsiDev.data, size);
|
|
|
|
|
|
|
|
if (cont)
|
|
if (cont)
|
|
|
{
|
|
{
|
|
@@ -252,11 +245,9 @@ int scsiNetworkCommand()
|
|
|
parityError = 0;
|
|
parityError = 0;
|
|
|
scsiRead(scsiDev.data, size, &parityError);
|
|
scsiRead(scsiDev.data, size, &parityError);
|
|
|
|
|
|
|
|
- if (g_log_debug)
|
|
|
|
|
- {
|
|
|
|
|
- logmsg_f("%s: adding multicast address %02x:%02x:%02x:%02x:%02x:%02x", __func__,
|
|
|
|
|
|
|
+ DBGMSG_F("%s: adding multicast address %02x:%02x:%02x:%02x:%02x:%02x", __func__,
|
|
|
scsiDev.data[0], scsiDev.data[1], scsiDev.data[2], scsiDev.data[3], scsiDev.data[4], scsiDev.data[5]);
|
|
scsiDev.data[0], scsiDev.data[1], scsiDev.data[2], scsiDev.data[3], scsiDev.data[4], scsiDev.data[5]);
|
|
|
- }
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
platform_network_add_multicast_address(scsiDev.data);
|
|
platform_network_add_multicast_address(scsiDev.data);
|
|
|
|
|
|
|
@@ -268,10 +259,8 @@ int scsiNetworkCommand()
|
|
|
// toggle interface
|
|
// toggle interface
|
|
|
if (scsiDev.cdb[5] & 0x80)
|
|
if (scsiDev.cdb[5] & 0x80)
|
|
|
{
|
|
{
|
|
|
- if (g_log_debug)
|
|
|
|
|
- {
|
|
|
|
|
- logmsg_f("%s: enable interface", __func__);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+
|
|
|
|
|
+ DBGMSG_F("%s: enable interface", __func__);
|
|
|
scsiNetworkEnabled = true;
|
|
scsiNetworkEnabled = true;
|
|
|
scsiNetworkPacketInboundWriteIndex = 0;
|
|
scsiNetworkPacketInboundWriteIndex = 0;
|
|
|
scsiNetworkPacketInboundReadIndex = 0;
|
|
scsiNetworkPacketInboundReadIndex = 0;
|
|
@@ -280,10 +269,7 @@ int scsiNetworkCommand()
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
- if (g_log_debug)
|
|
|
|
|
- {
|
|
|
|
|
- logmsg_f("%s: disable interface", __func__);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ DBGMSG_F("%s: disable interface", __func__);
|
|
|
scsiNetworkEnabled = false;
|
|
scsiNetworkEnabled = false;
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
@@ -304,10 +290,7 @@ int scsiNetworkCommand()
|
|
|
|
|
|
|
|
// custom wifi commands all using the same opcode, with a sub-command in cdb[2]
|
|
// custom wifi commands all using the same opcode, with a sub-command in cdb[2]
|
|
|
case SCSI_NETWORK_WIFI_CMD:
|
|
case SCSI_NETWORK_WIFI_CMD:
|
|
|
- if (g_log_debug)
|
|
|
|
|
- {
|
|
|
|
|
- logmsg_f("in scsiNetworkCommand with wi-fi command 0x%02x (size %d)", scsiDev.cdb[2], size);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ DBGMSG_F("------ in scsiNetworkCommand with wi-fi command 0x%02x (size %d)", scsiDev.cdb[2], size);
|
|
|
|
|
|
|
|
switch (scsiDev.cdb[2]) {
|
|
switch (scsiDev.cdb[2]) {
|
|
|
case SCSI_NETWORK_WIFI_CMD_SCAN:
|
|
case SCSI_NETWORK_WIFI_CMD_SCAN:
|
|
@@ -405,11 +388,8 @@ int scsiNetworkCommand()
|
|
|
parityError = 0;
|
|
parityError = 0;
|
|
|
scsiRead((uint8_t *)&req, sizeof(req), &parityError);
|
|
scsiRead((uint8_t *)&req, sizeof(req), &parityError);
|
|
|
|
|
|
|
|
- if (g_log_debug)
|
|
|
|
|
- {
|
|
|
|
|
- logmsg_f("%s: read join request from host:", __func__);
|
|
|
|
|
- logmsg_buf(scsiDev.data, size);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ DBGMSG_F("%s: read join request from host:", __func__);
|
|
|
|
|
+ DBGMSG_BUF(scsiDev.data, size);
|
|
|
|
|
|
|
|
platform_network_wifi_join(req.ssid, req.key);
|
|
platform_network_wifi_join(req.ssid, req.key);
|
|
|
|
|
|
|
@@ -433,8 +413,7 @@ int scsiNetworkEnqueue(const uint8_t *buf, size_t len)
|
|
|
|
|
|
|
|
if (len + 4 > sizeof(scsiNetworkPacketsInbound[0]))
|
|
if (len + 4 > sizeof(scsiNetworkPacketsInbound[0]))
|
|
|
{
|
|
{
|
|
|
- if (g_log_debug)
|
|
|
|
|
- logmsg_f("%s: dropping incoming network packet, too large (%zu > %zu)", __func__, len, sizeof(scsiNetworkPacketsInbound[0]));
|
|
|
|
|
|
|
+ DBGMSG_F("%s: dropping incoming network packet, too large (%zu > %zu)", __func__, len, sizeof(scsiNetworkPacketsInbound[0]));
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -454,8 +433,7 @@ int scsiNetworkEnqueue(const uint8_t *buf, size_t len)
|
|
|
|
|
|
|
|
if (scsiNetworkPacketInboundWriteIndex == scsiNetworkPacketInboundReadIndex)
|
|
if (scsiNetworkPacketInboundWriteIndex == scsiNetworkPacketInboundReadIndex)
|
|
|
{
|
|
{
|
|
|
- if (g_log_debug)
|
|
|
|
|
- logmsg_f("%s: dropping packets in ring, write index caught up to read index", __func__);
|
|
|
|
|
|
|
+ DBGMSG_F("%s: dropping packets in ring, write index caught up to read index", __func__);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return 1;
|
|
return 1;
|