From: "Raphaël Beamonte" <raphael.beamonte@gmail.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: "Raphaël Beamonte" <raphael.beamonte@gmail.com>,
"Cristina Opriceana" <cristina.opriceana@gmail.com>,
devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org
Subject: [PATCHv3 05/15] staging: rtl8192u: r8192U_core: rtl8192_read_eeprom_info: reorganize function
Date: Sun, 20 Sep 2015 13:14:17 -0400 [thread overview]
Message-ID: <5500d31a407aea3c53f153e4c70fed8f5ca87f0b.1442769012.git.raphael.beamonte@gmail.com> (raw)
In-Reply-To: <cover.1442769012.git.raphael.beamonte@gmail.com>
In-Reply-To: <cover.1442769012.git.raphael.beamonte@gmail.com>
Refactor code to avoid multiple check of same boolean value, and to
make the code clearer. This patches also implements the necessary
changes for the code lines in this function to be under 80 chars.
Signed-off-by: Raphaël Beamonte <raphael.beamonte@gmail.com>
---
drivers/staging/rtl8192u/r8192U_core.c | 259 ++++++++++++++++++++-------------
1 file changed, 155 insertions(+), 104 deletions(-)
diff --git a/drivers/staging/rtl8192u/r8192U_core.c b/drivers/staging/rtl8192u/r8192U_core.c
index eb9c07e..7314e2f 100644
--- a/drivers/staging/rtl8192u/r8192U_core.c
+++ b/drivers/staging/rtl8192u/r8192U_core.c
@@ -2447,129 +2447,180 @@ static void rtl8192_read_eeprom_info(struct net_device *dev)
priv->rf_type = RTL819X_DEFAULT_RF_TYPE; /* default 1T2R */
priv->rf_chip = RF_8256;
- if (priv->card_8192_version == (u8)VERSION_819xU_A) {
+ /* if version mismatch VERSION_819xU_A, go directly to the led section
+ */
+ if (priv->card_8192_version != (u8)VERSION_819xU_A)
+ goto led;
+
+ if (bLoad_From_EEPOM) {
/* read Tx power gain offset of legacy OFDM to HT rate */
- if (bLoad_From_EEPOM)
- priv->EEPROMTxPowerDiff = (eprom_read(dev, (EEPROM_TxPowerDiff >> 1)) & 0xff00) >> 8;
- else
- priv->EEPROMTxPowerDiff = EEPROM_Default_TxPower;
- RT_TRACE(COMP_EPROM, "TxPowerDiff:%d\n", priv->EEPROMTxPowerDiff);
+ tmpValue = eprom_read(dev, (EEPROM_TxPowerDiff >> 1));
+ priv->EEPROMTxPowerDiff = (tmpValue & 0xff00) >> 8;
+
/* read ThermalMeter from EEPROM */
- if (bLoad_From_EEPOM)
- priv->EEPROMThermalMeter = (u8)(eprom_read(dev, (EEPROM_ThermalMeter >> 1)) & 0x00ff);
- else
- priv->EEPROMThermalMeter = EEPROM_Default_ThermalMeter;
- RT_TRACE(COMP_EPROM, "ThermalMeter:%d\n", priv->EEPROMThermalMeter);
- /* for tx power track */
- priv->TSSI_13dBm = priv->EEPROMThermalMeter * 100;
+ tmpValue = eprom_read(dev, (EEPROM_ThermalMeter >> 1));
+ priv->EEPROMThermalMeter = (u8)(tmpValue & 0x00ff);
+
/* read antenna tx power offset of B/C/D to A from EEPROM */
- if (bLoad_From_EEPOM)
- priv->EEPROMPwDiff = (eprom_read(dev, (EEPROM_PwDiff >> 1)) & 0x0f00) >> 8;
- else
- priv->EEPROMPwDiff = EEPROM_Default_PwDiff;
- RT_TRACE(COMP_EPROM, "TxPwDiff:%d\n", priv->EEPROMPwDiff);
+ tmpValue = eprom_read(dev, (EEPROM_PwDiff >> 1));
+ priv->EEPROMPwDiff = (tmpValue & 0x0f00) >> 8;
+
/* Read CrystalCap from EEPROM */
- if (bLoad_From_EEPOM)
- priv->EEPROMCrystalCap = (eprom_read(dev, (EEPROM_CrystalCap >> 1)) & 0x0f);
- else
- priv->EEPROMCrystalCap = EEPROM_Default_CrystalCap;
- RT_TRACE(COMP_EPROM, "CrystalCap = %d\n", priv->EEPROMCrystalCap);
+ tmpValue = eprom_read(dev, (EEPROM_CrystalCap >> 1));
+ priv->EEPROMCrystalCap = (tmpValue & 0x0f);
+
/* get per-channel Tx power level */
- if (bLoad_From_EEPOM)
- priv->EEPROM_Def_Ver = (eprom_read(dev, (EEPROM_TxPwIndex_Ver >> 1)) & 0xff00) >> 8;
- else
- priv->EEPROM_Def_Ver = 1;
- RT_TRACE(COMP_EPROM, "EEPROM_DEF_VER:%d\n", priv->EEPROM_Def_Ver);
+ tmpValue = eprom_read(dev, (EEPROM_TxPwIndex_Ver >> 1));
+ priv->EEPROM_Def_Ver = (tmpValue & 0xff00) >> 8;
+ } else {
+ /* read Tx power gain offset of legacy OFDM to HT rate */
+ priv->EEPROMTxPowerDiff = EEPROM_Default_TxPower;
+
+ /* read ThermalMeter from EEPROM */
+ priv->EEPROMThermalMeter = EEPROM_Default_ThermalMeter;
+
+ /* read antenna tx power offset of B/C/D to A from EEPROM */
+ priv->EEPROMPwDiff = EEPROM_Default_PwDiff;
+
+ /* Read CrystalCap from EEPROM */
+ priv->EEPROMCrystalCap = EEPROM_Default_CrystalCap;
+
+ /* get per-channel Tx power level */
+ priv->EEPROM_Def_Ver = 1;
+ }
+
+ /* for tx power track */
+ priv->TSSI_13dBm = priv->EEPROMThermalMeter * 100;
+
+ RT_TRACE(COMP_EPROM, "TxPowerDiff:%d\n", priv->EEPROMTxPowerDiff);
+ RT_TRACE(COMP_EPROM, "ThermalMeter:%d\n", priv->EEPROMThermalMeter);
+ RT_TRACE(COMP_EPROM, "TxPwDiff:%d\n", priv->EEPROMPwDiff);
+ RT_TRACE(COMP_EPROM, "CrystalCap = %d\n", priv->EEPROMCrystalCap);
+ RT_TRACE(COMP_EPROM, "EEPROM_DEF_VER:%d\n", priv->EEPROM_Def_Ver);
+
+ if (bLoad_From_EEPOM) {
if (priv->EEPROM_Def_Ver == 0) { /* old eeprom definition */
int i;
- if (bLoad_From_EEPOM)
- priv->EEPROMTxPowerLevelCCK = (eprom_read(dev, (EEPROM_TxPwIndex_CCK >> 1)) & 0xff) >> 8;
- else
- priv->EEPROMTxPowerLevelCCK = 0x10;
- RT_TRACE(COMP_EPROM, "CCK Tx Power Levl: 0x%02x\n", priv->EEPROMTxPowerLevelCCK);
+ tmpValue = (EEPROM_TxPwIndex_CCK >> 1) & 0xff;
+ tmpValue = eprom_read(dev, tmpValue);
+ priv->EEPROMTxPowerLevelCCK = tmpValue >> 8;
+
+ RT_TRACE(COMP_EPROM, "CCK Tx Power Levl: 0x%02x\n",
+ priv->EEPROMTxPowerLevelCCK);
+
for (i = 0; i < 3; i++) {
- if (bLoad_From_EEPOM) {
- tmpValue = eprom_read(dev, (EEPROM_TxPwIndex_OFDM_24G + i) >> 1);
- if (((EEPROM_TxPwIndex_OFDM_24G + i) % 2) == 0)
- tmpValue = tmpValue & 0x00ff;
- else
- tmpValue = (tmpValue & 0xff00) >> 8;
- } else {
- tmpValue = 0x10;
- }
- priv->EEPROMTxPowerLevelOFDM24G[i] = (u8)tmpValue;
- RT_TRACE(COMP_EPROM, "OFDM 2.4G Tx Power Level, Index %d = 0x%02x\n", i, priv->EEPROMTxPowerLevelCCK);
+ tmpValue = (EEPROM_TxPwIndex_OFDM_24G + i) >> 1;
+ tmpValue = eprom_read(dev, tmpValue);
+ if (((EEPROM_TxPwIndex_OFDM_24G + i) % 2) == 0)
+ tmpValue = tmpValue & 0x00ff;
+ else
+ tmpValue = (tmpValue & 0xff00) >> 8;
+
+ priv->EEPROMTxPowerLevelOFDM24G[i] =
+ (u8)tmpValue;
+
+ RT_TRACE(COMP_EPROM,
+ "OFDM 2.4G Tx Power Level, Index %d = 0x%02x\n",
+ i, priv->EEPROMTxPowerLevelCCK);
}
} else if (priv->EEPROM_Def_Ver == 1) {
- if (bLoad_From_EEPOM) {
- tmpValue = eprom_read(dev,
- EEPROM_TxPwIndex_CCK_V1 >> 1);
- tmpValue = (tmpValue & 0xff00) >> 8;
- } else {
- tmpValue = 0x10;
- }
+ tmpValue = EEPROM_TxPwIndex_CCK_V1 >> 1;
+ tmpValue = eprom_read(dev, tmpValue);
+ tmpValue = (tmpValue & 0xff00) >> 8;
priv->EEPROMTxPowerLevelCCK_V1[0] = (u8)tmpValue;
- if (bLoad_From_EEPOM)
- tmpValue = eprom_read(dev, (EEPROM_TxPwIndex_CCK_V1 + 2) >> 1);
- else
- tmpValue = 0x1010;
- *((u16 *)(&priv->EEPROMTxPowerLevelCCK_V1[1])) = tmpValue;
- if (bLoad_From_EEPOM)
- tmpValue = eprom_read(dev,
- EEPROM_TxPwIndex_OFDM_24G_V1 >> 1);
- else
- tmpValue = 0x1010;
- *((u16 *)(&priv->EEPROMTxPowerLevelOFDM24G[0])) = tmpValue;
- if (bLoad_From_EEPOM)
- tmpValue = eprom_read(dev, (EEPROM_TxPwIndex_OFDM_24G_V1 + 2) >> 1);
- else
- tmpValue = 0x10;
+ tmpValue = (EEPROM_TxPwIndex_CCK_V1 + 2) >> 1;
+ *((u16 *)(&priv->EEPROMTxPowerLevelCCK_V1[1])) =
+ eprom_read(dev, tmpValue);
+
+ tmpValue = EEPROM_TxPwIndex_OFDM_24G_V1 >> 1;
+ *((u16 *)(&priv->EEPROMTxPowerLevelOFDM24G[0])) =
+ eprom_read(dev, tmpValue);
+
+ tmpValue = (EEPROM_TxPwIndex_OFDM_24G_V1 + 2) >> 1;
+ tmpValue = eprom_read(dev, tmpValue);
priv->EEPROMTxPowerLevelOFDM24G[2] = (u8)tmpValue;
} /* endif EEPROM_Def_Ver == 1 */
+ } else {
+ if (priv->EEPROM_Def_Ver == 0) { /* old eeprom definition */
+ int i;
- /* update HAL variables */
- for (i = 0; i < 14; i++) {
- if (i <= 3)
- priv->TxPowerLevelOFDM24G[i] = priv->EEPROMTxPowerLevelOFDM24G[0];
- else if (i >= 4 && i <= 9)
- priv->TxPowerLevelOFDM24G[i] = priv->EEPROMTxPowerLevelOFDM24G[1];
- else
- priv->TxPowerLevelOFDM24G[i] = priv->EEPROMTxPowerLevelOFDM24G[2];
- }
+ priv->EEPROMTxPowerLevelCCK = 0x10;
- for (i = 0; i < 14; i++) {
- if (priv->EEPROM_Def_Ver == 0) {
- if (i <= 3)
- priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelOFDM24G[0] + (priv->EEPROMTxPowerLevelCCK - priv->EEPROMTxPowerLevelOFDM24G[1]);
- else if (i >= 4 && i <= 9)
- priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelCCK;
- else
- priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelOFDM24G[2] + (priv->EEPROMTxPowerLevelCCK - priv->EEPROMTxPowerLevelOFDM24G[1]);
- } else if (priv->EEPROM_Def_Ver == 1) {
- if (i <= 3)
- priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelCCK_V1[0];
- else if (i >= 4 && i <= 9)
- priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelCCK_V1[1];
- else
- priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelCCK_V1[2];
+ RT_TRACE(COMP_EPROM, "CCK Tx Power Levl: 0x%02x\n",
+ priv->EEPROMTxPowerLevelCCK);
+
+ for (i = 0; i < 3; i++) {
+ priv->EEPROMTxPowerLevelOFDM24G[i] = (u8)0x10;
+ RT_TRACE(COMP_EPROM,
+ "OFDM 2.4G Tx Power Level, Index %d = 0x%02x\n",
+ i, priv->EEPROMTxPowerLevelCCK);
}
- }
- priv->TxPowerDiff = priv->EEPROMPwDiff;
- /* Antenna B gain offset to antenna A, bit0~3 */
- priv->AntennaTxPwDiff[0] = (priv->EEPROMTxPowerDiff & 0xf);
- /* Antenna C gain offset to antenna A, bit4~7 */
- priv->AntennaTxPwDiff[1] =
- (priv->EEPROMTxPowerDiff & 0xf0) >> 4;
- /* CrystalCap, bit12~15 */
- priv->CrystalCap = priv->EEPROMCrystalCap;
- /* ThermalMeter, bit0~3 for RFIC1, bit4~7 for RFIC2
- * 92U does not enable TX power tracking.
- */
- priv->ThermalMeter[0] = priv->EEPROMThermalMeter;
- } /* end if VersionID == VERSION_819xU_A */
+ } else if (priv->EEPROM_Def_Ver == 1) {
+ priv->EEPROMTxPowerLevelCCK_V1[0] = (u8)0x10;
+ *((u16 *)(&priv->EEPROMTxPowerLevelCCK_V1[1])) = 0x1010;
+ *((u16 *)(&priv->EEPROMTxPowerLevelOFDM24G[0])) =
+ 0x1010;
+ priv->EEPROMTxPowerLevelOFDM24G[2] = (u8)0x10;
+ } /* endif EEPROM_Def_Ver == 1 */
+ }
+
+ /* update HAL variables */
+ for (i = 0; i < 4; i++) {
+ priv->TxPowerLevelOFDM24G[i] =
+ priv->EEPROMTxPowerLevelOFDM24G[0];
+
+ if (priv->EEPROM_Def_Ver == 0)
+ priv->TxPowerLevelCCK[i] =
+ priv->EEPROMTxPowerLevelOFDM24G[0] +
+ priv->EEPROMTxPowerLevelCCK -
+ priv->EEPROMTxPowerLevelOFDM24G[1];
+ else
+ priv->TxPowerLevelCCK[i] =
+ priv->EEPROMTxPowerLevelCCK_V1[0];
+ }
+
+ for (i = 4; i < 10; i++) {
+ priv->TxPowerLevelOFDM24G[i] =
+ priv->EEPROMTxPowerLevelOFDM24G[1];
+
+ if (priv->EEPROM_Def_Ver == 0)
+ priv->TxPowerLevelCCK[i] =
+ priv->EEPROMTxPowerLevelCCK;
+ else
+ priv->TxPowerLevelCCK[i] =
+ priv->EEPROMTxPowerLevelCCK_V1[1];
+ }
+
+ for (i = 10; i < 14; i++) {
+ priv->TxPowerLevelOFDM24G[i] =
+ priv->EEPROMTxPowerLevelOFDM24G[2];
+
+ if (priv->EEPROM_Def_Ver == 0)
+ priv->TxPowerLevelCCK[i] =
+ priv->EEPROMTxPowerLevelOFDM24G[2] +
+ priv->EEPROMTxPowerLevelCCK -
+ priv->EEPROMTxPowerLevelOFDM24G[1];
+ else
+ priv->TxPowerLevelCCK[i] =
+ priv->EEPROMTxPowerLevelCCK_V1[2];
+ }
+
+ priv->TxPowerDiff = priv->EEPROMPwDiff;
+ /* Antenna B gain offset to antenna A, bit0~3 */
+ priv->AntennaTxPwDiff[0] = (priv->EEPROMTxPowerDiff & 0xf);
+ /* Antenna C gain offset to antenna A, bit4~7 */
+ priv->AntennaTxPwDiff[1] =
+ (priv->EEPROMTxPowerDiff & 0xf0) >> 4;
+ /* CrystalCap, bit12~15 */
+ priv->CrystalCap = priv->EEPROMCrystalCap;
+ /* ThermalMeter, bit0~3 for RFIC1, bit4~7 for RFIC2
+ * 92U does not enable TX power tracking.
+ */
+ priv->ThermalMeter[0] = priv->EEPROMThermalMeter;
+led:
/* for dlink led */
switch (priv->eeprom_CustomerID) {
case EEPROM_CID_RUNTOP:
--
2.5.1
next prev parent reply other threads:[~2015-09-20 17:16 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-11 7:29 [PATCHv2 00/16] staging: rtl8192u: code clean up Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 01/16] staging: rtl8192u: r8192U_core: fix comments lines over 80 characters Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 02/16] staging: rtl8192u: r8192U_core: add line breaks to keep lines under " Raphaël Beamonte
2015-09-17 4:55 ` Greg Kroah-Hartman
2015-09-11 7:29 ` [PATCHv2 03/16] staging: rtl8192u: r8192U_core: add temporary variables " Raphaël Beamonte
2015-09-17 4:57 ` Greg Kroah-Hartman
2015-09-17 5:06 ` Raphaël Beamonte
2015-09-17 5:18 ` Greg Kroah-Hartman
2015-09-17 18:26 ` Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 04/16] staging: rtl8192u: r8192U_core: reverse conditions to get " Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 05/16] staging: rtl8192u: r8192U_core: rtl8192_adapter_start: reorganize function Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 06/16] staging: rtl8192u: r8192U_core: rtl8192_read_eeprom_info: " Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 07/16] staging: rtl8192u: r8192U_core: rtl8192_process_phyinfo: rename variable pprevious_stats to prev_stats Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 08/16] staging: rtl8192u: r8192U_core: rtl8192_process_phyinfo: rename variable slide_beacon_adc_pwdb_index to sb_index Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 09/16] staging: rtl8192u: r8192U_core: rtl8192_process_phyinfo: rename variable slide_beacon_adc_pwdb_statistics to sb_stats Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 10/16] staging: rtl8192u: r8192U_core: rtl8192_process_phyinfo: remove unneeded variable Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 11/16] staging: rtl8192u: r8192U_core: rtl8192_process_phyinfo: rename variable rfpath to rfp Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 12/16] staging: rtl8192u: r8192U_core: rtl8192_process_phyinfo: reorganize function Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 13/16] staging: rtl8192u: r8192U_core: rtl8192_tx: replace some inline conditions Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 14/16] staging: rtl8192u: r8192U_core: rtl8192_ioctl: reorganize function Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 15/16] staging: rtl8192u: r8192U_core: replace else { if() {} } by else if () {} Raphaël Beamonte
2015-09-11 7:29 ` [PATCHv2 16/16] staging: rtl8192u: remove all code framed by symbol TO_DO_LIST Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 00/15] staging: rtl8192u: code clean up Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 01/15] staging: rtl8192u: r8192U_core: add line breaks to keep lines under 80 characters Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 02/15] staging: rtl8192u: r8192U_core: add temporary variables " Raphaël Beamonte
2015-09-21 2:16 ` Greg Kroah-Hartman
2015-09-21 16:31 ` Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 03/15] staging: rtl8192u: r8192U_core: reverse conditions to get " Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 04/15] staging: rtl8192u: r8192U_core: rtl8192_adapter_start: reorganize function Raphaël Beamonte
2015-09-20 17:14 ` Raphaël Beamonte [this message]
2015-09-20 17:14 ` [PATCHv3 06/15] staging: rtl8192u: r8192U_core: rtl8192_process_phyinfo: rename variable pprevious_stats to prev_stats Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 07/15] staging: rtl8192u: r8192U_core: rtl8192_process_phyinfo: rename variable slide_beacon_adc_pwdb_index to sb_index Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 08/15] staging: rtl8192u: r8192U_core: rtl8192_process_phyinfo: rename variable slide_beacon_adc_pwdb_statistics to sb_stats Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 09/15] staging: rtl8192u: r8192U_core: rtl8192_process_phyinfo: remove unneeded variable Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 10/15] staging: rtl8192u: r8192U_core: rtl8192_process_phyinfo: rename variable rfpath to rfp Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 11/15] staging: rtl8192u: r8192U_core: rtl8192_process_phyinfo: reorganize function Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 12/15] staging: rtl8192u: r8192U_core: rtl8192_tx: replace some inline conditions Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 13/15] staging: rtl8192u: r8192U_core: rtl8192_ioctl: reorganize function Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 14/15] staging: rtl8192u: r8192U_core: replace else { if() {} } by else if () {} Raphaël Beamonte
2015-09-20 17:14 ` [PATCHv3 15/15] staging: rtl8192u: remove all code framed by symbol TO_DO_LIST Raphaël Beamonte
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5500d31a407aea3c53f153e4c70fed8f5ca87f0b.1442769012.git.raphael.beamonte@gmail.com \
--to=raphael.beamonte@gmail.com \
--cc=cristina.opriceana@gmail.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®