Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/usb/asix_common.c drivers/net/usb/sr9800.c drivers/net/usb/usbnet.c include/linux/usb/usbnet.h net/ipv4/tcp_ipv4.c net/ipv6/tcp_ipv6.c The TCP conflicts were overlapping changes. In 'net' we added a READ_ONCE() to the socket cached RX route read, whilst in 'net-next' Eric Dumazet touched the surrounding code dealing with how mini sockets are handled. With USB, it's a case of the same bug fix first going into net-next and then I cherry picked it back into net. Signed-off-by: David S. Miller <davem@davemloft.net>
このコミットが含まれているのは:
@@ -189,7 +189,7 @@ struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
|
||||
skb_put(skb, sizeof(padbytes));
|
||||
}
|
||||
|
||||
usbnet_set_skb_tx_stats(skb, 1);
|
||||
usbnet_set_skb_tx_stats(skb, 1, 0);
|
||||
return skb;
|
||||
}
|
||||
|
||||
|
@@ -522,6 +522,7 @@ static const struct driver_info wwan_info = {
|
||||
#define DELL_VENDOR_ID 0x413C
|
||||
#define REALTEK_VENDOR_ID 0x0bda
|
||||
#define SAMSUNG_VENDOR_ID 0x04e8
|
||||
#define LENOVO_VENDOR_ID 0x17ef
|
||||
|
||||
static const struct usb_device_id products[] = {
|
||||
/* BLACKLIST !!
|
||||
@@ -702,6 +703,13 @@ static const struct usb_device_id products[] = {
|
||||
.driver_info = 0,
|
||||
},
|
||||
|
||||
/* Lenovo Thinkpad USB 3.0 Ethernet Adapters (based on Realtek RTL8153) */
|
||||
{
|
||||
USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0x7205, USB_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
|
||||
.driver_info = 0,
|
||||
},
|
||||
|
||||
/* WHITELIST!!!
|
||||
*
|
||||
* CDC Ether uses two interfaces, not necessarily consecutive.
|
||||
|
@@ -1177,13 +1177,12 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev, struct sk_buff *skb, __le32 sign)
|
||||
ctx->tx_overhead += skb_out->len - ctx->tx_curr_frame_payload;
|
||||
ctx->tx_ntbs++;
|
||||
|
||||
/* usbnet has already counted all the framing overhead.
|
||||
/* usbnet will count all the framing overhead by default.
|
||||
* Adjust the stats so that the tx_bytes counter show real
|
||||
* payload data instead.
|
||||
*/
|
||||
dev->net->stats.tx_bytes -= skb_out->len - ctx->tx_curr_frame_payload;
|
||||
|
||||
usbnet_set_skb_tx_stats(skb_out, n);
|
||||
usbnet_set_skb_tx_stats(skb_out, n,
|
||||
ctx->tx_curr_frame_payload - skb_out->len);
|
||||
|
||||
return skb_out;
|
||||
|
||||
|
@@ -493,6 +493,7 @@ enum rtl8152_flags {
|
||||
/* Define these values to match your device */
|
||||
#define VENDOR_ID_REALTEK 0x0bda
|
||||
#define VENDOR_ID_SAMSUNG 0x04e8
|
||||
#define VENDOR_ID_LENOVO 0x17ef
|
||||
|
||||
#define MCU_TYPE_PLA 0x0100
|
||||
#define MCU_TYPE_USB 0x0000
|
||||
@@ -4114,6 +4115,7 @@ static struct usb_device_id rtl8152_table[] = {
|
||||
{REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8152)},
|
||||
{REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, 0x8153)},
|
||||
{REALTEK_USB_DEVICE(VENDOR_ID_SAMSUNG, 0xa101)},
|
||||
{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x7205)},
|
||||
{}
|
||||
};
|
||||
|
||||
|
@@ -144,7 +144,7 @@ static struct sk_buff *sr_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
|
||||
skb_put(skb, sizeof(padbytes));
|
||||
}
|
||||
|
||||
usbnet_set_skb_tx_stats(skb, 1);
|
||||
usbnet_set_skb_tx_stats(skb, 1, 0);
|
||||
return skb;
|
||||
}
|
||||
|
||||
|
@@ -1346,9 +1346,19 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
|
||||
} else
|
||||
urb->transfer_flags |= URB_ZERO_PACKET;
|
||||
}
|
||||
entry->length = urb->transfer_buffer_length = length;
|
||||
if (!(info->flags & FLAG_MULTI_PACKET))
|
||||
usbnet_set_skb_tx_stats(skb, 1);
|
||||
urb->transfer_buffer_length = length;
|
||||
|
||||
if (info->flags & FLAG_MULTI_PACKET) {
|
||||
/* Driver has set number of packets and a length delta.
|
||||
* Calculate the complete length and ensure that it's
|
||||
* positive.
|
||||
*/
|
||||
entry->length += length;
|
||||
if (WARN_ON_ONCE(entry->length <= 0))
|
||||
entry->length = length;
|
||||
} else {
|
||||
usbnet_set_skb_tx_stats(skb, 1, length);
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&dev->txq.lock, flags);
|
||||
retval = usb_autopm_get_interface_async(dev->intf);
|
||||
|
新しいイシューから参照
ユーザーをブロックする