cxgb3 - simplify port type struct and usage
Subsystems (2)
PATCH 4/8 cxgb3 - simplify port type struct and usage
From: Divy Le Ray <[email protected]>
Second step in overall phy layer reorganization. Clean up the port_type_info structure.
Support coextistence of clause 22 and clause 45 MDIO devices. Select the type of MDIO transaction on a per transaction basis.
Signed-off-by Divy Le Ray <[email protected]>
---
drivers/net/cxgb3/adapter.h | 2 - drivers/net/cxgb3/ael1002.c | 16 ++++- drivers/net/cxgb3/common.h | 21 ++---- drivers/net/cxgb3/cxgb3_main.c | 4 + drivers/net/cxgb3/t3_hw.c | 133 ++++++++++++++++++++-------------------- drivers/net/cxgb3/vsc8211.c | 5 +- 6 files changed, 94 insertions(+), 87 deletions(-)
drivers/net/cxgb3/adapter.h +1 -1
@@ -54,7 +54,6 @@ struct port_info {struct adapter *adapter;struct vlan_group *vlan_grp;struct sge_qset *qs; -const struct port_type_info *port_type;u8 port_id;u8 rx_csum_offload;u8 nqsets;
@@ -282,6 +281,7 @@ int t3_offload_tx(struct t3cdev *tdev, struct sk_buff *skb);void t3_os_ext_intr_handler (struct adapter *adapter);void t3_os_link_changed (struct adapter *adapter,int port_id,int link_status,int speed,int duplex,int fc); +void t3_os_phymod_changed (struct adapter *adap,int port_id);void t3_sge_start (struct adapter *adap);void t3_sge_stop (struct adapter *adap);
drivers/net/cxgb3/ael1002.c +12 -4
@@ -122,7 +122,9 @@ static struct cphy_ops ael1002_ops = {int t3_ael1002_phy_prep (struct cphy *phy,struct adapter *adapter,int phy_addr,const struct mdio_ops *mdio_ops) { -cphy_init (phy, adapter, phy_addr, &ael1002_ops, mdio_ops); +cphy_init (phy, adapter, phy_addr, &ael1002_ops, mdio_ops, + SUPPORTED_10000baseT_Full |SUPPORTED_AUI |SUPPORTED_FIBRE , +"10GBASE-R" );ael100x_txon (phy);return 0 ; }
@@ -178,7 +180,9 @@ static struct cphy_ops ael1006_ops = {int t3_ael1006_phy_prep (struct cphy *phy,struct adapter *adapter,int phy_addr,const struct mdio_ops *mdio_ops) { -cphy_init (phy, adapter, phy_addr, &ael1006_ops, mdio_ops); +cphy_init (phy, adapter, phy_addr, &ael1006_ops, mdio_ops, + SUPPORTED_10000baseT_Full |SUPPORTED_AUI |SUPPORTED_FIBRE , +"10GBASE-SR" );ael100x_txon (phy);return 0 ; }
@@ -198,7 +202,9 @@ int t3_qt2045_phy_prep(struct cphy *phy, struct adapter *adapter, {unsigned int stat; -cphy_init (phy, adapter, phy_addr, &qt2045_ops, mdio_ops); +cphy_init (phy, adapter, phy_addr, &qt2045_ops, mdio_ops, + SUPPORTED_10000baseT_Full |SUPPORTED_AUI |SUPPORTED_TP , +"10GBASE-CX4" );/* * Some cards where the PHY is supposed to be at address 0 actually
@@ -256,6 +262,8 @@ static struct cphy_ops xaui_direct_ops = {int t3_xaui_direct_phy_prep (struct cphy *phy,struct adapter *adapter,int phy_addr,const struct mdio_ops *mdio_ops) { -cphy_init (phy, adapter, phy_addr, &xaui_direct_ops, mdio_ops); +cphy_init (phy, adapter, phy_addr, &xaui_direct_ops, mdio_ops, + SUPPORTED_10000baseT_Full |SUPPORTED_AUI |SUPPORTED_TP , +"10GBASE-CX4" );return 0 ; }
drivers/net/cxgb3/common.h +8 -13
@@ -193,8 +193,6 @@ struct mdio_ops {struct adapter_info {unsigned char nports;/* # of ports */ unsigned char phy_base_addr;/* MDIO PHY base address */ -unsigned char mdien; -unsigned char mdiinv;unsigned int gpio_out;/* GPIO output settings */ unsigned int gpio_intr;/* GPIO IRQ enable mask */ unsigned long caps;/* adapter capabilities */
@@ -202,13 +200,6 @@ struct adapter_info {const char *desc;/* product description */ }; -struct port_type_info { -int (*phy_prep)(struct cphy *phy,struct adapter *adapter, -int phy_addr,const struct mdio_ops *ops); -unsigned int caps; -const char *desc; -}; -struct mc5_stats {unsigned long parity_err;unsigned long active_rgn_full;
@@ -548,7 +539,6 @@ enum {/* PHY operations */ struct cphy_ops { -void (*destroy)(struct cphy *phy);int (*reset)(struct cphy *phy,int wait);int (*intr_enable)(struct cphy *phy);
@@ -569,8 +559,10 @@ struct cphy_ops {/* A PHY instance */ struct cphy { -int addr;/* PHY address */ +int addr;/* PHY address */ +unsigned int caps;/* PHY capabilities */ struct adapter *adapter;/* associated adapter */ +const char *desc;/* PHY description */ unsigned long fifo_errors;/* FIFO over/under-flows */ const struct cphy_ops *ops;/* PHY operations */ int (*mdio_read)(struct adapter *adapter, int phy_addr, int mmd_addr,
@@ -595,10 +587,13 @@ static inline int mdio_write(struct cphy *phy, int mmd, int reg,/* Convenience initializer */ static inline void cphy_init (struct cphy *phy,struct adapter *adapter,int phy_addr,struct cphy_ops *phy_ops, -const struct mdio_ops *mdio_ops) +const struct mdio_ops *mdio_ops, +unsigned int caps,const char *desc) { - phy->adapter = adapter; phy->addr = phy_addr; + phy->caps = caps; + phy->adapter = adapter; + phy->desc = desc; phy->ops = phy_ops;if (mdio_ops) { phy->mdio_read = mdio_ops->read;
drivers/net/cxgb3/cxgb3_main.c +2 -2
@@ -2368,7 +2368,7 @@ static void check_link_status(struct adapter *adapter)struct net_device *dev = adapter->port[i];struct port_info *p =netdev_priv (dev); -if (!(p->port_type->caps &SUPPORTED_IRQ ) &&netif_running (dev)) +if (!(p->phy.caps &SUPPORTED_IRQ ) &&netif_running (dev))t3_link_changed (adapter, i); } }
@@ -2731,7 +2731,7 @@ static void __devinit print_port_info(struct adapter *adap,if (!test_bit (i, &adap->registered_device_map))continue ;printk (KERN_INFO "%s: %s %s %sNIC (rev %d) %s%s\n" , - dev->name, ai->desc, pi->port_type->desc, + dev->name, ai->desc, pi->phy.desc,is_offload (adap) ?"R" :"" , adap->params.rev, buf, (adap->flags &USING_MSIX ) ?" MSI-X" : (adap->flags &USING_MSI ) ?" MSI" :"" );
drivers/net/cxgb3/t3_hw.c +67 -66
276 lines not on this page · raw message
drivers/net/cxgb3/vsc8211.c +4 -1
@@ -224,6 +224,9 @@ static struct cphy_ops vsc8211_ops = {int t3_vsc8211_phy_prep (struct cphy *phy,struct adapter *adapter,int phy_addr,const struct mdio_ops *mdio_ops) { -cphy_init (phy, adapter, phy_addr, &vsc8211_ops, mdio_ops); +cphy_init (phy, adapter, phy_addr, &vsc8211_ops, mdio_ops, + SUPPORTED_10baseT_Full | SUPPORTED_100baseT_Full | + SUPPORTED_1000baseT_Full | SUPPORTED_Autoneg |SUPPORTED_MII | +SUPPORTED_TP |SUPPORTED_IRQ ,"10/100/1000BASE-T" );return 0 ; }
From: Divy Le Ray <[email protected]>
Date: Wed, 08 Oct 2008 17:34:13 -0700
Quoted 6 lines
Second step in overall phy layer reorganization. Clean up the
port_type_infostructure.
Support coextistence of clause 22 and clause 45 MDIO devices. Select the type of MDIO transaction on a per transaction basis.Signed-off-by Divy Le Ray <[email protected]>
Applied.