All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v2 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-10-29
@ 2021-10-29 16:46 Tony Nguyen
  2021-10-29 16:46 ` [PATCH net-next v2 1/3] intel: Simplify bool conversion Tony Nguyen
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Tony Nguyen @ 2021-10-29 16:46 UTC (permalink / raw)
  To: davem, kuba; +Cc: Tony Nguyen, netdev

This series contains updates to i40e, ice, igb, and ixgbevf drivers.

Yang Li simplifies return statements of bool values for i40e and ice.

Jan Kundrát corrects problems with I2C bit-banging for igb.

Colin Ian King removes unneeded variable initialization for ixgbevf.
---
v2: Dropped patch 1; awaiting changes from author

The following are changes since commit 7444d706be31753f65052c7f6325fc8470cc1789:
  ifb: fix building without CONFIG_NET_CLS_ACT
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 40GbE

Colin Ian King (1):
  net: ixgbevf: Remove redundant initialization of variable ret_val

Jan Kundrát (1):
  igb: unbreak I2C bit-banging on i350

Yang Li (1):
  intel: Simplify bool conversion

 drivers/net/ethernet/intel/i40e/i40e_xsk.c |  2 +-
 drivers/net/ethernet/intel/ice/ice_xsk.c   |  2 +-
 drivers/net/ethernet/intel/igb/igb_main.c  | 23 ++++++++++++++--------
 drivers/net/ethernet/intel/ixgbevf/vf.c    |  2 +-
 4 files changed, 18 insertions(+), 11 deletions(-)

-- 
2.31.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH net-next v2 1/3] intel: Simplify bool conversion
  2021-10-29 16:46 [PATCH net-next v2 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-10-29 Tony Nguyen
@ 2021-10-29 16:46 ` Tony Nguyen
  2021-10-29 16:46 ` [PATCH net-next v2 2/3] igb: unbreak I2C bit-banging on i350 Tony Nguyen
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Tony Nguyen @ 2021-10-29 16:46 UTC (permalink / raw)
  To: davem, kuba
  Cc: Yang Li, netdev, anthony.l.nguyen, Abaci Robot, Tony Brelinski

From: Yang Li <yang.lee@linux.alibaba.com>

Fix the following coccicheck warning:
./drivers/net/ethernet/intel/i40e/i40e_xsk.c:229:35-40: WARNING:
conversion to bool not needed here
./drivers/net/ethernet/intel/ice/ice_xsk.c:399:35-40: WARNING:
conversion to bool not needed here

Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Signed-off-by: Yang Li <yang.lee@linux.alibaba.com>
Tested-by: Tony Brelinski <tony.brelinski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/i40e/i40e_xsk.c | 2 +-
 drivers/net/ethernet/intel/ice/ice_xsk.c   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_xsk.c b/drivers/net/ethernet/intel/i40e/i40e_xsk.c
index 6f85879ba993..ea06e957393e 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_xsk.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_xsk.c
@@ -226,7 +226,7 @@ bool i40e_alloc_rx_buffers_zc(struct i40e_ring *rx_ring, u16 count)
 	rx_desc->wb.qword1.status_error_len = 0;
 	i40e_release_rx_desc(rx_ring, ntu);
 
-	return count == nb_buffs ? true : false;
+	return count == nb_buffs;
 }
 
 /**
diff --git a/drivers/net/ethernet/intel/ice/ice_xsk.c b/drivers/net/ethernet/intel/ice/ice_xsk.c
index d9dfcfc2c6f9..ff55cb415b11 100644
--- a/drivers/net/ethernet/intel/ice/ice_xsk.c
+++ b/drivers/net/ethernet/intel/ice/ice_xsk.c
@@ -399,7 +399,7 @@ bool ice_alloc_rx_bufs_zc(struct ice_rx_ring *rx_ring, u16 count)
 	rx_desc->wb.status_error0 = 0;
 	ice_release_rx_desc(rx_ring, ntu);
 
-	return count == nb_buffs ? true : false;
+	return count == nb_buffs;
 }
 
 /**
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH net-next v2 2/3] igb: unbreak I2C bit-banging on i350
  2021-10-29 16:46 [PATCH net-next v2 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-10-29 Tony Nguyen
  2021-10-29 16:46 ` [PATCH net-next v2 1/3] intel: Simplify bool conversion Tony Nguyen
@ 2021-10-29 16:46 ` Tony Nguyen
  2021-10-29 16:46 ` [PATCH net-next v2 3/3] net: ixgbevf: Remove redundant initialization of variable ret_val Tony Nguyen
  2021-10-30  4:30 ` [PATCH net-next v2 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-10-29 patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Tony Nguyen @ 2021-10-29 16:46 UTC (permalink / raw)
  To: davem, kuba
  Cc: Jan Kundrát, netdev, anthony.l.nguyen, Jesse Brandeburg,
	Tony Brelinski

From: Jan Kundrát <jan.kundrat@cesnet.cz>

The driver tried to use Linux' native software I2C bus master
(i2c-algo-bits) for exporting the I2C interface that talks to the SFP
cage(s) towards userspace. As-is, however, the physical SCL/SDA pins
were not moving at all, staying at logical 1 all the time.

The main culprit was the I2CPARAMS register where igb was not setting
the I2CBB_EN bit. That meant that all the careful signal bit-banging was
actually not being propagated to the chip pads (I verified this with a
scope).

The bit-banging was not correct either, because I2C is supposed to be an
open-collector bus, and the code was driving both lines via a totem
pole. The code was also trying to do operations which did not make any
sense with the i2c-algo-bits, namely manipulating both SDA and SCL from
igb_set_i2c_data (which is only supposed to set SDA). I'm not sure if
that was meant as an optimization, or was just flat out wrong, but given
that the i2c-algo-bits is set up to work with a totally dumb GPIO-ish
implementation underneath, there's no need for this code to be smart.

The open-drain vs. totem-pole is fixed by the usual trick where the
logical zero is implemented via regular output mode and outputting a
logical 0, and the logical high is implemented via the IO pad configured
as an input (thus floating), and letting the mandatory pull-up resistors
do the rest. Anything else is actually wrong on I2C where all devices
are supposed to have open-drain connection to the bus.

The missing I2CBB_EN is set (along with a safe initial value of the
GPIOs) just before registering this software I2C bus.

The chip datasheet mentions HW-implemented I2C transactions (SFP EEPROM
reads and writes) as well, but I'm not touching these for simplicity.

Tested on a LR-Link LRES2203PF-2SFP (which is an almost-miniPCIe form
factor card, a cable, and a module with two SFP cages). There was one
casualty, an old broken SFP we had laying around, which was used to
solder some thin wires as a DIY I2C breakout. Thanks for your service.
With this patch in place, I can `i2cdump -y 3 0x51 c` and read back data
which make sense. Yay.

Signed-off-by: Jan Kundrát <jan.kundrat@cesnet.cz>
See-also: https://www.spinics.net/lists/netdev/msg490554.html
Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Tony Brelinski <tony.brelinski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/igb/igb_main.c | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index e67a71c3f141..836be0d3b291 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -577,16 +577,15 @@ static void igb_set_i2c_data(void *data, int state)
 	struct e1000_hw *hw = &adapter->hw;
 	s32 i2cctl = rd32(E1000_I2CPARAMS);
 
-	if (state)
-		i2cctl |= E1000_I2C_DATA_OUT;
-	else
+	if (state) {
+		i2cctl |= E1000_I2C_DATA_OUT | E1000_I2C_DATA_OE_N;
+	} else {
+		i2cctl &= ~E1000_I2C_DATA_OE_N;
 		i2cctl &= ~E1000_I2C_DATA_OUT;
+	}
 
-	i2cctl &= ~E1000_I2C_DATA_OE_N;
-	i2cctl |= E1000_I2C_CLK_OE_N;
 	wr32(E1000_I2CPARAMS, i2cctl);
 	wrfl();
-
 }
 
 /**
@@ -603,8 +602,7 @@ static void igb_set_i2c_clk(void *data, int state)
 	s32 i2cctl = rd32(E1000_I2CPARAMS);
 
 	if (state) {
-		i2cctl |= E1000_I2C_CLK_OUT;
-		i2cctl &= ~E1000_I2C_CLK_OE_N;
+		i2cctl |= E1000_I2C_CLK_OUT | E1000_I2C_CLK_OE_N;
 	} else {
 		i2cctl &= ~E1000_I2C_CLK_OUT;
 		i2cctl &= ~E1000_I2C_CLK_OE_N;
@@ -3116,12 +3114,21 @@ static void igb_init_mas(struct igb_adapter *adapter)
  **/
 static s32 igb_init_i2c(struct igb_adapter *adapter)
 {
+	struct e1000_hw *hw = &adapter->hw;
 	s32 status = 0;
+	s32 i2cctl;
 
 	/* I2C interface supported on i350 devices */
 	if (adapter->hw.mac.type != e1000_i350)
 		return 0;
 
+	i2cctl = rd32(E1000_I2CPARAMS);
+	i2cctl |= E1000_I2CBB_EN
+		| E1000_I2C_CLK_OUT | E1000_I2C_CLK_OE_N
+		| E1000_I2C_DATA_OUT | E1000_I2C_DATA_OE_N;
+	wr32(E1000_I2CPARAMS, i2cctl);
+	wrfl();
+
 	/* Initialize the i2c bus which is controlled by the registers.
 	 * This bus will use the i2c_algo_bit structure that implements
 	 * the protocol through toggling of the 4 bits in the register.
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH net-next v2 3/3] net: ixgbevf: Remove redundant initialization of variable ret_val
  2021-10-29 16:46 [PATCH net-next v2 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-10-29 Tony Nguyen
  2021-10-29 16:46 ` [PATCH net-next v2 1/3] intel: Simplify bool conversion Tony Nguyen
  2021-10-29 16:46 ` [PATCH net-next v2 2/3] igb: unbreak I2C bit-banging on i350 Tony Nguyen
@ 2021-10-29 16:46 ` Tony Nguyen
  2021-10-30  4:30 ` [PATCH net-next v2 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-10-29 patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Tony Nguyen @ 2021-10-29 16:46 UTC (permalink / raw)
  To: davem, kuba; +Cc: Colin Ian King, netdev, anthony.l.nguyen

From: Colin Ian King <colin.king@canonical.com>

The variable ret_val is being initialized with a value that is never
read, it is being updated later on. The assignment is redundant and
can be removed.

Addresses-Coverity: ("Unused value")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/ixgbevf/vf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ixgbevf/vf.c b/drivers/net/ethernet/intel/ixgbevf/vf.c
index 5fc347abab3c..d459f5c8e98f 100644
--- a/drivers/net/ethernet/intel/ixgbevf/vf.c
+++ b/drivers/net/ethernet/intel/ixgbevf/vf.c
@@ -66,9 +66,9 @@ static s32 ixgbevf_reset_hw_vf(struct ixgbe_hw *hw)
 {
 	struct ixgbe_mbx_info *mbx = &hw->mbx;
 	u32 timeout = IXGBE_VF_INIT_TIMEOUT;
-	s32 ret_val = IXGBE_ERR_INVALID_MAC_ADDR;
 	u32 msgbuf[IXGBE_VF_PERMADDR_MSG_LEN];
 	u8 *addr = (u8 *)(&msgbuf[1]);
+	s32 ret_val;
 
 	/* Call adapter stop to disable tx/rx and clear interrupts */
 	hw->mac.ops.stop_adapter(hw);
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next v2 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-10-29
  2021-10-29 16:46 [PATCH net-next v2 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-10-29 Tony Nguyen
                   ` (2 preceding siblings ...)
  2021-10-29 16:46 ` [PATCH net-next v2 3/3] net: ixgbevf: Remove redundant initialization of variable ret_val Tony Nguyen
@ 2021-10-30  4:30 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-10-30  4:30 UTC (permalink / raw)
  To: Tony Nguyen; +Cc: davem, kuba, netdev

Hello:

This series was applied to netdev/net-next.git (master)
by Tony Nguyen <anthony.l.nguyen@intel.com>:

On Fri, 29 Oct 2021 09:46:38 -0700 you wrote:
> This series contains updates to i40e, ice, igb, and ixgbevf drivers.
> 
> Yang Li simplifies return statements of bool values for i40e and ice.
> 
> Jan Kundrát corrects problems with I2C bit-banging for igb.
> 
> Colin Ian King removes unneeded variable initialization for ixgbevf.
> 
> [...]

Here is the summary with links:
  - [net-next,v2,1/3] intel: Simplify bool conversion
    https://git.kernel.org/netdev/net-next/c/3c6f3ae3bb2e
  - [net-next,v2,2/3] igb: unbreak I2C bit-banging on i350
    https://git.kernel.org/netdev/net-next/c/a97f8783a937
  - [net-next,v2,3/3] net: ixgbevf: Remove redundant initialization of variable ret_val
    https://git.kernel.org/netdev/net-next/c/1b9abade3e75

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-10-30  4:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-29 16:46 [PATCH net-next v2 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-10-29 Tony Nguyen
2021-10-29 16:46 ` [PATCH net-next v2 1/3] intel: Simplify bool conversion Tony Nguyen
2021-10-29 16:46 ` [PATCH net-next v2 2/3] igb: unbreak I2C bit-banging on i350 Tony Nguyen
2021-10-29 16:46 ` [PATCH net-next v2 3/3] net: ixgbevf: Remove redundant initialization of variable ret_val Tony Nguyen
2021-10-30  4:30 ` [PATCH net-next v2 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-10-29 patchwork-bot+netdevbpf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.