Netdev List
 help / color / mirror / Atom feed
* Re: [Patch net 2/2] net_sched: always call ->destroy when ->init() fails
From: John Fastabend @ 2014-10-30  3:09 UTC (permalink / raw)
  To: xiyou.wangcong, wang.bo116
  Cc: David Miller, netdev, john.r.fastabend, edumazet, kaber, vtlam
In-Reply-To: <20141029.142934.1722309776700951536.davem@davemloft.net>

On 10/29/2014 11:29 AM, David Miller wrote:
> From: Cong Wang <xiyou.wangcong@gmail.com>
> Date: Fri, 24 Oct 2014 16:55:59 -0700
>
>> In qdisc_create(), when ->init() exists and it fails, we should
>> call ->destroy() to clean up the potentially partially initialized
>> qdisc's. This will also make the ->init() implementation easier.
>>
>> qdisc_create_dflt() already does that. Most callers of qdisc_create_dflt()
>> simply use noop_qdisc when it fails.
>>
>> And, most of the ->destroy() implementations are already able to clean up
>> partially initialization, we don't need to worry.
>>
>> The following ->init()'s need to catch up:
>> fq_codel_init(), hhf_init(), multiq_init(),  sfq_init(), mq_init(),
>> mqprio_init().
>>
>> Reported-by: Wang Bo <wang.bo116@zte.com.cn>
>> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
>
> As discussed, I really want to see ->init() clean up it's own crap.
>
> There are certain kinds of initializations that cannot be tested for,
> such as setting up a workqueue etc.
>
> Therefore, the mere idea that we can call ->destroy() to handle this
> is a pure non-starter as far as I am concerned.
>
> Thanks.
> --

Cong/Wang, anyone working on this? Otherwise I'll take a stab
at it tomorrow.

Thanks!
John

-- 
John Fastabend         Intel Corporation

^ permalink raw reply

* RE: suspend/resume broken on 3.18-rc2
From: fugang.duan @ 2014-10-30  3:11 UTC (permalink / raw)
  To: Anson.Huang@freescale.com, Fabio Estevam
  Cc: Frank.Li@freescale.com, Russell King, Shawn Guo,
	netdev@vger.kernel.org
In-Reply-To: <8bbe5cec19124e1cae128cc39d249148@BN1PR0301MB0628.namprd03.prod.outlook.com>

From: Huang Yongcai-B20788 Sent: Thursday, October 30, 2014 10:35 AM
>To: Fabio Estevam; Duan Fugang-B38611
>Cc: Li Frank-B20596; Russell King; Shawn Guo; netdev@vger.kernel.org
>Subject: RE: suspend/resume broken on 3.18-rc2
>
>Hi, all
>	I just tried the 3.18.0-rc2 on our i.MX6SX-SDB board, attached is my
>log, seems like the issue is inside the ENET driver, I guess you did NOT
>add "no_console_suspend" in the cmdline, so when failed, you can NOT see
>any log, please check the attached log, I can see the failure is in FEC
>when reusme.
>
>	I also tried using sd rootfs and unplug the enet cable, the
>suspend/resume is OK without FEC driver. So please add
>"no_console_suspend" into cmdline and do debug for FEC driver.
>
>
>Best regards!
>Anson Huang
>
I tried it yesterday with FEC close, resume cannot back.
I will try it again.

Regards,
Andy

^ permalink raw reply

* [PATCH net] gre: Fix regression in gretap TSO support
From: alexander.duyck @ 2014-10-30  3:26 UTC (permalink / raw)
  To: netdev, davem
  Cc: H.K. Jerry Chu, Eric Dumazet, Alexander Duyck, Neal Cardwell,
	Pravin B Shelar

From: Alexander Duyck <alexander.h.duyck@redhat.com>

On recent kernels I found that TSO on gretap interfaces didn't work.  After
bisecting it I found that commit b884b1a4 had introduced a regression in
which the Ethernet header was being included in the GRE header length.

This change corrects that by basing the GRE header length on the inner mac
header in the case of GRE tunnels using transparent Ethernet bridging, and
uses the network header for all other GRE tunnel types.

Fixes: b884b1a4 ("gre_offload: simplify GRE header length calculation in gre_gso_segment()")
Cc: Neal Cardwell <ncardwell@google.com>
Cc: Eric Dumazet <edumazet@google.com>
Cc: H.K. Jerry Chu <hkchu@google.com>
Cc: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: Alexander Duyck <alexander.h.duyck@redhat.com>
---
 net/ipv4/gre_offload.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/net/ipv4/gre_offload.c b/net/ipv4/gre_offload.c
index f6e345c..67a1f66 100644
--- a/net/ipv4/gre_offload.c
+++ b/net/ipv4/gre_offload.c
@@ -47,7 +47,10 @@ static struct sk_buff *gre_gso_segment(struct sk_buff *skb,
 
 	greh = (struct gre_base_hdr *)skb_transport_header(skb);
 
-	ghl = skb_inner_network_header(skb) - skb_transport_header(skb);
+	if (greh->protocol == htons(ETH_P_TEB))
+		ghl = skb_inner_mac_header(skb) - skb_transport_header(skb);
+	else
+		ghl = skb_inner_network_header(skb) - skb_transport_header(skb);
 	if (unlikely(ghl < sizeof(*greh)))
 		goto out;
 

^ permalink raw reply related

* [PATCH net-next] r8152: set RTL8152_UNPLUG when finding -ENODEV
From: Hayes Wang @ 2014-10-30  3:46 UTC (permalink / raw)
  To: netdev; +Cc: nic_swsd, linux-kernel, linux-usb, Hayes Wang

Set RTL8152_UNPLUG when finding -ENODEV. This could accelerate
unloading the driver when the device is unplugged.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
---
 drivers/net/usb/r8152.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index e1810bc..f116335 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -690,6 +690,9 @@ static int generic_ocp_read(struct r8152 *tp, u16 index, u16 size,
 		}
 	}
 
+	if (ret == -ENODEV)
+		set_bit(RTL8152_UNPLUG, &tp->flags);
+
 	return ret;
 }
 
@@ -757,6 +760,9 @@ static int generic_ocp_write(struct r8152 *tp, u16 index, u16 byteen,
 	}
 
 error1:
+	if (ret == -ENODEV)
+		set_bit(RTL8152_UNPLUG, &tp->flags);
+
 	return ret;
 }
 
@@ -1083,6 +1089,7 @@ static void read_bulk_callback(struct urb *urb)
 
 	result = r8152_submit_rx(tp, agg, GFP_ATOMIC);
 	if (result == -ENODEV) {
+		set_bit(RTL8152_UNPLUG, &tp->flags);
 		netif_device_detach(tp->netdev);
 	} else if (result) {
 		spin_lock(&tp->rx_lock);
@@ -1187,11 +1194,13 @@ static void intr_callback(struct urb *urb)
 
 resubmit:
 	res = usb_submit_urb(urb, GFP_ATOMIC);
-	if (res == -ENODEV)
+	if (res == -ENODEV) {
+		set_bit(RTL8152_UNPLUG, &tp->flags);
 		netif_device_detach(tp->netdev);
-	else if (res)
+	} else if (res) {
 		netif_err(tp, intr, tp->netdev,
 			  "can't resubmit intr, status %d\n", res);
+	}
 }
 
 static inline void *rx_agg_align(void *data)
@@ -1755,6 +1764,7 @@ static void tx_bottom(struct r8152 *tp)
 			struct net_device *netdev = tp->netdev;
 
 			if (res == -ENODEV) {
+				set_bit(RTL8152_UNPLUG, &tp->flags);
 				netif_device_detach(netdev);
 			} else {
 				struct net_device_stats *stats = &netdev->stats;
-- 
1.9.3

^ permalink raw reply related

* [PATCH 1/6 3.18] rtlwifi: rtl8192ce: rtl8192de: rtl8192se: Fix handling for missing get_btc_status
From: Larry Finger @ 2014-10-30  4:17 UTC (permalink / raw)
  To: linville-2XuSBdqkA4R54TAoqtyWWQ
  Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA, Larry Finger,
	netdev-u79uwXL29TY76Z2rM5mHXA, Murilo Opsfelder Araujo
In-Reply-To: <1414642633-3700-1-git-send-email-Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>

The recent changes in checking for Bluetooth status added some callbacks to code
in rtlwifi. To make certain that all callbacks are defined, a dummy routine has been
added to rtlwifi, and the drivers that need to use it are modified.

Signed-off-by: Larry Finger <Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
Cc: Murilo Opsfelder Araujo <mopsfelder-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
 drivers/net/wireless/rtlwifi/core.c         | 6 ++++++
 drivers/net/wireless/rtlwifi/core.h         | 1 +
 drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | 1 +
 drivers/net/wireless/rtlwifi/rtl8192de/sw.c | 1 +
 drivers/net/wireless/rtlwifi/rtl8192se/sw.c | 1 +
 5 files changed, 10 insertions(+)

diff --git a/drivers/net/wireless/rtlwifi/core.c b/drivers/net/wireless/rtlwifi/core.c
index f6179bc..07dae0d 100644
--- a/drivers/net/wireless/rtlwifi/core.c
+++ b/drivers/net/wireless/rtlwifi/core.c
@@ -1828,3 +1828,9 @@ const struct ieee80211_ops rtl_ops = {
 	.flush = rtl_op_flush,
 };
 EXPORT_SYMBOL_GPL(rtl_ops);
+
+bool rtl_btc_status_false(void)
+{
+	return false;
+}
+EXPORT_SYMBOL_GPL(rtl_btc_status_false);
diff --git a/drivers/net/wireless/rtlwifi/core.h b/drivers/net/wireless/rtlwifi/core.h
index 59cd3b9..624e1dc 100644
--- a/drivers/net/wireless/rtlwifi/core.h
+++ b/drivers/net/wireless/rtlwifi/core.h
@@ -42,5 +42,6 @@ void rtl_rfreg_delay(struct ieee80211_hw *hw, enum radio_path rfpath, u32 addr,
 		     u32 mask, u32 data);
 void rtl_bb_delay(struct ieee80211_hw *hw, u32 addr, u32 data);
 bool rtl_cmd_send_packet(struct ieee80211_hw *hw, struct sk_buff *skb);
+bool rtl_btc_status_false(void);
 
 #endif
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
index d86b5b5..46ea076 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
@@ -244,6 +244,7 @@ static struct rtl_hal_ops rtl8192ce_hal_ops = {
 	.phy_lc_calibrate = _rtl92ce_phy_lc_calibrate,
 	.phy_set_bw_mode_callback = rtl92ce_phy_set_bw_mode_callback,
 	.dm_dynamic_txpower = rtl92ce_dm_dynamic_txpower,
+	.get_btc_status = rtl_btc_status_false,
 };
 
 static struct rtl_mod_params rtl92ce_mod_params = {
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/sw.c b/drivers/net/wireless/rtlwifi/rtl8192de/sw.c
index edab5a5..a0aba08 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192de/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192de/sw.c
@@ -251,6 +251,7 @@ static struct rtl_hal_ops rtl8192de_hal_ops = {
 	.get_rfreg = rtl92d_phy_query_rf_reg,
 	.set_rfreg = rtl92d_phy_set_rf_reg,
 	.linked_set_reg = rtl92d_linked_set_reg,
+	.get_btc_status = rtl_btc_status_false,
 };
 
 static struct rtl_mod_params rtl92de_mod_params = {
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
index 1bff2a0..5e16984 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
@@ -294,6 +294,7 @@ static struct rtl_hal_ops rtl8192se_hal_ops = {
 	.set_bbreg = rtl92s_phy_set_bb_reg,
 	.get_rfreg = rtl92s_phy_query_rf_reg,
 	.set_rfreg = rtl92s_phy_set_rf_reg,
+	.get_btc_status = rtl_btc_status_false,
 };
 
 static struct rtl_mod_params rtl92se_mod_params = {
-- 
2.1.1

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related

* [PATCH 2/6 V3.18] rtlwifi: rtl8192se: Fix duplicate calls to ieee80211_register_hw()
From: Larry Finger @ 2014-10-30  4:17 UTC (permalink / raw)
  To: linville-2XuSBdqkA4R54TAoqtyWWQ
  Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA, Larry Finger,
	netdev-u79uwXL29TY76Z2rM5mHXA, Murilo Opsfelder Araujo
In-Reply-To: <1414642633-3700-1-git-send-email-Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>

Driver rtlwifi has been modified to call ieee80211_register_hw()
from the probe routine; however, the existing call in the callback
routine for deferred firmware loading was not removed.

Signed-off-by: Larry Finger <Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
Cc: Murilo Opsfelder Araujo <mopsfelder-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
 drivers/net/wireless/rtlwifi/rtl8192se/sw.c | 17 -----------------
 1 file changed, 17 deletions(-)

diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
index 5e16984..1fd2208 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
@@ -87,11 +87,8 @@ static void rtl92s_init_aspm_vars(struct ieee80211_hw *hw)
 static void rtl92se_fw_cb(const struct firmware *firmware, void *context)
 {
 	struct ieee80211_hw *hw = context;
-	struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw);
 	struct rtl_priv *rtlpriv = rtl_priv(hw);
-	struct rtl_pci *rtlpci = rtl_pcidev(pcipriv);
 	struct rt_firmware *pfirmware = NULL;
-	int err;
 
 	RT_TRACE(rtlpriv, COMP_ERR, DBG_LOUD,
 			 "Firmware callback routine entered!\n");
@@ -112,20 +109,6 @@ static void rtl92se_fw_cb(const struct firmware *firmware, void *context)
 	memcpy(pfirmware->sz_fw_tmpbuffer, firmware->data, firmware->size);
 	pfirmware->sz_fw_tmpbufferlen = firmware->size;
 	release_firmware(firmware);
-
-	err = ieee80211_register_hw(hw);
-	if (err) {
-		RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
-			 "Can't register mac80211 hw\n");
-		return;
-	} else {
-		rtlpriv->mac80211.mac80211_registered = 1;
-	}
-	rtlpci->irq_alloc = 1;
-	set_bit(RTL_STATUS_INTERFACE_START, &rtlpriv->status);

^ permalink raw reply related

* [PATCH 0/6 3.18] Fixes for iwlwifi drivers
From: Larry Finger @ 2014-10-30  4:17 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Larry Finger, netdev, Murilo Opsfelder Araujo

Some late changes to rtlwifi made some of the older drivers not start correctly.
These patches should be applied to 3.18.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Murilo Opsfelder Araujo <mopsfelder@gmail.com>

Larry Finger (6):
  rtlwifi: rtl8192ce: rtl8192de: rtl8192se: Fix handling for missing
    get_btc_status
  rtlwifi: rtl8192se: Fix duplicate calls to ieee80211_register_hw()
  rtlwifi: rtl8192se: Add missing section to read descriptor setting
  rtlwifi: rtl8192ce: Add missing section to read descriptor setting
  rtlwifi: rtl8821ae: Remove extra semicolons
  rtlwifi: rtl8192se: Fix firmware loading

 drivers/net/wireless/rtlwifi/core.c          |  6 ++++++
 drivers/net/wireless/rtlwifi/core.h          |  1 +
 drivers/net/wireless/rtlwifi/rtl8192ce/def.h |  2 ++
 drivers/net/wireless/rtlwifi/rtl8192ce/sw.c  |  1 +
 drivers/net/wireless/rtlwifi/rtl8192ce/trx.c |  3 +++
 drivers/net/wireless/rtlwifi/rtl8192de/sw.c  |  1 +
 drivers/net/wireless/rtlwifi/rtl8192se/def.h |  2 ++
 drivers/net/wireless/rtlwifi/rtl8192se/sw.c  | 22 +++-------------------
 drivers/net/wireless/rtlwifi/rtl8192se/trx.c |  3 +++
 drivers/net/wireless/rtlwifi/rtl8821ae/phy.c | 12 ++++++------
 10 files changed, 28 insertions(+), 25 deletions(-)

-- 
2.1.1

^ permalink raw reply

* [PATCH 3/6i V3.18] rtlwifi: rtl8192se: Add missing section to read descriptor setting
From: Larry Finger @ 2014-10-30  4:17 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Larry Finger, netdev, Murilo Opsfelder Araujo
In-Reply-To: <1414642633-3700-1-git-send-email-Larry.Finger@lwfinger.net>

The new version of rtlwifi needs code in rtl92se_get_desc() that returns
the buffer address for read operations.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Murilo Opsfelder Araujo <mopsfelder@gmail.com>
---
 drivers/net/wireless/rtlwifi/rtl8192se/def.h | 2 ++
 drivers/net/wireless/rtlwifi/rtl8192se/trx.c | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/def.h b/drivers/net/wireless/rtlwifi/rtl8192se/def.h
index 83c9867..6e7a70b 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192se/def.h
+++ b/drivers/net/wireless/rtlwifi/rtl8192se/def.h
@@ -446,6 +446,8 @@
 /* DWORD 6 */
 #define SET_RX_STATUS__DESC_BUFF_ADDR(__pdesc, __val)	\
 	SET_BITS_OFFSET_LE(__pdesc + 24, 0, 32, __val)
+#define GET_RX_STATUS_DESC_BUFF_ADDR(__pdesc)			\
+	SHIFT_AND_MASK_LE(__pdesc + 24, 0, 32)
 
 #define SE_RX_HAL_IS_CCK_RATE(_pdesc)\
 	(GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC92_RATE1M ||	\
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c
index b358ebc..672fd3b 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c
@@ -640,6 +640,9 @@ u32 rtl92se_get_desc(u8 *desc, bool istx, u8 desc_name)
 		case HW_DESC_RXPKT_LEN:
 			ret = GET_RX_STATUS_DESC_PKT_LEN(desc);
 			break;
+		case HW_DESC_RXBUFF_ADDR:
+			ret = GET_RX_STATUS_DESC_BUFF_ADDR(desc);
+			break;
 		default:
 			RT_ASSERT(false, "ERR rxdesc :%d not process\n",
 				  desc_name);
-- 
2.1.1

^ permalink raw reply related

* [PATCH 4/6i V3.18] rtlwifi: rtl8192ce: Add missing section to read descriptor setting
From: Larry Finger @ 2014-10-30  4:17 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Larry Finger, netdev, Murilo Opsfelder Araujo
In-Reply-To: <1414642633-3700-1-git-send-email-Larry.Finger@lwfinger.net>

The new version of rtlwifi needs code in rtl92ce_get_desc() that returns
the buffer address for read operations.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Murilo Opsfelder Araujo <mopsfelder@gmail.com>
---
 drivers/net/wireless/rtlwifi/rtl8192ce/def.h | 2 ++
 drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/def.h b/drivers/net/wireless/rtlwifi/rtl8192ce/def.h
index 831df10..9b660df 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192ce/def.h
+++ b/drivers/net/wireless/rtlwifi/rtl8192ce/def.h
@@ -114,6 +114,8 @@
 	LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 16, 4)
 #define	GET_C2H_CMD_FEEDBACK_CCX_SEQ(__pcmdfbhdr)	\
 	LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 20, 12)
+#define GET_RX_STATUS_DESC_BUFF_ADDR(__pdesc)			\
+	SHIFT_AND_MASK_LE(__pdesc + 24, 0, 32)
 
 #define CHIP_VER_B			BIT(4)
 #define CHIP_BONDING_IDENTIFIER(_value) (((_value) >> 22) & 0x3)
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c
index 2fb9c7a..dc3d20b 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c
@@ -728,6 +728,9 @@ u32 rtl92ce_get_desc(u8 *p_desc, bool istx, u8 desc_name)
 		case HW_DESC_RXPKT_LEN:
 			ret = GET_RX_DESC_PKT_LEN(pdesc);
 			break;
+		case HW_DESC_RXBUFF_ADDR:
+			ret = GET_RX_STATUS_DESC_BUFF_ADDR(pdesc);
+			break;
 		default:
 			RT_ASSERT(false, "ERR rxdesc :%d not process\n",
 				  desc_name);
-- 
2.1.1

^ permalink raw reply related

* [PATCH 5/6 V3.18] rtlwifi: rtl8821ae: Remove extra semicolons
From: Larry Finger @ 2014-10-30  4:17 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Larry Finger, netdev, Murilo Opsfelder Araujo
In-Reply-To: <1414642633-3700-1-git-send-email-Larry.Finger@lwfinger.net>

The kbuild test robot reports that there are extra semicolons in this
driver. All of them are caused by using "};" rather than "}" at the
end of a switch statement. This patch does not change any functionality.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Murilo Opsfelder Araujo <mopsfelder@gmail.com>
---
 drivers/net/wireless/rtlwifi/rtl8821ae/phy.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/phy.c b/drivers/net/wireless/rtlwifi/rtl8821ae/phy.c
index 1e9570f..9b4d8a6 100644
--- a/drivers/net/wireless/rtlwifi/rtl8821ae/phy.c
+++ b/drivers/net/wireless/rtlwifi/rtl8821ae/phy.c
@@ -800,7 +800,7 @@ static void _rtl8821ae_phy_set_txpower_by_rate_base(struct ieee80211_hw *hw,
 				 "Invalid RateSection %d in Band 2.4G,Rf Path %d, %dTx in PHY_SetTxPowerByRateBase()\n",
 				 rate_section, path, txnum);
 			break;
-		};
+		}
 	} else if (band == BAND_ON_5G) {
 		switch (rate_section) {
 		case OFDM:
@@ -823,7 +823,7 @@ static void _rtl8821ae_phy_set_txpower_by_rate_base(struct ieee80211_hw *hw,
 				"Invalid RateSection %d in Band 5G, Rf Path %d, %dTx in PHY_SetTxPowerByRateBase()\n",
 				rate_section, path, txnum);
 			break;
-		};
+		}
 	} else {
 		RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD,
 			"Invalid Band %d in PHY_SetTxPowerByRateBase()\n", band);
@@ -870,7 +870,7 @@ static u8 _rtl8821ae_phy_get_txpower_by_rate_base(struct ieee80211_hw *hw,
 				 "Invalid RateSection %d in Band 2.4G, Rf Path %d, %dTx in PHY_GetTxPowerByRateBase()\n",
 				 rate_section, path, txnum);
 			break;
-		};
+		}
 	} else if (band == BAND_ON_5G) {
 		switch (rate_section) {
 		case OFDM:
@@ -893,7 +893,7 @@ static u8 _rtl8821ae_phy_get_txpower_by_rate_base(struct ieee80211_hw *hw,
 				 "Invalid RateSection %d in Band 5G, Rf Path %d, %dTx in PHY_GetTxPowerByRateBase()\n",
 				 rate_section, path, txnum);
 			break;
-		};
+		}
 	} else {
 		RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD,
 			 "Invalid Band %d in PHY_GetTxPowerByRateBase()\n", band);
@@ -3746,7 +3746,7 @@ static void _rtl8821ae_iqk_tx_fill_iqc(struct ieee80211_hw *hw,
 		break;
 	default:
 		break;
-	};
+	}
 }
 
 static void _rtl8821ae_iqk_rx_fill_iqc(struct ieee80211_hw *hw,
@@ -3767,7 +3767,7 @@ static void _rtl8821ae_iqk_rx_fill_iqc(struct ieee80211_hw *hw,
 		break;
 	default:
 		break;
-	};
+	}
 }
 
 #define cal_num 10
-- 
2.1.1

^ permalink raw reply related

* [PATCH 6/6 V3.18] rtlwifi: rtl8192se: Fix firmware loading
From: Larry Finger @ 2014-10-30  4:17 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Larry Finger, netdev, Murilo Opsfelder Araujo
In-Reply-To: <1414642633-3700-1-git-send-email-Larry.Finger@lwfinger.net>

An error in the code makes the allocated space for firmware to be too
small.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Murilo Opsfelder Araujo <mopsfelder@gmail.com>
---
 drivers/net/wireless/rtlwifi/rtl8192se/sw.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
index 1fd2208..aadba29 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
@@ -209,8 +209,8 @@ static int rtl92s_init_sw_vars(struct ieee80211_hw *hw)
 	if (!rtlpriv->rtlhal.pfirmware)
 		return 1;
 
-	rtlpriv->max_fw_size = RTL8190_MAX_RAW_FIRMWARE_CODE_SIZE;
-
+	rtlpriv->max_fw_size = RTL8190_MAX_FIRMWARE_CODE_SIZE*2 +
+			       sizeof(struct fw_hdr);
 	pr_info("Driver for Realtek RTL8192SE/RTL8191SE\n"
 		"Loading firmware %s\n", rtlpriv->cfg->fw_name);
 	/* request fw */
-- 
2.1.1

^ permalink raw reply related

* Re: [PATCH] rtlwifi: Add more checks for get_btc_status callback
From: Larry Finger @ 2014-10-30  4:30 UTC (permalink / raw)
  To: Murilo Opsfelder Araujo, linux-kernel
  Cc: linux-wireless, netdev, Chaoming Li, John W. Linville,
	Mike Galbraith, Thadeu Cascardo, troy_tan
In-Reply-To: <1414625302-3654-1-git-send-email-mopsfelder@gmail.com>

On 10/29/2014 06:28 PM, Murilo Opsfelder Araujo wrote:
> This is a complement of commit 08054200117a95afc14c3d2ed3a38bf4e345bf78
> "rtlwifi: Add check for get_btc_status callback".
>
> With this patch, next-20141029 at least does not panic with rtl8192se
> device.
>

This patch is OK, but as noted it is not complete.

I have patches to fix all the kernel panics for rtl8192se AND rtl8192ce. There 
are missing parts, but I would prefer submitting mine, which would conflict with 
this one. For that reason, NACK for this one, and please apply the set I am 
submitting now.

Larry

> Signed-off-by: Murilo Opsfelder Araujo <mopsfelder@gmail.com>
> ---
>
> Hello, everyone.
>
> Some days ago, I reported [1] that next-20140930 introduced an issue
> with rtl8192se devices.
>
> Later on, Larry Finger proposed [2] a fix that did not solve the
> problem thoroughly.
>
> This patch is based on Larry's one [3].  It also does not solve the
> rtl8192se issue completely but I can at least boot next-20141029
> without a panic.
>
> The remaining issue is that the rtl8192se device does not associate.
> It does not even show any wifi network available.  The device is shown
> by iwconfig, but I cannot do anything with it.
>
> I need help from someone out there that could provide me guidance or
> possibly investigate the issue (I'm not a kernel expert yet).
>
> I'd not like to see this regression landing on v3.18.
>
> [1] http://marc.info/?l=linux-wireless&m=141403434929612
> [2] http://marc.info/?l=linux-wireless&m=141408165513255
> [3] http://marc.info/?l=linux-wireless&m=141416876810127
>
>   drivers/net/wireless/rtlwifi/base.c |  6 ++++--
>   drivers/net/wireless/rtlwifi/core.c |  9 ++++++---
>   drivers/net/wireless/rtlwifi/pci.c  |  3 ++-
>   drivers/net/wireless/rtlwifi/ps.c   | 12 ++++++++----
>   4 files changed, 20 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/net/wireless/rtlwifi/base.c b/drivers/net/wireless/rtlwifi/base.c
> index 40b6d1d..1a51577 100644
> --- a/drivers/net/wireless/rtlwifi/base.c
> +++ b/drivers/net/wireless/rtlwifi/base.c
> @@ -1234,7 +1234,8 @@ EXPORT_SYMBOL_GPL(rtl_action_proc);
>   static void setup_arp_tx(struct rtl_priv *rtlpriv, struct rtl_ps_ctl *ppsc)
>   {
>   	rtlpriv->ra.is_special_data = true;
> -	if (rtlpriv->cfg->ops->get_btc_status())
> +	if (rtlpriv->cfg->ops->get_btc_status &&
> +	    rtlpriv->cfg->ops->get_btc_status())
>   		rtlpriv->btcoexist.btc_ops->btc_special_packet_notify(
>   					rtlpriv, 1);
>   	rtlpriv->enter_ps = false;
> @@ -1629,7 +1630,8 @@ void rtl_watchdog_wq_callback(void *data)
>   		}
>   	}
>
> -	if (rtlpriv->cfg->ops->get_btc_status())
> +	if (rtlpriv->cfg->ops->get_btc_status &&
> +	    rtlpriv->cfg->ops->get_btc_status())
>   		rtlpriv->btcoexist.btc_ops->btc_periodical(rtlpriv);
>
>   	rtlpriv->link_info.bcn_rx_inperiod = 0;
> diff --git a/drivers/net/wireless/rtlwifi/core.c b/drivers/net/wireless/rtlwifi/core.c
> index f6179bc..686d256 100644
> --- a/drivers/net/wireless/rtlwifi/core.c
> +++ b/drivers/net/wireless/rtlwifi/core.c
> @@ -1133,7 +1133,8 @@ static void rtl_op_bss_info_changed(struct ieee80211_hw *hw,
>   		ppsc->report_linked = (mstatus == RT_MEDIA_CONNECT) ?
>   				      true : false;
>
> -		if (rtlpriv->cfg->ops->get_btc_status())
> +		if (rtlpriv->cfg->ops->get_btc_status &&
> +		    rtlpriv->cfg->ops->get_btc_status())
>   			rtlpriv->btcoexist.btc_ops->btc_mediastatus_notify(
>   							rtlpriv, mstatus);
>   	}
> @@ -1373,7 +1374,8 @@ static void rtl_op_sw_scan_start(struct ieee80211_hw *hw)
>   		return;
>   	}
>
> -	if (rtlpriv->cfg->ops->get_btc_status())
> +	if (rtlpriv->cfg->ops->get_btc_status &&
> +	    rtlpriv->cfg->ops->get_btc_status())
>   		rtlpriv->btcoexist.btc_ops->btc_scan_notify(rtlpriv, 1);
>
>   	if (rtlpriv->dm.supp_phymode_switch) {
> @@ -1425,7 +1427,8 @@ static void rtl_op_sw_scan_complete(struct ieee80211_hw *hw)
>   	}
>
>   	rtlpriv->cfg->ops->scan_operation_backup(hw, SCAN_OPT_RESTORE);
> -	if (rtlpriv->cfg->ops->get_btc_status())
> +	if (rtlpriv->cfg->ops->get_btc_status &&
> +	    rtlpriv->cfg->ops->get_btc_status())
>   		rtlpriv->btcoexist.btc_ops->btc_scan_notify(rtlpriv, 0);
>   }
>
> diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c
> index 25daa87..ed3364d 100644
> --- a/drivers/net/wireless/rtlwifi/pci.c
> +++ b/drivers/net/wireless/rtlwifi/pci.c
> @@ -1833,7 +1833,8 @@ static void rtl_pci_stop(struct ieee80211_hw *hw)
>   	unsigned long flags;
>   	u8 RFInProgressTimeOut = 0;
>
> -	if (rtlpriv->cfg->ops->get_btc_status())
> +	if (rtlpriv->cfg->ops->get_btc_status &&
> +	    rtlpriv->cfg->ops->get_btc_status())
>   		rtlpriv->btcoexist.btc_ops->btc_halt_notify();
>
>   	/*
> diff --git a/drivers/net/wireless/rtlwifi/ps.c b/drivers/net/wireless/rtlwifi/ps.c
> index b69321d..2278af9 100644
> --- a/drivers/net/wireless/rtlwifi/ps.c
> +++ b/drivers/net/wireless/rtlwifi/ps.c
> @@ -261,7 +261,8 @@ void rtl_ips_nic_off_wq_callback(void *data)
>   			ppsc->in_powersavemode = true;
>
>   			/* call before RF off */
> -			if (rtlpriv->cfg->ops->get_btc_status())
> +			if (rtlpriv->cfg->ops->get_btc_status &&
> +			    rtlpriv->cfg->ops->get_btc_status())
>   				rtlpriv->btcoexist.btc_ops->btc_ips_notify(rtlpriv,
>   									ppsc->inactive_pwrstate);
>
> @@ -306,7 +307,8 @@ void rtl_ips_nic_on(struct ieee80211_hw *hw)
>   			ppsc->in_powersavemode = false;
>   			_rtl_ps_inactive_ps(hw);
>   			/* call after RF on */
> -			if (rtlpriv->cfg->ops->get_btc_status())
> +			if (rtlpriv->cfg->ops->get_btc_status &&
> +			    rtlpriv->cfg->ops->get_btc_status())
>   				rtlpriv->btcoexist.btc_ops->btc_ips_notify(rtlpriv,
>   									ppsc->inactive_pwrstate);
>   		}
> @@ -390,14 +392,16 @@ void rtl_lps_set_psmode(struct ieee80211_hw *hw, u8 rt_psmode)
>   			if (ppsc->p2p_ps_info.opp_ps)
>   				rtl_p2p_ps_cmd(hw , P2P_PS_ENABLE);
>
> -			if (rtlpriv->cfg->ops->get_btc_status())
> +			if (rtlpriv->cfg->ops->get_btc_status &&
> +			    rtlpriv->cfg->ops->get_btc_status())
>   				rtlpriv->btcoexist.btc_ops->btc_lps_notify(rtlpriv, rt_psmode);
>   		} else {
>   			if (rtl_get_fwlps_doze(hw)) {
>   				RT_TRACE(rtlpriv, COMP_RF, DBG_DMESG,
>   					 "FW LPS enter ps_mode:%x\n",
>   					 ppsc->fwctrl_psmode);
> -				if (rtlpriv->cfg->ops->get_btc_status())
> +				if (rtlpriv->cfg->ops->get_btc_status &&
> +				    rtlpriv->cfg->ops->get_btc_status())
>   					rtlpriv->btcoexist.btc_ops->btc_lps_notify(rtlpriv, rt_psmode);
>   				enter_fwlps = true;
>   				ppsc->pwr_mode = ppsc->fwctrl_psmode;
> --
> 2.1.2
>

^ permalink raw reply

* Re: [PATCH] PPC: bpf_jit_comp: add SKF_AD_PKTTYPE instruction
From: Michael Ellerman @ 2014-10-30  4:44 UTC (permalink / raw)
  To: Denis Kirjanov; +Cc: linuxppc-dev, netdev, Matt Evans
In-Reply-To: <CAOJe8K0t3G-bHm_24GjrTp9mmKnYZS1_bdGgrwQBLjC_s5is6w@mail.gmail.com>

On Wed, 2014-10-29 at 13:21 +0400, Denis Kirjanov wrote:
> Any feedback from PPC folks?

Hi Denis,

I had a look at this, but I don't know enough about BPF to comment.

Maybe you can explain what a BPF_ANC | SKF_AD_PKTTYPE means and perhaps then we
can guess if the code is correct.

I think testing it is the best option :)

cheers

^ permalink raw reply

* Re: [PATCH net] gre: Fix regression in gretap TSO support
From: Pravin Shelar @ 2014-10-30  5:14 UTC (permalink / raw)
  To: alexander.duyck
  Cc: netdev, David Miller, H.K. Jerry Chu, Eric Dumazet,
	Alexander Duyck, Neal Cardwell
In-Reply-To: <20141030032430.4452.46388.stgit@ahduyck-workstation.home>

On Wed, Oct 29, 2014 at 8:26 PM,  <alexander.duyck@gmail.com> wrote:
> From: Alexander Duyck <alexander.h.duyck@redhat.com>
>
> On recent kernels I found that TSO on gretap interfaces didn't work.  After
> bisecting it I found that commit b884b1a4 had introduced a regression in
> which the Ethernet header was being included in the GRE header length.
>
> This change corrects that by basing the GRE header length on the inner mac
> header in the case of GRE tunnels using transparent Ethernet bridging, and
> uses the network header for all other GRE tunnel types.
>
> Fixes: b884b1a4 ("gre_offload: simplify GRE header length calculation in gre_gso_segment()")
> Cc: Neal Cardwell <ncardwell@google.com>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: H.K. Jerry Chu <hkchu@google.com>
> Cc: Pravin B Shelar <pshelar@nicira.com>
> Signed-off-by: Alexander Duyck <alexander.h.duyck@redhat.com>

Patch also fixed problem with ovs-gre.

Acked-by: Pravin B Shelar <pshelar@nicira.com>

Thanks.

> ---
>  net/ipv4/gre_offload.c |    5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/net/ipv4/gre_offload.c b/net/ipv4/gre_offload.c
> index f6e345c..67a1f66 100644
> --- a/net/ipv4/gre_offload.c
> +++ b/net/ipv4/gre_offload.c
> @@ -47,7 +47,10 @@ static struct sk_buff *gre_gso_segment(struct sk_buff *skb,
>
>         greh = (struct gre_base_hdr *)skb_transport_header(skb);
>
> -       ghl = skb_inner_network_header(skb) - skb_transport_header(skb);
> +       if (greh->protocol == htons(ETH_P_TEB))
> +               ghl = skb_inner_mac_header(skb) - skb_transport_header(skb);
> +       else
> +               ghl = skb_inner_network_header(skb) - skb_transport_header(skb);
>         if (unlikely(ghl < sizeof(*greh)))
>                 goto out;
>
>

^ permalink raw reply

* Re: [PATCHv2 1/1] ip-link: add switch to show human readable output
From: Stephen Hemminger @ 2014-10-30  5:47 UTC (permalink / raw)
  To: Christian Hesse; +Cc: netdev
In-Reply-To: <1412980056-7643-1-git-send-email-mail@eworm.de>

On Sat, 11 Oct 2014 00:27:36 +0200
Christian Hesse <mail@eworm.de> wrote:

> Byte and packet count can increase to really big numbers. This adds a
> switch to show human readable output.
> 
> % ip -s link ls wl
> 4: wl: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
>     link/ether 00:de:ad:be:ee:ef brd ff:ff:ff:ff:ff:ff
>     RX: bytes  packets  errors  dropped overrun mcast
>     113570876  156975   0       0       0       0
>     TX: bytes  packets  errors  dropped carrier collsns
>     27290790   94313    0       0       0       0
> % ip -s -h link ls wl
> 4: wl: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
>     link/ether 00:de:ad:be:ee:ef brd ff:ff:ff:ff:ff:ff
>     RX: bytes  packets  errors  dropped overrun mcast
>     122368888  169840   0       0       0       0
>     116.7Mi    165.8Ki  0       0       0       0
>     TX: bytes  packets  errors  dropped carrier collsns
>     29087507   102309   0       0       0       0
>     27.7Mi     99.9Ki   0       0       0       0
> ---

I like the idea as a concept but there are two issues:
  1. The IEC suffix is a rarely used thing and is non-standard
     for communications where K = 1000 M = 1000000 etc.
     Please just use standard suffices

  2. Don't double print the data, if the user asks for human
     format, only show the human format.

^ permalink raw reply

* Re: [PATCH iproute2] ss: Identify a lot of netlink protocol names
From: Stephen Hemminger @ 2014-10-30  5:49 UTC (permalink / raw)
  To: Vadim Kochan; +Cc: netdev
In-Reply-To: <1413478018-12373-1-git-send-email-vadim4j@gmail.com>

On Thu, 16 Oct 2014 19:46:58 +0300
Vadim Kochan <vadim4j@gmail.com> wrote:

> There were only few Netlink protocol names:
> 
>     rtnl, fw, tcpdiag
> 
> which were printed on output.
> So added the other ones.
> 
> Signed-off-by: Vadim Kochan <vadim4j@gmail.com>

Please make this driven off of a file in /etc/iproute2/ rather than
hard coding a big switch in the code.

^ permalink raw reply

* Re: [PATCH iproute2] xfrm: add support of ESN and anti-replay window
From: Stephen Hemminger @ 2014-10-30  5:51 UTC (permalink / raw)
  To: Nicolas Dichtel; +Cc: shemminger, netdev, dingzhi, Adrien Mazarguil
In-Reply-To: <1413796984-9867-1-git-send-email-nicolas.dichtel@6wind.com>

On Mon, 20 Oct 2014 11:23:04 +0200
Nicolas Dichtel <nicolas.dichtel@6wind.com> wrote:

> From: dingzhi <zhi.ding@6wind.com>
> 
> This patch allows to configure ESN and anti-replay window.
> 
> Signed-off-by: dingzhi <zhi.ding@6wind.com>
> Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>

Applied, but please also send patch to manual.

^ permalink raw reply

* Re: [PATCH iproute2] netlink: extend buffers to 16K
From: Stephen Hemminger @ 2014-10-30  5:52 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: netdev
In-Reply-To: <1413045793.9362.48.camel@edumazet-glaptop2.roam.corp.google.com>

On Sat, 11 Oct 2014 09:43:13 -0700
Eric Dumazet <eric.dumazet@gmail.com> wrote:

> From: Eric Dumazet <edumazet@google.com>
> 
> Starting from linux-3.15 (commit 9063e21fb026, "netlink: autosize skb
> lengths"), kernel is able to send up to 16K in netlink replies.
> 
> This change enables iproute2 commands to get bigger chunks,
> without breaking compatibility with old kernels.
> 
> Signed-off-by: Eric Dumazet <edumazet@google.com>

Applied.

^ permalink raw reply

* Re: [PATCH iproute2-next] ss: output dctcp diag information
From: Stephen Hemminger @ 2014-10-30  5:53 UTC (permalink / raw)
  To: Daniel Borkmann; +Cc: netdev, Florian Westphal
In-Reply-To: <1411980452-4669-1-git-send-email-dborkman@redhat.com>

On Mon, 29 Sep 2014 10:47:32 +0200
Daniel Borkmann <dborkman@redhat.com> wrote:

> Dump useful DCTCP state/debug information gathered from diag.
> 
> Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
> Signed-off-by: Florian Westphal <fw@strlen.de>

Applied, I had already got the header files from regular kernel headers update.

^ permalink raw reply

* Re: [PATCH iproute2] xfrm: add support of ESN and anti-replay window
From: Stephen Hemminger @ 2014-10-30  5:54 UTC (permalink / raw)
  To: Nicolas Dichtel; +Cc: shemminger, netdev, dingzhi, Adrien Mazarguil
In-Reply-To: <1413796984-9867-1-git-send-email-nicolas.dichtel@6wind.com>

On Mon, 20 Oct 2014 11:23:04 +0200
Nicolas Dichtel <nicolas.dichtel@6wind.com> wrote:

> From: dingzhi <zhi.ding@6wind.com>
> 
> This patch allows to configure ESN and anti-replay window.
> 
> Signed-off-by: dingzhi <zhi.ding@6wind.com>
> Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>

Applied, but please also send patch to ma

^ permalink raw reply

* [PATCH net-next] tipc: spelling errors
From: Stephen Hemminger @ 2014-10-30  5:58 UTC (permalink / raw)
  To: Jon Maloy, Allan Stephens; +Cc: netdev


Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>

---
 net/tipc/msg.c    |    4 ++--
 net/tipc/socket.c |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

--- a/net/tipc/socket.c	2014-10-27 21:06:04.243288996 -0700
+++ b/net/tipc/socket.c	2014-10-27 21:06:04.239288981 -0700
@@ -1556,7 +1556,7 @@ static void tipc_data_ready(struct sock
  * @tsk: TIPC socket
  * @msg: message
  *
- * Returns 0 (TIPC_OK) if everyting ok, -TIPC_ERR_NO_PORT otherwise
+ * Returns 0 (TIPC_OK) if everything ok, -TIPC_ERR_NO_PORT otherwise
  */
 static int filter_connect(struct tipc_sock *tsk, struct sk_buff **buf)
 {
--- a/net/tipc/msg.c	2014-10-27 21:06:04.243288996 -0700
+++ b/net/tipc/msg.c	2014-10-27 21:06:04.239288981 -0700
@@ -91,7 +91,7 @@ struct sk_buff *tipc_msg_create(uint use
  * @*headbuf: in:  NULL for first frag, otherwise value returned from prev call
  *            out: set when successful non-complete reassembly, otherwise NULL
  * @*buf:     in:  the buffer to append. Always defined
- *            out: head buf after sucessful complete reassembly, otherwise NULL
+ *            out: head buf after successful complete reassembly, otherwise NULL
  * Returns 1 when reassembly complete, otherwise 0
  */
 int tipc_buf_append(struct sk_buff **headbuf, struct sk_buff **buf)
@@ -311,7 +311,7 @@ bool tipc_msg_bundle(struct sk_buff *bbu
  * @mtu:  max allowable size for the bundle buffer, inclusive header
  * @dnode: destination node for message. (Not always present in header)
  * Replaces buffer if successful
- * Returns true if sucess, otherwise false
+ * Returns true if success, otherwise false
  */
 bool tipc_msg_make_bundle(struct sk_buff **buf, u32 mtu, u32 dnode)
 {

^ permalink raw reply

* [PATCH v2] PPC: bpf_jit_comp: add SKF_AD_PKTTYPE instruction
From: Denis Kirjanov @ 2014-10-30  6:12 UTC (permalink / raw)
  To: netdev
  Cc: linuxppc-dev, Denis Kirjanov, Alexei Starovoitov,
	Michael Ellerman, Matt Evans

Add BPF extension SKF_AD_PKTTYPE to ppc JIT to load
skb->pkt_type field.

Before:
[   88.262622] test_bpf: #11 LD_IND_NET 86 97 99 PASS
[   88.265740] test_bpf: #12 LD_PKTTYPE 109 107 PASS

After:
[   80.605964] test_bpf: #11 LD_IND_NET 44 40 39 PASS
[   80.607370] test_bpf: #12 LD_PKTTYPE 9 9 PASS

CC: Alexei Starovoitov<alexei.starovoitov@gmail.com>
CC: Michael Ellerman<mpe@ellerman.id.au>
Cc: Matt Evans <matt@ozlabs.org>
Signed-off-by: Denis Kirjanov <kda@linux-powerpc.org>

v2: Added test rusults
---
 arch/powerpc/include/asm/ppc-opcode.h | 1 +
 arch/powerpc/net/bpf_jit.h            | 7 +++++++
 arch/powerpc/net/bpf_jit_comp.c       | 5 +++++
 3 files changed, 13 insertions(+)

diff --git a/arch/powerpc/include/asm/ppc-opcode.h b/arch/powerpc/include/asm/ppc-opcode.h
index 6f85362..1a52877 100644
--- a/arch/powerpc/include/asm/ppc-opcode.h
+++ b/arch/powerpc/include/asm/ppc-opcode.h
@@ -204,6 +204,7 @@
 #define PPC_INST_ERATSX_DOT		0x7c000127
 
 /* Misc instructions for BPF compiler */
+#define PPC_INST_LBZ			0x88000000
 #define PPC_INST_LD			0xe8000000
 #define PPC_INST_LHZ			0xa0000000
 #define PPC_INST_LHBRX			0x7c00062c
diff --git a/arch/powerpc/net/bpf_jit.h b/arch/powerpc/net/bpf_jit.h
index 9aee27c..c406aa9 100644
--- a/arch/powerpc/net/bpf_jit.h
+++ b/arch/powerpc/net/bpf_jit.h
@@ -87,6 +87,9 @@ DECLARE_LOAD_FUNC(sk_load_byte_msh);
 #define PPC_STD(r, base, i)	EMIT(PPC_INST_STD | ___PPC_RS(r) |	      \
 				     ___PPC_RA(base) | ((i) & 0xfffc))
 
+
+#define PPC_LBZ(r, base, i)	EMIT(PPC_INST_LBZ | ___PPC_RT(r) |	      \
+				     ___PPC_RA(base) | IMM_L(i))
 #define PPC_LD(r, base, i)	EMIT(PPC_INST_LD | ___PPC_RT(r) |	      \
 				     ___PPC_RA(base) | IMM_L(i))
 #define PPC_LWZ(r, base, i)	EMIT(PPC_INST_LWZ | ___PPC_RT(r) |	      \
@@ -96,6 +99,10 @@ DECLARE_LOAD_FUNC(sk_load_byte_msh);
 #define PPC_LHBRX(r, base, b)	EMIT(PPC_INST_LHBRX | ___PPC_RT(r) |	      \
 				     ___PPC_RA(base) | ___PPC_RB(b))
 /* Convenience helpers for the above with 'far' offsets: */
+#define PPC_LBZ_OFFS(r, base, i) do { if ((i) < 32768) PPC_LBZ(r, base, i);   \
+		else {	PPC_ADDIS(r, base, IMM_HA(i));			      \
+			PPC_LBZ(r, r, IMM_L(i)); } } while(0)
+
 #define PPC_LD_OFFS(r, base, i) do { if ((i) < 32768) PPC_LD(r, base, i);     \
 		else {	PPC_ADDIS(r, base, IMM_HA(i));			      \
 			PPC_LD(r, r, IMM_L(i)); } } while(0)
diff --git a/arch/powerpc/net/bpf_jit_comp.c b/arch/powerpc/net/bpf_jit_comp.c
index cbae2df..d110e28 100644
--- a/arch/powerpc/net/bpf_jit_comp.c
+++ b/arch/powerpc/net/bpf_jit_comp.c
@@ -407,6 +407,11 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
 			PPC_LHZ_OFFS(r_A, r_skb, offsetof(struct sk_buff,
 							  queue_mapping));
 			break;
+		case BPF_ANC | SKF_AD_PKTTYPE:
+			PPC_LBZ_OFFS(r_A, r_skb, PKT_TYPE_OFFSET());
+			PPC_ANDI(r_A, r_A, PKT_TYPE_MAX);
+			PPC_SRWI(r_A, r_A, 5);
+			break;
 		case BPF_ANC | SKF_AD_CPU:
 #ifdef CONFIG_SMP
 			/*
-- 
2.1.0

^ permalink raw reply related

* Re: net: fec: fix regression on i.MX28 introduced by rx_copybreak support
From: Lothar Waßmann @ 2014-10-30  6:51 UTC (permalink / raw)
  To: David Miller
  Cc: netdev, rmk+kernel, Frank.Li, fabio.estevam, linux-kernel,
	linux-arm-kernel
In-Reply-To: <20141029.153430.1036004676442879956.davem@davemloft.net>

Hi,

David Miller wrote:
> From: Lothar Waßmann <LW@KARO-electronics.de>
> Date: Tue, 28 Oct 2014 14:22:55 +0100
> 
> > Changes wrt. v1:
> > - added some cleanup patches
> > - simplify handling of 'quirks' flags as suggested by Russell King.
> > - remove DIV_ROUND_UP() from byte swapping loop as suggested by
> >   Eric Dumazet
> > 
> > Changes wrt. v2:
> > - rebased against next-20141028
> > - added some more cleanups in fec.h
> > - removed unused return value from swap_buffer()
> > - fixed messed swab32s() call in swap_buffer2()
> > - fixed messed up setup of fep->quirks
> > 
> 
> It is not appropriate to mix cleanups and bonafide bug fixes.
> 
> I want to see only bug fixes targetted at 'net'.  You can later
> submit the cleanups to 'net-next'.
> 
OK.

> Also, I don't thnk your DIV_ROUND_UP() eliminate for the loop
> in swap_buffer() is valid.  The whole point is that the current
> code handles buffers which have a length which is not a multiple
> of 4 properly, after your change it will no longer do so.
>
Do you really think so?


Lothar Waßmann
-- 
___________________________________________________________

Ka-Ro electronics GmbH | Pascalstraße 22 | D - 52076 Aachen
Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10
Geschäftsführer: Matthias Kaussen
Handelsregistereintrag: Amtsgericht Aachen, HRB 4996

www.karo-electronics.de | info@karo-electronics.de
___________________________________________________________

^ permalink raw reply

* Re: [PATCH net-next] mlx4: use napi_schedule_irqoff()
From: Amir Vadai @ 2014-10-30  7:30 UTC (permalink / raw)
  To: Eric Dumazet, David Miller; +Cc: netdev
In-Reply-To: <1414626885.631.102.camel@edumazet-glaptop2.roam.corp.google.com>

On 10/30/2014 1:54 AM, Eric Dumazet wrote:
> From: Eric Dumazet <edumazet@google.com>
> 
> mlx4_en_rx_irq() and mlx4_en_tx_irq() run from hard interrupt context.
> 
> They can use napi_schedule_irqoff() instead of napi_schedule()
> 
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> ---
>  drivers/net/ethernet/mellanox/mlx4/en_rx.c |    4 ++--
>  drivers/net/ethernet/mellanox/mlx4/en_tx.c |    4 ++--
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 

Acked-By: Amir Vadai <amirv@mellanox.com>

Thanks,
Amir

^ permalink raw reply

* Re: [patch] Bluetooth: 6lowpan: use after free in disconnect_devices()
From: Jukka Rissanen @ 2014-10-30  7:54 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: Marcel Holtmann, Gustavo Padovan, Johan Hedberg, David S. Miller,
	linux-bluetooth, netdev, linux-kernel, kernel-janitors
In-Reply-To: <20141029161057.GF5290@mwanda>

Hi Dan,

On ke, 2014-10-29 at 19:10 +0300, Dan Carpenter wrote:
> This was accidentally changed from list_for_each_entry_safe() to
> list_for_each_entry() so now it has a use after free bug.  I've changed
> it back.

Good catch! Thanks for the patch.

Acked-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>

> 
> Fixes: 90305829635d ('Bluetooth: 6lowpan: Converting rwlocks to use RCU')
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> 
> diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
> index 7254bdd..eef298d 100644
> --- a/net/bluetooth/6lowpan.c
> +++ b/net/bluetooth/6lowpan.c
> @@ -1383,7 +1383,7 @@ static const struct file_operations lowpan_control_fops = {
>  
>  static void disconnect_devices(void)
>  {
> -	struct lowpan_dev *entry, *new_dev;
> +	struct lowpan_dev *entry, *tmp, *new_dev;
>  	struct list_head devices;
>  
>  	INIT_LIST_HEAD(&devices);
> @@ -1408,7 +1408,7 @@ static void disconnect_devices(void)
>  
>  	rcu_read_unlock();
>  
> -	list_for_each_entry(entry, &devices, list) {
> +	list_for_each_entry_safe(entry, tmp, &devices, list) {
>  		ifdown(entry->netdev);
>  		BT_DBG("Unregistering netdev %s %p",
>  		       entry->netdev->name, entry->netdev);
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


Cheers,
Jukka

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox