From: Jeff Garzik <jgarzik@pobox.com>
To: "Kok, Auke" <auke-jan.h.kok@intel.com>
Cc: netdev@vger.kernel.org, "Brandeburg,
Jesse" <jesse.brandeburg@intel.com>,
"Kok, Auke" <auke@foo-projects.org>,
"Ronciak, John" <john.ronciak@intel.com>
Subject: Re: [PATCH 13/23] e1000: gather hardware bit tweaks.
Date: Tue, 19 Sep 2006 15:36:44 -0400 [thread overview]
Message-ID: <451046CC.3050101@pobox.com> (raw)
In-Reply-To: <20060919172901.4605.36283.stgit@gitlost.site>
Kok, Auke wrote:
> Several hardware bits were set all over the driver and have been
> consolidated into a single function.
> diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c
> index 9422864..a143b49 100644
> --- a/drivers/net/e1000/e1000_hw.c
> +++ b/drivers/net/e1000/e1000_hw.c
> @@ -61,6 +61,7 @@ static int32_t e1000_id_led_init(struct
> static int32_t e1000_init_lcd_from_nvm_config_region(struct e1000_hw *hw, uint32_t cnf_base_addr, uint32_t cnf_size);
> static int32_t e1000_init_lcd_from_nvm(struct e1000_hw *hw);
> static void e1000_init_rx_addrs(struct e1000_hw *hw);
> +static void e1000_initialize_hardware_bits(struct e1000_hw *hw);
> static boolean_t e1000_is_onboard_nvm_eeprom(struct e1000_hw *hw);
> static int32_t e1000_kumeran_lock_loss_workaround(struct e1000_hw *hw);
> static int32_t e1000_mng_enable_host_if(struct e1000_hw *hw);
> @@ -716,6 +717,110 @@ e1000_reset_hw(struct e1000_hw *hw)
> }
>
> /******************************************************************************
> + *
> + * Initialize a number of hardware-dependent bits
> + *
> + * hw: Struct containing variables accessed by shared code
> + *
> + *****************************************************************************/
> +static void
> +e1000_initialize_hardware_bits(struct e1000_hw *hw)
> +{
> + if ((hw->mac_type >= e1000_82571) && (!hw->initialize_hw_bits_disable)) {
> + /* Settings common to all silicon */
> + uint32_t reg_ctrl, reg_ctrl_ext;
> + uint32_t reg_tarc0, reg_tarc1;
> + uint32_t reg_tctl;
> + uint32_t reg_txdctl, reg_txdctl1;
> +
> + reg_tarc0 = E1000_READ_REG(hw, TARC0);
> + reg_tarc0 &= ~0x78000000; /* Clear bits 30, 29, 28, and 27 */
> +
> + reg_txdctl = E1000_READ_REG(hw, TXDCTL);
> + reg_txdctl |= E1000_TXDCTL_COUNT_DESC; /* Set bit 22 */
> + E1000_WRITE_REG(hw, TXDCTL, reg_txdctl);
> +
> + reg_txdctl1 = E1000_READ_REG(hw, TXDCTL1);
> + reg_txdctl1 |= E1000_TXDCTL_COUNT_DESC; /* Set bit 22 */
> + E1000_WRITE_REG(hw, TXDCTL1, reg_txdctl1);
> +
> + switch (hw->mac_type) {
> + case e1000_82571:
> + case e1000_82572:
> + reg_tarc1 = E1000_READ_REG(hw, TARC1);
> + reg_tctl = E1000_READ_REG(hw, TCTL);
> +
> + /* Set the phy Tx compatible mode bits */
> + reg_tarc1 &= ~0x60000000; /* Clear bits 30 and 29 */
> +
> + reg_tarc0 |= 0x07800000; /* Set TARC0 bits 23-26 */
> + reg_tarc1 |= 0x07000000; /* Set TARC1 bits 24-26 */
> +
> + if (reg_tctl & E1000_TCTL_MULR)
> + reg_tarc1 &= ~0x10000000; /* Clear bit 28 if MULR is 1b */
> + else
> + reg_tarc1 |= 0x10000000; /* Set bit 28 if MULR is 0b */
> +
> + E1000_WRITE_REG(hw, TARC1, reg_tarc1);
> + break;
> + case e1000_82573:
> + reg_ctrl_ext = E1000_READ_REG(hw, CTRL_EXT);
> + reg_ctrl = E1000_READ_REG(hw, CTRL);
> +
> + reg_ctrl_ext &= ~0x00800000; /* Clear bit 23 */
> + reg_ctrl_ext |= 0x00400000; /* Set bit 22 */
> + reg_ctrl &= ~0x20000000; /* Clear bit 29 */
> +
> + E1000_WRITE_REG(hw, CTRL_EXT, reg_ctrl_ext);
> + E1000_WRITE_REG(hw, CTRL, reg_ctrl);
> + break;
> + case e1000_80003es2lan:
> + if ((hw->media_type == e1000_media_type_fiber) ||
> + (hw->media_type == e1000_media_type_internal_serdes)) {
> + reg_tarc0 &= ~0x00100000; /* Clear bit 20 */
> + }
> +
> + reg_tctl = E1000_READ_REG(hw, TCTL);
> + reg_tarc1 = E1000_READ_REG(hw, TARC1);
> + if (reg_tctl & E1000_TCTL_MULR)
> + reg_tarc1 &= ~0x10000000; /* Clear bit 28 if MULR is 1b */
> + else
> + reg_tarc1 |= 0x10000000; /* Set bit 28 if MULR is 0b */
> +
> + E1000_WRITE_REG(hw, TARC1, reg_tarc1);
> + break;
> + case e1000_ich8lan:
> + if ((hw->revision_id < 3) ||
> + ((hw->device_id != E1000_DEV_ID_ICH8_IGP_M_AMT) &&
> + (hw->device_id != E1000_DEV_ID_ICH8_IGP_M)))
> + reg_tarc0 |= 0x30000000; /* Set TARC0 bits 29 and 28 */
> + reg_ctrl_ext = E1000_READ_REG(hw, CTRL_EXT);
> + reg_ctrl_ext |= 0x00400000; /* Set bit 22 */
> + E1000_WRITE_REG(hw, CTRL_EXT, reg_ctrl_ext);
> +
> + reg_tarc0 |= 0x0d800000; /* Set TARC0 bits 23, 24, 26, 27 */
> +
> + reg_tarc1 = E1000_READ_REG(hw, TARC1);
> + reg_tctl = E1000_READ_REG(hw, TCTL);
> +
> + if (reg_tctl & E1000_TCTL_MULR)
> + reg_tarc1 &= ~0x10000000; /* Clear bit 28 if MULR is 1b */
> + else
> + reg_tarc1 |= 0x10000000; /* Set bit 28 if MULR is 0b */
> +
> + reg_tarc1 |= 0x45000000; /* Set bit 24, 26 and 30 */
> +
> + E1000_WRITE_REG(hw, TARC1, reg_tarc1);
> + break;
> + default:
> + break;
> + }
Overall this is a positive change. However, NAK'd for two superficial
reasons:
1) the comments are completely useless. We can see from reading the
code what the comments tell us. What the comments DON'T tell us are (a)
a description of the bit being set, and (b) why that bit is being set.
2) the easy-for-humans-to-read notation for bit setting is
(1 << n)
not a hex constant.
next prev parent reply other threads:[~2006-09-19 19:36 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-19 17:26 [PATCH 00/23] e100, e1000, ixgb updates Kok, Auke
2006-09-19 17:28 ` [PATCH 01/23] e100, e1000, ixgb: update copyright header and remove LICENSE Kok, Auke
2006-09-19 17:28 ` [PATCH 02/23] e100, e1000, ixgb: Fix an impossible memory overwrite bug Kok, Auke
2006-09-19 17:28 ` [PATCH 03/23] e100: Add debugging code for cb cleaning and csum failures Kok, Auke
2006-09-19 19:10 ` Jeff Garzik
2006-09-19 22:25 ` Auke Kok
2006-09-19 21:33 ` Dave Jones
2006-09-19 21:40 ` Jeff Garzik
2006-09-19 21:46 ` Dave Jones
2006-09-19 22:21 ` Auke Kok
2006-09-19 17:28 ` [PATCH 04/23] e100: rework WoL and shutdown handling Kok, Auke
2006-09-19 19:10 ` Jeff Garzik
2006-09-19 20:25 ` Auke Kok
2006-09-19 20:30 ` Jeff Garzik
2006-09-19 21:38 ` Auke Kok
2006-09-19 17:28 ` [PATCH 05/23] e1000: rename flow control symbols Kok, Auke
2006-09-19 19:11 ` Jeff Garzik
2006-09-19 21:45 ` Auke Kok
2006-09-19 17:28 ` [PATCH 06/23] e1000: add enums for several link properties Kok, Auke
2006-09-19 17:28 ` [PATCH 07/23] e1000: remove unused code and make symbols static Kok, Auke
2006-09-19 19:28 ` Jeff Garzik
2006-09-19 17:28 ` [PATCH 08/23] e1000: add multicast stats counters Kok, Auke
2006-09-19 19:28 ` Jeff Garzik
2006-09-19 17:28 ` [PATCH 09/23] e1000: allow ethtool to pass arbitrary speed advertisment Kok, Auke
2006-09-19 17:28 ` [PATCH 10/23] e1000: Fix MANC detection for PCIE adapters Kok, Auke
2006-09-19 19:31 ` Jeff Garzik
2006-09-19 17:28 ` [PATCH 11/23] e1000: Jumbo frames fixes for 82573 Kok, Auke
2006-09-19 19:32 ` Jeff Garzik
2006-09-20 15:37 ` Auke Kok
2006-09-19 17:28 ` [PATCH 12/23] e1000: Maybe stop TX if not enough free descriptors Kok, Auke
2006-09-19 19:37 ` Jeff Garzik
2006-09-19 19:38 ` Jeff Garzik
2006-09-19 19:50 ` Stephen Hemminger
2006-09-19 20:45 ` Jeff Garzik
2006-09-19 20:59 ` Stephen Hemminger
2006-09-19 23:26 ` Auke Kok
2006-09-19 23:59 ` Stephen Hemminger
2006-09-20 15:30 ` Auke Kok
[not found] ` <4807377b0609211659mb0cb308hcbc78520148300a1@mail.gmail.com>
2006-09-24 11:30 ` Fwd: " Herbert Xu
2006-09-19 17:29 ` [PATCH 13/23] e1000: gather hardware bit tweaks Kok, Auke
2006-09-19 19:36 ` Jeff Garzik [this message]
2006-09-27 20:12 ` Auke Kok
2006-09-19 17:29 ` [PATCH 14/23] e1000: handle manageability for pci-e adapters at PHY powerdown Kok, Auke
2006-09-19 19:39 ` Jeff Garzik
2006-09-19 17:29 ` [PATCH 15/23] e1000: add PCI-E capability detection code Kok, Auke
2006-09-19 17:29 ` [PATCH 16/23] e1000: reduce RAR entries available for ICH8 Kok, Auke
2006-09-19 19:39 ` Jeff Garzik
2006-09-19 17:29 ` [PATCH 17/23] e1000: driver state fixes (race fix) Kok, Auke
2006-09-19 19:40 ` Jeff Garzik
2006-09-19 17:29 ` [PATCH 18/23] e1000: revert 'e1000: Remove 0x1000 as supported device' Kok, Auke
2006-09-19 19:40 ` Jeff Garzik
2006-09-19 20:34 ` Auke Kok
2006-09-19 20:43 ` Jeff Garzik
2006-09-19 17:29 ` [PATCH 19/23] e1000: rework polarity, NVM, eeprom code and fixes Kok, Auke
2006-09-19 17:29 ` [PATCH 20/23] e1000: don't strip vlan ID if 8021q claims it Kok, Auke
2006-09-19 19:41 ` Jeff Garzik
2006-09-19 17:29 ` [PATCH 21/23] ixgb: combine more rx descriptors to improve performance Kok, Auke
2006-09-19 17:29 ` [PATCH 22/23] ixgb: convert to netdev_priv(netdev) Kok, Auke
2006-09-19 17:29 ` [PATCH 23/23] e100, e1000, ixgb: increment version numbers Kok, Auke
2006-09-19 19:41 ` Jeff Garzik
2006-09-19 19:42 ` [PATCH 00/23] e100, e1000, ixgb updates Jeff Garzik
2006-09-19 21:06 ` Auke Kok
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=451046CC.3050101@pobox.com \
--to=jgarzik@pobox.com \
--cc=auke-jan.h.kok@intel.com \
--cc=auke@foo-projects.org \
--cc=jesse.brandeburg@intel.com \
--cc=john.ronciak@intel.com \
--cc=netdev@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 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.