Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
authorDavid S. Miller <davem@davemloft.net>
Sat, 10 Nov 2012 23:32:51 +0000 (18:32 -0500)
committerDavid S. Miller <davem@davemloft.net>
Sat, 10 Nov 2012 23:32:51 +0000 (18:32 -0500)
Conflicts:
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c

Minor conflict between the BCM_CNIC define removal in net-next
and a bug fix added to net.  Based upon a conflict resolution
patch posted by Stephen Rothwell.

Signed-off-by: David S. Miller <davem@davemloft.net>
34 files changed:
1  2 
MAINTAINERS
arch/arm/mach-at91/Kconfig
arch/m68k/include/uapi/asm/socket.h
arch/parisc/include/uapi/asm/socket.h
arch/xtensa/include/uapi/asm/socket.h
drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
drivers/net/ethernet/freescale/gianfar.c
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
drivers/net/ethernet/micrel/ksz884x.c
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
drivers/net/ethernet/qlogic/qla3xxx.c
drivers/net/ethernet/realtek/r8169.c
drivers/net/ethernet/ti/Kconfig
drivers/net/usb/smsc95xx.c
drivers/net/usb/usbnet.c
drivers/net/vmxnet3/vmxnet3_drv.c
drivers/net/vxlan.c
drivers/vhost/net.c
include/uapi/linux/usb/cdc.h
net/core/dev.c
net/core/rtnetlink.c
net/core/skbuff.c
net/ipv4/inet_diag.c
net/ipv4/tcp.c
net/ipv4/tcp_input.c
net/ipv4/tcp_ipv4.c
net/ipv4/tcp_minisocks.c
net/ipv4/tcp_timer.c
net/ipv6/ip6_gre.c
net/ipv6/ndisc.c
net/ipv6/route.c
net/sctp/socket.c

diff --cc MAINTAINERS
Simple merge
Simple merge
index 0000000000000000000000000000000000000000,d1be684edf97925331569d9af422a5f427e2a271..285da3b6ad92c440dabaec8dfbeea9b8ccf6613b
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,72 +1,73 @@@
+ #ifndef _ASM_SOCKET_H
+ #define _ASM_SOCKET_H
+ #include <asm/sockios.h>
+ /* For setsockopt(2) */
+ #define SOL_SOCKET    1
+ #define SO_DEBUG      1
+ #define SO_REUSEADDR  2
+ #define SO_TYPE               3
+ #define SO_ERROR      4
+ #define SO_DONTROUTE  5
+ #define SO_BROADCAST  6
+ #define SO_SNDBUF     7
+ #define SO_RCVBUF     8
+ #define SO_SNDBUFFORCE        32
+ #define SO_RCVBUFFORCE        33
+ #define SO_KEEPALIVE  9
+ #define SO_OOBINLINE  10
+ #define SO_NO_CHECK   11
+ #define SO_PRIORITY   12
+ #define SO_LINGER     13
+ #define SO_BSDCOMPAT  14
+ /* To add :#define SO_REUSEPORT 15 */
+ #define SO_PASSCRED   16
+ #define SO_PEERCRED   17
+ #define SO_RCVLOWAT   18
+ #define SO_SNDLOWAT   19
+ #define SO_RCVTIMEO   20
+ #define SO_SNDTIMEO   21
+ /* Security levels - as per NRL IPv6 - don't actually do anything */
+ #define SO_SECURITY_AUTHENTICATION            22
+ #define SO_SECURITY_ENCRYPTION_TRANSPORT      23
+ #define SO_SECURITY_ENCRYPTION_NETWORK                24
+ #define SO_BINDTODEVICE       25
+ /* Socket filtering */
+ #define SO_ATTACH_FILTER        26
+ #define SO_DETACH_FILTER        27
++#define SO_GET_FILTER         SO_ATTACH_FILTER
+ #define SO_PEERNAME             28
+ #define SO_TIMESTAMP          29
+ #define SCM_TIMESTAMP         SO_TIMESTAMP
+ #define SO_ACCEPTCONN         30
+ #define SO_PEERSEC             31
+ #define SO_PASSSEC            34
+ #define SO_TIMESTAMPNS                35
+ #define SCM_TIMESTAMPNS               SO_TIMESTAMPNS
+ #define SO_MARK                       36
+ #define SO_TIMESTAMPING               37
+ #define SCM_TIMESTAMPING      SO_TIMESTAMPING
+ #define SO_PROTOCOL           38
+ #define SO_DOMAIN             39
+ #define SO_RXQ_OVFL             40
+ #define SO_WIFI_STATUS                41
+ #define SCM_WIFI_STATUS               SO_WIFI_STATUS
+ #define SO_PEEK_OFF           42
+ /* Instruct lower device to use last 4-bytes of skb data as FCS */
+ #define SO_NOFCS              43
+ #endif /* _ASM_SOCKET_H */
index 0000000000000000000000000000000000000000,1b52c2c31a7a284c8e4f6b6d08cc53faa60da42f..d9ff4731253bb6e8f6402686e2401e251126ecb2
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,77 +1,78 @@@
+ #ifndef _ASM_SOCKET_H
+ #define _ASM_SOCKET_H
+ #include <asm/sockios.h>
+ /* For setsockopt(2) */
+ #define SOL_SOCKET    0xffff
+ #define SO_DEBUG      0x0001
+ #define SO_REUSEADDR  0x0004
+ #define SO_KEEPALIVE  0x0008
+ #define SO_DONTROUTE  0x0010
+ #define SO_BROADCAST  0x0020
+ #define SO_LINGER     0x0080
+ #define SO_OOBINLINE  0x0100
+ /* To add :#define SO_REUSEPORT 0x0200 */
+ #define SO_SNDBUF     0x1001
+ #define SO_RCVBUF     0x1002
+ #define SO_SNDBUFFORCE        0x100a
+ #define SO_RCVBUFFORCE        0x100b
+ #define SO_SNDLOWAT   0x1003
+ #define SO_RCVLOWAT   0x1004
+ #define SO_SNDTIMEO   0x1005
+ #define SO_RCVTIMEO   0x1006
+ #define SO_ERROR      0x1007
+ #define SO_TYPE               0x1008
+ #define SO_PROTOCOL   0x1028
+ #define SO_DOMAIN     0x1029
+ #define SO_PEERNAME   0x2000
+ #define SO_NO_CHECK   0x400b
+ #define SO_PRIORITY   0x400c
+ #define SO_BSDCOMPAT  0x400e
+ #define SO_PASSCRED   0x4010
+ #define SO_PEERCRED   0x4011
+ #define SO_TIMESTAMP  0x4012
+ #define SCM_TIMESTAMP SO_TIMESTAMP
+ #define SO_TIMESTAMPNS        0x4013
+ #define SCM_TIMESTAMPNS       SO_TIMESTAMPNS
+ /* Security levels - as per NRL IPv6 - don't actually do anything */
+ #define SO_SECURITY_AUTHENTICATION            0x4016
+ #define SO_SECURITY_ENCRYPTION_TRANSPORT      0x4017
+ #define SO_SECURITY_ENCRYPTION_NETWORK                0x4018
+ #define SO_BINDTODEVICE       0x4019
+ /* Socket filtering */
+ #define SO_ATTACH_FILTER        0x401a
+ #define SO_DETACH_FILTER        0x401b
++#define SO_GET_FILTER         SO_ATTACH_FILTER
+ #define SO_ACCEPTCONN         0x401c
+ #define SO_PEERSEC            0x401d
+ #define SO_PASSSEC            0x401e
+ #define SO_MARK                       0x401f
+ #define SO_TIMESTAMPING               0x4020
+ #define SCM_TIMESTAMPING      SO_TIMESTAMPING
+ #define SO_RXQ_OVFL             0x4021
+ #define SO_WIFI_STATUS                0x4022
+ #define SCM_WIFI_STATUS               SO_WIFI_STATUS
+ #define SO_PEEK_OFF           0x4023
+ /* Instruct lower device to use last 4-bytes of skb data as FCS */
+ #define SO_NOFCS              0x4024
+ /* O_NONBLOCK clashes with the bits used for socket types.  Therefore we
+  * have to define SOCK_NONBLOCK to a different value here.
+  */
+ #define SOCK_NONBLOCK   0x40000000
+ #endif /* _ASM_SOCKET_H */
index 0000000000000000000000000000000000000000,e36c681849205cd728bbc59b5903c87f61a81a73..38079be1cf1ebc98fa6d9a61aebd59ff81822f78
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,83 +1,84 @@@
+ /*
+  * include/asm-xtensa/socket.h
+  *
+  * Copied from i386.
+  *
+  * This file is subject to the terms and conditions of the GNU General Public
+  * License.  See the file "COPYING" in the main directory of this archive
+  * for more details.
+  */
+ #ifndef _XTENSA_SOCKET_H
+ #define _XTENSA_SOCKET_H
+ #include <asm/sockios.h>
+ /* For setsockoptions(2) */
+ #define SOL_SOCKET    1
+ #define SO_DEBUG      1
+ #define SO_REUSEADDR  2
+ #define SO_TYPE               3
+ #define SO_ERROR      4
+ #define SO_DONTROUTE  5
+ #define SO_BROADCAST  6
+ #define SO_SNDBUF     7
+ #define SO_RCVBUF     8
+ #define SO_SNDBUFFORCE        32
+ #define SO_RCVBUFFORCE        33
+ #define SO_KEEPALIVE  9
+ #define SO_OOBINLINE  10
+ #define SO_NO_CHECK   11
+ #define SO_PRIORITY   12
+ #define SO_LINGER     13
+ #define SO_BSDCOMPAT  14
+ /* To add :#define SO_REUSEPORT 15 */
+ #define SO_PASSCRED   16
+ #define SO_PEERCRED   17
+ #define SO_RCVLOWAT   18
+ #define SO_SNDLOWAT   19
+ #define SO_RCVTIMEO   20
+ #define SO_SNDTIMEO   21
+ /* Security levels - as per NRL IPv6 - don't actually do anything */
+ #define SO_SECURITY_AUTHENTICATION            22
+ #define SO_SECURITY_ENCRYPTION_TRANSPORT      23
+ #define SO_SECURITY_ENCRYPTION_NETWORK                24
+ #define SO_BINDTODEVICE       25
+ /* Socket filtering */
+ #define SO_ATTACH_FILTER        26
+ #define SO_DETACH_FILTER        27
++#define SO_GET_FILTER         SO_ATTACH_FILTER
+ #define SO_PEERNAME           28
+ #define SO_TIMESTAMP          29
+ #define SCM_TIMESTAMP         SO_TIMESTAMP
+ #define SO_ACCEPTCONN         30
+ #define SO_PEERSEC            31
+ #define SO_PASSSEC            34
+ #define SO_TIMESTAMPNS                35
+ #define SCM_TIMESTAMPNS               SO_TIMESTAMPNS
+ #define SO_MARK                       36
+ #define SO_TIMESTAMPING               37
+ #define SCM_TIMESTAMPING      SO_TIMESTAMPING
+ #define SO_PROTOCOL           38
+ #define SO_DOMAIN             39
+ #define SO_RXQ_OVFL             40
+ #define SO_WIFI_STATUS                41
+ #define SCM_WIFI_STATUS               SO_WIFI_STATUS
+ #define SO_PEEK_OFF           42
+ /* Instruct lower device to use last 4-bytes of skb data as FCS */
+ #define SO_NOFCS              43
+ #endif        /* _XTENSA_SOCKET_H */
index 0546cf4f762e8b6ca334027805ecda59355c2800,bd1fd3d87c24d3979f01a0e9864af9866c62b9aa..04b9f0ab183bdedbd05f242d67e9ad6d237fd87c
@@@ -12065,10 -11899,22 +12066,20 @@@ static int __devinit bnx2x_init_one(str
        /* calc qm_cid_count */
        bp->qm_cid_count = bnx2x_set_qm_cid_count(bp);
  
 -#ifdef BCM_CNIC
 -      /* disable FCOE L2 queue for E1x */
 +      /* disable FCOE L2 queue for E1x*/
        if (CHIP_IS_E1x(bp))
                bp->flags |= NO_FCOE_FLAG;
 -#endif
 -
 +
+       /* disable FCOE for 57840 device, until FW supports it */
+       switch (ent->driver_data) {
+       case BCM57840_O:
+       case BCM57840_4_10:
+       case BCM57840_2_20:
+       case BCM57840_MFO:
+       case BCM57840_MF:
+               bp->flags |= NO_FCOE_FLAG;
+       }
        /* Set bp->num_queues for MSI-X mode*/
        bnx2x_set_num_queues(bp);
  
index 81a0f33d263feb28ec8d0692a46fda9779c03de3,19ac096cb07b702fd988d53a224d03119c674e59..bffb2edd68584633aa8b5248fc27faf0990a05d5
@@@ -1349,14 -1353,13 +1349,17 @@@ static int gfar_restore(struct device *
        struct gfar_private *priv = dev_get_drvdata(dev);
        struct net_device *ndev = priv->ndev;
  
-       if (!netif_running(ndev))
+       if (!netif_running(ndev)) {
+               netif_device_attach(ndev);
                return 0;
+       }
  
 -      gfar_init_bds(ndev);
 +      if (gfar_init_bds(ndev)) {
 +              free_skb_resources(priv);
 +              return -ENOMEM;
 +      }
 +
        init_registers(ndev);
        gfar_set_mac_address(ndev);
        gfar_init_mac(ndev);
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 0000000000000000000000000000000000000000,81a927930bfd35a68f57bff638d662da9d6f6cf8..f35aa0a338c7610d89aa7f9e92e47d7e3a0de0a2
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,412 +1,435 @@@
+ /*
+  * USB Communications Device Class (CDC) definitions
+  *
+  * CDC says how to talk to lots of different types of network adapters,
+  * notably ethernet adapters and various modems.  It's used mostly with
+  * firmware based USB peripherals.
+  */
+ #ifndef __LINUX_USB_CDC_H
+ #define __LINUX_USB_CDC_H
+ #include <linux/types.h>
+ #define USB_CDC_SUBCLASS_ACM                  0x02
+ #define USB_CDC_SUBCLASS_ETHERNET             0x06
+ #define USB_CDC_SUBCLASS_WHCM                 0x08
+ #define USB_CDC_SUBCLASS_DMM                  0x09
+ #define USB_CDC_SUBCLASS_MDLM                 0x0a
+ #define USB_CDC_SUBCLASS_OBEX                 0x0b
+ #define USB_CDC_SUBCLASS_EEM                  0x0c
+ #define USB_CDC_SUBCLASS_NCM                  0x0d
++#define USB_CDC_SUBCLASS_MBIM                 0x0e
+ #define USB_CDC_PROTO_NONE                    0
+ #define USB_CDC_ACM_PROTO_AT_V25TER           1
+ #define USB_CDC_ACM_PROTO_AT_PCCA101          2
+ #define USB_CDC_ACM_PROTO_AT_PCCA101_WAKE     3
+ #define USB_CDC_ACM_PROTO_AT_GSM              4
+ #define USB_CDC_ACM_PROTO_AT_3G                       5
+ #define USB_CDC_ACM_PROTO_AT_CDMA             6
+ #define USB_CDC_ACM_PROTO_VENDOR              0xff
+ #define USB_CDC_PROTO_EEM                     7
+ #define USB_CDC_NCM_PROTO_NTB                 1
++#define USB_CDC_MBIM_PROTO_NTB                        2
+ /*-------------------------------------------------------------------------*/
+ /*
+  * Class-Specific descriptors ... there are a couple dozen of them
+  */
+ #define USB_CDC_HEADER_TYPE           0x00    /* header_desc */
+ #define USB_CDC_CALL_MANAGEMENT_TYPE  0x01    /* call_mgmt_descriptor */
+ #define USB_CDC_ACM_TYPE              0x02    /* acm_descriptor */
+ #define USB_CDC_UNION_TYPE            0x06    /* union_desc */
+ #define USB_CDC_COUNTRY_TYPE          0x07
+ #define USB_CDC_NETWORK_TERMINAL_TYPE 0x0a    /* network_terminal_desc */
+ #define USB_CDC_ETHERNET_TYPE         0x0f    /* ether_desc */
+ #define USB_CDC_WHCM_TYPE             0x11
+ #define USB_CDC_MDLM_TYPE             0x12    /* mdlm_desc */
+ #define USB_CDC_MDLM_DETAIL_TYPE      0x13    /* mdlm_detail_desc */
+ #define USB_CDC_DMM_TYPE              0x14
+ #define USB_CDC_OBEX_TYPE             0x15
+ #define USB_CDC_NCM_TYPE              0x1a
++#define USB_CDC_MBIM_TYPE             0x1b
+ /* "Header Functional Descriptor" from CDC spec  5.2.3.1 */
+ struct usb_cdc_header_desc {
+       __u8    bLength;
+       __u8    bDescriptorType;
+       __u8    bDescriptorSubType;
+       __le16  bcdCDC;
+ } __attribute__ ((packed));
+ /* "Call Management Descriptor" from CDC spec  5.2.3.2 */
+ struct usb_cdc_call_mgmt_descriptor {
+       __u8    bLength;
+       __u8    bDescriptorType;
+       __u8    bDescriptorSubType;
+       __u8    bmCapabilities;
+ #define USB_CDC_CALL_MGMT_CAP_CALL_MGMT               0x01
+ #define USB_CDC_CALL_MGMT_CAP_DATA_INTF               0x02
+       __u8    bDataInterface;
+ } __attribute__ ((packed));
+ /* "Abstract Control Management Descriptor" from CDC spec  5.2.3.3 */
+ struct usb_cdc_acm_descriptor {
+       __u8    bLength;
+       __u8    bDescriptorType;
+       __u8    bDescriptorSubType;
+       __u8    bmCapabilities;
+ } __attribute__ ((packed));
+ /* capabilities from 5.2.3.3 */
+ #define USB_CDC_COMM_FEATURE  0x01
+ #define USB_CDC_CAP_LINE      0x02
+ #define USB_CDC_CAP_BRK               0x04
+ #define USB_CDC_CAP_NOTIFY    0x08
+ /* "Union Functional Descriptor" from CDC spec 5.2.3.8 */
+ struct usb_cdc_union_desc {
+       __u8    bLength;
+       __u8    bDescriptorType;
+       __u8    bDescriptorSubType;
+       __u8    bMasterInterface0;
+       __u8    bSlaveInterface0;
+       /* ... and there could be other slave interfaces */
+ } __attribute__ ((packed));
+ /* "Country Selection Functional Descriptor" from CDC spec 5.2.3.9 */
+ struct usb_cdc_country_functional_desc {
+       __u8    bLength;
+       __u8    bDescriptorType;
+       __u8    bDescriptorSubType;
+       __u8    iCountryCodeRelDate;
+       __le16  wCountyCode0;
+       /* ... and there can be a lot of country codes */
+ } __attribute__ ((packed));
+ /* "Network Channel Terminal Functional Descriptor" from CDC spec 5.2.3.11 */
+ struct usb_cdc_network_terminal_desc {
+       __u8    bLength;
+       __u8    bDescriptorType;
+       __u8    bDescriptorSubType;
+       __u8    bEntityId;
+       __u8    iName;
+       __u8    bChannelIndex;
+       __u8    bPhysicalInterface;
+ } __attribute__ ((packed));
+ /* "Ethernet Networking Functional Descriptor" from CDC spec 5.2.3.16 */
+ struct usb_cdc_ether_desc {
+       __u8    bLength;
+       __u8    bDescriptorType;
+       __u8    bDescriptorSubType;
+       __u8    iMACAddress;
+       __le32  bmEthernetStatistics;
+       __le16  wMaxSegmentSize;
+       __le16  wNumberMCFilters;
+       __u8    bNumberPowerFilters;
+ } __attribute__ ((packed));
+ /* "Telephone Control Model Functional Descriptor" from CDC WMC spec 6.3..3 */
+ struct usb_cdc_dmm_desc {
+       __u8    bFunctionLength;
+       __u8    bDescriptorType;
+       __u8    bDescriptorSubtype;
+       __u16   bcdVersion;
+       __le16  wMaxCommand;
+ } __attribute__ ((packed));
+ /* "MDLM Functional Descriptor" from CDC WMC spec 6.7.2.3 */
+ struct usb_cdc_mdlm_desc {
+       __u8    bLength;
+       __u8    bDescriptorType;
+       __u8    bDescriptorSubType;
+       __le16  bcdVersion;
+       __u8    bGUID[16];
+ } __attribute__ ((packed));
+ /* "MDLM Detail Functional Descriptor" from CDC WMC spec 6.7.2.4 */
+ struct usb_cdc_mdlm_detail_desc {
+       __u8    bLength;
+       __u8    bDescriptorType;
+       __u8    bDescriptorSubType;
+       /* type is associated with mdlm_desc.bGUID */
+       __u8    bGuidDescriptorType;
+       __u8    bDetailData[0];
+ } __attribute__ ((packed));
+ /* "OBEX Control Model Functional Descriptor" */
+ struct usb_cdc_obex_desc {
+       __u8    bLength;
+       __u8    bDescriptorType;
+       __u8    bDescriptorSubType;
+       __le16  bcdVersion;
+ } __attribute__ ((packed));
+ /* "NCM Control Model Functional Descriptor" */
+ struct usb_cdc_ncm_desc {
+       __u8    bLength;
+       __u8    bDescriptorType;
+       __u8    bDescriptorSubType;
+       __le16  bcdNcmVersion;
+       __u8    bmNetworkCapabilities;
+ } __attribute__ ((packed));
++
++/* "MBIM Control Model Functional Descriptor" */
++struct usb_cdc_mbim_desc {
++      __u8    bLength;
++      __u8    bDescriptorType;
++      __u8    bDescriptorSubType;
++
++      __le16  bcdMBIMVersion;
++      __le16  wMaxControlMessage;
++      __u8    bNumberFilters;
++      __u8    bMaxFilterSize;
++      __le16  wMaxSegmentSize;
++      __u8    bmNetworkCapabilities;
++} __attribute__ ((packed));
++
+ /*-------------------------------------------------------------------------*/
+ /*
+  * Class-Specific Control Requests (6.2)
+  *
+  * section 3.6.2.1 table 4 has the ACM profile, for modems.
+  * section 3.8.2 table 10 has the ethernet profile.
+  *
+  * Microsoft's RNDIS stack for Ethernet is a vendor-specific CDC ACM variant,
+  * heavily dependent on the encapsulated (proprietary) command mechanism.
+  */
+ #define USB_CDC_SEND_ENCAPSULATED_COMMAND     0x00
+ #define USB_CDC_GET_ENCAPSULATED_RESPONSE     0x01
+ #define USB_CDC_REQ_SET_LINE_CODING           0x20
+ #define USB_CDC_REQ_GET_LINE_CODING           0x21
+ #define USB_CDC_REQ_SET_CONTROL_LINE_STATE    0x22
+ #define USB_CDC_REQ_SEND_BREAK                        0x23
+ #define USB_CDC_SET_ETHERNET_MULTICAST_FILTERS        0x40
+ #define USB_CDC_SET_ETHERNET_PM_PATTERN_FILTER        0x41
+ #define USB_CDC_GET_ETHERNET_PM_PATTERN_FILTER        0x42
+ #define USB_CDC_SET_ETHERNET_PACKET_FILTER    0x43
+ #define USB_CDC_GET_ETHERNET_STATISTIC                0x44
+ #define USB_CDC_GET_NTB_PARAMETERS            0x80
+ #define USB_CDC_GET_NET_ADDRESS                       0x81
+ #define USB_CDC_SET_NET_ADDRESS                       0x82
+ #define USB_CDC_GET_NTB_FORMAT                        0x83
+ #define USB_CDC_SET_NTB_FORMAT                        0x84
+ #define USB_CDC_GET_NTB_INPUT_SIZE            0x85
+ #define USB_CDC_SET_NTB_INPUT_SIZE            0x86
+ #define USB_CDC_GET_MAX_DATAGRAM_SIZE         0x87
+ #define USB_CDC_SET_MAX_DATAGRAM_SIZE         0x88
+ #define USB_CDC_GET_CRC_MODE                  0x89
+ #define USB_CDC_SET_CRC_MODE                  0x8a
+ /* Line Coding Structure from CDC spec 6.2.13 */
+ struct usb_cdc_line_coding {
+       __le32  dwDTERate;
+       __u8    bCharFormat;
+ #define USB_CDC_1_STOP_BITS                   0
+ #define USB_CDC_1_5_STOP_BITS                 1
+ #define USB_CDC_2_STOP_BITS                   2
+       __u8    bParityType;
+ #define USB_CDC_NO_PARITY                     0
+ #define USB_CDC_ODD_PARITY                    1
+ #define USB_CDC_EVEN_PARITY                   2
+ #define USB_CDC_MARK_PARITY                   3
+ #define USB_CDC_SPACE_PARITY                  4
+       __u8    bDataBits;
+ } __attribute__ ((packed));
+ /* table 62; bits in multicast filter */
+ #define       USB_CDC_PACKET_TYPE_PROMISCUOUS         (1 << 0)
+ #define       USB_CDC_PACKET_TYPE_ALL_MULTICAST       (1 << 1) /* no filter */
+ #define       USB_CDC_PACKET_TYPE_DIRECTED            (1 << 2)
+ #define       USB_CDC_PACKET_TYPE_BROADCAST           (1 << 3)
+ #define       USB_CDC_PACKET_TYPE_MULTICAST           (1 << 4) /* filtered */
+ /*-------------------------------------------------------------------------*/
+ /*
+  * Class-Specific Notifications (6.3) sent by interrupt transfers
+  *
+  * section 3.8.2 table 11 of the CDC spec lists Ethernet notifications
+  * section 3.6.2.1 table 5 specifies ACM notifications, accepted by RNDIS
+  * RNDIS also defines its own bit-incompatible notifications
+  */
+ #define USB_CDC_NOTIFY_NETWORK_CONNECTION     0x00
+ #define USB_CDC_NOTIFY_RESPONSE_AVAILABLE     0x01
+ #define USB_CDC_NOTIFY_SERIAL_STATE           0x20
+ #define USB_CDC_NOTIFY_SPEED_CHANGE           0x2a
+ struct usb_cdc_notification {
+       __u8    bmRequestType;
+       __u8    bNotificationType;
+       __le16  wValue;
+       __le16  wIndex;
+       __le16  wLength;
+ } __attribute__ ((packed));
+ struct usb_cdc_speed_change {
+       __le32  DLBitRRate;     /* contains the downlink bit rate (IN pipe) */
+       __le32  ULBitRate;      /* contains the uplink bit rate (OUT pipe) */
+ } __attribute__ ((packed));
+ /*-------------------------------------------------------------------------*/
+ /*
+  * Class Specific structures and constants
+  *
+  * CDC NCM NTB parameters structure, CDC NCM subclass 6.2.1
+  *
+  */
+ struct usb_cdc_ncm_ntb_parameters {
+       __le16  wLength;
+       __le16  bmNtbFormatsSupported;
+       __le32  dwNtbInMaxSize;
+       __le16  wNdpInDivisor;
+       __le16  wNdpInPayloadRemainder;
+       __le16  wNdpInAlignment;
+       __le16  wPadding1;
+       __le32  dwNtbOutMaxSize;
+       __le16  wNdpOutDivisor;
+       __le16  wNdpOutPayloadRemainder;
+       __le16  wNdpOutAlignment;
+       __le16  wNtbOutMaxDatagrams;
+ } __attribute__ ((packed));
+ /*
+  * CDC NCM transfer headers, CDC NCM subclass 3.2
+  */
+ #define USB_CDC_NCM_NTH16_SIGN                0x484D434E /* NCMH */
+ #define USB_CDC_NCM_NTH32_SIGN                0x686D636E /* ncmh */
+ struct usb_cdc_ncm_nth16 {
+       __le32  dwSignature;
+       __le16  wHeaderLength;
+       __le16  wSequence;
+       __le16  wBlockLength;
+       __le16  wNdpIndex;
+ } __attribute__ ((packed));
+ struct usb_cdc_ncm_nth32 {
+       __le32  dwSignature;
+       __le16  wHeaderLength;
+       __le16  wSequence;
+       __le32  dwBlockLength;
+       __le32  dwNdpIndex;
+ } __attribute__ ((packed));
+ /*
+  * CDC NCM datagram pointers, CDC NCM subclass 3.3
+  */
+ #define USB_CDC_NCM_NDP16_CRC_SIGN    0x314D434E /* NCM1 */
+ #define USB_CDC_NCM_NDP16_NOCRC_SIGN  0x304D434E /* NCM0 */
+ #define USB_CDC_NCM_NDP32_CRC_SIGN    0x316D636E /* ncm1 */
+ #define USB_CDC_NCM_NDP32_NOCRC_SIGN  0x306D636E /* ncm0 */
++#define USB_CDC_MBIM_NDP16_IPS_SIGN     0x00535049 /* IPS<sessionID> : IPS0 for now */
++#define USB_CDC_MBIM_NDP32_IPS_SIGN     0x00737069 /* ips<sessionID> : ips0 for now */
++#define USB_CDC_MBIM_NDP16_DSS_SIGN     0x00535344 /* DSS<sessionID> */
++#define USB_CDC_MBIM_NDP32_DSS_SIGN     0x00737364 /* dss<sessionID> */
++
+ /* 16-bit NCM Datagram Pointer Entry */
+ struct usb_cdc_ncm_dpe16 {
+       __le16  wDatagramIndex;
+       __le16  wDatagramLength;
+ } __attribute__((__packed__));
+ /* 16-bit NCM Datagram Pointer Table */
+ struct usb_cdc_ncm_ndp16 {
+       __le32  dwSignature;
+       __le16  wLength;
+       __le16  wNextNdpIndex;
+       struct  usb_cdc_ncm_dpe16 dpe16[0];
+ } __attribute__ ((packed));
+ /* 32-bit NCM Datagram Pointer Entry */
+ struct usb_cdc_ncm_dpe32 {
+       __le32  dwDatagramIndex;
+       __le32  dwDatagramLength;
+ } __attribute__((__packed__));
+ /* 32-bit NCM Datagram Pointer Table */
+ struct usb_cdc_ncm_ndp32 {
+       __le32  dwSignature;
+       __le16  wLength;
+       __le16  wReserved6;
+       __le32  dwNextNdpIndex;
+       __le32  dwReserved12;
+       struct  usb_cdc_ncm_dpe32 dpe32[0];
+ } __attribute__ ((packed));
+ /* CDC NCM subclass 3.2.1 and 3.2.2 */
+ #define USB_CDC_NCM_NDP16_INDEX_MIN                   0x000C
+ #define USB_CDC_NCM_NDP32_INDEX_MIN                   0x0010
+ /* CDC NCM subclass 3.3.3 Datagram Formatting */
+ #define USB_CDC_NCM_DATAGRAM_FORMAT_CRC                       0x30
+ #define USB_CDC_NCM_DATAGRAM_FORMAT_NOCRC             0X31
+ /* CDC NCM subclass 4.2 NCM Communications Interface Protocol Code */
+ #define USB_CDC_NCM_PROTO_CODE_NO_ENCAP_COMMANDS      0x00
+ #define USB_CDC_NCM_PROTO_CODE_EXTERN_PROTO           0xFE
+ /* CDC NCM subclass 5.2.1 NCM Functional Descriptor, bmNetworkCapabilities */
+ #define USB_CDC_NCM_NCAP_ETH_FILTER                   (1 << 0)
+ #define USB_CDC_NCM_NCAP_NET_ADDRESS                  (1 << 1)
+ #define USB_CDC_NCM_NCAP_ENCAP_COMMAND                        (1 << 2)
+ #define USB_CDC_NCM_NCAP_MAX_DATAGRAM_SIZE            (1 << 3)
+ #define USB_CDC_NCM_NCAP_CRC_MODE                     (1 << 4)
+ #define       USB_CDC_NCM_NCAP_NTB_INPUT_SIZE                 (1 << 5)
+ /* CDC NCM subclass Table 6-3: NTB Parameter Structure */
+ #define USB_CDC_NCM_NTB16_SUPPORTED                   (1 << 0)
+ #define USB_CDC_NCM_NTB32_SUPPORTED                   (1 << 1)
+ /* CDC NCM subclass Table 6-3: NTB Parameter Structure */
+ #define USB_CDC_NCM_NDP_ALIGN_MIN_SIZE                        0x04
+ #define USB_CDC_NCM_NTB_MAX_LENGTH                    0x1C
+ /* CDC NCM subclass 6.2.5 SetNtbFormat */
+ #define USB_CDC_NCM_NTB16_FORMAT                      0x00
+ #define USB_CDC_NCM_NTB32_FORMAT                      0x01
+ /* CDC NCM subclass 6.2.7 SetNtbInputSize */
+ #define USB_CDC_NCM_NTB_MIN_IN_SIZE                   2048
+ #define USB_CDC_NCM_NTB_MIN_OUT_SIZE                  2048
+ /* NTB Input Size Structure */
+ struct usb_cdc_ncm_ndp_input_size {
+       __le32  dwNtbInMaxSize;
+       __le16  wNtbInMaxDatagrams;
+       __le16  wReserved;
+ } __attribute__ ((packed));
+ /* CDC NCM subclass 6.2.11 SetCrcMode */
+ #define USB_CDC_NCM_CRC_NOT_APPENDED                  0x00
+ #define USB_CDC_NCM_CRC_APPENDED                      0x01
+ #endif /* __LINUX_USB_CDC_H */
diff --cc net/core/dev.c
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/ipv4/tcp.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge