* Re: Possible networking regression in 3.6.0
From: Chris Clayton @ 2012-09-18 14:44 UTC (permalink / raw)
To: netdev
In-Reply-To: <505885DC.1060006@googlemail.com>
>>
> Sorry, I forgot to say that I also have tried running TinyCore Linux as
> a KVM guest on a 3.6.0-rc6 kernel, and I can ping the router fine, so
> the problem seems to be something specifically related to ruuning
> Windows XP as the guest. I don't have any other guests installed so
> that's as much as I can say, although I could maybe install a Win7 guest
> tomorrow if that would help.
>
Sorry again, but ignore the message above, please. Wrong kernel used in
test. In fact, I get the same failure to ping the router running on a
6.6.0-rc6 kernel.
Apologies for the noise.
Chris
^ permalink raw reply
* Re: [PATCH NEXT V2] rtlwifi: rtl8192c: rtl8192ce: Add support for B-CUT version of RTL8188CE
From: Larry Finger @ 2012-09-18 14:50 UTC (permalink / raw)
To: Anisse Astier
Cc: linville-2XuSBdqkA4R54TAoqtyWWQ,
linux-wireless-u79uwXL29TY76Z2rM5mHXA,
netdev-u79uwXL29TY76Z2rM5mHXA, Li Chaoming
In-Reply-To: <20120918160901.22cf2261-nMKIGJZKI6fIeUwiHPfBe2GXanvQGlWp@public.gmane.org>
On 09/18/2012 09:09 AM, Anisse Astier wrote:
> On Mon, 17 Sep 2012 15:35:43 -0500, Larry Finger <Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org> wrote :
>
>> Realtek devices with designation RTL8188CE-VL have the so-called B-cut
>> of the wireless chip. This patch adds the special programming needed by
>> these devices.
>>
>> Signed-off-by: Larry Finger <Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
>> Cc: Anisse Astier <anisse-fwwRqrJYcP2HXe+LvDLADg@public.gmane.org>
>> Cc: Li Chaoming <chaoming_li-kXabqFNEczNtrwSWzY7KCg@public.gmane.org>
>> ---
>> drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c | 21 +++++++
>> drivers/net/wireless/rtlwifi/rtl8192ce/def.h | 3 +
>> drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | 61 ++++++++++++++++++--
>> drivers/net/wireless/rtlwifi/rtl8192ce/phy.c | 4 +-
>> drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | 6 +-
>> drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | 4 +-
>> 6 files changed, 87 insertions(+), 12 deletions(-)
>> ---
>> V1 => V2 Remove extraneous white space.
>>
>>
>> John,
>>
>> This patch is too invasive to backport to the stable kernels, thus it should
>> be applied to 3.7.
>>
>> Thanks,
>>
>> Larry
>> ---
>>
>
> [snip]
>
>> Index: wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c
>> ===================================================================
>> --- wireless-testing-new.orig/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c
>> +++ wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c
>> @@ -896,7 +896,6 @@ int rtl92ce_hw_init(struct ieee80211_hw
>> struct rtl_phy *rtlphy = &(rtlpriv->phy);
>> struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
>> struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
>> - static bool iqk_initialized; /* initialized to false */
>> bool rtstatus = true;
>> bool is92c;
>> int err;
>> @@ -921,9 +920,28 @@ int rtl92ce_hw_init(struct ieee80211_hw
>>
>> rtlhal->last_hmeboxnum = 0;
>> rtl92c_phy_mac_config(hw);
>> + /* because last function modify RCR, so we update
>> + * rcr var here, or TP will unstable for receive_config
>> + * is wrong, RX RCR_ACRC32 will cause TP unstabel & Rx
>> + * RCR_APP_ICV will cause mac80211 unassoc for cisco 1252*/
>> + rtlpci->receive_config = rtl_read_dword(rtlpriv, REG_RCR);
>> + rtlpci->receive_config &= ~(RCR_ACRC32 | RCR_AICV);
>> + rtl_write_dword(rtlpriv, REG_RCR, rtlpci->receive_config);
>> rtl92c_phy_bb_config(hw);
>> rtlphy->rf_mode = RF_OP_BY_SW_3WIRE;
>> rtl92c_phy_rf_config(hw);
>> + if (IS_VENDOR_UMC_A_CUT(rtlhal->version) &&
>> + !IS_92C_SERIAL(rtlhal->version)) {
>> + rtl_set_rfreg(hw, RF90_PATH_A, RF_RX_G1, MASKDWORD, 0x30255);
>> + rtl_set_rfreg(hw, RF90_PATH_A, RF_RX_G2, MASKDWORD, 0x50a00);
>> + } else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) {
>> + rtl_set_rfreg(hw, RF90_PATH_A, 0x0C, MASKDWORD, 0x894AE);
>> + rtl_set_rfreg(hw, RF90_PATH_A, 0x0A, MASKDWORD, 0x1AF31);
>> + rtl_set_rfreg(hw, RF90_PATH_A, RF_IPA, MASKDWORD, 0x8F425);
>> + rtl_set_rfreg(hw, RF90_PATH_A, RF_SYN_G2, MASKDWORD, 0x4F200);
>> + rtl_set_rfreg(hw, RF90_PATH_A, RF_RCK1, MASKDWORD, 0x44053);
>> + rtl_set_rfreg(hw, RF90_PATH_A, RF_RCK2, MASKDWORD, 0x80201);
>> + }
>> rtlphy->rfreg_chnlval[0] = rtl_get_rfreg(hw, (enum radio_path)0,
>> RF_CHNLBW, RFREG_OFFSET_MASK);
>> rtlphy->rfreg_chnlval[1] = rtl_get_rfreg(hw, (enum radio_path)1,
>> @@ -945,11 +963,11 @@ int rtl92ce_hw_init(struct ieee80211_hw
>>
>> if (ppsc->rfpwr_state == ERFON) {
>> rtl92c_phy_set_rfpath_switch(hw, 1);
>> - if (iqk_initialized) {
>> + if (rtlphy->iqk_initialized) {
>> rtl92c_phy_iq_calibrate(hw, true);
>> } else {
>> rtl92c_phy_iq_calibrate(hw, false);
>> - iqk_initialized = true;
>> + rtlphy->iqk_initialized = true;
>> }
>>
>> rtl92c_dm_check_txpower_tracking(hw);
>> @@ -1004,6 +1022,13 @@ static enum version_8192c _rtl92ce_read_
>> ? CHIP_VENDOR_UMC_B_CUT : CHIP_UNKNOWN) |
>> CHIP_VENDOR_UMC));
>> }
>> + if (IS_92C_SERIAL(version)) {
>> + value32 = rtl_read_dword(rtlpriv, REG_HPON_FSM);
>> + version = (enum version_8192c)(version |
>> + ((CHIP_BONDING_IDENTIFIER(value32)
>> + == CHIP_BONDING_92C_1T2R) ?
>> + RF_TYPE_1T2R : 0));
>> + }
>> }
>>
>> switch (version) {
>> @@ -1019,12 +1044,30 @@ static enum version_8192c _rtl92ce_read_
>> case VERSION_A_CHIP_88C:
>> versionid = "A_CHIP_88C";
>> break;
>> + case VERSION_NORMAL_UMC_CHIP_92C_1T2R_A_CUT:
>> + versionid = "A_CUT_92C_1T2R";
>> + break;
>> + case VERSION_NORMAL_UMC_CHIP_92C_A_CUT:
>> + versionid = "A_CUT_92C";
>> + break;
>> + case VERSION_NORMAL_UMC_CHIP_88C_A_CUT:
>> + versionid = "A_CUT_88C";
>> + break;
>> + case VERSION_NORMAL_UMC_CHIP_92C_1T2R_B_CUT:
>> + versionid = "B_CUT_92C_1T2R";
>> + break;
>> + case VERSION_NORMAL_UMC_CHIP_92C_B_CUT:
>> + versionid = "B_CUT_92C";
>> + break;
>> + case VERSION_NORMAL_UMC_CHIP_88C_B_CUT:
>> + versionid = "B_CUT_88C";
>> + break;
>> default:
>> versionid = "Unknown. Bug?";
>> break;
>> }
>>
>> - RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
>> + RT_TRACE(rtlpriv, COMP_INIT, DBG_EMERG,
>> "Chip Version ID: %s\n", versionid);
>>
>> switch (version & 0x3) {
>> @@ -1197,6 +1240,7 @@ static void _rtl92ce_poweroff_adapter(st
>> {
>> struct rtl_priv *rtlpriv = rtl_priv(hw);
>> struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw);
>> + struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
>> u8 u1b_tmp;
>> u32 u4b_tmp;
>>
>> @@ -1225,7 +1269,8 @@ static void _rtl92ce_poweroff_adapter(st
>> rtl_write_word(rtlpriv, REG_GPIO_IO_SEL, 0x0790);
>> rtl_write_word(rtlpriv, REG_LEDCFG0, 0x8080);
>> rtl_write_byte(rtlpriv, REG_AFE_PLL_CTRL, 0x80);
>> - rtl_write_byte(rtlpriv, REG_SPS0_CTRL, 0x23);
>> + if (!IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version))
>> + rtl_write_byte(rtlpriv, REG_SPS0_CTRL, 0x23);
>> if (rtlpcipriv->bt_coexist.bt_coexistence) {
>> u4b_tmp = rtl_read_dword(rtlpriv, REG_AFE_XTAL_CTRL);
>> u4b_tmp |= 0x03824800;
>> @@ -1254,6 +1299,9 @@ void rtl92ce_card_disable(struct ieee802
>> rtlpriv->cfg->ops->led_control(hw, LED_CTL_POWER_OFF);
>> RT_SET_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC);
>> _rtl92ce_poweroff_adapter(hw);
>> +
>> + /* after power off we should do iqk again */
>> + rtlpriv->phy.iqk_initialized = false;
>> }
>>
>> void rtl92ce_interrupt_recognized(struct ieee80211_hw *hw,
>
> This part:
>> @@ -1355,9 +1403,9 @@ static void _rtl92ce_read_txpower_info_f
>> tempval = hwinfo[EEPROM_TXPOWERHT40_2SDIFF + i];
>> else
>> tempval = EEPROM_DEFAULT_HT40_2SDIFF;
>> - rtlefuse->eeprom_chnlarea_txpwr_ht40_2sdiif[RF90_PATH_A][i] =
>> + rtlefuse->eprom_chnl_txpwr_ht40_2sdf[RF90_PATH_A][i] =
>> (tempval & 0xf);
>> - rtlefuse->eeprom_chnlarea_txpwr_ht40_2sdiif[RF90_PATH_B][i] =
>> + rtlefuse->eprom_chnl_txpwr_ht40_2sdf[RF90_PATH_B][i] =
>> ((tempval & 0xf0) >> 4);
>> }
>>
>> @@ -1381,7 +1429,7 @@ static void _rtl92ce_read_txpower_info_f
>> "RF(%d) EEPROM HT40 2S Diff Area(%d) = 0x%x\n",
>> rf_path, i,
>> rtlefuse->
>> - eeprom_chnlarea_txpwr_ht40_2sdiif[rf_path][i]);
>> + eprom_chnl_txpwr_ht40_2sdf[rf_path][i]);
>>
>> for (rf_path = 0; rf_path < 2; rf_path++) {
>> for (i = 0; i < 14; i++) {
>> @@ -1396,14 +1444,14 @@ static void _rtl92ce_read_txpower_info_f
>> if ((rtlefuse->
>> eeprom_chnlarea_txpwr_ht40_1s[rf_path][index] -
>> rtlefuse->
>> - eeprom_chnlarea_txpwr_ht40_2sdiif[rf_path][index])
>> + eprom_chnl_txpwr_ht40_2sdf[rf_path][index])
>> > 0) {
>> rtlefuse->txpwrlevel_ht40_2s[rf_path][i] =
>> rtlefuse->
>> eeprom_chnlarea_txpwr_ht40_1s[rf_path]
>> [index] -
>> rtlefuse->
>> - eeprom_chnlarea_txpwr_ht40_2sdiif[rf_path]
>> + eprom_chnl_txpwr_ht40_2sdf[rf_path]
>> [index];
>> } else {
>> rtlefuse->txpwrlevel_ht40_2s[rf_path][i] = 0;
>
> wasn't in V1 of the patch. Is the rename normal?
The original length of the variable name was causing extreme difficulty in
keeping all lines to 80 characters in the code for the new driver for the
RTL8723AE device. The renaming helped. You are correct that the change should be
documented.
Larry
--
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
* [PATCH NEXT V3] rtlwifi: rtl8192c: rtl8192ce: Add support for B-CUT version of RTL8188CE
From: Larry Finger @ 2012-09-18 15:29 UTC (permalink / raw)
To: linville-2XuSBdqkA4R54TAoqtyWWQ
Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA, Larry Finger,
netdev-u79uwXL29TY76Z2rM5mHXA, Anisse Astier, Li Chaoming
Realtek devices with designation RTL8188CE-VL have the so-called B-cut
of the wireless chip. This patch adds the special programming needed by
these devices. In addition, a variable that was static has been moved into
the private data area as it is now needed in two different routines. This
change also fixes a minor bug that would be present if a system had more
than one RTL81{88,92}CE devices. Other drivers in the rtlwifi family had
already made this change, thus the variable already exists in the private
data structure.
Signed-off-by: Larry Finger <Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
Cc: Anisse Astier <anisse-fwwRqrJYcP2HXe+LvDLADg@public.gmane.org>
Cc: Li Chaoming <chaoming_li-kXabqFNEczNtrwSWzY7KCg@public.gmane.org>
---
rtl8192c/phy_common.c | 21 +++++++++++++++++
rtl8192ce/def.h | 3 ++
rtl8192ce/hw.c | 60 +++++++++++++++++++++++++++++++++++++++++++++-----
rtl8192ce/phy.c | 2 +
rtl8192ce/sw.c | 6 +----
rtl8192ce/trx.c | 4 +--
6 files changed, 85 insertions(+), 11 deletions(-)
---
V1 => V2 Remove extraneous white space.
V2 => V3 A change that is not part of the B-cut change and was introduced
in V2 is moved to a separate patch.
John,
This patch is too invasive to backport to the stable kernels, thus it should
be applied to 3.7.
Thanks,
Larry
---
Index: wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
===================================================================
--- wireless-testing-new.orig/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
+++ wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
@@ -724,6 +724,26 @@ u8 rtl92c_phy_sw_chnl(struct ieee80211_h
}
EXPORT_SYMBOL(rtl92c_phy_sw_chnl);
+static void _rtl92c_phy_sw_rf_setting(struct ieee80211_hw *hw, u8 channel)
+{
+ struct rtl_priv *rtlpriv = rtl_priv(hw);
+ struct rtl_phy *rtlphy = &(rtlpriv->phy);
+ struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
+
+ if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) {
+ if (channel == 6 && rtlphy->current_chan_bw ==
+ HT_CHANNEL_WIDTH_20)
+ rtl_set_rfreg(hw, RF90_PATH_A, RF_RX_G1, MASKDWORD,
+ 0x00255);
+ else{
+ u32 backupRF0x1A = (u32)rtl_get_rfreg(hw, RF90_PATH_A,
+ RF_RX_G1, RFREG_OFFSET_MASK);
+ rtl_set_rfreg(hw, RF90_PATH_A, RF_RX_G1, MASKDWORD,
+ backupRF0x1A);
+ }
+ }
+}
+
static bool _rtl92c_phy_set_sw_chnl_cmdarray(struct swchnlcmd *cmdtable,
u32 cmdtableidx, u32 cmdtablesz,
enum swchnlcmd_id cmdid,
@@ -837,6 +857,7 @@ bool _rtl92c_phy_sw_chnl_step_by_step(st
currentcmd->para1,
RFREG_OFFSET_MASK,
rtlphy->rfreg_chnlval[rfpath]);
+ _rtl92c_phy_sw_rf_setting(hw, channel);
}
break;
default:
Index: wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/def.h
===================================================================
--- wireless-testing-new.orig/drivers/net/wireless/rtlwifi/rtl8192ce/def.h
+++ wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/def.h
@@ -116,6 +116,9 @@
LE_BITS_TO_4BYTE(((__pcmdfbhdr) + 4), 20, 12)
#define CHIP_VER_B BIT(4)
+#define CHIP_BONDING_IDENTIFIER(_value) (((_value) >> 22) & 0x3)
+#define CHIP_BONDING_92C_1T2R 0x1
+#define RF_TYPE_1T2R BIT(1)
#define CHIP_92C_BITMASK BIT(0)
#define CHIP_UNKNOWN BIT(7)
#define CHIP_92C_1T2R 0x03
Index: wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c
===================================================================
--- wireless-testing-new.orig/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c
+++ wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c
@@ -896,7 +896,6 @@ int rtl92ce_hw_init(struct ieee80211_hw
struct rtl_phy *rtlphy = &(rtlpriv->phy);
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
- static bool iqk_initialized; /* initialized to false */
bool rtstatus = true;
bool is92c;
int err;
@@ -921,9 +920,28 @@ int rtl92ce_hw_init(struct ieee80211_hw
rtlhal->last_hmeboxnum = 0;
rtl92c_phy_mac_config(hw);
+ /* because last function modify RCR, so we update
+ * rcr var here, or TP will unstable for receive_config
+ * is wrong, RX RCR_ACRC32 will cause TP unstabel & Rx
+ * RCR_APP_ICV will cause mac80211 unassoc for cisco 1252*/
+ rtlpci->receive_config = rtl_read_dword(rtlpriv, REG_RCR);
+ rtlpci->receive_config &= ~(RCR_ACRC32 | RCR_AICV);
+ rtl_write_dword(rtlpriv, REG_RCR, rtlpci->receive_config);
rtl92c_phy_bb_config(hw);
rtlphy->rf_mode = RF_OP_BY_SW_3WIRE;
rtl92c_phy_rf_config(hw);
+ if (IS_VENDOR_UMC_A_CUT(rtlhal->version) &&
+ !IS_92C_SERIAL(rtlhal->version)) {
+ rtl_set_rfreg(hw, RF90_PATH_A, RF_RX_G1, MASKDWORD, 0x30255);
+ rtl_set_rfreg(hw, RF90_PATH_A, RF_RX_G2, MASKDWORD, 0x50a00);
+ } else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) {
+ rtl_set_rfreg(hw, RF90_PATH_A, 0x0C, MASKDWORD, 0x894AE);
+ rtl_set_rfreg(hw, RF90_PATH_A, 0x0A, MASKDWORD, 0x1AF31);
+ rtl_set_rfreg(hw, RF90_PATH_A, RF_IPA, MASKDWORD, 0x8F425);
+ rtl_set_rfreg(hw, RF90_PATH_A, RF_SYN_G2, MASKDWORD, 0x4F200);
+ rtl_set_rfreg(hw, RF90_PATH_A, RF_RCK1, MASKDWORD, 0x44053);
+ rtl_set_rfreg(hw, RF90_PATH_A, RF_RCK2, MASKDWORD, 0x80201);
+ }
rtlphy->rfreg_chnlval[0] = rtl_get_rfreg(hw, (enum radio_path)0,
RF_CHNLBW, RFREG_OFFSET_MASK);
rtlphy->rfreg_chnlval[1] = rtl_get_rfreg(hw, (enum radio_path)1,
@@ -945,11 +963,11 @@ int rtl92ce_hw_init(struct ieee80211_hw
if (ppsc->rfpwr_state == ERFON) {
rtl92c_phy_set_rfpath_switch(hw, 1);
- if (iqk_initialized) {
+ if (rtlphy->iqk_initialized) {
rtl92c_phy_iq_calibrate(hw, true);
} else {
rtl92c_phy_iq_calibrate(hw, false);
- iqk_initialized = true;
+ rtlphy->iqk_initialized = true;
}
rtl92c_dm_check_txpower_tracking(hw);
@@ -1004,6 +1022,13 @@ static enum version_8192c _rtl92ce_read_
? CHIP_VENDOR_UMC_B_CUT : CHIP_UNKNOWN) |
CHIP_VENDOR_UMC));
}
+ if (IS_92C_SERIAL(version)) {
+ value32 = rtl_read_dword(rtlpriv, REG_HPON_FSM);
+ version = (enum version_8192c)(version |
+ ((CHIP_BONDING_IDENTIFIER(value32)
+ == CHIP_BONDING_92C_1T2R) ?
+ RF_TYPE_1T2R : 0));
+ }
}
switch (version) {
@@ -1019,12 +1044,30 @@ static enum version_8192c _rtl92ce_read_
case VERSION_A_CHIP_88C:
versionid = "A_CHIP_88C";
break;
+ case VERSION_NORMAL_UMC_CHIP_92C_1T2R_A_CUT:
+ versionid = "A_CUT_92C_1T2R";
+ break;
+ case VERSION_NORMAL_UMC_CHIP_92C_A_CUT:
+ versionid = "A_CUT_92C";
+ break;
+ case VERSION_NORMAL_UMC_CHIP_88C_A_CUT:
+ versionid = "A_CUT_88C";
+ break;
+ case VERSION_NORMAL_UMC_CHIP_92C_1T2R_B_CUT:
+ versionid = "B_CUT_92C_1T2R";
+ break;
+ case VERSION_NORMAL_UMC_CHIP_92C_B_CUT:
+ versionid = "B_CUT_92C";
+ break;
+ case VERSION_NORMAL_UMC_CHIP_88C_B_CUT:
+ versionid = "B_CUT_88C";
+ break;
default:
versionid = "Unknown. Bug?";
break;
}
- RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
+ RT_TRACE(rtlpriv, COMP_INIT, DBG_EMERG,
"Chip Version ID: %s\n", versionid);
switch (version & 0x3) {
@@ -1197,6 +1240,7 @@ static void _rtl92ce_poweroff_adapter(st
{
struct rtl_priv *rtlpriv = rtl_priv(hw);
struct rtl_pci_priv *rtlpcipriv = rtl_pcipriv(hw);
+ struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
u8 u1b_tmp;
u32 u4b_tmp;
@@ -1225,7 +1269,8 @@ static void _rtl92ce_poweroff_adapter(st
rtl_write_word(rtlpriv, REG_GPIO_IO_SEL, 0x0790);
rtl_write_word(rtlpriv, REG_LEDCFG0, 0x8080);
rtl_write_byte(rtlpriv, REG_AFE_PLL_CTRL, 0x80);
- rtl_write_byte(rtlpriv, REG_SPS0_CTRL, 0x23);
+ if (!IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version))
+ rtl_write_byte(rtlpriv, REG_SPS0_CTRL, 0x23);
if (rtlpcipriv->bt_coexist.bt_coexistence) {
u4b_tmp = rtl_read_dword(rtlpriv, REG_AFE_XTAL_CTRL);
u4b_tmp |= 0x03824800;
@@ -1254,6 +1299,9 @@ void rtl92ce_card_disable(struct ieee802
rtlpriv->cfg->ops->led_control(hw, LED_CTL_POWER_OFF);
RT_SET_PS_LEVEL(ppsc, RT_RF_OFF_LEVL_HALT_NIC);
_rtl92ce_poweroff_adapter(hw);
+
+ /* after power off we should do iqk again */
+ rtlpriv->phy.iqk_initialized = false;
}
void rtl92ce_interrupt_recognized(struct ieee80211_hw *hw,
@@ -1912,6 +1960,8 @@ static void rtl92ce_update_hal_rate_mask
ratr_bitmap &= 0x0f0ff0ff;
break;
}
+ sta_entry->ratr_index = ratr_index;
+
RT_TRACE(rtlpriv, COMP_RATR, DBG_DMESG,
"ratr_bitmap :%x\n", ratr_bitmap);
*(u32 *)&rate_mask = (ratr_bitmap & 0x0fffffff) |
Index: wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/phy.c
===================================================================
--- wireless-testing-new.orig/drivers/net/wireless/rtlwifi/rtl8192ce/phy.c
+++ wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/phy.c
@@ -82,6 +82,8 @@ bool rtl92c_phy_mac_config(struct ieee80
if (is92c)
rtl_write_byte(rtlpriv, 0x14, 0x71);
+ else
+ rtl_write_byte(rtlpriv, 0x04CA, 0x0A);
return rtstatus;
}
Index: wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
===================================================================
--- wireless-testing-new.orig/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
+++ wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
@@ -162,12 +162,10 @@ int rtl92c_init_sw_vars(struct ieee80211
/* request fw */
if (IS_VENDOR_UMC_A_CUT(rtlhal->version) &&
- !IS_92C_SERIAL(rtlhal->version)) {
+ !IS_92C_SERIAL(rtlhal->version))
rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU.bin";
- } else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) {
+ else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version))
rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU_B.bin";
- pr_info("****** This B_CUT device may not work with kernels 3.6 and earlier\n");
- }
rtlpriv->max_fw_size = 0x4000;
pr_info("Using firmware %s\n", rtlpriv->cfg->fw_name);
Index: wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c
===================================================================
--- wireless-testing-new.orig/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c
+++ wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c
@@ -127,11 +127,11 @@ static void _rtl92ce_query_rxphystatus(s
{
struct rtl_priv *rtlpriv = rtl_priv(hw);
struct phy_sts_cck_8192s_t *cck_buf;
+ struct rtl_ps_ctl *ppsc = rtl_psc(rtlpriv);
s8 rx_pwr_all = 0, rx_pwr[4];
u8 evm, pwdb_all, rf_rx_num = 0;
u8 i, max_spatial_stream;
u32 rssi, total_rssi = 0;
- bool in_powersavemode = false;
bool is_cck_rate;
is_cck_rate = RX_HAL_IS_CCK_RATE(pdesc);
@@ -147,7 +147,7 @@ static void _rtl92ce_query_rxphystatus(s
u8 report, cck_highpwr;
cck_buf = (struct phy_sts_cck_8192s_t *)p_drvinfo;
- if (!in_powersavemode)
+ if (ppsc->rfpwr_state == ERFON)
cck_highpwr = (u8) rtl_get_bbreg(hw,
RFPGA0_XA_HSSIPARAMETER2,
BIT(9));
--
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
* Re: [PATCH 1/4] ipv6: add a new namespace for nf_conntrack_reasm
From: Pablo Neira Ayuso @ 2012-09-18 15:45 UTC (permalink / raw)
To: Cong Wang
Cc: netdev, netfilter-devel, Herbert Xu, Michal Kubeček,
David Miller, Patrick McHardy
In-Reply-To: <1347975911-5655-2-git-send-email-amwang@redhat.com>
On Tue, Sep 18, 2012 at 09:45:08PM +0800, Cong Wang wrote:
> As pointed by Michal, it is necessary to add a new
> namespace for nf_conntrack_reasm code, this prepares
> for the second patch.
>
> Cc: Herbert Xu <herbert@gondor.apana.org.au>
> Cc: Michal Kubeček <mkubecek@suse.cz>
> Cc: David Miller <davem@davemloft.net>
> Cc: Patrick McHardy <kaber@trash.net>
> Cc: Pablo Neira Ayuso <pablo@netfilter.org>
> Cc: netfilter-devel@vger.kernel.org
> Signed-off-by: Cong Wang <amwang@redhat.com>
> ---
> include/net/net_namespace.h | 3 +
> include/net/netns/ipv6.h | 8 ++
> net/ipv6/netfilter/nf_conntrack_reasm.c | 135 +++++++++++++++++++++----------
> 3 files changed, 104 insertions(+), 42 deletions(-)
>
> diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
> index 5ae57f1..d61e2b3 100644
> --- a/include/net/net_namespace.h
> +++ b/include/net/net_namespace.h
> @@ -93,6 +93,9 @@ struct net {
> #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
> struct netns_ct ct;
> #endif
> +#if IS_ENABLED(CONFIG_NF_DEFRAG_IPV6)
> + struct netns_nf_frag nf_frag;
> +#endif
> struct sock *nfnl;
> struct sock *nfnl_stash;
> #endif
> diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h
> index 0318104..214cb0a 100644
> --- a/include/net/netns/ipv6.h
> +++ b/include/net/netns/ipv6.h
> @@ -71,4 +71,12 @@ struct netns_ipv6 {
> #endif
> #endif
> };
> +
> +#if IS_ENABLED(CONFIG_NF_DEFRAG_IPV6)
> +struct netns_nf_frag {
> + struct netns_sysctl_ipv6 sysctl;
> + struct netns_frags frags;
> +};
> +#endif
> +
> #endif
> diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
> index f94fb3a..d28c067 100644
> --- a/net/ipv6/netfilter/nf_conntrack_reasm.c
> +++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
> @@ -71,27 +71,26 @@ struct nf_ct_frag6_queue
> };
>
> static struct inet_frags nf_frags;
> -static struct netns_frags nf_init_frags;
>
> #ifdef CONFIG_SYSCTL
> static struct ctl_table nf_ct_frag6_sysctl_table[] = {
> {
> .procname = "nf_conntrack_frag6_timeout",
> - .data = &nf_init_frags.timeout,
> + .data = &init_net.nf_frag.frags.timeout,
> .maxlen = sizeof(unsigned int),
> .mode = 0644,
> .proc_handler = proc_dointvec_jiffies,
> },
> {
> .procname = "nf_conntrack_frag6_low_thresh",
> - .data = &nf_init_frags.low_thresh,
> + .data = &init_net.nf_frag.frags.low_thresh,
> .maxlen = sizeof(unsigned int),
> .mode = 0644,
> .proc_handler = proc_dointvec,
> },
> {
> .procname = "nf_conntrack_frag6_high_thresh",
> - .data = &nf_init_frags.high_thresh,
> + .data = &init_net.nf_frag.frags.high_thresh,
> .maxlen = sizeof(unsigned int),
> .mode = 0644,
> .proc_handler = proc_dointvec,
> @@ -99,7 +98,54 @@ static struct ctl_table nf_ct_frag6_sysctl_table[] = {
> { }
> };
>
> -static struct ctl_table_header *nf_ct_frag6_sysctl_header;
> +static int __net_init nf_ct_frag6_sysctl_register(struct net *net)
> +{
> + struct ctl_table *table;
> + struct ctl_table_header *hdr;
> +
> + table = nf_ct_frag6_sysctl_table;
> + if (!net_eq(net, &init_net)) {
> + table = kmemdup(table, sizeof(nf_ct_frag6_sysctl_table), GFP_KERNEL);
Sorry, you have to break lines at 80 chars.
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: Possible networking regression in 3.6.0
From: Chris Clayton @ 2012-09-18 15:51 UTC (permalink / raw)
To: Eric Dumazet; +Cc: netdev
In-Reply-To: <1347979239.26523.267.camel@edumazet-glaptop>
Thanks for the reply, Eric.
>>> -rc1 turned out to have the problem so I've bisected between 3.5 and
>>> 3.6-rc1. I arrived at:
>>>
>>> $ git bisect bad
>>> d2d68ba9fe8b38eb03124b3176a013bb8aa2b5e5 is the first bad commit
>>> commit d2d68ba9fe8b38eb03124b3176a013bb8aa2b5e5
>>> Author: David S. Miller <davem@davemloft.net>
>>> Date: Tue Jul 17 12:58:50 2012 -0700
>>>
>>> ipv4: Cache input routes in fib_info nexthops.
>>>
>>> Caching input routes is slightly simpler than output routes, since we
>>> don't need to be concerned with nexthop exceptions. (locally
>>> destined, and routed packets, never trigger PMTU events or redirects
>>> that will be processed by us).
>>>
>>> However, we have to elide caching for the DIRECTSRC and non-zero itag
>>> cases.
>>>
>>> Signed-off-by: David S. Miller <davem@davemloft.net>
>>>
>>> :040000 040000 6bbc75c1cbe62bf84ea412d3b98adf2b614779cd
>>> 3ad7256b4a71e63ca4530977c0550121ea803d35 M include
>>> :040000 040000 18c2a950a53c4eec9bfa12185d1e382dfed74af8
>>> a2ab6157d6cd54930da395758c6ded3a225d1f04 M net
>>>
>>> The bisect log:
>>> git bisect start
>>> # bad: [0d7614f09c1ebdbaa1599a5aba7593f147bf96ee] Linux 3.6-rc1
>>> git bisect bad 0d7614f09c1ebdbaa1599a5aba7593f147bf96ee
>>> # good: [28a33cbc24e4256c143dce96c7d93bf423229f92] Linux 3.5
>>> git bisect good 28a33cbc24e4256c143dce96c7d93bf423229f92
>>> # bad: [614a6d4341b3760ca98a1c2c09141b71db5d1e90] Merge branch 'for-3.6'
>>> of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
>>> git bisect bad 614a6d4341b3760ca98a1c2c09141b71db5d1e90
>>> # bad: [320f5ea0cedc08ef65d67e056bcb9d181386ef2c] genetlink: define
>>> lockdep_genl_is_held() when CONFIG_LOCKDEP
>>> git bisect bad 320f5ea0cedc08ef65d67e056bcb9d181386ef2c
>>> # good: [0cd06647b7c24f6633e32a505930a9aa70138c22] Merge branch 'master'
>>> of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next
>>> git bisect good 0cd06647b7c24f6633e32a505930a9aa70138c22
>>> # good: [dbfa600148a25903976910863c75dae185f8d187] cxgb3: set maximal
>>> number of default RSS queues
>>> git bisect good dbfa600148a25903976910863c75dae185f8d187
>>> # good: [efdfad3205403e1d1c5c0bdcbdb647ddd89bfaa3] bnx2: Try to recover
>>> from PCI block reset
>>> git bisect good efdfad3205403e1d1c5c0bdcbdb647ddd89bfaa3
>>> # good: [1bf91cdc1bba94ea062a9147d924815c13f029f2] ixgbe: Drop
>>> references to deprecated pci_ DMA api and instead use dma_ API
>>> git bisect good 1bf91cdc1bba94ea062a9147d924815c13f029f2
>>> # good: [b6dfd939fdc249fcf8cd7b8006f76239b33eb581] ixgbe: add support
>>> for new 82599 device
>>> git bisect good b6dfd939fdc249fcf8cd7b8006f76239b33eb581
>>> # good: [3ba97381343b271296487bf073eb670d5465a8b8] net: ethernet:
>>> davinci_emac: add pm_runtime support
>>> git bisect good 3ba97381343b271296487bf073eb670d5465a8b8
>>> # bad: [5e9965c15ba88319500284e590733f4a4629a288] Merge branch
>>> 'kill_rtcache'
>>> git bisect bad 5e9965c15ba88319500284e590733f4a4629a288
>>> # good: [f5b0a8743601a4477419171f5046bd07d1c080a0] net: Document
>>> dst->obsolete better.
>>> git bisect good f5b0a8743601a4477419171f5046bd07d1c080a0
>>> # bad: [ba3f7f04ef2b19aace38f855aedd17fe43035d50] ipv4: Kill
>>> FLOWI_FLAG_RT_NOCACHE and associated code.
>>> git bisect bad ba3f7f04ef2b19aace38f855aedd17fe43035d50
>>> # good: [f2bb4bedf35d5167a073dcdddf16543f351ef3ae] ipv4: Cache output
>>> routes in fib_info nexthops.
>>> git bisect good f2bb4bedf35d5167a073dcdddf16543f351ef3ae
>>> # bad: [d2d68ba9fe8b38eb03124b3176a013bb8aa2b5e5] ipv4: Cache input
>>> routes in fib_info nexthops.
>>> git bisect bad d2d68ba9fe8b38eb03124b3176a013bb8aa2b5e5
>>>
>>> Checking out the parent commit
>>> (f2bb4bedf35d5167a073dcdddf16543f351ef3ae) and building and installing
>>> the kernel gives a working configuration, so I'm pretty confident in the
>>> outcome of the bisect. Reversing the patch gives errors, so I've not
>>> tested master with the patch reversed.
>>>
>>> Let me know if I can help in any way to identify a fix.
>>>
>> Sorry, I forgot to say that I also have tried running TinyCore Linux as
>> a KVM guest on a 3.6.0-rc6 kernel, and I can ping the router fine, so
>> the problem seems to be something specifically related to ruuning
>> Windows XP as the guest. I don't have any other guests installed so
>> that's as much as I can say, although I could maybe install a Win7 guest
>> tomorrow if that would help.
>
I hope you've seen my later email in which I reported my error in my
testing that led me to believe that all was OK with a linux client. In
fact, The router is inaccessible from both the Windows XP and the Linux
clients.
> It would help to have some traffic sample, maybe.
>
I'll need help here. How would I go about collecting that traffic. I
have wireshark installed, but haven't used it for years. Would a trace
from that be helpful? It might take me a while to figure out how to
capture it?
> Especially if the problem is not easily reproductible for us.
>
> (I dont have Windows XP nor Win7)
>
> Also the bisect might point to a commit with an already fixed bug :
This fix is already in 3.6.0-rc6. BTW, I've pulled the latest changes
from kernel.org this afternoon, but that hasn't helped.
>
> commit 4331debc51ee1ce319f4a389484e0e8e05de2aca
> Author: Eric Dumazet <edumazet@google.com>
> Date: Wed Jul 25 05:11:23 2012 +0000
>
> ipv4: rt_cache_valid must check expired routes
>
> commit d2d68ba9fe8 (ipv4: Cache input routes in fib_info nexthops.)
> introduced rt_cache_valid() helper. It unfortunately doesn't check if
> route is expired before caching it.
>
> I noticed sk_setup_caps() was constantly called on a tcp workload.
>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Signed-off-by: David S. Miller <davem@davemloft.net>
>
>
^ permalink raw reply
* [PATCH 1/5] ucc_geth: Reduce IRQ off in xmit path
From: Joakim Tjernlund @ 2012-09-18 16:56 UTC (permalink / raw)
To: netdev; +Cc: Joakim Tjernlund
Currently ucc_geth_start_xmit wraps IRQ off for the
whole body just to be safe.
Reduce the IRQ off period to a minimum.
Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
---
drivers/net/ethernet/freescale/ucc_geth.c | 7 +++----
1 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/freescale/ucc_geth.c b/drivers/net/ethernet/freescale/ucc_geth.c
index 9ac14f8..e609c93 100644
--- a/drivers/net/ethernet/freescale/ucc_geth.c
+++ b/drivers/net/ethernet/freescale/ucc_geth.c
@@ -3181,8 +3181,6 @@ static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev)
ugeth_vdbg("%s: IN", __func__);
- spin_lock_irqsave(&ugeth->lock, flags);
-
dev->stats.tx_bytes += skb->len;
/* Start from the next BD that should be filled */
@@ -3196,6 +3194,7 @@ static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev)
(ugeth->skb_curtx[txQ] +
1) & TX_RING_MOD_MASK(ugeth->ug_info->bdRingLenTx[txQ]);
+ spin_lock_irqsave(&ugeth->lock, flags);
/* set up the buffer descriptor */
out_be32(&((struct qe_bd __iomem *)bd)->buf,
dma_map_single(ugeth->dev, skb->data,
@@ -3207,6 +3206,8 @@ static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev)
/* set bd status and length */
out_be32((u32 __iomem *)bd, bd_status);
+ spin_unlock_irqrestore(&ugeth->lock, flags);
+
/* Move to next BD in the ring */
if (!(bd_status & T_W))
@@ -3238,8 +3239,6 @@ static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev)
uccf = ugeth->uccf;
out_be16(uccf->p_utodr, UCC_FAST_TOD);
#endif
- spin_unlock_irqrestore(&ugeth->lock, flags);
-
return NETDEV_TX_OK;
}
--
1.7.8.6
^ permalink raw reply related
* [PATCH 2/5] ucc_geth: Word align Ethernet RX data
From: Joakim Tjernlund @ 2012-09-18 16:56 UTC (permalink / raw)
To: netdev; +Cc: Joakim Tjernlund
In-Reply-To: <1347987385-19071-1-git-send-email-Joakim.Tjernlund@transmode.se>
UCC controller can shift received Ethernet frames 2 bytes into the buffer,
making IP data word aligned, this patch enables that feature.
Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
---
drivers/net/ethernet/freescale/ucc_geth.c | 19 +++++++++++--------
drivers/net/ethernet/freescale/ucc_geth.h | 1 +
2 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/freescale/ucc_geth.c b/drivers/net/ethernet/freescale/ucc_geth.c
index e609c93..5f1460a 100644
--- a/drivers/net/ethernet/freescale/ucc_geth.c
+++ b/drivers/net/ethernet/freescale/ucc_geth.c
@@ -160,6 +160,7 @@ static struct ucc_geth_info ugeth_primary_info = {
.numThreadsRx = UCC_GETH_NUM_OF_THREADS_1,
.riscTx = QE_RISC_ALLOCATION_RISC1_AND_RISC2,
.riscRx = QE_RISC_ALLOCATION_RISC1_AND_RISC2,
+ .ipAddressAlignment = 1,
};
static struct ucc_geth_info ugeth_info[8];
@@ -211,12 +212,13 @@ static struct sk_buff *get_new_skb(struct ucc_geth_private *ugeth,
u8 __iomem *bd)
{
struct sk_buff *skb = NULL;
+ u16 buf_len = ugeth->ug_info->uf_info.max_rx_buf_length +
+ UCC_GETH_RX_DATA_BUF_ALIGNMENT +
+ UCC_GETH_RX_IP_ALIGNMENT;
skb = __skb_dequeue(&ugeth->rx_recycle);
if (!skb)
- skb = netdev_alloc_skb(ugeth->ndev,
- ugeth->ug_info->uf_info.max_rx_buf_length +
- UCC_GETH_RX_DATA_BUF_ALIGNMENT);
+ skb = netdev_alloc_skb(ugeth->ndev, buf_len);
if (skb == NULL)
return NULL;
@@ -231,10 +233,9 @@ static struct sk_buff *get_new_skb(struct ucc_geth_private *ugeth,
out_be32(&((struct qe_bd __iomem *)bd)->buf,
dma_map_single(ugeth->dev,
skb->data,
- ugeth->ug_info->uf_info.max_rx_buf_length +
- UCC_GETH_RX_DATA_BUF_ALIGNMENT,
+ buf_len,
DMA_FROM_DEVICE));
-
+ skb_reserve(skb, UCC_GETH_RX_IP_ALIGNMENT);
out_be32((u32 __iomem *)bd,
(R_E | R_I | (in_be32((u32 __iomem*)bd) & R_W)));
@@ -1877,7 +1878,8 @@ static void ucc_geth_free_rx(struct ucc_geth_private *ugeth)
in_be32(&((struct qe_bd __iomem *)bd)->buf),
ugeth->ug_info->
uf_info.max_rx_buf_length +
- UCC_GETH_RX_DATA_BUF_ALIGNMENT,
+ UCC_GETH_RX_DATA_BUF_ALIGNMENT +
+ UCC_GETH_RX_IP_ALIGNMENT,
DMA_FROM_DEVICE);
dev_kfree_skb_any(
ugeth->rx_skbuff[i][j]);
@@ -3352,7 +3354,8 @@ static int ucc_geth_tx(struct net_device *dev, u8 txQ)
if (skb_queue_len(&ugeth->rx_recycle) < RX_BD_RING_LEN &&
skb_recycle_check(skb,
ugeth->ug_info->uf_info.max_rx_buf_length +
- UCC_GETH_RX_DATA_BUF_ALIGNMENT))
+ UCC_GETH_RX_DATA_BUF_ALIGNMENT +
+ UCC_GETH_RX_IP_ALIGNMENT))
__skb_queue_head(&ugeth->rx_recycle, skb);
else
dev_kfree_skb(skb);
diff --git a/drivers/net/ethernet/freescale/ucc_geth.h b/drivers/net/ethernet/freescale/ucc_geth.h
index f71b3e7..aeb743c 100644
--- a/drivers/net/ethernet/freescale/ucc_geth.h
+++ b/drivers/net/ethernet/freescale/ucc_geth.h
@@ -855,6 +855,7 @@ struct ucc_geth_hardware_statistics {
#define UCC_GETH_RX_BD_RING_SIZE_ALIGNMENT 4
#define UCC_GETH_TX_BD_RING_SIZE_MEMORY_ALIGNMENT 32
#define UCC_GETH_RX_DATA_BUF_ALIGNMENT 64
+#define UCC_GETH_RX_IP_ALIGNMENT 2 /* IP word alignment */
#define UCC_GETH_TAD_EF 0x80
#define UCC_GETH_TAD_V 0x40
--
1.7.8.6
^ permalink raw reply related
* [PATCH 3/5] ucc_geth: Fix two gcc warnings
From: Joakim Tjernlund @ 2012-09-18 16:56 UTC (permalink / raw)
To: netdev; +Cc: Joakim Tjernlund
In-Reply-To: <1347987385-19071-1-git-send-email-Joakim.Tjernlund@transmode.se>
ucc_geth.c: In function 'ucc_geth_startup':
ucc_geth.c:3092:45: warning: comparison between 'enum qe_fltr_largest_external_tbl_lookup_key_size' and 'enum qe_fltr_tbl_lookup_key_size'
ucc_geth.c:3096:45: warning: comparison between 'enum qe_fltr_largest_external_tbl_lookup_key_size' and 'enum qe_fltr_tbl_lookup_key_size'
Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
---
drivers/net/ethernet/freescale/ucc_geth.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/freescale/ucc_geth.c b/drivers/net/ethernet/freescale/ucc_geth.c
index 5f1460a..7d60b95 100644
--- a/drivers/net/ethernet/freescale/ucc_geth.c
+++ b/drivers/net/ethernet/freescale/ucc_geth.c
@@ -3074,11 +3074,11 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
if (ug_info->rxExtendedFiltering) {
size += THREAD_RX_PRAM_ADDITIONAL_FOR_EXTENDED_FILTERING;
if (ug_info->largestexternallookupkeysize ==
- QE_FLTR_TABLE_LOOKUP_KEY_SIZE_8_BYTES)
+ QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_8_BYTES)
size +=
THREAD_RX_PRAM_ADDITIONAL_FOR_EXTENDED_FILTERING_8;
if (ug_info->largestexternallookupkeysize ==
- QE_FLTR_TABLE_LOOKUP_KEY_SIZE_16_BYTES)
+ QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_16_BYTES)
size +=
THREAD_RX_PRAM_ADDITIONAL_FOR_EXTENDED_FILTERING_16;
}
--
1.7.8.6
^ permalink raw reply related
* [PATCH 4/5] ucc_geth: Increase RX ring buffer from 32 to 64
From: Joakim Tjernlund @ 2012-09-18 16:56 UTC (permalink / raw)
To: netdev; +Cc: Joakim Tjernlund
In-Reply-To: <1347987385-19071-1-git-send-email-Joakim.Tjernlund@transmode.se>
We still see dropped pkgs in a busy network, this makes it better.
Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
---
drivers/net/ethernet/freescale/ucc_geth.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ethernet/freescale/ucc_geth.h b/drivers/net/ethernet/freescale/ucc_geth.h
index aeb743c..b68637e 100644
--- a/drivers/net/ethernet/freescale/ucc_geth.h
+++ b/drivers/net/ethernet/freescale/ucc_geth.h
@@ -878,7 +878,7 @@ struct ucc_geth_hardware_statistics {
/* Driver definitions */
#define TX_BD_RING_LEN 0x10
-#define RX_BD_RING_LEN 0x20
+#define RX_BD_RING_LEN 0x40
#define TX_RING_MOD_MASK(size) (size-1)
#define RX_RING_MOD_MASK(size) (size-1)
--
1.7.8.6
^ permalink raw reply related
* [PATCH 5/5] ucc_geth: Add IRQ coalescing
From: Joakim Tjernlund @ 2012-09-18 16:56 UTC (permalink / raw)
To: netdev; +Cc: Joakim Tjernlund
In-Reply-To: <1347987385-19071-1-git-send-email-Joakim.Tjernlund@transmode.se>
Enable modest IRQ coalescing(4 pks) to reduce IRQ load.
Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
---
arch/powerpc/include/asm/qe.h | 1 +
drivers/net/ethernet/freescale/ucc_geth.c | 18 +++++++++++++++---
drivers/net/ethernet/freescale/ucc_geth.h | 20 ++++++++++++++++++++
3 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/include/asm/qe.h b/arch/powerpc/include/asm/qe.h
index 5e0b6d5..12a8ac8 100644
--- a/arch/powerpc/include/asm/qe.h
+++ b/arch/powerpc/include/asm/qe.h
@@ -373,6 +373,7 @@ enum comm_dir {
#define QE_MCC_STOP_RX 0x00000009
#define QE_ATM_TRANSMIT 0x0000000a
#define QE_HPAC_CLEAR_ALL 0x0000000b
+#define QE_SET_LAST_RX_THLD 0x00000013
#define QE_GRACEFUL_STOP_RX 0x0000001a
#define QE_RESTART_RX 0x0000001b
#define QE_HPAC_SET_PRIORITY 0x0000010b
diff --git a/drivers/net/ethernet/freescale/ucc_geth.c b/drivers/net/ethernet/freescale/ucc_geth.c
index 7d60b95..772f796 100644
--- a/drivers/net/ethernet/freescale/ucc_geth.c
+++ b/drivers/net/ethernet/freescale/ucc_geth.c
@@ -124,7 +124,7 @@ static struct ucc_geth_info ugeth_primary_info = {
.ecamptr = ((uint32_t) NULL),
.eventRegMask = UCCE_OTHER,
.pausePeriod = 0xf000,
- .interruptcoalescingmaxvalue = {1, 1, 1, 1, 1, 1, 1, 1},
+ .interruptcoalescingmaxvalue = {4, 4, 4, 4, 4, 4, 4, 4},
.bdRingLenTx = {
TX_BD_RING_LEN,
TX_BD_RING_LEN,
@@ -237,7 +237,7 @@ static struct sk_buff *get_new_skb(struct ucc_geth_private *ugeth,
DMA_FROM_DEVICE));
skb_reserve(skb, UCC_GETH_RX_IP_ALIGNMENT);
out_be32((u32 __iomem *)bd,
- (R_E | R_I | (in_be32((u32 __iomem*)bd) & R_W)));
+ (R_E | (in_be32((u32 __iomem*)bd) & R_W)));
return skb;
}
@@ -1606,6 +1606,7 @@ static void adjust_link(struct net_device *dev)
struct ucc_fast __iomem *uf_regs;
struct phy_device *phydev = ugeth->phydev;
int new_state = 0;
+ u32 cecr_subblock;
ug_regs = ugeth->ug_regs;
uf_regs = ugeth->uccf->uf_regs;
@@ -1657,6 +1658,17 @@ static void adjust_link(struct net_device *dev)
dev->name, phydev->speed);
break;
}
+ cecr_subblock = ucc_fast_get_qe_cr_subblock(ugeth->ug_info->uf_info.ucc_num);
+ if (phydev->speed == SPEED_10)
+ qe_issue_cmd(QE_SET_LAST_RX_THLD, cecr_subblock,
+ QE_CR_PROTOCOL_ETHERNET, UCC_10_TIME);
+ else if (phydev->speed == SPEED_100)
+ qe_issue_cmd(QE_SET_LAST_RX_THLD, cecr_subblock,
+ QE_CR_PROTOCOL_ETHERNET, UCC_100_TIME);
+ else if (phydev->speed == SPEED_1000)
+ qe_issue_cmd(QE_SET_LAST_RX_THLD, cecr_subblock,
+ QE_CR_PROTOCOL_ETHERNET, UCC_GBIT_TIME);
+
ugeth->oldspeed = phydev->speed;
}
@@ -2390,7 +2402,7 @@ static int ucc_geth_alloc_rx(struct ucc_geth_private *ugeth)
bd = ugeth->rxBd[j] = ugeth->p_rx_bd_ring[j];
for (i = 0; i < ug_info->bdRingLenRx[j]; i++) {
/* set bd status and length */
- out_be32((u32 __iomem *)bd, R_I);
+ out_be32((u32 __iomem *)bd, 0);
/* clear bd buffer */
out_be32(&((struct qe_bd __iomem *)bd)->buf, 0);
bd += sizeof(struct qe_bd);
diff --git a/drivers/net/ethernet/freescale/ucc_geth.h b/drivers/net/ethernet/freescale/ucc_geth.h
index b68637e..49165ce 100644
--- a/drivers/net/ethernet/freescale/ucc_geth.h
+++ b/drivers/net/ethernet/freescale/ucc_geth.h
@@ -923,6 +923,26 @@ struct ucc_geth_hardware_statistics {
#define UCC_GETH_MACCFG1_INIT 0
#define UCC_GETH_MACCFG2_INIT (MACCFG2_RESERVED_1)
+/*
+ * From QUICC Engine Block Reference Manual, Chap 8.9:
+ * This command is used to set a timeout value for the Ethernet receiver
+ * interrupt coalescing mechanism.
+ * The timeout period is measured from the time that the last Ethernet frame
+ * was received. When the timeout expires, an interrupt is issued to the CPU
+ * even if the interrupt coalescing counter did not reach its maximum value. The
+ * timeout value should be written in the two least significant bytes of CECDR,
+ * and it should be specified in terms of serial clocks.
+ * For example, a value of 1000 in CECDR sets the timeout period to 1000 serial
+ * clocks.
+ * -------------------------------------------------------------------
+ * GBIT = 125MHz => 8ns/tick, 8 bits / tick
+ * 100 = 25 MHz => 40ns/tick, 4 bits / tick
+ * 10 = 2.5 MHz => 400ns/tick, 4 bits / tick
+ */
+#define UCC_GBIT_TIME 64
+#define UCC_100_TIME 64
+#define UCC_10_TIME 8
+
/* Ethernet Address Type. */
enum enet_addr_type {
ENET_ADDR_TYPE_INDIVIDUAL,
--
1.7.8.6
^ permalink raw reply related
* [PATCH 1/3] net/ieee802154/6lowpan.c: Remove unecessary semicolon
From: Peter Senna Tschudin @ 2012-09-18 17:10 UTC (permalink / raw)
To: alex.bluesman.smirnov
Cc: dbaryshkov, davem, linux-zigbee-devel, netdev, linux-kernel,
kernel-janitors, trivial, Peter Senna Tschudin
Found by http://coccinelle.lip6.fr/
Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
---
net/ieee802154/6lowpan.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c
index d529111..6d42c17 100644
--- a/net/ieee802154/6lowpan.c
+++ b/net/ieee802154/6lowpan.c
@@ -1256,7 +1256,7 @@ static int lowpan_device_event(struct notifier_block *unused,
}
unregister_netdevice_many(&del_list);
- };
+ }
out:
return NOTIFY_DONE;
--
1.7.11.4
^ permalink raw reply related
* [PATCH 2/3] net/openvswitch/vport.c: Remove unecessary semicolon
From: Peter Senna Tschudin @ 2012-09-18 17:10 UTC (permalink / raw)
To: jesse-l0M0P4e3n4LQT0dZR+AlfA
Cc: dev-yBygre7rU0TnMu66kgdUjQ, trivial-DgEjT+Ai2ygdnm+yROfE0A,
netdev-u79uwXL29TY76Z2rM5mHXA, Peter Senna Tschudin,
kernel-janitors-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA, davem-fT/PcQaiUtIeIZ0/mPfg9Q
In-Reply-To: <1347988245-31413-1-git-send-email-peter.senna-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Found by http://coccinelle.lip6.fr/
Signed-off-by: Peter Senna Tschudin <peter.senna-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
net/openvswitch/vport.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/openvswitch/vport.c b/net/openvswitch/vport.c
index 9055dd6..03779e8 100644
--- a/net/openvswitch/vport.c
+++ b/net/openvswitch/vport.c
@@ -398,7 +398,7 @@ void ovs_vport_record_error(struct vport *vport, enum vport_err_type err_type)
case VPORT_E_TX_ERROR:
vport->err_stats.tx_errors++;
break;
- };
+ }
spin_unlock(&vport->stats_lock);
}
--
1.7.11.4
^ permalink raw reply related
* [PATCH 3/3] net/tipc/name_table.c: Remove unecessary semicolon
From: Peter Senna Tschudin @ 2012-09-18 17:10 UTC (permalink / raw)
To: jon.maloy
Cc: allan.stephens, davem, netdev, tipc-discussion, linux-kernel,
kernel-janitors, trivial, Peter Senna Tschudin
In-Reply-To: <1347988245-31413-1-git-send-email-peter.senna@gmail.com>
Found by http://coccinelle.lip6.fr/
Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
---
net/tipc/name_table.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/tipc/name_table.c b/net/tipc/name_table.c
index 98975e8..4675477 100644
--- a/net/tipc/name_table.c
+++ b/net/tipc/name_table.c
@@ -783,7 +783,7 @@ static int subseq_list(struct sub_seq *sseq, char *buf, int len, u32 depth,
if (!list_is_last(&publ->zone_list, &info->zone_list))
ret += tipc_snprintf(buf + ret, len - ret,
"\n%33s", " ");
- };
+ }
ret += tipc_snprintf(buf + ret, len - ret, "\n");
return ret;
--
1.7.11.4
^ permalink raw reply related
* Re: [PATCH 0/6] llc2: Simplify llc_station
From: Ben Hutchings @ 2012-09-18 17:29 UTC (permalink / raw)
To: David Miller; +Cc: acme, netdev
In-Reply-To: <20120917.131017.1646567691887140571.davem@davemloft.net>
On Mon, Sep 17, 2012 at 01:10:17PM -0400, David Miller wrote:
> From: David Miller <davem@davemloft.net>
> Date: Mon, 17 Sep 2012 13:05:31 -0400 (EDT)
>
> > From: Ben Hutchings <ben@decadent.org.uk>
> > Date: Sun, 16 Sep 2012 04:09:42 +0100
> >
> >> There seem to have been some grand plans for llc_station, but as they
> >> haven't been fulfilled it's just unnecessarily complicated.
> >
> > I went over these a few times, they look correct, so I am going
> > to apply them to net-next.
> >
> > If there are any problems let's hope that exposure in the tree
> > helps shake those out.
>
> It doesn't even build properly, please fix this and resubmit:
>
> ERROR: "sysctl_llc_station_ack_timeout" [net/llc/llc2.ko] undefined!
Sorry, I was able to build net/llc/ successfully but didn't do a full
build which would have caught this.
Ben.
--
Ben Hutchings
We get into the habit of living before acquiring the habit of thinking.
- Albert Camus
^ permalink raw reply
* Re: [PATCH 0/6] llc2: Simplify llc_station
From: Ben Hutchings @ 2012-09-18 17:49 UTC (permalink / raw)
To: David Miller; +Cc: acme, netdev
In-Reply-To: <20120917.131237.518528991078697534.davem@davemloft.net>
On Mon, Sep 17, 2012 at 01:12:37PM -0400, David Miller wrote:
> From: David Miller <davem@davemloft.net>
> Date: Mon, 17 Sep 2012 13:10:17 -0400 (EDT)
>
> > From: David Miller <davem@davemloft.net>
> > Date: Mon, 17 Sep 2012 13:05:31 -0400 (EDT)
> >
> >> From: Ben Hutchings <ben@decadent.org.uk>
> >> Date: Sun, 16 Sep 2012 04:09:42 +0100
> >>
> >>> There seem to have been some grand plans for llc_station, but as they
> >>> haven't been fulfilled it's just unnecessarily complicated.
> >>
> >> I went over these a few times, they look correct, so I am going
> >> to apply them to net-next.
> >>
> >> If there are any problems let's hope that exposure in the tree
> >> helps shake those out.
> >
> > It doesn't even build properly, please fix this and resubmit:
> >
> > ERROR: "sysctl_llc_station_ack_timeout" [net/llc/llc2.ko] undefined!
>
> Actually, since I trusted you when you said you build tested this,
> I pushed it out to net-next pre-maturely.
>
> I'm going to fix this meanwhile by simply removing the sysctl that
> references this symbol.
>
> But you need to check for me whether that's ok or not.
The sysctl had no effect so I think it's fairly safe to assume nothing
depends on it. Thanks.
Ben.
--
Ben Hutchings
We get into the habit of living before acquiring the habit of thinking.
- Albert Camus
^ permalink raw reply
* Re: [V4 PATCH 0/8] csiostor: Chelsio FCoE offload driver submission
From: Naresh Kumar Inna @ 2012-09-18 17:50 UTC (permalink / raw)
To: James Bottomley; +Cc: linux-scsi@vger.kernel.org, netdev@vger.kernel.org
In-Reply-To: <1347957374.2388.15.camel@dabdike.int.hansenpartnership.com>
On 9/18/2012 2:06 PM, James Bottomley wrote:
> On Tue, 2012-09-18 at 09:54, Naresh Kumar Inna wrote:
>> Hi James,
>>
>> Could you please consider merging version V4 of the driver patches, if
>> you think they are in good shape now?
>
> Well, definitely not yet; you seem to have missed the memo on readq:
>
> CC [M] drivers/scsi/cxgbi/cxgb4i/cxgb4i.o
> drivers/scsi/csiostor/csio_hw.c: In function csio_hw_mc_read:
> drivers/scsi/csiostor/csio_hw.c:194:3: error: implicit declaration of
> function readq [-Werror=implicit-function-declaration]
>
> It's only defined on platforms which can support an atomic 64 bit
> operation (which is mostly not any 32 bit platforms) ... so this could
> do with compile testing on those.
>
> To see how to handle readq/writeq in the 32 bit case, see the uses in
> fnic or qla2xxx
>
Thanks for reviewing. I will fix up readq/writeq, as well as other
32-bit compilation issues, if any.
> You also have a couple of unnecessary version.h includes.
>
I will get rid of them.
> Since you're a new driver, could you not do a correctly unlocked
> queuecommand routine? You'll find the way you've currently got it coded
> (holding the host lock for the entire queuecommand routine) is very
> performance detrimental.
>
Yes, I am aware of that. However, some of this code was written and
tested before the lock-less queuecommand came into existence. Going the
lock-less route would require me to test the driver thoroughly again. It
definitely is in my to-do list, but I would like to take that up after
the initial submission goes through. Would that be OK?
> You have a lot of locking statements which aren't easy to audit by hand
> because there are multiple unlocks. Things like this:
>
> csio_scan_finished(struct Scsi_Host *shost, unsigned long time)
> {
> struct csio_lnode *ln = shost_priv(shost);
> int rv = 0;
>
> spin_lock_irq(shost->host_lock);
> if (!ln->hwp || csio_list_deleted(&ln->sm.sm_list)) {
> spin_unlock_irq(shost->host_lock);
> return 1;
> }
>
> rv = csio_scan_done(ln, jiffies, time, csio_max_scan_tmo * HZ,
> csio_delta_scan_tmo * HZ);
>
> spin_unlock_irq(shost->host_lock);
>
> return rv;
> }
>
> Are better coded as
>
> csio_scan_finished(struct Scsi_Host *shost, unsigned long time)
> {
> struct csio_lnode *ln = shost_priv(shost);
> int rv = 1;
>
> spin_lock_irq(shost->host_lock);
> if (!ln->hwp || csio_list_deleted(&ln->sm.sm_list))
> goto out;
>
> rv = csio_scan_done(ln, jiffies, time, csio_max_scan_tmo * HZ,
> csio_delta_scan_tmo * HZ);
>
> out:
> spin_unlock_irq(shost->host_lock);
>
> return rv;
> }
>
> It's shorter and the unlock clearly matches the lock. You could even
> invert the if logic and just make the csio_scan_done() conditional on it
> avoiding the goto.
>
I will try to minimize the lock/unlock mismatch instances per your
suggestions, if not eliminate them altogether.
> I'd also really like the people who understand FC to take a look over
> this as well.
>
Sure.
Thanks,
Naresh.
^ permalink raw reply
* Re: [PATCH net-next] mlx4: use dev_kfree_skb() instead of dev_kfree_skb_any()
From: Or Gerlitz @ 2012-09-18 19:58 UTC (permalink / raw)
To: Eric Dumazet; +Cc: David Miller, netdev, Yevgeny Petrilin, Or Gerlitz, Ying Cai
In-Reply-To: <1347866974.26523.53.camel@edumazet-glaptop>
On Mon, Sep 17, 2012 at 10:29 AM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> Since commit e22979d96a5 (mlx4_en: Moving to Interrupts for TX
> completions), we no longer can free TX skb from hard IRQ, but only from
> normal softirq or process context.
>
> Therefore, we can directly call dev_kfree_skb() from
> mlx4_en_free_tx_desc() like other conventional NAPI drivers.
Hi Eric,
The team is all off till tomorrow, we will look and get back to you
Or.
^ permalink raw reply
* Re: [PATCH net-next V4 0/2] Add rtnl_link_ops support to IPoIB
From: Or Gerlitz @ 2012-09-18 20:07 UTC (permalink / raw)
To: Roland Dreier, David Miller; +Cc: netdev
In-Reply-To: <1347551797-2495-1-git-send-email-ogerlitz@mellanox.com>
On Thu, Sep 13, 2012 at 6:56 PM, Or Gerlitz <ogerlitz@mellanox.com> wrote:
> This is about adding rtnl_link_ops to IPoIB, primarly addressing feedback
> from Dave on a similar patch that was part of the eIPoIB submission.
[...]
> Roland, this patch is hanging out for pretty long while (few months) without
> any comment from you, if it makes things easier, I would like to merge it through
> net-next, makes sense?
Hi Roland,
Haven't heard from you on this patch, are you picking this or it can
get in though net-next?
Or.
> Changes from V3:
> - addressed feedback from Patrick McHardy to move the IFLA_IPOIB_yyy ipoib
> rtnl defintions into include/linux/if_link.h
> - changed IFLA_IPOIB_CHILD_PKEY to be named IFLA_IPOIB_PKEY which will cope
> with more IFLA_IPOIB_yyy entries to be added once the basic support is in
>
> Changes from V2:
> - removed the notion of user defined index per child, since we can do well w.o it
> - for that end, make (an internal to ipoib) distrinction between legacy childs created
> through the old sysfs way to childs created using rtnl link ops
>
> Changes from V1:
> - applied feedback from Dave Miller to avoid using sysfs
> - added rtnl_link_ops support in ipoib and use them to add/delete childs
>
> Or Gerlitz (1):
> IB/ipoib: Add rtnl_link_ops support
^ permalink raw reply
* Re: [PATCH net-next v3 0/4] Take care of xfrm policy when checking dst entries
From: David Miller @ 2012-09-18 20:08 UTC (permalink / raw)
To: nicolas.dichtel
Cc: vyasevich, eric.dumazet, sds, james.l.morris, eparis, sri,
linux-sctp, netdev
In-Reply-To: <20120917.155458.777649470378504320.davem@davemloft.net>
From: David Miller <davem@davemloft.net>
Date: Mon, 17 Sep 2012 15:54:58 -0400 (EDT)
> I'm reconsidering putting Eric's patch into 'net' and that would
> allow me to use your v3 patches as-is.
And that's what I've done just now, thanks.
^ permalink raw reply
* Re: [PATCH net-next V4 0/2] Add rtnl_link_ops support to IPoIB
From: David Miller @ 2012-09-18 20:12 UTC (permalink / raw)
To: or.gerlitz; +Cc: roland, netdev
In-Reply-To: <CAJZOPZL6cEEbyMgj+3_h-ZHf0jzNs3yF=f3uOTrKB6EO4Vx2yw@mail.gmail.com>
From: Or Gerlitz <or.gerlitz@gmail.com>
Date: Tue, 18 Sep 2012 23:07:54 +0300
> On Thu, Sep 13, 2012 at 6:56 PM, Or Gerlitz <ogerlitz@mellanox.com> wrote:
>> This is about adding rtnl_link_ops to IPoIB, primarly addressing feedback
>> from Dave on a similar patch that was part of the eIPoIB submission.
> [...]
>> Roland, this patch is hanging out for pretty long while (few months) without
>> any comment from you, if it makes things easier, I would like to merge it through
>> net-next, makes sense?
>
>
> Hi Roland,
>
> Haven't heard from you on this patch, are you picking this or it can
> get in though net-next?
Nobody has given any generic networking review to this patch yet, and given
that I'd be very disappointed if Roland went ahead and applied this.
You never need to ping people over issues like this and it's extremely
irritating that you keep doing this.
Everything you need to know is at:
http://patchwork.ozlabs.org/project/netdev/list/
And you can clearly see your patch sitting there in "Under Review"
state.
You simply need to be patient and wait for people to get to reviewing
your patch rather than forcing the issue with pings. We track patches
in patchwork so we don't need to waste time with "pings"
^ permalink raw reply
* Re: [PATCH 1/3] net/ieee802154/6lowpan.c: Remove unecessary semicolon
From: David Miller @ 2012-09-18 20:13 UTC (permalink / raw)
To: peter.senna
Cc: alex.bluesman.smirnov, dbaryshkov, linux-zigbee-devel, netdev,
linux-kernel, kernel-janitors, trivial
In-Reply-To: <1347988245-31413-1-git-send-email-peter.senna@gmail.com>
From: Peter Senna Tschudin <peter.senna@gmail.com>
Date: Tue, 18 Sep 2012 19:10:43 +0200
> Found by http://coccinelle.lip6.fr/
>
> Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Applied.
^ permalink raw reply
* Re: [PATCH 2/3] net/openvswitch/vport.c: Remove unecessary semicolon
From: David Miller @ 2012-09-18 20:13 UTC (permalink / raw)
To: peter.senna-Re5JQEeQqe8AvxtiuMwx3w
Cc: dev-yBygre7rU0TnMu66kgdUjQ, trivial-DgEjT+Ai2ygdnm+yROfE0A,
netdev-u79uwXL29TY76Z2rM5mHXA,
kernel-janitors-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1347988245-31413-2-git-send-email-peter.senna-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
From: Peter Senna Tschudin <peter.senna-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Date: Tue, 18 Sep 2012 19:10:44 +0200
> Found by http://coccinelle.lip6.fr/
>
> Signed-off-by: Peter Senna Tschudin <peter.senna-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Applied.
^ permalink raw reply
* Re: [PATCH 3/3] net/tipc/name_table.c: Remove unecessary semicolon
From: David Miller @ 2012-09-18 20:13 UTC (permalink / raw)
To: peter.senna
Cc: jon.maloy, trivial, netdev, kernel-janitors, linux-kernel,
tipc-discussion, allan.stephens
In-Reply-To: <1347988245-31413-3-git-send-email-peter.senna@gmail.com>
From: Peter Senna Tschudin <peter.senna@gmail.com>
Date: Tue, 18 Sep 2012 19:10:45 +0200
> Found by http://coccinelle.lip6.fr/
>
> Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Applied.
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
^ permalink raw reply
* Re: [PATCH] xfrm_user: return error pointer instead of NULL
From: David Miller @ 2012-09-18 20:16 UTC (permalink / raw)
To: steffen.klassert; +Cc: minipli, netdev, linux-kernel, stable
In-Reply-To: <20120917071642.GC13023@secunet.com>
From: Steffen Klassert <steffen.klassert@secunet.com>
Date: Mon, 17 Sep 2012 09:16:42 +0200
> On Thu, Sep 13, 2012 at 11:41:26PM +0200, Mathias Krause wrote:
>> When dump_one_state() returns an error, e.g. because of a too small
>> buffer to dump the whole xfrm state, xfrm_state_netlink() returns NULL
>> instead of an error pointer. But its callers expect an error pointer
>> and therefore continue to operate on a NULL skbuff.
>>
>> This could lead to a privilege escalation (execution of user code in
>> kernel context) if the attacker has CAP_NET_ADMIN and is able to map
>> address 0.
>
> Or it simply crashes with a NULL pointer dereference.
>
>>
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Mathias Krause <minipli@googlemail.com>
>
> Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
Applied, and queued up for -stable.
Please do not CC: stable explicitly in your patch submissions,
I removed it from the patch.
Instead, ask me to queue the patch up for -stable. We handle stable
submissed via a patch queue which I maintain at:
http://patchwork.ozlabs.org/user/bundle/2566/?state=*
so that I can let patches cook in Linus's tree for a length of
time of my choosing, rather than having bug fixes automatically
propagate the moment it hits Linus's tree.
Thanks.
^ permalink raw reply
* Re: [PATCH] xfrm_user: return error pointer instead of NULL #2
From: David Miller @ 2012-09-18 20:16 UTC (permalink / raw)
To: steffen.klassert; +Cc: minipli, netdev, linux-kernel, stable
In-Reply-To: <20120917071853.GD13023@secunet.com>
From: Steffen Klassert <steffen.klassert@secunet.com>
Date: Mon, 17 Sep 2012 09:18:53 +0200
> On Fri, Sep 14, 2012 at 09:58:32PM +0200, Mathias Krause wrote:
>> When dump_one_policy() returns an error, e.g. because of a too small
>> buffer to dump the whole xfrm policy, xfrm_policy_netlink() returns
>> NULL instead of an error pointer. But its caller expects an error
>> pointer and therefore continues to operate on a NULL skbuff.
>>
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Mathias Krause <minipli@googlemail.com>
>
> Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
Applied and queued up for -stable.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox