From: Greg Kroah-Hartman Date: Thu, 15 Jun 2017 09:29:10 +0000 (+0200) Subject: 4.4-stable patches X-Git-Tag: v4.9.33~22 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=06c8de52f28f8305b3f480e042a6bb074209ef8f;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: i2c-piix4-fix-request_region-size.patch net-fix-proc-net-arp-for-ax.25.patch net-hns-fix-the-device-being-used-for-dma-mapping-during-tx.patch net-mkiss-fix-panic.patch sierra_net-add-support-for-ipv6-and-dual-stack-link-sense-indications.patch sierra_net-skip-validating-irrelevant-fields-for-idle-lsis.patch --- diff --git a/queue-4.4/i2c-piix4-fix-request_region-size.patch b/queue-4.4/i2c-piix4-fix-request_region-size.patch new file mode 100644 index 00000000000..a7debc2a7aa --- /dev/null +++ b/queue-4.4/i2c-piix4-fix-request_region-size.patch @@ -0,0 +1,34 @@ +From foo@baz Thu Jun 15 11:13:01 CEST 2017 +From: Ricardo Ribalda +Date: Tue, 23 May 2017 21:53:45 -0400 +Subject: i2c: piix4: Fix request_region size + +From: Ricardo Ribalda + + +[ Upstream commit f43128c75202f29ee71aa83e6c320a911137c189 ] + +Since '701dc207bf55 ("i2c: piix4: Avoid race conditions with IMC")' we +are using the SMBSLVCNT register at offset 0x8. We need to request it. + +Fixes: 701dc207bf55 ("i2c: piix4: Avoid race conditions with IMC") +Signed-off-by: Ricardo Ribalda Delgado +Signed-off-by: Jean Delvare +Signed-off-by: Wolfram Sang +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/i2c/busses/i2c-piix4.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/i2c/busses/i2c-piix4.c ++++ b/drivers/i2c/busses/i2c-piix4.c +@@ -54,7 +54,7 @@ + #define SMBSLVDAT (0xC + piix4_smba) + + /* count for request_region */ +-#define SMBIOSIZE 8 ++#define SMBIOSIZE 9 + + /* PCI Address Constants */ + #define SMBBA 0x090 diff --git a/queue-4.4/net-fix-proc-net-arp-for-ax.25.patch b/queue-4.4/net-fix-proc-net-arp-for-ax.25.patch new file mode 100644 index 00000000000..43c31f00106 --- /dev/null +++ b/queue-4.4/net-fix-proc-net-arp-for-ax.25.patch @@ -0,0 +1,83 @@ +From foo@baz Thu Jun 15 11:13:01 CEST 2017 +From: Ralf Baechle +Date: Tue, 23 May 2017 21:53:37 -0400 +Subject: NET: Fix /proc/net/arp for AX.25 + +From: Ralf Baechle + + +[ Upstream commit 4872e57c812dd312bf8193b5933fa60585cda42f ] + +When sending ARP requests over AX.25 links the hwaddress in the neighbour +cache are not getting initialized. For such an incomplete arp entry +ax2asc2 will generate an empty string resulting in /proc/net/arp output +like the following: + +$ cat /proc/net/arp +IP address HW type Flags HW address Mask Device +192.168.122.1 0x1 0x2 52:54:00:00:5d:5f * ens3 +172.20.1.99 0x3 0x0 * bpq0 + +The missing field will confuse the procfs parsing of arp(8) resulting in +incorrect output for the device such as the following: + +$ arp +Address HWtype HWaddress Flags Mask Iface +gateway ether 52:54:00:00:5d:5f C ens3 +172.20.1.99 (incomplete) ens3 + +This changes the content of /proc/net/arp to: + +$ cat /proc/net/arp +IP address HW type Flags HW address Mask Device +172.20.1.99 0x3 0x0 * * bpq0 +192.168.122.1 0x1 0x2 52:54:00:00:5d:5f * ens3 + +To do so it change ax2asc to put the string "*" in buf for a NULL address +argument. Finally the HW address field is left aligned in a 17 character +field (the length of an ethernet HW address in the usual hex notation) for +readability. + +Signed-off-by: Ralf Baechle +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + net/ipv4/arp.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +--- a/net/ipv4/arp.c ++++ b/net/ipv4/arp.c +@@ -1250,7 +1250,7 @@ void __init arp_init(void) + /* + * ax25 -> ASCII conversion + */ +-static char *ax2asc2(ax25_address *a, char *buf) ++static void ax2asc2(ax25_address *a, char *buf) + { + char c, *s; + int n; +@@ -1272,10 +1272,10 @@ static char *ax2asc2(ax25_address *a, ch + *s++ = n + '0'; + *s++ = '\0'; + +- if (*buf == '\0' || *buf == '-') +- return "*"; +- +- return buf; ++ if (*buf == '\0' || *buf == '-') { ++ buf[0] = '*'; ++ buf[1] = '\0'; ++ } + } + #endif /* CONFIG_AX25 */ + +@@ -1309,7 +1309,7 @@ static void arp_format_neigh_entry(struc + } + #endif + sprintf(tbuf, "%pI4", n->primary_key); +- seq_printf(seq, "%-16s 0x%-10x0x%-10x%s * %s\n", ++ seq_printf(seq, "%-16s 0x%-10x0x%-10x%-17s * %s\n", + tbuf, hatype, arp_state_to_flags(n), hbuffer, dev->name); + read_unlock(&n->lock); + } diff --git a/queue-4.4/net-hns-fix-the-device-being-used-for-dma-mapping-during-tx.patch b/queue-4.4/net-hns-fix-the-device-being-used-for-dma-mapping-during-tx.patch new file mode 100644 index 00000000000..4c0f030c27c --- /dev/null +++ b/queue-4.4/net-hns-fix-the-device-being-used-for-dma-mapping-during-tx.patch @@ -0,0 +1,38 @@ +From foo@baz Thu Jun 15 11:13:01 CEST 2017 +From: Kejian Yan +Date: Tue, 23 May 2017 21:53:41 -0400 +Subject: net: hns: Fix the device being used for dma mapping during TX + +From: Kejian Yan + + +[ Upstream commit b85ea006b6bebb692628f11882af41c3e12e1e09 ] + +This patch fixes the device being used to DMA map skb->data. +Erroneous device assignment causes the crash when SMMU is enabled. +This happens during TX since buffer gets DMA mapped with device +correspondign to net_device and gets unmapped using the device +related to DSAF. + +Signed-off-by: Kejian Yan +Reviewed-by: Yisen Zhuang +Signed-off-by: Salil Mehta +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c ++++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c +@@ -105,8 +105,8 @@ int hns_nic_net_xmit_hw(struct net_devic + struct hns_nic_ring_data *ring_data) + { + struct hns_nic_priv *priv = netdev_priv(ndev); +- struct device *dev = priv->dev; + struct hnae_ring *ring = ring_data->ring; ++ struct device *dev = ring_to_dev(ring); + struct netdev_queue *dev_queue; + struct skb_frag_struct *frag; + int buf_num; diff --git a/queue-4.4/net-mkiss-fix-panic.patch b/queue-4.4/net-mkiss-fix-panic.patch new file mode 100644 index 00000000000..13c892794c7 --- /dev/null +++ b/queue-4.4/net-mkiss-fix-panic.patch @@ -0,0 +1,54 @@ +From foo@baz Thu Jun 15 11:13:01 CEST 2017 +From: Ralf Baechle +Date: Tue, 23 May 2017 21:53:40 -0400 +Subject: NET: mkiss: Fix panic + +From: Ralf Baechle + + +[ Upstream commit 7ba1b689038726d34e3244c1ac9e2e18c2ea4787 ] + +If a USB-to-serial adapter is unplugged, the driver re-initializes, with +dev->hard_header_len and dev->addr_len set to zero, instead of the correct +values. If then a packet is sent through the half-dead interface, the +kernel will panic due to running out of headroom in the skb when pushing +for the AX.25 headers resulting in this panic: + +[] (skb_panic) from [] (skb_push+0x4c/0x50) +[] (skb_push) from [] (ax25_hard_header+0x34/0xf4 [ax25]) +[] (ax25_hard_header [ax25]) from [] (ax_header+0x38/0x40 [mkiss]) +[] (ax_header [mkiss]) from [] (neigh_compat_output+0x8c/0xd8) +[] (neigh_compat_output) from [] (ip_finish_output+0x2a0/0x914) +[] (ip_finish_output) from [] (ip_output+0xd8/0xf0) +[] (ip_output) from [] (ip_local_out_sk+0x44/0x48) + +This patch makes mkiss behave like the 6pack driver. 6pack does not +panic. In 6pack.c sp_setup() (same function name here) the values for +dev->hard_header_len and dev->addr_len are set to the same values as in +my mkiss patch. + +[ralf@linux-mips.org: Massages original submission to conform to the usual +standards for patch submissions.] + +Signed-off-by: Thomas Osterried +Signed-off-by: Ralf Baechle +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/hamradio/mkiss.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/net/hamradio/mkiss.c ++++ b/drivers/net/hamradio/mkiss.c +@@ -648,8 +648,8 @@ static void ax_setup(struct net_device * + { + /* Finish setting up the DEVICE info. */ + dev->mtu = AX_MTU; +- dev->hard_header_len = 0; +- dev->addr_len = 0; ++ dev->hard_header_len = AX25_MAX_HEADER_LEN; ++ dev->addr_len = AX25_ADDR_LEN; + dev->type = ARPHRD_AX25; + dev->tx_queue_len = 10; + dev->header_ops = &ax25_header_ops; diff --git a/queue-4.4/series b/queue-4.4/series index 3484a55be13..ebbb70cae1f 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -7,3 +7,9 @@ net-xilinx_emaclite-fix-freezes-due-to-unordered-i-o.patch net-xilinx_emaclite-fix-receive-buffer-overflow.patch ipv6-handle-ipv4-mapped-src-to-in6addr_any-dst.patch ipv6-inhibit-ipv4-mapped-src-address-on-the-wire.patch +net-fix-proc-net-arp-for-ax.25.patch +net-mkiss-fix-panic.patch +net-hns-fix-the-device-being-used-for-dma-mapping-during-tx.patch +sierra_net-skip-validating-irrelevant-fields-for-idle-lsis.patch +sierra_net-add-support-for-ipv6-and-dual-stack-link-sense-indications.patch +i2c-piix4-fix-request_region-size.patch diff --git a/queue-4.4/sierra_net-add-support-for-ipv6-and-dual-stack-link-sense-indications.patch b/queue-4.4/sierra_net-add-support-for-ipv6-and-dual-stack-link-sense-indications.patch new file mode 100644 index 00000000000..143d416f6c3 --- /dev/null +++ b/queue-4.4/sierra_net-add-support-for-ipv6-and-dual-stack-link-sense-indications.patch @@ -0,0 +1,221 @@ +From foo@baz Thu Jun 15 11:13:01 CEST 2017 +From: Stefan Brüns +Date: Tue, 23 May 2017 21:53:43 -0400 +Subject: sierra_net: Add support for IPv6 and Dual-Stack Link Sense Indications + +From: Stefan Brüns + + +[ Upstream commit 5a70348e1187c5bf1cbd0ec51843f36befed1c2d ] + +If a context is configured as dualstack ("IPv4v6"), the modem indicates +the context activation with a slightly different indication message. +The dual-stack indication omits the link_type (IPv4/v6) and adds +additional address fields. +IPv6 LSIs are identical to IPv4 LSIs, but have a different link type. + +Signed-off-by: Stefan Brüns +Reviewed-by: Bjørn Mork +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/usb/sierra_net.c | 101 ++++++++++++++++++++++++++++--------------- + 1 file changed, 66 insertions(+), 35 deletions(-) + +--- a/drivers/net/usb/sierra_net.c ++++ b/drivers/net/usb/sierra_net.c +@@ -73,8 +73,6 @@ static atomic_t iface_counter = ATOMIC_I + /* Private data structure */ + struct sierra_net_data { + +- u8 ethr_hdr_tmpl[ETH_HLEN]; /* ethernet header template for rx'd pkts */ +- + u16 link_up; /* air link up or down */ + u8 tx_hdr_template[4]; /* part of HIP hdr for tx'd packets */ + +@@ -122,6 +120,7 @@ struct param { + + /* LSI Protocol types */ + #define SIERRA_NET_PROTOCOL_UMTS 0x01 ++#define SIERRA_NET_PROTOCOL_UMTS_DS 0x04 + /* LSI Coverage */ + #define SIERRA_NET_COVERAGE_NONE 0x00 + #define SIERRA_NET_COVERAGE_NOPACKET 0x01 +@@ -129,7 +128,8 @@ struct param { + /* LSI Session */ + #define SIERRA_NET_SESSION_IDLE 0x00 + /* LSI Link types */ +-#define SIERRA_NET_AS_LINK_TYPE_IPv4 0x00 ++#define SIERRA_NET_AS_LINK_TYPE_IPV4 0x00 ++#define SIERRA_NET_AS_LINK_TYPE_IPV6 0x02 + + struct lsi_umts { + u8 protocol; +@@ -137,9 +137,14 @@ struct lsi_umts { + __be16 length; + /* eventually use a union for the rest - assume umts for now */ + u8 coverage; +- u8 unused2[41]; ++ u8 network_len; /* network name len */ ++ u8 network[40]; /* network name (UCS2, bigendian) */ + u8 session_state; + u8 unused3[33]; ++} __packed; ++ ++struct lsi_umts_single { ++ struct lsi_umts lsi; + u8 link_type; + u8 pdp_addr_len; /* NW-supplied PDP address len */ + u8 pdp_addr[16]; /* NW-supplied PDP address (bigendian)) */ +@@ -158,10 +163,31 @@ struct lsi_umts { + u8 reserved[8]; + } __packed; + ++struct lsi_umts_dual { ++ struct lsi_umts lsi; ++ u8 pdp_addr4_len; /* NW-supplied PDP IPv4 address len */ ++ u8 pdp_addr4[4]; /* NW-supplied PDP IPv4 address (bigendian)) */ ++ u8 pdp_addr6_len; /* NW-supplied PDP IPv6 address len */ ++ u8 pdp_addr6[16]; /* NW-supplied PDP IPv6 address (bigendian)) */ ++ u8 unused4[23]; ++ u8 dns1_addr4_len; /* NW-supplied 1st DNS v4 address len (bigendian) */ ++ u8 dns1_addr4[4]; /* NW-supplied 1st DNS v4 address */ ++ u8 dns1_addr6_len; /* NW-supplied 1st DNS v6 address len */ ++ u8 dns1_addr6[16]; /* NW-supplied 1st DNS v6 address (bigendian)*/ ++ u8 dns2_addr4_len; /* NW-supplied 2nd DNS v4 address len (bigendian) */ ++ u8 dns2_addr4[4]; /* NW-supplied 2nd DNS v4 address */ ++ u8 dns2_addr6_len; /* NW-supplied 2nd DNS v6 address len */ ++ u8 dns2_addr6[16]; /* NW-supplied 2nd DNS v6 address (bigendian)*/ ++ u8 unused5[68]; ++} __packed; ++ + #define SIERRA_NET_LSI_COMMON_LEN 4 +-#define SIERRA_NET_LSI_UMTS_LEN (sizeof(struct lsi_umts)) ++#define SIERRA_NET_LSI_UMTS_LEN (sizeof(struct lsi_umts_single)) + #define SIERRA_NET_LSI_UMTS_STATUS_LEN \ + (SIERRA_NET_LSI_UMTS_LEN - SIERRA_NET_LSI_COMMON_LEN) ++#define SIERRA_NET_LSI_UMTS_DS_LEN (sizeof(struct lsi_umts_dual)) ++#define SIERRA_NET_LSI_UMTS_DS_STATUS_LEN \ ++ (SIERRA_NET_LSI_UMTS_DS_LEN - SIERRA_NET_LSI_COMMON_LEN) + + /* Forward definitions */ + static void sierra_sync_timer(unsigned long syncdata); +@@ -191,10 +217,11 @@ static inline void sierra_net_set_privat + dev->data[0] = (unsigned long)priv; + } + +-/* is packet IPv4 */ ++/* is packet IPv4/IPv6 */ + static inline int is_ip(struct sk_buff *skb) + { +- return skb->protocol == cpu_to_be16(ETH_P_IP); ++ return skb->protocol == cpu_to_be16(ETH_P_IP) || ++ skb->protocol == cpu_to_be16(ETH_P_IPV6); + } + + /* +@@ -350,18 +377,11 @@ static inline int sierra_net_is_valid_ad + static int sierra_net_parse_lsi(struct usbnet *dev, char *data, int datalen) + { + struct lsi_umts *lsi = (struct lsi_umts *)data; ++ u32 expected_length; + +- if (datalen < sizeof(struct lsi_umts)) { +- netdev_err(dev->net, "%s: Data length %d, exp %Zu\n", +- __func__, datalen, +- sizeof(struct lsi_umts)); +- return -1; +- } +- +- if (lsi->length != cpu_to_be16(SIERRA_NET_LSI_UMTS_STATUS_LEN)) { +- netdev_err(dev->net, "%s: LSI_UMTS_STATUS_LEN %d, exp %u\n", +- __func__, be16_to_cpu(lsi->length), +- (u32)SIERRA_NET_LSI_UMTS_STATUS_LEN); ++ if (datalen < sizeof(struct lsi_umts_single)) { ++ netdev_err(dev->net, "%s: Data length %d, exp >= %Zu\n", ++ __func__, datalen, sizeof(struct lsi_umts_single)); + return -1; + } + +@@ -373,22 +393,34 @@ static int sierra_net_parse_lsi(struct u + } + + /* Validate the protocol - only support UMTS for now */ +- if (lsi->protocol != SIERRA_NET_PROTOCOL_UMTS) { ++ if (lsi->protocol == SIERRA_NET_PROTOCOL_UMTS) { ++ struct lsi_umts_single *single = (struct lsi_umts_single *)lsi; ++ ++ /* Validate the link type */ ++ if (single->link_type != SIERRA_NET_AS_LINK_TYPE_IPV4 && ++ single->link_type != SIERRA_NET_AS_LINK_TYPE_IPV6) { ++ netdev_err(dev->net, "Link type unsupported: 0x%02x\n", ++ single->link_type); ++ return -1; ++ } ++ expected_length = SIERRA_NET_LSI_UMTS_STATUS_LEN; ++ } else if (lsi->protocol == SIERRA_NET_PROTOCOL_UMTS_DS) { ++ expected_length = SIERRA_NET_LSI_UMTS_DS_STATUS_LEN; ++ } else { + netdev_err(dev->net, "Protocol unsupported, 0x%02x\n", +- lsi->protocol); ++ lsi->protocol); + return -1; + } + +- /* Validate the link type */ +- if (lsi->link_type != SIERRA_NET_AS_LINK_TYPE_IPv4) { +- netdev_err(dev->net, "Link type unsupported: 0x%02x\n", +- lsi->link_type); ++ if (be16_to_cpu(lsi->length) != expected_length) { ++ netdev_err(dev->net, "%s: LSI_UMTS_STATUS_LEN %d, exp %u\n", ++ __func__, be16_to_cpu(lsi->length), expected_length); + return -1; + } + + /* Validate the coverage */ +- if (lsi->coverage == SIERRA_NET_COVERAGE_NONE +- || lsi->coverage == SIERRA_NET_COVERAGE_NOPACKET) { ++ if (lsi->coverage == SIERRA_NET_COVERAGE_NONE || ++ lsi->coverage == SIERRA_NET_COVERAGE_NOPACKET) { + netdev_err(dev->net, "No coverage, 0x%02x\n", lsi->coverage); + return 0; + } +@@ -662,7 +694,6 @@ static int sierra_net_bind(struct usbnet + u8 numendpoints; + u16 fwattr = 0; + int status; +- struct ethhdr *eth; + struct sierra_net_data *priv; + static const u8 sync_tmplate[sizeof(priv->sync_msg)] = { + 0x00, 0x00, SIERRA_NET_HIP_MSYNC_ID, 0x00}; +@@ -700,11 +731,6 @@ static int sierra_net_bind(struct usbnet + dev->net->dev_addr[ETH_ALEN-2] = atomic_inc_return(&iface_counter); + dev->net->dev_addr[ETH_ALEN-1] = ifacenum; + +- /* we will have to manufacture ethernet headers, prepare template */ +- eth = (struct ethhdr *)priv->ethr_hdr_tmpl; +- memcpy(ð->h_dest, dev->net->dev_addr, ETH_ALEN); +- eth->h_proto = cpu_to_be16(ETH_P_IP); +- + /* prepare shutdown message template */ + memcpy(priv->shdwn_msg, shdwn_tmplate, sizeof(priv->shdwn_msg)); + /* set context index initially to 0 - prepares tx hdr template */ +@@ -833,9 +859,14 @@ static int sierra_net_rx_fixup(struct us + + skb_pull(skb, hh.hdrlen); + +- /* We are going to accept this packet, prepare it */ +- memcpy(skb->data, sierra_net_get_private(dev)->ethr_hdr_tmpl, +- ETH_HLEN); ++ /* We are going to accept this packet, prepare it. ++ * In case protocol is IPv6, keep it, otherwise force IPv4. ++ */ ++ skb_reset_mac_header(skb); ++ if (eth_hdr(skb)->h_proto != cpu_to_be16(ETH_P_IPV6)) ++ eth_hdr(skb)->h_proto = cpu_to_be16(ETH_P_IP); ++ eth_zero_addr(eth_hdr(skb)->h_source); ++ memcpy(eth_hdr(skb)->h_dest, dev->net->dev_addr, ETH_ALEN); + + /* Last packet in batch handled by usbnet */ + if (hh.payload_len.word == skb->len) diff --git a/queue-4.4/sierra_net-skip-validating-irrelevant-fields-for-idle-lsis.patch b/queue-4.4/sierra_net-skip-validating-irrelevant-fields-for-idle-lsis.patch new file mode 100644 index 00000000000..59a083fa015 --- /dev/null +++ b/queue-4.4/sierra_net-skip-validating-irrelevant-fields-for-idle-lsis.patch @@ -0,0 +1,52 @@ +From foo@baz Thu Jun 15 11:13:01 CEST 2017 +From: Stefan Brüns +Date: Tue, 23 May 2017 21:53:42 -0400 +Subject: sierra_net: Skip validating irrelevant fields for IDLE LSIs + +From: Stefan Brüns + + +[ Upstream commit 764895d3039e903dac3a70f219949efe43d036a0 ] + +When the context is deactivated, the link_type is set to 0xff, which +triggers a warning message, and results in a wrong link status, as +the LSI is ignored. + +Signed-off-by: Stefan Brüns +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/usb/sierra_net.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +--- a/drivers/net/usb/sierra_net.c ++++ b/drivers/net/usb/sierra_net.c +@@ -365,6 +365,13 @@ static int sierra_net_parse_lsi(struct u + return -1; + } + ++ /* Validate the session state */ ++ if (lsi->session_state == SIERRA_NET_SESSION_IDLE) { ++ netdev_err(dev->net, "Session idle, 0x%02x\n", ++ lsi->session_state); ++ return 0; ++ } ++ + /* Validate the protocol - only support UMTS for now */ + if (lsi->protocol != SIERRA_NET_PROTOCOL_UMTS) { + netdev_err(dev->net, "Protocol unsupported, 0x%02x\n", +@@ -386,13 +393,6 @@ static int sierra_net_parse_lsi(struct u + return 0; + } + +- /* Validate the session state */ +- if (lsi->session_state == SIERRA_NET_SESSION_IDLE) { +- netdev_err(dev->net, "Session idle, 0x%02x\n", +- lsi->session_state); +- return 0; +- } +- + /* Set link_sense true */ + return 1; + }