summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2024-02-24 10:49:11 +0800
committersakumisu <[email protected]>2024-02-24 10:49:11 +0800
commit762c3cbb2fd60513f3d8ea8947441936194ff54a (patch)
treef82ab806aec50b1b2a8a5c460504e98b54add146
parentb4e952b371f0cc6108e3c6bdc70c858c5b7e5fc1 (diff)
add get_connect_status api for rndis/cdc_ecm/asix
-rw-r--r--class/cdc/usbh_cdc_ecm.c4
-rw-r--r--class/cdc/usbh_cdc_ecm.h2
-rw-r--r--class/vendor/usbh_asix.c33
-rw-r--r--class/vendor/usbh_asix.h2
-rw-r--r--class/wireless/usbh_rndis.c16
-rw-r--r--class/wireless/usbh_rndis.h3
6 files changed, 31 insertions, 29 deletions
diff --git a/class/cdc/usbh_cdc_ecm.c b/class/cdc/usbh_cdc_ecm.c
index d6c390e9..54bc7df6 100644
--- a/class/cdc/usbh_cdc_ecm.c
+++ b/class/cdc/usbh_cdc_ecm.c
@@ -43,7 +43,7 @@ static int usbh_cdc_ecm_set_eth_packet_filter(struct usbh_cdc_ecm *cdc_ecm_class
return usbh_control_transfer(cdc_ecm_class->hport, setup, NULL);
}
-int usbh_cdc_ecm_get_notification(struct usbh_cdc_ecm *cdc_ecm_class)
+int usbh_cdc_ecm_get_connect_status(struct usbh_cdc_ecm *cdc_ecm_class)
{
int ret;
@@ -244,7 +244,7 @@ find_class:
}
while (g_cdc_ecm_class.connect_status == false) {
- ret = usbh_cdc_ecm_get_notification(&g_cdc_ecm_class);
+ ret = usbh_cdc_ecm_get_connect_status(&g_cdc_ecm_class);
if (ret < 0) {
usb_osal_msleep(100);
goto find_class;
diff --git a/class/cdc/usbh_cdc_ecm.h b/class/cdc/usbh_cdc_ecm.h
index 5f2e6069..9fd94088 100644
--- a/class/cdc/usbh_cdc_ecm.h
+++ b/class/cdc/usbh_cdc_ecm.h
@@ -38,6 +38,8 @@ struct usbh_cdc_ecm {
extern "C" {
#endif
+int usbh_cdc_ecm_get_connect_status(struct usbh_cdc_ecm *cdc_ecm_class);
+
void usbh_cdc_ecm_run(struct usbh_cdc_ecm *cdc_ecm_class);
void usbh_cdc_ecm_stop(struct usbh_cdc_ecm *cdc_ecm_class);
diff --git a/class/vendor/usbh_asix.c b/class/vendor/usbh_asix.c
index 253be78e..d6c017bb 100644
--- a/class/vendor/usbh_asix.c
+++ b/class/vendor/usbh_asix.c
@@ -21,21 +21,21 @@ static USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_asix_tx_buffer[CONFIG_US
static USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_asix_inttx_buffer[16];
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_asix_buf[32];
-#define ETH_ALEN 6
+#define ETH_ALEN 6
-#define PHY_MODE_MARVELL 0x0000
-#define MII_MARVELL_LED_CTRL 0x0018
-#define MII_MARVELL_STATUS 0x001b
-#define MII_MARVELL_CTRL 0x0014
+#define PHY_MODE_MARVELL 0x0000
+#define MII_MARVELL_LED_CTRL 0x0018
+#define MII_MARVELL_STATUS 0x001b
+#define MII_MARVELL_CTRL 0x0014
-#define MARVELL_LED_MANUAL 0x0019
+#define MARVELL_LED_MANUAL 0x0019
-#define MARVELL_STATUS_HWCFG 0x0004
+#define MARVELL_STATUS_HWCFG 0x0004
-#define MARVELL_CTRL_TXDELAY 0x0002
-#define MARVELL_CTRL_RXDELAY 0x0080
+#define MARVELL_CTRL_TXDELAY 0x0002
+#define MARVELL_CTRL_RXDELAY 0x0080
-#define PHY_MODE_RTL8211CL 0x000C
+#define PHY_MODE_RTL8211CL 0x000C
#define AX88772A_PHY14H 0x14
#define AX88772A_PHY14H_DEFAULT 0x442C
@@ -46,8 +46,8 @@ USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_asix_buf[32];
#define AX88772A_PHY16H 0x16
#define AX88772A_PHY16H_DEFAULT 0x4044
-#define SPEED_100 0
-#define SPEED_10 1
+#define SPEED_100 0
+#define SPEED_10 1
static int usbh_asix_read_cmd(struct usbh_asix *asix_class,
uint8_t cmd,
@@ -576,7 +576,7 @@ static int usbh_asix_connect(struct usbh_hubport *hport, uint8_t intf)
usbh_asix_mdio_write(asix_class, asix_class->phy_addr, 0, 0x3900);
usbh_asix_mdio_read(asix_class, asix_class->phy_addr, 0);
-
+
usbh_asix_mdio_write(asix_class, asix_class->phy_addr, 0, 0x3100);
usbh_asix_mdio_read(asix_class, asix_class->phy_addr, 4);
@@ -587,8 +587,6 @@ static int usbh_asix_connect(struct usbh_hubport *hport, uint8_t intf)
usbh_asix_mdio_read(asix_class, asix_class->phy_addr, 0);
}
- usbh_asix_set_multicast(asix_class);
-
USB_LOG_INFO("Init %s done\r\n", asix_class->name);
memcpy(hport->config.intf[intf].devname, DEV_FORMAT, CONFIG_USBHOST_DEV_NAMELEN);
@@ -628,7 +626,7 @@ static int usbh_asix_disconnect(struct usbh_hubport *hport, uint8_t intf)
return ret;
}
-int usbh_asix_get_notification(struct usbh_asix *asix_class)
+int usbh_asix_get_connect_status(struct usbh_asix *asix_class)
{
int ret;
@@ -642,6 +640,7 @@ int usbh_asix_get_notification(struct usbh_asix *asix_class)
if (g_asix_inttx_buffer[2] & 0x01) {
asix_class->connect_status = true;
usbh_ax88772_mac_link_up(asix_class, SPEED_100, 1, 1, 1);
+ usbh_asix_set_multicast(asix_class);
} else {
asix_class->connect_status = false;
usbh_ax88772_mac_link_down(asix_class);
@@ -670,7 +669,7 @@ find_class:
}
while (g_asix_class.connect_status == false) {
- ret = usbh_asix_get_notification(&g_asix_class);
+ ret = usbh_asix_get_connect_status(&g_asix_class);
if (ret < 0) {
usb_osal_msleep(100);
goto find_class;
diff --git a/class/vendor/usbh_asix.h b/class/vendor/usbh_asix.h
index 0a5a87cd..8be79dfd 100644
--- a/class/vendor/usbh_asix.h
+++ b/class/vendor/usbh_asix.h
@@ -165,7 +165,7 @@ struct usbh_asix {
extern "C" {
#endif
-int usbh_asix_get_notification(struct usbh_asix *asix_class);
+int usbh_asix_get_connect_status(struct usbh_asix *asix_class);
void usbh_asix_run(struct usbh_asix *asix_class);
void usbh_asix_stop(struct usbh_asix *asix_class);
diff --git a/class/wireless/usbh_rndis.c b/class/wireless/usbh_rndis.c
index 0106be71..dd77dd3c 100644
--- a/class/wireless/usbh_rndis.c
+++ b/class/wireless/usbh_rndis.c
@@ -189,7 +189,7 @@ static int usbh_rndis_set_msg_transfer(struct usbh_rndis *rndis_class, uint32_t
return ret;
}
-static int usbh_rndis_get_connect_status(struct usbh_rndis *rndis_class)
+int usbh_rndis_get_connect_status(struct usbh_rndis *rndis_class)
{
int ret;
uint8_t data[32];
@@ -200,9 +200,9 @@ static int usbh_rndis_get_connect_status(struct usbh_rndis *rndis_class)
return ret;
}
if (NDIS_MEDIA_STATE_CONNECTED == data[0]) {
- rndis_class->link_status = true;
+ rndis_class->connect_status = true;
} else {
- rndis_class->link_status = false;
+ rndis_class->connect_status = false;
}
return 0;
}
@@ -330,9 +330,9 @@ static int usbh_rndis_connect(struct usbh_hubport *hport, uint8_t intf)
goto query_errorout;
}
if (NDIS_MEDIA_STATE_CONNECTED == data[0]) {
- rndis_class->link_status = true;
+ rndis_class->connect_status = true;
} else {
- rndis_class->link_status = false;
+ rndis_class->connect_status = false;
}
break;
case OID_802_3_MAXIMUM_LIST_SIZE:
@@ -442,12 +442,12 @@ void usbh_rndis_rx_thread(void *argument)
// clang-format off
find_class:
// clang-format on
- g_rndis_class.link_status = false;
+ g_rndis_class.connect_status = false;
if (usbh_find_class_instance("/dev/rndis") == NULL) {
goto delete;
}
- while (g_rndis_class.link_status == false) {
+ while (g_rndis_class.connect_status == false) {
ret = usbh_rndis_get_connect_status(&g_rndis_class);
if (ret < 0) {
usb_osal_msleep(100);
@@ -517,7 +517,7 @@ err_t usbh_rndis_linkoutput(struct netif *netif, struct pbuf *p)
uint8_t *buffer;
rndis_data_packet_t *hdr;
- if (g_rndis_class.link_status == false) {
+ if (g_rndis_class.connect_status == false) {
return ERR_BUF;
}
diff --git a/class/wireless/usbh_rndis.h b/class/wireless/usbh_rndis.h
index b2e8a436..0257e450 100644
--- a/class/wireless/usbh_rndis.h
+++ b/class/wireless/usbh_rndis.h
@@ -27,7 +27,7 @@ struct usbh_rndis {
uint32_t request_id;
uint32_t link_speed;
- bool link_status;
+ bool connect_status;
uint8_t mac[6];
ip_addr_t ipaddr;
@@ -39,6 +39,7 @@ struct usbh_rndis {
extern "C" {
#endif
+int usbh_rndis_get_connect_status(struct usbh_rndis *rndis_class);
int usbh_rndis_keepalive(struct usbh_rndis *rndis_class);
void usbh_rndis_run(struct usbh_rndis *rndis_class);