Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
This commit is contained in:
@@ -422,8 +422,8 @@ struct link_config {
|
||||
unsigned short supported; /* link capabilities */
|
||||
unsigned short advertising; /* advertised capabilities */
|
||||
unsigned short lp_advertising; /* peer advertised capabilities */
|
||||
unsigned short requested_speed; /* speed user has requested */
|
||||
unsigned short speed; /* actual link speed */
|
||||
unsigned int requested_speed; /* speed user has requested */
|
||||
unsigned int speed; /* actual link speed */
|
||||
unsigned char requested_fc; /* flow control user has requested */
|
||||
unsigned char fc; /* actual link flow control */
|
||||
unsigned char autoneg; /* autonegotiating? */
|
||||
|
@@ -3971,10 +3971,17 @@ static const struct pci_error_handlers cxgb4_eeh = {
|
||||
.resume = eeh_resume,
|
||||
};
|
||||
|
||||
/* Return true if the Link Configuration supports "High Speeds" (those greater
|
||||
* than 1Gb/s).
|
||||
*/
|
||||
static inline bool is_x_10g_port(const struct link_config *lc)
|
||||
{
|
||||
return (lc->supported & FW_PORT_CAP_SPEED_10G) != 0 ||
|
||||
(lc->supported & FW_PORT_CAP_SPEED_40G) != 0;
|
||||
unsigned int speeds, high_speeds;
|
||||
|
||||
speeds = FW_PORT_CAP_SPEED_V(FW_PORT_CAP_SPEED_G(lc->supported));
|
||||
high_speeds = speeds & ~(FW_PORT_CAP_SPEED_100M | FW_PORT_CAP_SPEED_1G);
|
||||
|
||||
return high_speeds != 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -4408,8 +4415,12 @@ static void print_port_info(const struct net_device *dev)
|
||||
bufp += sprintf(bufp, "1000/");
|
||||
if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_10G)
|
||||
bufp += sprintf(bufp, "10G/");
|
||||
if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_25G)
|
||||
bufp += sprintf(bufp, "25G/");
|
||||
if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_40G)
|
||||
bufp += sprintf(bufp, "40G/");
|
||||
if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_100G)
|
||||
bufp += sprintf(bufp, "100G/");
|
||||
if (bufp != buf)
|
||||
--bufp;
|
||||
sprintf(bufp, "BASE-%s", t4_get_port_type_description(pi->port_type));
|
||||
|
@@ -3627,7 +3627,8 @@ void t4_ulprx_read_la(struct adapter *adap, u32 *la_buf)
|
||||
}
|
||||
|
||||
#define ADVERT_MASK (FW_PORT_CAP_SPEED_100M | FW_PORT_CAP_SPEED_1G |\
|
||||
FW_PORT_CAP_SPEED_10G | FW_PORT_CAP_SPEED_40G | \
|
||||
FW_PORT_CAP_SPEED_10G | FW_PORT_CAP_SPEED_25G | \
|
||||
FW_PORT_CAP_SPEED_40G | FW_PORT_CAP_SPEED_100G | \
|
||||
FW_PORT_CAP_ANEG)
|
||||
|
||||
/**
|
||||
@@ -7196,8 +7197,12 @@ void t4_handle_get_port_info(struct port_info *pi, const __be64 *rpl)
|
||||
speed = 1000;
|
||||
else if (stat & FW_PORT_CMD_LSPEED_V(FW_PORT_CAP_SPEED_10G))
|
||||
speed = 10000;
|
||||
else if (stat & FW_PORT_CMD_LSPEED_V(FW_PORT_CAP_SPEED_25G))
|
||||
speed = 25000;
|
||||
else if (stat & FW_PORT_CMD_LSPEED_V(FW_PORT_CAP_SPEED_40G))
|
||||
speed = 40000;
|
||||
else if (stat & FW_PORT_CMD_LSPEED_V(FW_PORT_CAP_SPEED_100G))
|
||||
speed = 100000;
|
||||
|
||||
lc = &pi->link_cfg;
|
||||
|
||||
|
@@ -2267,6 +2267,12 @@ enum fw_port_cap {
|
||||
FW_PORT_CAP_802_3_ASM_DIR = 0x8000,
|
||||
};
|
||||
|
||||
#define FW_PORT_CAP_SPEED_S 0
|
||||
#define FW_PORT_CAP_SPEED_M 0x3f
|
||||
#define FW_PORT_CAP_SPEED_V(x) ((x) << FW_PORT_CAP_SPEED_S)
|
||||
#define FW_PORT_CAP_SPEED_G(x) \
|
||||
(((x) >> FW_PORT_CAP_SPEED_S) & FW_PORT_CAP_SPEED_M)
|
||||
|
||||
enum fw_port_mdi {
|
||||
FW_PORT_CAP_MDI_UNCHANGED,
|
||||
FW_PORT_CAP_MDI_AUTO,
|
||||
|
@@ -108,8 +108,8 @@ struct link_config {
|
||||
unsigned int supported; /* link capabilities */
|
||||
unsigned int advertising; /* advertised capabilities */
|
||||
unsigned short lp_advertising; /* peer advertised capabilities */
|
||||
unsigned short requested_speed; /* speed user has requested */
|
||||
unsigned short speed; /* actual link speed */
|
||||
unsigned int requested_speed; /* speed user has requested */
|
||||
unsigned int speed; /* actual link speed */
|
||||
unsigned char requested_fc; /* flow control user has requested */
|
||||
unsigned char fc; /* actual link flow control */
|
||||
unsigned char autoneg; /* autonegotiating? */
|
||||
@@ -271,10 +271,17 @@ static inline bool is_10g_port(const struct link_config *lc)
|
||||
return (lc->supported & FW_PORT_CAP_SPEED_10G) != 0;
|
||||
}
|
||||
|
||||
/* Return true if the Link Configuration supports "High Speeds" (those greater
|
||||
* than 1Gb/s).
|
||||
*/
|
||||
static inline bool is_x_10g_port(const struct link_config *lc)
|
||||
{
|
||||
return (lc->supported & FW_PORT_CAP_SPEED_10G) != 0 ||
|
||||
(lc->supported & FW_PORT_CAP_SPEED_40G) != 0;
|
||||
unsigned int speeds, high_speeds;
|
||||
|
||||
speeds = FW_PORT_CAP_SPEED_V(FW_PORT_CAP_SPEED_G(lc->supported));
|
||||
high_speeds = speeds & ~(FW_PORT_CAP_SPEED_100M | FW_PORT_CAP_SPEED_1G);
|
||||
|
||||
return high_speeds != 0;
|
||||
}
|
||||
|
||||
static inline unsigned int core_ticks_per_usec(const struct adapter *adapter)
|
||||
|
@@ -314,8 +314,9 @@ int t4vf_wr_mbox_core(struct adapter *adapter, const void *cmd, int size,
|
||||
}
|
||||
|
||||
#define ADVERT_MASK (FW_PORT_CAP_SPEED_100M | FW_PORT_CAP_SPEED_1G |\
|
||||
FW_PORT_CAP_SPEED_10G | FW_PORT_CAP_SPEED_40G | \
|
||||
FW_PORT_CAP_SPEED_100G | FW_PORT_CAP_ANEG)
|
||||
FW_PORT_CAP_SPEED_10G | FW_PORT_CAP_SPEED_25G | \
|
||||
FW_PORT_CAP_SPEED_40G | FW_PORT_CAP_SPEED_100G | \
|
||||
FW_PORT_CAP_ANEG)
|
||||
|
||||
/**
|
||||
* init_link_config - initialize a link's SW state
|
||||
@@ -1716,8 +1717,12 @@ int t4vf_handle_fw_rpl(struct adapter *adapter, const __be64 *rpl)
|
||||
speed = 1000;
|
||||
else if (stat & FW_PORT_CMD_LSPEED_V(FW_PORT_CAP_SPEED_10G))
|
||||
speed = 10000;
|
||||
else if (stat & FW_PORT_CMD_LSPEED_V(FW_PORT_CAP_SPEED_25G))
|
||||
speed = 25000;
|
||||
else if (stat & FW_PORT_CMD_LSPEED_V(FW_PORT_CAP_SPEED_40G))
|
||||
speed = 40000;
|
||||
else if (stat & FW_PORT_CMD_LSPEED_V(FW_PORT_CAP_SPEED_100G))
|
||||
speed = 100000;
|
||||
|
||||
/*
|
||||
* Scan all of our "ports" (Virtual Interfaces) looking for
|
||||
|
Reference in New Issue
Block a user