Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/bonding/bond_3ad.h drivers/net/bonding/bond_main.c Two minor conflicts in bonding, both of which were overlapping changes. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -296,7 +296,6 @@ config USB_NET_SR9800
|
||||
tristate "CoreChip-sz SR9800 based USB 2.0 10/100 ethernet devices"
|
||||
depends on USB_USBNET
|
||||
select CRC32
|
||||
default y
|
||||
---help---
|
||||
Say Y if you want to use one of the following 100Mbps USB Ethernet
|
||||
device based on the CoreChip-sz SR9800 chip.
|
||||
|
@@ -917,7 +917,8 @@ static const struct driver_info ax88178_info = {
|
||||
.status = asix_status,
|
||||
.link_reset = ax88178_link_reset,
|
||||
.reset = ax88178_reset,
|
||||
.flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR,
|
||||
.flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR |
|
||||
FLAG_MULTI_PACKET,
|
||||
.rx_fixup = asix_rx_fixup_common,
|
||||
.tx_fixup = asix_tx_fixup,
|
||||
};
|
||||
|
@@ -1118,6 +1118,10 @@ static int ax88179_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
||||
u16 hdr_off;
|
||||
u32 *pkt_hdr;
|
||||
|
||||
/* This check is no longer done by usbnet */
|
||||
if (skb->len < dev->net->hard_header_len)
|
||||
return 0;
|
||||
|
||||
skb_trim(skb, skb->len - 4);
|
||||
memcpy(&rx_hdr, skb_tail_pointer(skb), 4);
|
||||
le32_to_cpus(&rx_hdr);
|
||||
|
@@ -84,6 +84,10 @@ static int genelink_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
||||
u32 size;
|
||||
u32 count;
|
||||
|
||||
/* This check is no longer done by usbnet */
|
||||
if (skb->len < dev->net->hard_header_len)
|
||||
return 0;
|
||||
|
||||
header = (struct gl_header *) skb->data;
|
||||
|
||||
// get the packet count of the received skb
|
||||
|
@@ -526,8 +526,9 @@ static int mcs7830_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
||||
{
|
||||
u8 status;
|
||||
|
||||
if (skb->len == 0) {
|
||||
dev_err(&dev->udev->dev, "unexpected empty rx frame\n");
|
||||
/* This check is no longer done by usbnet */
|
||||
if (skb->len < dev->net->hard_header_len) {
|
||||
dev_err(&dev->udev->dev, "unexpected tiny rx frame\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -364,6 +364,10 @@ static int net1080_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
||||
struct nc_trailer *trailer;
|
||||
u16 hdr_len, packet_len;
|
||||
|
||||
/* This check is no longer done by usbnet */
|
||||
if (skb->len < dev->net->hard_header_len)
|
||||
return 0;
|
||||
|
||||
if (!(skb->len & 0x01)) {
|
||||
netdev_dbg(dev->net, "rx framesize %d range %d..%d mtu %d\n",
|
||||
skb->len, dev->net->hard_header_len, dev->hard_mtu,
|
||||
|
@@ -80,10 +80,10 @@ static int qmi_wwan_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
||||
{
|
||||
__be16 proto;
|
||||
|
||||
/* usbnet rx_complete guarantees that skb->len is at least
|
||||
* hard_header_len, so we can inspect the dest address without
|
||||
* checking skb->len
|
||||
*/
|
||||
/* This check is no longer done by usbnet */
|
||||
if (skb->len < dev->net->hard_header_len)
|
||||
return 0;
|
||||
|
||||
switch (skb->data[0] & 0xf0) {
|
||||
case 0x40:
|
||||
proto = htons(ETH_P_IP);
|
||||
@@ -732,6 +732,7 @@ static const struct usb_device_id products[] = {
|
||||
{QMI_FIXED_INTF(0x1bc7, 0x1201, 2)}, /* Telit LE920 */
|
||||
{QMI_FIXED_INTF(0x0b3c, 0xc005, 6)}, /* Olivetti Olicard 200 */
|
||||
{QMI_FIXED_INTF(0x1e2d, 0x0060, 4)}, /* Cinterion PLxx */
|
||||
{QMI_FIXED_INTF(0x1e2d, 0x0053, 4)}, /* Cinterion PHxx,PXxx */
|
||||
|
||||
/* 4. Gobi 1000 devices */
|
||||
{QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
|
||||
|
@@ -492,6 +492,10 @@ EXPORT_SYMBOL_GPL(rndis_unbind);
|
||||
*/
|
||||
int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
||||
{
|
||||
/* This check is no longer done by usbnet */
|
||||
if (skb->len < dev->net->hard_header_len)
|
||||
return 0;
|
||||
|
||||
/* peripheral may have batched packets to us... */
|
||||
while (likely(skb->len)) {
|
||||
struct rndis_data_hdr *hdr = (void *)skb->data;
|
||||
|
@@ -2106,6 +2106,10 @@ static void smsc75xx_rx_csum_offload(struct usbnet *dev, struct sk_buff *skb,
|
||||
|
||||
static int smsc75xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
||||
{
|
||||
/* This check is no longer done by usbnet */
|
||||
if (skb->len < dev->net->hard_header_len)
|
||||
return 0;
|
||||
|
||||
while (skb->len > 0) {
|
||||
u32 rx_cmd_a, rx_cmd_b, align_count, size;
|
||||
struct sk_buff *ax_skb;
|
||||
|
@@ -1723,6 +1723,10 @@ static void smsc95xx_rx_csum_offload(struct sk_buff *skb)
|
||||
|
||||
static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
||||
{
|
||||
/* This check is no longer done by usbnet */
|
||||
if (skb->len < dev->net->hard_header_len)
|
||||
return 0;
|
||||
|
||||
while (skb->len > 0) {
|
||||
u32 header, align_count;
|
||||
struct sk_buff *ax_skb;
|
||||
|
@@ -63,6 +63,10 @@ static int sr_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
||||
{
|
||||
int offset = 0;
|
||||
|
||||
/* This check is no longer done by usbnet */
|
||||
if (skb->len < dev->net->hard_header_len)
|
||||
return 0;
|
||||
|
||||
while (offset + sizeof(u32) < skb->len) {
|
||||
struct sk_buff *sr_skb;
|
||||
u16 size;
|
||||
@@ -823,7 +827,7 @@ static int sr9800_bind(struct usbnet *dev, struct usb_interface *intf)
|
||||
dev->rx_urb_size =
|
||||
SR9800_BULKIN_SIZE[SR9800_MAX_BULKIN_2K].size;
|
||||
}
|
||||
netdev_dbg(dev->net, "%s : setting rx_urb_size with : %ld\n", __func__,
|
||||
netdev_dbg(dev->net, "%s : setting rx_urb_size with : %zu\n", __func__,
|
||||
dev->rx_urb_size);
|
||||
return 0;
|
||||
|
||||
|
@@ -542,17 +542,19 @@ static inline void rx_process (struct usbnet *dev, struct sk_buff *skb)
|
||||
}
|
||||
// else network stack removes extra byte if we forced a short packet
|
||||
|
||||
if (skb->len) {
|
||||
/* all data was already cloned from skb inside the driver */
|
||||
if (dev->driver_info->flags & FLAG_MULTI_PACKET)
|
||||
dev_kfree_skb_any(skb);
|
||||
else
|
||||
usbnet_skb_return(dev, skb);
|
||||
/* all data was already cloned from skb inside the driver */
|
||||
if (dev->driver_info->flags & FLAG_MULTI_PACKET)
|
||||
goto done;
|
||||
|
||||
if (skb->len < ETH_HLEN) {
|
||||
dev->net->stats.rx_errors++;
|
||||
dev->net->stats.rx_length_errors++;
|
||||
netif_dbg(dev, rx_err, dev->net, "rx length %d\n", skb->len);
|
||||
} else {
|
||||
usbnet_skb_return(dev, skb);
|
||||
return;
|
||||
}
|
||||
|
||||
netif_dbg(dev, rx_err, dev->net, "drop\n");
|
||||
dev->net->stats.rx_errors++;
|
||||
done:
|
||||
skb_queue_tail(&dev->done, skb);
|
||||
}
|
||||
@@ -574,13 +576,6 @@ static void rx_complete (struct urb *urb)
|
||||
switch (urb_status) {
|
||||
/* success */
|
||||
case 0:
|
||||
if (skb->len < dev->net->hard_header_len) {
|
||||
state = rx_cleanup;
|
||||
dev->net->stats.rx_errors++;
|
||||
dev->net->stats.rx_length_errors++;
|
||||
netif_dbg(dev, rx_err, dev->net,
|
||||
"rx length %d\n", skb->len);
|
||||
}
|
||||
break;
|
||||
|
||||
/* stalls need manual reset. this is rare ... except that
|
||||
|
Reference in New Issue
Block a user