From 0188881599bf63243f101325e2d4a4c108907e08 Mon Sep 17 00:00:00 2001 From: Loic Poulain Date: Fri, 3 Nov 2017 14:27:46 +0100 Subject: [PATCH] usb: netusb: Add netusb_recv method This method can be use by netusb functions on pkt reception. Signed-off-by: Loic Poulain --- subsys/usb/class/netusb/function_ecm.c | 13 +++---------- subsys/usb/class/netusb/netusb.c | 10 ++++++++++ subsys/usb/class/netusb/netusb.h | 1 + 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/subsys/usb/class/netusb/function_ecm.c b/subsys/usb/class/netusb/function_ecm.c index c4b2a300c31..662599c0688 100644 --- a/subsys/usb/class/netusb/function_ecm.c +++ b/subsys/usb/class/netusb/function_ecm.c @@ -105,12 +105,9 @@ void ecm_bulk_out(u8_t ep, enum usb_dc_ep_cb_status_code ep_status) net_hexdump_frags(">", in_pkt); - if (net_recv_data(ecm.iface, in_pkt) < 0) { - SYS_LOG_ERR("Queueing packet %p failed", in_pkt); - net_pkt_unref(in_pkt); - } - + netusb_recv(in_pkt); in_pkt = NULL; + return; } @@ -162,11 +159,7 @@ void ecm_bulk_out(u8_t ep, enum usb_dc_ep_cb_status_code ep_status) net_hexdump_frags(">", in_pkt); - if (net_recv_data(ecm.iface, in_pkt) < 0) { - SYS_LOG_ERR("Queueing packet %p failed", in_pkt); - net_pkt_unref(in_pkt); - } - + netusb_recv(in_pkt); in_pkt = NULL; } } diff --git a/subsys/usb/class/netusb/netusb.c b/subsys/usb/class/netusb/netusb.c index fe2b800be69..418be6af5cf 100644 --- a/subsys/usb/class/netusb/netusb.c +++ b/subsys/usb/class/netusb/netusb.c @@ -50,6 +50,16 @@ static int netusb_send(struct net_if *iface, struct net_pkt *pkt) return -ENODEV; } +void netusb_recv(struct net_pkt *pkt) +{ + SYS_LOG_DBG("Recv pkt, len %u", net_pkt_get_len(pkt)); + + if (net_recv_data(netusb.iface, pkt)) { + SYS_LOG_ERR("Queueing packet %p failed", pkt); + net_pkt_unref(pkt); + } +} + static struct usb_ep_cfg_data netusb_ep_data[] = { /* Configuration ECM */ { diff --git a/subsys/usb/class/netusb/netusb.h b/subsys/usb/class/netusb/netusb.h index e66de642253..674d846f7c1 100644 --- a/subsys/usb/class/netusb/netusb.h +++ b/subsys/usb/class/netusb/netusb.h @@ -12,4 +12,5 @@ struct netusb_function { int (*connect_media)(bool status); }; +void netusb_recv(struct net_pkt *pkt); int try_write(u8_t ep, u8_t *data, u16_t len);