mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-14 17:46:31 +07:00
nfp: report auto-negotiation in ethtool
NSP ABI version 0.17 is exposing the autonegotiation settings. Report whether autoneg is on via ethtool. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
21d529d5eb
commit
42b1e6aa46
@ -203,6 +203,10 @@ nfp_net_get_link_ksettings(struct net_device *netdev,
|
|||||||
cmd->base.speed = SPEED_UNKNOWN;
|
cmd->base.speed = SPEED_UNKNOWN;
|
||||||
cmd->base.duplex = DUPLEX_UNKNOWN;
|
cmd->base.duplex = DUPLEX_UNKNOWN;
|
||||||
|
|
||||||
|
if (nn->eth_port)
|
||||||
|
cmd->base.autoneg = nn->eth_port->aneg != NFP_ANEG_DISABLED ?
|
||||||
|
AUTONEG_ENABLE : AUTONEG_DISABLE;
|
||||||
|
|
||||||
if (!netif_carrier_ok(netdev))
|
if (!netif_carrier_ok(netdev))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -63,6 +63,7 @@
|
|||||||
#define NSP_ETH_STATE_RX_ENABLED BIT_ULL(3)
|
#define NSP_ETH_STATE_RX_ENABLED BIT_ULL(3)
|
||||||
#define NSP_ETH_STATE_RATE GENMASK_ULL(11, 8)
|
#define NSP_ETH_STATE_RATE GENMASK_ULL(11, 8)
|
||||||
#define NSP_ETH_STATE_OVRD_CHNG BIT_ULL(22)
|
#define NSP_ETH_STATE_OVRD_CHNG BIT_ULL(22)
|
||||||
|
#define NSP_ETH_STATE_ANEG GENMASK_ULL(25, 23)
|
||||||
|
|
||||||
#define NSP_ETH_CTRL_ENABLED BIT_ULL(1)
|
#define NSP_ETH_CTRL_ENABLED BIT_ULL(1)
|
||||||
#define NSP_ETH_CTRL_TX_ENABLED BIT_ULL(2)
|
#define NSP_ETH_CTRL_TX_ENABLED BIT_ULL(2)
|
||||||
@ -142,6 +143,7 @@ nfp_eth_port_translate(struct nfp_nsp *nsp, const struct eth_table_entry *src,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
dst->override_changed = FIELD_GET(NSP_ETH_STATE_OVRD_CHNG, state);
|
dst->override_changed = FIELD_GET(NSP_ETH_STATE_OVRD_CHNG, state);
|
||||||
|
dst->aneg = FIELD_GET(NSP_ETH_STATE_ANEG, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -37,6 +37,14 @@
|
|||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/if_ether.h>
|
#include <linux/if_ether.h>
|
||||||
|
|
||||||
|
enum nfp_eth_aneg {
|
||||||
|
NFP_ANEG_AUTO = 0,
|
||||||
|
NFP_ANEG_SEARCH,
|
||||||
|
NFP_ANEG_25G_CONSORTIUM,
|
||||||
|
NFP_ANEG_25G_IEEE,
|
||||||
|
NFP_ANEG_DISABLED,
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct nfp_eth_table - ETH table information
|
* struct nfp_eth_table - ETH table information
|
||||||
* @count: number of table entries
|
* @count: number of table entries
|
||||||
@ -48,6 +56,7 @@
|
|||||||
* @base: first channel index (within NBI)
|
* @base: first channel index (within NBI)
|
||||||
* @lanes: number of channels
|
* @lanes: number of channels
|
||||||
* @speed: interface speed (in Mbps)
|
* @speed: interface speed (in Mbps)
|
||||||
|
* @aneg: auto negotiation mode
|
||||||
* @mac_addr: interface MAC address
|
* @mac_addr: interface MAC address
|
||||||
* @label_port: port id
|
* @label_port: port id
|
||||||
* @label_subport: id of interface within port (for split ports)
|
* @label_subport: id of interface within port (for split ports)
|
||||||
@ -68,6 +77,8 @@ struct nfp_eth_table {
|
|||||||
unsigned int lanes;
|
unsigned int lanes;
|
||||||
unsigned int speed;
|
unsigned int speed;
|
||||||
|
|
||||||
|
enum nfp_eth_aneg aneg;
|
||||||
|
|
||||||
u8 mac_addr[ETH_ALEN];
|
u8 mac_addr[ETH_ALEN];
|
||||||
|
|
||||||
u8 label_port;
|
u8 label_port;
|
||||||
|
Loading…
Reference in New Issue
Block a user