From: Igor Russkikh <Igor.Russkikh@aquantia.com> To: "David S . Miller" <davem@davemloft.net> Cc: "linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>, "netdev@vger.kernel.org" <netdev@vger.kernel.org>, Igor Russkikh <Igor.Russkikh@aquantia.com>, Dmitry Bezrukov <Dmitry.Bezrukov@aquantia.com> Subject: [PATCH net-next 09/19] net: usb: aqc111: Implement RX data path Date: Fri, 5 Oct 2018 10:25:03 +0000 [thread overview] Message-ID: <81aef6c50a93d22c6b91e966c89d7520dcbaaf87.1538734658.git.igor.russkikh@aquantia.com> (raw) In-Reply-To: <cover.1538734658.git.igor.russkikh@aquantia.com> From: Dmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: Dmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com> --- drivers/net/usb/aqc111.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++ drivers/net/usb/aqc111.h | 39 ++++++++++++++++++ 2 files changed, 139 insertions(+) diff --git a/drivers/net/usb/aqc111.c b/drivers/net/usb/aqc111.c index 46832fd56f0a..fc068e731335 100644 --- a/drivers/net/usb/aqc111.c +++ b/drivers/net/usb/aqc111.c @@ -362,6 +362,9 @@ static int aqc111_bind(struct usbnet *dev, struct usb_interface *intf) if (ret) goto out; + /* Set Rx urb size */ + dev->rx_urb_size = URB_SIZE; + /* Set TX needed headroom & tailroom */ dev->net->needed_headroom += AQ_TX_HEADER_SIZE; dev->net->needed_tailroom += AQ_TX_HEADER_SIZE; @@ -621,6 +624,8 @@ static int aqc111_reset(struct usbnet *dev) usb_speed = dev->udev->speed; + dev->rx_urb_size = URB_SIZE; + if (usb_device_no_sg_constraint(dev->udev)) dev->can_dma_sg = 1; @@ -708,6 +713,100 @@ static int aqc111_stop(struct usbnet *dev) return 0; } +static int aqc111_rx_fixup(struct usbnet *dev, struct sk_buff *skb) +{ + struct sk_buff *new_skb = NULL; + u32 skb_len = 0; + u32 desc_offset = 0; /*RX Header Offset*/ + u32 start_of_descs = 0; + u16 pkt_count = 0; + u32 pkt_total_offset = 0; + struct aq_rx_packet_desc *pkt_desc = NULL; + struct aq_rx_desc_header desc_hdr; + + if (!skb) + goto err; + + if (skb->len == 0) + goto err; + + skb_len = skb->len; + /* RX Offset Header */ + skb_trim(skb, skb->len - sizeof(struct aq_rx_desc_header)); + memcpy(&desc_hdr, skb_tail_pointer(skb), + sizeof(struct aq_rx_desc_header)); + le64_to_cpus(&desc_hdr); + + /* Check these packets */ + desc_offset = (u32)desc_hdr.desc_offset; + pkt_count = desc_hdr.pkt_count; + start_of_descs = skb_len - ((pkt_count + 1) * + sizeof(struct aq_rx_desc_header)); + + /* self check descs position */ + if (start_of_descs != desc_offset) + goto err; + + /* self check desc_offset from header*/ + if (desc_offset >= skb_len) + goto err; + + if (pkt_count == 0) + goto err; + + /* Get the first RX packet header */ + pkt_desc = (struct aq_rx_packet_desc *)(skb->data + desc_offset); + + while (pkt_count--) { + u32 pkt_len = (u32)(pkt_desc->length & 0x7FFF); + u32 pkt_len_with_padd = ((pkt_len + 7) & 0x7FFF8); + + le64_to_cpus(pkt_desc); + + pkt_total_offset += pkt_len_with_padd; + if (pkt_total_offset > desc_offset || + (pkt_count == 0 && pkt_total_offset != desc_offset)) { + goto err; + } + + if (pkt_desc->drop || !pkt_desc->rx_ok || + pkt_len > (dev->hard_mtu + AQ_RX_HW_PAD)) { + skb_pull(skb, pkt_len_with_padd); + /* Next RX Packet Header */ + pkt_desc++; + continue; + } + + /* Clone SKB */ + new_skb = skb_clone(skb, GFP_ATOMIC); + + if (!new_skb) + goto err; + + new_skb->len = pkt_len; + skb_pull(new_skb, AQ_RX_HW_PAD); + skb_set_tail_pointer(new_skb, new_skb->len); + + new_skb->truesize = new_skb->len + sizeof(struct sk_buff); + + usbnet_skb_return(dev, new_skb); + if (pkt_count == 0) + break; + + skb_pull(skb, pkt_len_with_padd); + + /* Next RX Packet Header */ + pkt_desc++; + + new_skb = NULL; + } + + return 1; + +err: + return 0; +} + static struct sk_buff *aqc111_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags) { @@ -769,6 +868,7 @@ static const struct driver_info aqc111_info = { .stop = aqc111_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_AVOID_UNLINK_URBS | FLAG_MULTI_PACKET, + .rx_fixup = aqc111_rx_fixup, .tx_fixup = aqc111_tx_fixup, }; diff --git a/drivers/net/usb/aqc111.h b/drivers/net/usb/aqc111.h index 049012e26b26..679ca9f992f7 100644 --- a/drivers/net/usb/aqc111.h +++ b/drivers/net/usb/aqc111.h @@ -10,6 +10,8 @@ #ifndef __LINUX_USBNET_AQC111_H #define __LINUX_USBNET_AQC111_H +#define URB_SIZE (1024 * 62) + #define AQ_ACCESS_MAC 0x01 #define AQ_FLASH_PARAMETERS 0x20 #define AQ_PHY_POWER 0x31 @@ -228,6 +230,8 @@ struct aqc111_int_data { #define AQ_INT_SPEED_1G 0x11 #define AQ_INT_SPEED_100M 0x13 +#define AQ_RX_HW_PAD 0x02 + struct aq_tx_packet_desc { struct { u32 length:21; @@ -246,6 +250,41 @@ struct aq_tx_packet_desc { #define AQ_TX_HEADER_SIZE sizeof(struct aq_tx_packet_desc) +struct aq_rx_packet_desc { + struct { + u16 l4_err:1; + u16 l3_err:1; + u16 l4_pkt_type:3; + u16 l3_pkt_type:2; + u16 ce:1; + u16 tco_match:1; + u16 node_id_match:1; + u16 vlan_ind : 1; + u16 rx_ok:1; + u16 reserved1 : 3; + u16 bmc:1; + }; + struct { + u16 length:15; + u16 drop:1; + }; + u16 vlan_tag; + struct { + u8 wuf_detect:1; + u8 wuf_wake:1; + u8 wuf_ind:6; + u8 reserved2:8; + }; +}; + +struct aq_rx_desc_header { + struct { + u32 pkt_count:13; + u32 desc_offset:19; + }; + u32 rx_throughput; +}; + static struct { unsigned char ctrl; unsigned char timer_l; -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Igor Russkikh <igor.russkikh@aquantia.com> To: "David S . Miller" <davem@davemloft.net> Cc: "linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>, "netdev@vger.kernel.org" <netdev@vger.kernel.org>, Igor Russkikh <Igor.Russkikh@aquantia.com>, Dmitry Bezrukov <Dmitry.Bezrukov@aquantia.com> Subject: [net-next,09/19] net: usb: aqc111: Implement RX data path Date: Fri, 5 Oct 2018 10:25:03 +0000 [thread overview] Message-ID: <81aef6c50a93d22c6b91e966c89d7520dcbaaf87.1538734658.git.igor.russkikh@aquantia.com> (raw) From: Dmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: Dmitry Bezrukov <dmitry.bezrukov@aquantia.com> Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com> --- drivers/net/usb/aqc111.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++ drivers/net/usb/aqc111.h | 39 ++++++++++++++++++ 2 files changed, 139 insertions(+) diff --git a/drivers/net/usb/aqc111.c b/drivers/net/usb/aqc111.c index 46832fd56f0a..fc068e731335 100644 --- a/drivers/net/usb/aqc111.c +++ b/drivers/net/usb/aqc111.c @@ -362,6 +362,9 @@ static int aqc111_bind(struct usbnet *dev, struct usb_interface *intf) if (ret) goto out; + /* Set Rx urb size */ + dev->rx_urb_size = URB_SIZE; + /* Set TX needed headroom & tailroom */ dev->net->needed_headroom += AQ_TX_HEADER_SIZE; dev->net->needed_tailroom += AQ_TX_HEADER_SIZE; @@ -621,6 +624,8 @@ static int aqc111_reset(struct usbnet *dev) usb_speed = dev->udev->speed; + dev->rx_urb_size = URB_SIZE; + if (usb_device_no_sg_constraint(dev->udev)) dev->can_dma_sg = 1; @@ -708,6 +713,100 @@ static int aqc111_stop(struct usbnet *dev) return 0; } +static int aqc111_rx_fixup(struct usbnet *dev, struct sk_buff *skb) +{ + struct sk_buff *new_skb = NULL; + u32 skb_len = 0; + u32 desc_offset = 0; /*RX Header Offset*/ + u32 start_of_descs = 0; + u16 pkt_count = 0; + u32 pkt_total_offset = 0; + struct aq_rx_packet_desc *pkt_desc = NULL; + struct aq_rx_desc_header desc_hdr; + + if (!skb) + goto err; + + if (skb->len == 0) + goto err; + + skb_len = skb->len; + /* RX Offset Header */ + skb_trim(skb, skb->len - sizeof(struct aq_rx_desc_header)); + memcpy(&desc_hdr, skb_tail_pointer(skb), + sizeof(struct aq_rx_desc_header)); + le64_to_cpus(&desc_hdr); + + /* Check these packets */ + desc_offset = (u32)desc_hdr.desc_offset; + pkt_count = desc_hdr.pkt_count; + start_of_descs = skb_len - ((pkt_count + 1) * + sizeof(struct aq_rx_desc_header)); + + /* self check descs position */ + if (start_of_descs != desc_offset) + goto err; + + /* self check desc_offset from header*/ + if (desc_offset >= skb_len) + goto err; + + if (pkt_count == 0) + goto err; + + /* Get the first RX packet header */ + pkt_desc = (struct aq_rx_packet_desc *)(skb->data + desc_offset); + + while (pkt_count--) { + u32 pkt_len = (u32)(pkt_desc->length & 0x7FFF); + u32 pkt_len_with_padd = ((pkt_len + 7) & 0x7FFF8); + + le64_to_cpus(pkt_desc); + + pkt_total_offset += pkt_len_with_padd; + if (pkt_total_offset > desc_offset || + (pkt_count == 0 && pkt_total_offset != desc_offset)) { + goto err; + } + + if (pkt_desc->drop || !pkt_desc->rx_ok || + pkt_len > (dev->hard_mtu + AQ_RX_HW_PAD)) { + skb_pull(skb, pkt_len_with_padd); + /* Next RX Packet Header */ + pkt_desc++; + continue; + } + + /* Clone SKB */ + new_skb = skb_clone(skb, GFP_ATOMIC); + + if (!new_skb) + goto err; + + new_skb->len = pkt_len; + skb_pull(new_skb, AQ_RX_HW_PAD); + skb_set_tail_pointer(new_skb, new_skb->len); + + new_skb->truesize = new_skb->len + sizeof(struct sk_buff); + + usbnet_skb_return(dev, new_skb); + if (pkt_count == 0) + break; + + skb_pull(skb, pkt_len_with_padd); + + /* Next RX Packet Header */ + pkt_desc++; + + new_skb = NULL; + } + + return 1; + +err: + return 0; +} + static struct sk_buff *aqc111_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags) { @@ -769,6 +868,7 @@ static const struct driver_info aqc111_info = { .stop = aqc111_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_AVOID_UNLINK_URBS | FLAG_MULTI_PACKET, + .rx_fixup = aqc111_rx_fixup, .tx_fixup = aqc111_tx_fixup, }; diff --git a/drivers/net/usb/aqc111.h b/drivers/net/usb/aqc111.h index 049012e26b26..679ca9f992f7 100644 --- a/drivers/net/usb/aqc111.h +++ b/drivers/net/usb/aqc111.h @@ -10,6 +10,8 @@ #ifndef __LINUX_USBNET_AQC111_H #define __LINUX_USBNET_AQC111_H +#define URB_SIZE (1024 * 62) + #define AQ_ACCESS_MAC 0x01 #define AQ_FLASH_PARAMETERS 0x20 #define AQ_PHY_POWER 0x31 @@ -228,6 +230,8 @@ struct aqc111_int_data { #define AQ_INT_SPEED_1G 0x11 #define AQ_INT_SPEED_100M 0x13 +#define AQ_RX_HW_PAD 0x02 + struct aq_tx_packet_desc { struct { u32 length:21; @@ -246,6 +250,41 @@ struct aq_tx_packet_desc { #define AQ_TX_HEADER_SIZE sizeof(struct aq_tx_packet_desc) +struct aq_rx_packet_desc { + struct { + u16 l4_err:1; + u16 l3_err:1; + u16 l4_pkt_type:3; + u16 l3_pkt_type:2; + u16 ce:1; + u16 tco_match:1; + u16 node_id_match:1; + u16 vlan_ind : 1; + u16 rx_ok:1; + u16 reserved1 : 3; + u16 bmc:1; + }; + struct { + u16 length:15; + u16 drop:1; + }; + u16 vlan_tag; + struct { + u8 wuf_detect:1; + u8 wuf_wake:1; + u8 wuf_ind:6; + u8 reserved2:8; + }; +}; + +struct aq_rx_desc_header { + struct { + u32 pkt_count:13; + u32 desc_offset:19; + }; + u32 rx_throughput; +}; + static struct { unsigned char ctrl; unsigned char timer_l;
next prev parent reply other threads:[~2018-10-05 17:23 UTC|newest] Thread overview: 133+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-10-05 10:24 [PATCH net-next 00/19] Add support for Aquantia AQtion USB to 5/2.5GbE devices Igor Russkikh 2018-10-05 10:24 ` [PATCH net-next 01/19] net: usb: aqc111: Driver skeleton for Aquantia AQtion USB to 5GbE Igor Russkikh 2018-10-05 10:24 ` [net-next,01/19] " Igor Russkikh 2018-10-09 13:37 ` [PATCH net-next 01/19] " Bjørn Mork 2018-10-09 13:37 ` [net-next,01/19] " Bjørn Mork 2018-10-05 10:24 ` [PATCH net-next 02/19] net: usb: aqc111: Add bind and empty unbind callbacks Igor Russkikh 2018-10-05 10:24 ` [net-next,02/19] " Igor Russkikh 2018-10-05 17:39 ` [PATCH net-next 02/19] " David Miller 2018-10-05 17:39 ` [net-next,02/19] " David Miller 2018-10-05 10:24 ` [PATCH net-next 03/19] net: usb: aqc111: Add implementation of read and write commands Igor Russkikh 2018-10-05 10:24 ` [net-next,03/19] " Igor Russkikh 2018-10-05 17:40 ` [PATCH net-next 03/19] " David Miller 2018-10-05 17:40 ` [net-next,03/19] " David Miller 2018-10-08 13:44 ` [PATCH net-next 03/19] " Oliver Neukum 2018-10-08 13:44 ` [net-next,03/19] " Oliver Neukum 2018-10-09 13:33 ` [PATCH net-next 03/19] " Bjørn Mork 2018-10-09 13:33 ` [net-next,03/19] " Bjørn Mork 2018-10-05 10:24 ` [PATCH net-next 04/19] net: usb: aqc111: Various callbacks implementation Igor Russkikh 2018-10-05 10:24 ` [net-next,04/19] " Igor Russkikh 2018-10-08 13:47 ` [PATCH net-next 04/19] " Oliver Neukum 2018-10-08 13:47 ` [net-next,04/19] " Oliver Neukum 2018-10-09 13:27 ` [PATCH net-next 04/19] " Bjørn Mork 2018-10-09 13:27 ` [net-next,04/19] " Bjørn Mork 2018-10-10 11:33 ` [PATCH net-next 04/19] " Oliver Neukum 2018-10-10 11:33 ` [net-next,04/19] " Oliver Neukum 2018-10-05 10:24 ` [PATCH net-next 05/19] net: usb: aqc111: Introduce PHY access Igor Russkikh 2018-10-05 10:24 ` [net-next,05/19] " Igor Russkikh 2018-10-05 22:04 ` [PATCH net-next 05/19] " Andrew Lunn 2018-10-05 22:04 ` [net-next,05/19] " Andrew Lunn 2018-10-08 9:09 ` [PATCH net-next 05/19] " Igor Russkikh 2018-10-08 9:09 ` [net-next,05/19] " Igor Russkikh 2018-10-08 12:17 ` [PATCH net-next 05/19] " Andrew Lunn 2018-10-08 12:17 ` [net-next,05/19] " Andrew Lunn 2018-10-08 14:07 ` [PATCH net-next 05/19] " Igor Russkikh 2018-10-08 14:07 ` [net-next,05/19] " Igor Russkikh 2018-10-10 0:58 ` [PATCH net-next 05/19] " Andrew Lunn 2018-10-10 0:58 ` [net-next,05/19] " Andrew Lunn 2018-10-10 7:54 ` [PATCH net-next 05/19] " Igor Russkikh 2018-10-10 7:54 ` [net-next,05/19] " Igor Russkikh 2018-10-08 13:52 ` [PATCH net-next 05/19] " Oliver Neukum 2018-10-08 13:52 ` [net-next,05/19] " Oliver Neukum 2018-10-08 14:10 ` [PATCH net-next 05/19] " Igor Russkikh 2018-10-08 14:10 ` [net-next,05/19] " Igor Russkikh 2018-10-08 14:24 ` [PATCH net-next 05/19] " Oliver Neukum 2018-10-08 14:24 ` [net-next,05/19] " Oliver Neukum 2018-10-05 10:24 ` [PATCH net-next 06/19] net: usb: aqc111: Introduce link management Igor Russkikh 2018-10-05 10:24 ` [net-next,06/19] " Igor Russkikh 2018-10-05 17:11 ` [PATCH net-next 06/19] " Andrew Lunn 2018-10-05 17:11 ` [net-next,06/19] " Andrew Lunn 2018-10-08 13:22 ` [PATCH net-next 06/19] " Igor Russkikh 2018-10-08 13:22 ` [net-next,06/19] " Igor Russkikh 2018-10-05 17:46 ` [PATCH net-next 06/19] " David Miller 2018-10-05 17:46 ` [net-next,06/19] " David Miller 2018-10-06 17:35 ` [PATCH net-next 06/19] " Andrew Lunn 2018-10-06 17:35 ` [net-next,06/19] " Andrew Lunn 2018-10-08 9:29 ` [PATCH net-next 06/19] " Igor Russkikh 2018-10-08 9:29 ` [net-next,06/19] " Igor Russkikh 2018-10-08 12:12 ` [PATCH net-next 06/19] " Andrew Lunn 2018-10-08 12:12 ` [net-next,06/19] " Andrew Lunn 2018-10-08 13:59 ` [PATCH net-next 06/19] " Oliver Neukum 2018-10-08 13:59 ` [net-next,06/19] " Oliver Neukum 2018-10-05 10:24 ` [PATCH net-next 07/19] net: usb: aqc111: Add support for getting and setting of MAC address Igor Russkikh 2018-10-05 10:24 ` [net-next,07/19] " Igor Russkikh 2018-10-06 1:03 ` [PATCH net-next 07/19] " Andrew Lunn 2018-10-06 1:03 ` [net-next,07/19] " Andrew Lunn 2018-10-09 14:34 ` [PATCH net-next 07/19] " Igor Russkikh 2018-10-09 14:34 ` [net-next,07/19] " Igor Russkikh 2018-10-09 14:46 ` [PATCH net-next 07/19] " Andrew Lunn 2018-10-09 14:46 ` [net-next,07/19] " Andrew Lunn 2018-10-05 10:25 ` [PATCH net-next 08/19] net: usb: aqc111: Implement TX data path Igor Russkikh 2018-10-05 10:25 ` [net-next,08/19] " Igor Russkikh 2018-10-06 1:13 ` [PATCH net-next 08/19] " Andrew Lunn 2018-10-06 1:13 ` [net-next,08/19] " Andrew Lunn 2018-10-08 13:43 ` [PATCH net-next 08/19] " Igor Russkikh 2018-10-08 13:43 ` [net-next,08/19] " Igor Russkikh 2018-10-08 14:07 ` [PATCH net-next 08/19] " Oliver Neukum 2018-10-08 14:07 ` [net-next,08/19] " Oliver Neukum 2018-10-09 13:50 ` [PATCH net-next 08/19] " Bjørn Mork 2018-10-09 13:50 ` [net-next,08/19] " Bjørn Mork 2018-10-05 10:25 ` Igor Russkikh [this message] 2018-10-05 10:25 ` [net-next,09/19] net: usb: aqc111: Implement RX " Igor Russkikh 2018-10-06 1:18 ` [PATCH net-next 09/19] " Andrew Lunn 2018-10-06 1:18 ` [net-next,09/19] " Andrew Lunn 2018-10-09 13:39 ` [PATCH net-next 09/19] " Bjørn Mork 2018-10-09 13:39 ` [net-next,09/19] " Bjørn Mork 2018-10-05 10:25 ` [PATCH net-next 10/19] net: usb: aqc111: Add checksum offload support Igor Russkikh 2018-10-05 10:25 ` [net-next,10/19] " Igor Russkikh 2018-10-05 10:25 ` [PATCH net-next 11/19] net: usb: aqc111: Add support for changing MTU Igor Russkikh 2018-10-05 10:25 ` [net-next,11/19] " Igor Russkikh 2018-10-06 16:56 ` [PATCH net-next 11/19] " Andrew Lunn 2018-10-06 16:56 ` [net-next,11/19] " Andrew Lunn 2018-10-05 10:25 ` [PATCH net-next 12/19] net: usb: aqc111: Add support for enable/disable checksum offload Igor Russkikh 2018-10-05 10:25 ` [net-next,12/19] " Igor Russkikh 2018-10-05 10:25 ` [PATCH net-next 13/19] net: usb: aqc111: Add support for TSO Igor Russkikh 2018-10-05 10:25 ` [net-next,13/19] " Igor Russkikh 2018-10-08 14:12 ` [PATCH net-next 13/19] " Oliver Neukum 2018-10-08 14:12 ` [net-next,13/19] " Oliver Neukum 2018-10-05 10:25 ` [PATCH net-next 14/19] net: usb: aqc111: Implement set_rx_mode callback Igor Russkikh 2018-10-05 10:25 ` [net-next,14/19] " Igor Russkikh 2018-10-06 17:03 ` [PATCH net-next 14/19] " Andrew Lunn 2018-10-06 17:03 ` [net-next,14/19] " Andrew Lunn 2018-10-08 13:49 ` [PATCH net-next 14/19] " Igor Russkikh 2018-10-08 13:49 ` [net-next,14/19] " Igor Russkikh 2018-10-05 10:25 ` [PATCH net-next 15/19] net: usb: aqc111: Add support for VLAN_CTAG_TX/RX offload Igor Russkikh 2018-10-05 10:25 ` [net-next,15/19] " Igor Russkikh 2018-10-08 14:14 ` [PATCH net-next 15/19] " Oliver Neukum 2018-10-08 14:14 ` [net-next,15/19] " Oliver Neukum 2018-10-05 10:25 ` [PATCH net-next 16/19] net: usb: aqc111: Add RX VLAN filtering support Igor Russkikh 2018-10-05 10:25 ` [net-next,16/19] " Igor Russkikh 2018-10-06 17:05 ` [PATCH net-next 16/19] " Andrew Lunn 2018-10-06 17:05 ` [net-next,16/19] " Andrew Lunn 2018-10-05 10:25 ` [PATCH net-next 17/19] net: usb: aqc111: Initialize ethtool_ops structure Igor Russkikh 2018-10-05 10:25 ` [net-next,17/19] " Igor Russkikh 2018-10-06 17:08 ` [PATCH net-next 17/19] " Andrew Lunn 2018-10-06 17:08 ` [net-next,17/19] " Andrew Lunn 2018-10-05 10:25 ` [PATCH net-next 18/19] net: usb: aqc111: Implement get/set_link_ksettings callbacks Igor Russkikh 2018-10-05 10:25 ` [net-next,18/19] " Igor Russkikh 2018-10-06 17:38 ` [PATCH net-next 18/19] " Andrew Lunn 2018-10-06 17:38 ` [net-next,18/19] " Andrew Lunn 2018-10-08 14:18 ` [PATCH net-next 18/19] " Oliver Neukum 2018-10-08 14:18 ` [net-next,18/19] " Oliver Neukum 2018-10-05 10:25 ` [PATCH net-next 19/19] net: usb: aqc111: Add support for wake on LAN by MAGIC packet Igor Russkikh 2018-10-05 10:25 ` [net-next,19/19] " Igor Russkikh 2018-10-06 17:49 ` [PATCH net-next 19/19] " Andrew Lunn 2018-10-06 17:49 ` [net-next,19/19] " Andrew Lunn 2018-10-08 14:12 ` [PATCH net-next 19/19] " Igor Russkikh 2018-10-08 14:12 ` [net-next,19/19] " Igor Russkikh 2018-10-08 14:47 ` [PATCH net-next 19/19] " Andrew Lunn 2018-10-08 14:47 ` [net-next,19/19] " Andrew Lunn 2018-10-06 17:51 ` [PATCH net-next 00/19] Add support for Aquantia AQtion USB to 5/2.5GbE devices Andrew Lunn 2018-10-08 7:58 ` Igor Russkikh 2018-10-08 14:21 ` Oliver Neukum 2018-10-08 14:52 ` Igor Russkikh
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=81aef6c50a93d22c6b91e966c89d7520dcbaaf87.1538734658.git.igor.russkikh@aquantia.com \ --to=igor.russkikh@aquantia.com \ --cc=Dmitry.Bezrukov@aquantia.com \ --cc=davem@davemloft.net \ --cc=linux-usb@vger.kernel.org \ --cc=netdev@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.