be2net: changes to properly provide phy details
Subsystems (2)
PATCH 1/1 be2net: changes to properly provide phy details
be2net driver is currently not showing correct phy details in certain cases. This patch fixes it.
Signed-off-by Ajit Khaparde <[email protected]>
--- drivers/net/benet/be.h | 1 + drivers/net/benet/be_cmds.c | 35 +++++++++++++++++++++++++ drivers/net/benet/be_cmds.h | 27 +++++++++++++++++++ drivers/net/benet/be_ethtool.c | 55 +++++++++++++++++++++++++++++---------- 4 files changed, 104 insertions(+), 14 deletions(-)
drivers/net/benet/be.h +1 -0
@@ -282,6 +282,7 @@ struct be_adapter {int link_speed;u8 port_type;u8 transceiver; +u8 autoneg;u8 generation;/* BladeEngine ASIC generation */ u32 flash_status;struct completion flash_compl;
drivers/net/benet/be_cmds.c +35 -0
@@ -1695,3 +1695,38 @@ int be_cmd_get_seeprom_data(struct be_adapter *adapter,spin_unlock_bh (&adapter->mcc_lock);return status; } + +int be_cmd_get_phy_info (struct be_adapter *adapter,struct be_dma_mem *cmd) +{ +struct be_mcc_wrb *wrb; +struct be_cmd_req_get_phy_info *req; +struct be_sge *sge; +int status; + +spin_lock_bh (&adapter->mcc_lock); + + wrb =wrb_from_mccq (adapter); +if (!wrb) { + status = -EBUSY ; + goto err; + } + + req = cmd->va; + sge =nonembedded_sgl (wrb); + +be_wrb_hdr_prepare (wrb,sizeof (*req), false,1 , +OPCODE_COMMON_GET_PHY_DETAILS ); + +be_cmd_hdr_prepare (&req->hdr,CMD_SUBSYSTEM_COMMON , +OPCODE_COMMON_GET_PHY_DETAILS , +sizeof (*req)); + + sge->pa_hi =cpu_to_le32 (upper_32_bits (cmd->dma)); + sge->pa_lo =cpu_to_le32 (cmd->dma &0xFFFFFFFF ); + sge->len =cpu_to_le32 (cmd->size); + + status =be_mcc_notify_wait (adapter); +err: +spin_unlock_bh (&adapter->mcc_lock); +return status; +}
drivers/net/benet/be_cmds.h +27 -0
@@ -144,6 +144,7 @@ struct be_mcc_mailbox {#define OPCODE_COMMON_ENABLE_DISABLE_BEACON 69#define OPCODE_COMMON_GET_BEACON_STATE 70#define OPCODE_COMMON_READ_TRANSRECV_DATA 73 +#define OPCODE_COMMON_GET_PHY_DETAILS 102#define OPCODE_ETH_ACPI_CONFIG 2#define OPCODE_ETH_PROMISCUOUS 3
@@ -869,6 +870,30 @@ struct be_cmd_resp_seeprom_read {u8 seeprom_data[BE_READ_SEEPROM_LEN ]; }; +enum { +PHY_TYPE_CX4_10GB =0 , +PHY_TYPE_XFP_10GB , +PHY_TYPE_SFP_1GB , +PHY_TYPE_SFP_PLUS_10GB , +PHY_TYPE_KR_10GB , +PHY_TYPE_KX4_10GB , +PHY_TYPE_BASET_10GB , +PHY_TYPE_BASET_1GB , +PHY_TYPE_DISABLED =255 +}; + +struct be_cmd_req_get_phy_info { +struct be_cmd_req_hdr hdr; +u8 rsvd0[24 ]; +}; +struct be_cmd_resp_get_phy_info { +struct be_cmd_req_hdr hdr; +u16 phy_type; +u16 interface_type; +u32 misc_params; +u32 future_use[4 ]; +}; +extern int be_pci_fnum_get (struct be_adapter *adapter);extern int be_cmd_POST (struct be_adapter *adapter); extern int be_cmd_mac_addr_query(struct be_adapter *adapter, u8 *mac_addr,
@@ -947,4 +972,6 @@ extern int be_cmd_get_seeprom_data(struct be_adapter *adapter, struct be_dma_mem *nonemb_cmd);extern int be_cmd_set_loopback (struct be_adapter *adapter,u8 port_num,u8 loopback_type,u8 enable); +extern int be_cmd_get_phy_info (struct be_adapter *adapter, +struct be_dma_mem *cmd);
drivers/net/benet/be_ethtool.c +41 -14
97 lines not on this page · raw message
Signature · 1 line
1.7.0.4
From: Ajit Khaparde <[email protected]>
Date: Thu, 1 Jul 2010 19:21:00 +0530
Quoted 4 lines
be2net driver is currently not showing correct phy details in certain cases. This patch fixes it.
Signed-off-by Ajit Khaparde <[email protected]>
Applied to net-next-2.6