pch_gbe: few clean ups to the driver
Subsystems (2)
v3 cover pch_gbe: few clean ups to the driver
There are three clean ups to the driver.
Since v2:
- the additional arguments on subsequent lines are realigned to the open parenthesis
Since v1:
- remove hunk that is not belong the topic
- address Joe's comments
Andy Shevchenko (3):
pch_gbe: remove inline keyword for exported functions
pch_gbe: convert pr_* to netdev_*
pch_gbe: use managed functions pcim_* and devm_*
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h | 2 + .../net/ethernet/oki-semi/pch_gbe/pch_gbe_api.c | 70 +++-- .../ethernet/oki-semi/pch_gbe/pch_gbe_ethtool.c | 2 +- .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 327 +++++++++++---------- .../net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c | 63 ++-- .../net/ethernet/oki-semi/pch_gbe/pch_gbe_phy.c | 26 +- 6 files changed, 278 insertions(+), 212 deletions(-)
Signature · 1 line
1.8.3.1
PATCH v3 1/3 pch_gbe: remove inline keyword for exported functions
There is no much sense to mark functions inline that are going to be used in the other compile modules.
--- drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_api.c | 21 +++++++++++---------- .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 2 +- drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_phy.c | 3 +-- 3 files changed, 13 insertions(+), 13 deletions(-)
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_api.c +11 -10
@@ -19,6 +19,7 @@*/ #include "pch_gbe.h" #include "pch_gbe_phy.h" +#include "pch_gbe_api.h" /* bus type values */ #define pch_gbe_bus_type_unknown 0
@@ -112,7 +113,7 @@ static void pch_gbe_plat_init_function_pointers(struct pch_gbe_hw *hw)* 0: Successfully * ENOSYS: Function is not registered */ -inline s32 pch_gbe_hal_setup_init_funcs (struct pch_gbe_hw *hw) +s32 pch_gbe_hal_setup_init_funcs (struct pch_gbe_hw *hw) {if (!hw->reg) {pr_err ("ERROR: Registers not mapped\n" );
@@ -126,7 +127,7 @@ inline s32 pch_gbe_hal_setup_init_funcs(struct pch_gbe_hw *hw)* pch_gbe_hal_get_bus_info - Obtain bus information for adapter * @hw: Pointer to the HW structure */ -inline void pch_gbe_hal_get_bus_info (struct pch_gbe_hw *hw) +void pch_gbe_hal_get_bus_info (struct pch_gbe_hw *hw) {if (!hw->func->get_bus_info)pr_err ("ERROR: configuration\n" );
@@ -141,7 +142,7 @@ inline void pch_gbe_hal_get_bus_info(struct pch_gbe_hw *hw)* 0: Successfully * ENOSYS: Function is not registered */ -inline s32 pch_gbe_hal_init_hw (struct pch_gbe_hw *hw) +s32 pch_gbe_hal_init_hw (struct pch_gbe_hw *hw) {if (!hw->func->init_hw) {pr_err ("ERROR: configuration\n" );
@@ -159,7 +160,7 @@ inline s32 pch_gbe_hal_init_hw(struct pch_gbe_hw *hw)* 0: Successfully * Negative value: Failed */ -inline s32 pch_gbe_hal_read_phy_reg (struct pch_gbe_hw *hw,u32 offset, +s32 pch_gbe_hal_read_phy_reg (struct pch_gbe_hw *hw,u32 offset,u16 *data) {if (!hw->func->read_phy_reg)
@@ -176,7 +177,7 @@ inline s32 pch_gbe_hal_read_phy_reg(struct pch_gbe_hw *hw, u32 offset,* 0: Successfully * Negative value: Failed */ -inline s32 pch_gbe_hal_write_phy_reg (struct pch_gbe_hw *hw,u32 offset, +s32 pch_gbe_hal_write_phy_reg (struct pch_gbe_hw *hw,u32 offset,u16 data) {if (!hw->func->write_phy_reg)
@@ -188,7 +189,7 @@ inline s32 pch_gbe_hal_write_phy_reg(struct pch_gbe_hw *hw, u32 offset,* pch_gbe_hal_phy_hw_reset - Hard PHY reset * @hw: Pointer to the HW structure */ -inline void pch_gbe_hal_phy_hw_reset (struct pch_gbe_hw *hw) +void pch_gbe_hal_phy_hw_reset (struct pch_gbe_hw *hw) {if (!hw->func->reset_phy)pr_err ("ERROR: configuration\n" );
@@ -200,7 +201,7 @@ inline void pch_gbe_hal_phy_hw_reset(struct pch_gbe_hw *hw)* pch_gbe_hal_phy_sw_reset - Soft PHY reset * @hw: Pointer to the HW structure */ -inline void pch_gbe_hal_phy_sw_reset (struct pch_gbe_hw *hw) +void pch_gbe_hal_phy_sw_reset (struct pch_gbe_hw *hw) {if (!hw->func->sw_reset_phy)pr_err ("ERROR: configuration\n" );
@@ -215,7 +216,7 @@ inline void pch_gbe_hal_phy_sw_reset(struct pch_gbe_hw *hw)* 0: Successfully * ENOSYS: Function is not registered */ -inline s32 pch_gbe_hal_read_mac_addr (struct pch_gbe_hw *hw) +s32 pch_gbe_hal_read_mac_addr (struct pch_gbe_hw *hw) {if (!hw->func->read_mac_addr) {pr_err ("ERROR: configuration\n" );
@@ -228,7 +229,7 @@ inline s32 pch_gbe_hal_read_mac_addr(struct pch_gbe_hw *hw)* pch_gbe_hal_power_up_phy - Power up PHY * @hw: Pointer to the HW structure */ -inline void pch_gbe_hal_power_up_phy (struct pch_gbe_hw *hw) +void pch_gbe_hal_power_up_phy (struct pch_gbe_hw *hw) {if (hw->func->power_up_phy) hw->func->power_up_phy (hw);
@@ -238,7 +239,7 @@ inline void pch_gbe_hal_power_up_phy(struct pch_gbe_hw *hw)* pch_gbe_hal_power_down_phy - Power down PHY * @hw: Pointer to the HW structure */ -inline void pch_gbe_hal_power_down_phy (struct pch_gbe_hw *hw) +void pch_gbe_hal_power_down_phy (struct pch_gbe_hw *hw) {if (hw->func->power_down_phy) hw->func->power_down_phy (hw);
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +1 -1
@@ -287,7 +287,7 @@ static int hwtstamp_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)return copy_to_user (ifr->ifr_data, &cfg,sizeof (cfg)) ? -EFAULT :0 ; } -inline void pch_gbe_mac_load_mac_addr (struct pch_gbe_hw *hw) +static inline void pch_gbe_mac_load_mac_addr (struct pch_gbe_hw *hw) {iowrite32 (0x01 , &hw->reg->MAC_ADDR_LOAD); }
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_phy.c +1 -2
@@ -235,7 +235,7 @@ void pch_gbe_phy_power_down(struct pch_gbe_hw *hw)* pch_gbe_phy_set_rgmii - RGMII interface setting * @hw: Pointer to the HW structure */ -inline void pch_gbe_phy_set_rgmii (struct pch_gbe_hw *hw) +void pch_gbe_phy_set_rgmii (struct pch_gbe_hw *hw) {pch_gbe_phy_sw_reset (hw); }
@@ -270,5 +270,4 @@ void pch_gbe_phy_init_setting(struct pch_gbe_hw *hw)pch_gbe_phy_read_reg_miic (hw,PHY_PHYSP_CONTROL , &mii_reg); mii_reg |=PHYSP_CTRL_ASSERT_CRS_TX ;pch_gbe_phy_write_reg_miic (hw,PHY_PHYSP_CONTROL , mii_reg); - }
Signature · 1 line
1.8.3.1
PATCH v3 2/3 pch_gbe: convert pr_* to netdev_*
In reply to Andy ShevchenkoWe may use nice macros to prefix our messages with proper device name.
--- drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h | 2 + .../net/ethernet/oki-semi/pch_gbe/pch_gbe_api.c | 49 ++-- .../ethernet/oki-semi/pch_gbe/pch_gbe_ethtool.c | 2 +- .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 275 ++++++++++++--------- .../net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c | 63 +++-- .../net/ethernet/oki-semi/pch_gbe/pch_gbe_phy.c | 23 +- 6 files changed, 250 insertions(+), 164 deletions(-)
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h +2 -0
@@ -633,6 +633,8 @@ struct pch_gbe_adapter {struct pci_dev *ptp_pdev; }; +#define pch_gbe_hw_to_adapter (hw) container_of(hw, struct pch_gbe_adapter, hw) +extern const char pch_driver_version[];/* pch_gbe_main.c */
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_api.c +33 -16
91 lines not on this page · raw message
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_ethtool.c +1 -1
@@ -122,7 +122,7 @@ static int pch_gbe_set_settings(struct net_device *netdev, } ret =mii_ethtool_sset (&adapter->mii, ecmd);if (ret) { -pr_err ("Error: mii_ethtool_sset\n" ); +netdev_err (netdev,"Error: mii_ethtool_sset\n" );return ret; } hw->mac.link_speed = speed;
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +159 -116
709 lines not on this page · raw message
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c +40 -23
157 lines not on this page · raw message
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_phy.c +15 -8
@@ -97,6 +97,7 @@*/ s32 pch_gbe_phy_get_id (struct pch_gbe_hw *hw) { +struct pch_gbe_adapter *adapter =pch_gbe_hw_to_adapter (hw);struct pch_gbe_phy_info *phy = &hw->phy;s32 ret;u16 phy_id1;
@@ -115,8 +116,9 @@ s32 pch_gbe_phy_get_id(struct pch_gbe_hw *hw) phy->id = (u32 )phy_id1; phy->id = ((phy->id <<6 ) | ((phy_id2 &0xFC00 ) >>10 )); phy->revision = (u32) (phy_id2 &0x000F ); -pr_debug ("phy->id : 0x%08x phy->revision : 0x%08x\n" , - phy->id, phy->revision); +netdev_dbg (adapter->netdev, +"phy->id : 0x%08x phy->revision : 0x%08x\n" , + phy->id, phy->revision);return 0 ; }
@@ -134,7 +136,10 @@ s32 pch_gbe_phy_read_reg_miic(struct pch_gbe_hw *hw, u32 offset, u16 *data)struct pch_gbe_phy_info *phy = &hw->phy;if (offset >PHY_MAX_REG_ADDRESS ) { -pr_err ("PHY Address %d is out of range\n" , offset); +struct pch_gbe_adapter *adapter =pch_gbe_hw_to_adapter (hw); + +netdev_err (adapter->netdev,"PHY Address %d is out of range\n" , + offset);return -EINVAL ; } *data = pch_gbe_mac_ctrl_miim(hw, phy->addr, PCH_GBE_HAL_MIIM_READ,
@@ -156,7 +161,10 @@ s32 pch_gbe_phy_write_reg_miic(struct pch_gbe_hw *hw, u32 offset, u16 data)struct pch_gbe_phy_info *phy = &hw->phy;if (offset >PHY_MAX_REG_ADDRESS ) { -pr_err ("PHY Address %d is out of range\n" , offset); +struct pch_gbe_adapter *adapter =pch_gbe_hw_to_adapter (hw); + +netdev_err (adapter->netdev,"PHY Address %d is out of range\n" , + offset);return -EINVAL ; } pch_gbe_mac_ctrl_miim(hw, phy->addr, PCH_GBE_HAL_MIIM_WRITE,
@@ -246,15 +254,14 @@ void pch_gbe_phy_set_rgmii(struct pch_gbe_hw *hw)*/ void pch_gbe_phy_init_setting (struct pch_gbe_hw *hw) { -struct pch_gbe_adapter *adapter; +struct pch_gbe_adapter *adapter =pch_gbe_hw_to_adapter (hw);struct ethtool_cmd cmd = { .cmd =ETHTOOL_GSET };int ret;u16 mii_reg; - adapter = container_of(hw, struct pch_gbe_adapter, hw); ret =mii_ethtool_gset (&adapter->mii, &cmd);if (ret) -pr_err ("Error: mii_ethtool_gset\n" ); +netdev_err (adapter->netdev,"Error: mii_ethtool_gset\n" );ethtool_cmd_speed_set (&cmd, hw->mac.link_speed); cmd.duplex = hw->mac.link_duplex;
@@ -263,7 +270,7 @@ void pch_gbe_phy_init_setting(struct pch_gbe_hw *hw)pch_gbe_phy_write_reg_miic (hw,MII_BMCR ,BMCR_RESET ); ret =mii_ethtool_sset (&adapter->mii, &cmd);if (ret) -pr_err ("Error: mii_ethtool_sset\n" ); +netdev_err (adapter->netdev,"Error: mii_ethtool_sset\n" );pch_gbe_phy_sw_reset (hw);
Signature · 1 line
1.8.3.1
PATCH v3 3/3 pch_gbe: use managed functions pcim_* and devm_*
In reply to Andy ShevchenkoThis makes the error handling much more simpler than open-coding everything and in addition makes the probe function smaller an tidier.
--- .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 50 +++++++--------------- 1 file changed, 15 insertions(+), 35 deletions(-)
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +15 -35
@@ -636,15 +636,15 @@ static void pch_gbe_mac_set_pause_packet(struct pch_gbe_hw *hw)*/ static int pch_gbe_alloc_queues (struct pch_gbe_adapter *adapter) { - adapter->tx_ring =kzalloc (sizeof (*adapter->tx_ring),GFP_KERNEL ); + adapter->tx_ring =devm_kzalloc (&adapter->pdev->dev, +sizeof (*adapter->tx_ring),GFP_KERNEL );if (!adapter->tx_ring)return -ENOMEM ; - adapter->rx_ring =kzalloc (sizeof (*adapter->rx_ring),GFP_KERNEL ); -if (!adapter->rx_ring) { -kfree (adapter->tx_ring); + adapter->rx_ring =devm_kzalloc (&adapter->pdev->dev, +sizeof (*adapter->rx_ring),GFP_KERNEL ); +if (!adapter->rx_ring)return -ENOMEM ; - }return 0 ; }
@@ -2588,13 +2588,7 @@ static void pch_gbe_remove(struct pci_dev *pdev)pch_gbe_hal_phy_hw_reset (&adapter->hw); -kfree (adapter->tx_ring); -kfree (adapter->rx_ring); - -iounmap (adapter->hw.reg); -pci_release_regions (pdev);free_netdev (netdev); -pci_disable_device (pdev); } static int pch_gbe_probe(struct pci_dev *pdev,
@@ -2604,7 +2598,7 @@ static int pch_gbe_probe(struct pci_dev *pdev,struct pch_gbe_adapter *adapter;int ret; - ret =pci_enable_device (pdev); + ret =pcim_enable_device (pdev);if (ret)return ret;
@@ -2617,24 +2611,22 @@ static int pch_gbe_probe(struct pci_dev *pdev,if (ret) {dev_err (&pdev->dev,"ERR: No usable DMA " "configuration, aborting\n" ); - goto err_disable_device; +return ret; } } } - ret =pci_request_regions (pdev,KBUILD_MODNAME ); + ret =pcim_iomap_regions (pdev,1 <<PCH_GBE_PCI_BAR ,pci_name (pdev));if (ret) {dev_err (&pdev->dev,"ERR: Can't reserve PCI I/O and memory resources\n" ); - goto err_disable_device; +return ret; }pci_set_master (pdev); netdev =alloc_etherdev ((int )sizeof (struct pch_gbe_adapter )); -if (!netdev) { - ret = -ENOMEM ; - goto err_release_pci; - } +if (!netdev) +return -ENOMEM ;SET_NETDEV_DEV (netdev, &pdev->dev);pci_set_drvdata (pdev, netdev);
@@ -2642,18 +2634,14 @@ static int pch_gbe_probe(struct pci_dev *pdev, adapter->netdev = netdev; adapter->pdev = pdev; adapter->hw.back = adapter; - adapter->hw.reg =pci_iomap (pdev,PCH_GBE_PCI_BAR ,0 ); -if (!adapter->hw.reg) { - ret = -EIO ; -dev_err (&pdev->dev,"Can't ioremap\n" ); - goto err_free_netdev; - } + adapter->hw.reg =pcim_iomap_table (pdev)[PCH_GBE_PCI_BAR ]; adapter->ptp_pdev =pci_get_bus_and_slot (adapter->pdev->bus->number,PCI_DEVFN (12 ,4 ));if (ptp_filter_init (ptp_filter,ARRAY_SIZE (ptp_filter))) {dev_err (&pdev->dev,"Bad ptp filter\n" ); -return -EINVAL ; + ret = -EINVAL ; + goto err_free_netdev; } netdev->netdev_ops = &pch_gbe_netdev_ops;
@@ -2671,7 +2659,7 @@ static int pch_gbe_probe(struct pci_dev *pdev,/* setup the private structure */ ret =pch_gbe_sw_init (adapter);if (ret) - goto err_iounmap; + goto err_free_netdev;/* Initialize PHY */ ret =pch_gbe_init_phy (adapter);
@@ -2727,16 +2715,8 @@ static int pch_gbe_probe(struct pci_dev *pdev, err_free_adapter:pch_gbe_hal_phy_hw_reset (&adapter->hw); -kfree (adapter->tx_ring); -kfree (adapter->rx_ring); -err_iounmap: -iounmap (adapter->hw.reg); err_free_netdev:free_netdev (netdev); -err_release_pci: -pci_release_regions (pdev); -err_disable_device: -pci_disable_device (pdev);return ret; }
Signature · 1 line
1.8.3.1
David Miller
maintainerFrom: Andy Shevchenko <[email protected]>
Date: Fri, 28 Jun 2013 14:02:51 +0300
Quoted 6 lines
There are three clean ups to the driver.
Since v2:
- the additional arguments on subsequent lines are realigned to the open parenthesis
Quoted 8 lines
Since v1:
- remove hunk that is not belong the topic
- address Joe's commentsAndy Shevchenko (3):
pch_gbe: remove inline keyword for exported functions
pch_gbe: convert pr_* to netdev_*
pch_gbe: use managed functions pcim_* and devm_*
Series applied, thanks.