|
@@ -181,7 +181,7 @@ static const char et_self_tests[][ETH_GSTRING_LEN] = {
|
|
#define BE_NO_LOOPBACK 0xff
|
|
#define BE_NO_LOOPBACK 0xff
|
|
|
|
|
|
static void be_get_drvinfo(struct net_device *netdev,
|
|
static void be_get_drvinfo(struct net_device *netdev,
|
|
- struct ethtool_drvinfo *drvinfo)
|
|
|
|
|
|
+ struct ethtool_drvinfo *drvinfo)
|
|
{
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
|
|
|
|
@@ -201,8 +201,7 @@ static void be_get_drvinfo(struct net_device *netdev,
|
|
drvinfo->eedump_len = 0;
|
|
drvinfo->eedump_len = 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static u32
|
|
|
|
-lancer_cmd_get_file_len(struct be_adapter *adapter, u8 *file_name)
|
|
|
|
|
|
+static u32 lancer_cmd_get_file_len(struct be_adapter *adapter, u8 *file_name)
|
|
{
|
|
{
|
|
u32 data_read = 0, eof;
|
|
u32 data_read = 0, eof;
|
|
u8 addn_status;
|
|
u8 addn_status;
|
|
@@ -212,14 +211,14 @@ lancer_cmd_get_file_len(struct be_adapter *adapter, u8 *file_name)
|
|
memset(&data_len_cmd, 0, sizeof(data_len_cmd));
|
|
memset(&data_len_cmd, 0, sizeof(data_len_cmd));
|
|
/* data_offset and data_size should be 0 to get reg len */
|
|
/* data_offset and data_size should be 0 to get reg len */
|
|
status = lancer_cmd_read_object(adapter, &data_len_cmd, 0, 0,
|
|
status = lancer_cmd_read_object(adapter, &data_len_cmd, 0, 0,
|
|
- file_name, &data_read, &eof, &addn_status);
|
|
|
|
|
|
+ file_name, &data_read, &eof,
|
|
|
|
+ &addn_status);
|
|
|
|
|
|
return data_read;
|
|
return data_read;
|
|
}
|
|
}
|
|
|
|
|
|
-static int
|
|
|
|
-lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name,
|
|
|
|
- u32 buf_len, void *buf)
|
|
|
|
|
|
+static int lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name,
|
|
|
|
+ u32 buf_len, void *buf)
|
|
{
|
|
{
|
|
struct be_dma_mem read_cmd;
|
|
struct be_dma_mem read_cmd;
|
|
u32 read_len = 0, total_read_len = 0, chunk_size;
|
|
u32 read_len = 0, total_read_len = 0, chunk_size;
|
|
@@ -229,11 +228,11 @@ lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name,
|
|
|
|
|
|
read_cmd.size = LANCER_READ_FILE_CHUNK;
|
|
read_cmd.size = LANCER_READ_FILE_CHUNK;
|
|
read_cmd.va = pci_alloc_consistent(adapter->pdev, read_cmd.size,
|
|
read_cmd.va = pci_alloc_consistent(adapter->pdev, read_cmd.size,
|
|
- &read_cmd.dma);
|
|
|
|
|
|
+ &read_cmd.dma);
|
|
|
|
|
|
if (!read_cmd.va) {
|
|
if (!read_cmd.va) {
|
|
dev_err(&adapter->pdev->dev,
|
|
dev_err(&adapter->pdev->dev,
|
|
- "Memory allocation failure while reading dump\n");
|
|
|
|
|
|
+ "Memory allocation failure while reading dump\n");
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -242,8 +241,8 @@ lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name,
|
|
LANCER_READ_FILE_CHUNK);
|
|
LANCER_READ_FILE_CHUNK);
|
|
chunk_size = ALIGN(chunk_size, 4);
|
|
chunk_size = ALIGN(chunk_size, 4);
|
|
status = lancer_cmd_read_object(adapter, &read_cmd, chunk_size,
|
|
status = lancer_cmd_read_object(adapter, &read_cmd, chunk_size,
|
|
- total_read_len, file_name, &read_len,
|
|
|
|
- &eof, &addn_status);
|
|
|
|
|
|
+ total_read_len, file_name,
|
|
|
|
+ &read_len, &eof, &addn_status);
|
|
if (!status) {
|
|
if (!status) {
|
|
memcpy(buf + total_read_len, read_cmd.va, read_len);
|
|
memcpy(buf + total_read_len, read_cmd.va, read_len);
|
|
total_read_len += read_len;
|
|
total_read_len += read_len;
|
|
@@ -254,13 +253,12 @@ lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
pci_free_consistent(adapter->pdev, read_cmd.size, read_cmd.va,
|
|
pci_free_consistent(adapter->pdev, read_cmd.size, read_cmd.va,
|
|
- read_cmd.dma);
|
|
|
|
|
|
+ read_cmd.dma);
|
|
|
|
|
|
return status;
|
|
return status;
|
|
}
|
|
}
|
|
|
|
|
|
-static int
|
|
|
|
-be_get_reg_len(struct net_device *netdev)
|
|
|
|
|
|
+static int be_get_reg_len(struct net_device *netdev)
|
|
{
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
u32 log_size = 0;
|
|
u32 log_size = 0;
|
|
@@ -271,7 +269,7 @@ be_get_reg_len(struct net_device *netdev)
|
|
if (be_physfn(adapter)) {
|
|
if (be_physfn(adapter)) {
|
|
if (lancer_chip(adapter))
|
|
if (lancer_chip(adapter))
|
|
log_size = lancer_cmd_get_file_len(adapter,
|
|
log_size = lancer_cmd_get_file_len(adapter,
|
|
- LANCER_FW_DUMP_FILE);
|
|
|
|
|
|
+ LANCER_FW_DUMP_FILE);
|
|
else
|
|
else
|
|
be_cmd_get_reg_len(adapter, &log_size);
|
|
be_cmd_get_reg_len(adapter, &log_size);
|
|
}
|
|
}
|
|
@@ -287,7 +285,7 @@ be_get_regs(struct net_device *netdev, struct ethtool_regs *regs, void *buf)
|
|
memset(buf, 0, regs->len);
|
|
memset(buf, 0, regs->len);
|
|
if (lancer_chip(adapter))
|
|
if (lancer_chip(adapter))
|
|
lancer_cmd_read_file(adapter, LANCER_FW_DUMP_FILE,
|
|
lancer_cmd_read_file(adapter, LANCER_FW_DUMP_FILE,
|
|
- regs->len, buf);
|
|
|
|
|
|
+ regs->len, buf);
|
|
else
|
|
else
|
|
be_cmd_get_regs(adapter, regs->len, buf);
|
|
be_cmd_get_regs(adapter, regs->len, buf);
|
|
}
|
|
}
|
|
@@ -337,9 +335,8 @@ static int be_set_coalesce(struct net_device *netdev,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static void
|
|
|
|
-be_get_ethtool_stats(struct net_device *netdev,
|
|
|
|
- struct ethtool_stats *stats, uint64_t *data)
|
|
|
|
|
|
+static void be_get_ethtool_stats(struct net_device *netdev,
|
|
|
|
+ struct ethtool_stats *stats, uint64_t *data)
|
|
{
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_rx_obj *rxo;
|
|
struct be_rx_obj *rxo;
|
|
@@ -390,9 +387,8 @@ be_get_ethtool_stats(struct net_device *netdev,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-static void
|
|
|
|
-be_get_stat_strings(struct net_device *netdev, uint32_t stringset,
|
|
|
|
- uint8_t *data)
|
|
|
|
|
|
+static void be_get_stat_strings(struct net_device *netdev, uint32_t stringset,
|
|
|
|
+ uint8_t *data)
|
|
{
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
int i, j;
|
|
int i, j;
|
|
@@ -642,16 +638,15 @@ be_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *ecmd)
|
|
adapter->rx_fc = ecmd->rx_pause;
|
|
adapter->rx_fc = ecmd->rx_pause;
|
|
|
|
|
|
status = be_cmd_set_flow_control(adapter,
|
|
status = be_cmd_set_flow_control(adapter,
|
|
- adapter->tx_fc, adapter->rx_fc);
|
|
|
|
|
|
+ adapter->tx_fc, adapter->rx_fc);
|
|
if (status)
|
|
if (status)
|
|
dev_warn(&adapter->pdev->dev, "Pause param set failed.\n");
|
|
dev_warn(&adapter->pdev->dev, "Pause param set failed.\n");
|
|
|
|
|
|
return status;
|
|
return status;
|
|
}
|
|
}
|
|
|
|
|
|
-static int
|
|
|
|
-be_set_phys_id(struct net_device *netdev,
|
|
|
|
- enum ethtool_phys_id_state state)
|
|
|
|
|
|
+static int be_set_phys_id(struct net_device *netdev,
|
|
|
|
+ enum ethtool_phys_id_state state)
|
|
{
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
|
|
|
|
@@ -708,8 +703,7 @@ static int be_set_dump(struct net_device *netdev, struct ethtool_dump *dump)
|
|
return status;
|
|
return status;
|
|
}
|
|
}
|
|
|
|
|
|
-static void
|
|
|
|
-be_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
|
|
|
|
|
|
+static void be_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
|
|
{
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
|
|
|
|
@@ -723,8 +717,7 @@ be_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
|
|
memset(&wol->sopass, 0, sizeof(wol->sopass));
|
|
memset(&wol->sopass, 0, sizeof(wol->sopass));
|
|
}
|
|
}
|
|
|
|
|
|
-static int
|
|
|
|
-be_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
|
|
|
|
|
|
+static int be_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
|
|
{
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
|
|
|
|
@@ -744,8 +737,7 @@ be_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int
|
|
|
|
-be_test_ddr_dma(struct be_adapter *adapter)
|
|
|
|
|
|
+static int be_test_ddr_dma(struct be_adapter *adapter)
|
|
{
|
|
{
|
|
int ret, i;
|
|
int ret, i;
|
|
struct be_dma_mem ddrdma_cmd;
|
|
struct be_dma_mem ddrdma_cmd;
|
|
@@ -761,7 +753,7 @@ be_test_ddr_dma(struct be_adapter *adapter)
|
|
|
|
|
|
for (i = 0; i < 2; i++) {
|
|
for (i = 0; i < 2; i++) {
|
|
ret = be_cmd_ddr_dma_test(adapter, pattern[i],
|
|
ret = be_cmd_ddr_dma_test(adapter, pattern[i],
|
|
- 4096, &ddrdma_cmd);
|
|
|
|
|
|
+ 4096, &ddrdma_cmd);
|
|
if (ret != 0)
|
|
if (ret != 0)
|
|
goto err;
|
|
goto err;
|
|
}
|
|
}
|
|
@@ -773,20 +765,17 @@ err:
|
|
}
|
|
}
|
|
|
|
|
|
static u64 be_loopback_test(struct be_adapter *adapter, u8 loopback_type,
|
|
static u64 be_loopback_test(struct be_adapter *adapter, u8 loopback_type,
|
|
- u64 *status)
|
|
|
|
|
|
+ u64 *status)
|
|
{
|
|
{
|
|
- be_cmd_set_loopback(adapter, adapter->hba_port_num,
|
|
|
|
- loopback_type, 1);
|
|
|
|
|
|
+ be_cmd_set_loopback(adapter, adapter->hba_port_num, loopback_type, 1);
|
|
*status = be_cmd_loopback_test(adapter, adapter->hba_port_num,
|
|
*status = be_cmd_loopback_test(adapter, adapter->hba_port_num,
|
|
- loopback_type, 1500,
|
|
|
|
- 2, 0xabc);
|
|
|
|
- be_cmd_set_loopback(adapter, adapter->hba_port_num,
|
|
|
|
- BE_NO_LOOPBACK, 1);
|
|
|
|
|
|
+ loopback_type, 1500, 2, 0xabc);
|
|
|
|
+ be_cmd_set_loopback(adapter, adapter->hba_port_num, BE_NO_LOOPBACK, 1);
|
|
return *status;
|
|
return *status;
|
|
}
|
|
}
|
|
|
|
|
|
-static void
|
|
|
|
-be_self_test(struct net_device *netdev, struct ethtool_test *test, u64 *data)
|
|
|
|
|
|
+static void be_self_test(struct net_device *netdev, struct ethtool_test *test,
|
|
|
|
+ u64 *data)
|
|
{
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
int status;
|
|
int status;
|
|
@@ -801,12 +790,10 @@ be_self_test(struct net_device *netdev, struct ethtool_test *test, u64 *data)
|
|
memset(data, 0, sizeof(u64) * ETHTOOL_TESTS_NUM);
|
|
memset(data, 0, sizeof(u64) * ETHTOOL_TESTS_NUM);
|
|
|
|
|
|
if (test->flags & ETH_TEST_FL_OFFLINE) {
|
|
if (test->flags & ETH_TEST_FL_OFFLINE) {
|
|
- if (be_loopback_test(adapter, BE_MAC_LOOPBACK,
|
|
|
|
- &data[0]) != 0)
|
|
|
|
|
|
+ if (be_loopback_test(adapter, BE_MAC_LOOPBACK, &data[0]) != 0)
|
|
test->flags |= ETH_TEST_FL_FAILED;
|
|
test->flags |= ETH_TEST_FL_FAILED;
|
|
|
|
|
|
- if (be_loopback_test(adapter, BE_PHY_LOOPBACK,
|
|
|
|
- &data[1]) != 0)
|
|
|
|
|
|
+ if (be_loopback_test(adapter, BE_PHY_LOOPBACK, &data[1]) != 0)
|
|
test->flags |= ETH_TEST_FL_FAILED;
|
|
test->flags |= ETH_TEST_FL_FAILED;
|
|
|
|
|
|
if (test->flags & ETH_TEST_FL_EXTERNAL_LB) {
|
|
if (test->flags & ETH_TEST_FL_EXTERNAL_LB) {
|
|
@@ -832,16 +819,14 @@ be_self_test(struct net_device *netdev, struct ethtool_test *test, u64 *data)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-static int
|
|
|
|
-be_do_flash(struct net_device *netdev, struct ethtool_flash *efl)
|
|
|
|
|
|
+static int be_do_flash(struct net_device *netdev, struct ethtool_flash *efl)
|
|
{
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
|
|
|
|
return be_load_fw(adapter, efl->data);
|
|
return be_load_fw(adapter, efl->data);
|
|
}
|
|
}
|
|
|
|
|
|
-static int
|
|
|
|
-be_get_eeprom_len(struct net_device *netdev)
|
|
|
|
|
|
+static int be_get_eeprom_len(struct net_device *netdev)
|
|
{
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
|
|
|
|
@@ -851,18 +836,17 @@ be_get_eeprom_len(struct net_device *netdev)
|
|
if (lancer_chip(adapter)) {
|
|
if (lancer_chip(adapter)) {
|
|
if (be_physfn(adapter))
|
|
if (be_physfn(adapter))
|
|
return lancer_cmd_get_file_len(adapter,
|
|
return lancer_cmd_get_file_len(adapter,
|
|
- LANCER_VPD_PF_FILE);
|
|
|
|
|
|
+ LANCER_VPD_PF_FILE);
|
|
else
|
|
else
|
|
return lancer_cmd_get_file_len(adapter,
|
|
return lancer_cmd_get_file_len(adapter,
|
|
- LANCER_VPD_VF_FILE);
|
|
|
|
|
|
+ LANCER_VPD_VF_FILE);
|
|
} else {
|
|
} else {
|
|
return BE_READ_SEEPROM_LEN;
|
|
return BE_READ_SEEPROM_LEN;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-static int
|
|
|
|
-be_read_eeprom(struct net_device *netdev, struct ethtool_eeprom *eeprom,
|
|
|
|
- uint8_t *data)
|
|
|
|
|
|
+static int be_read_eeprom(struct net_device *netdev,
|
|
|
|
+ struct ethtool_eeprom *eeprom, uint8_t *data)
|
|
{
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_dma_mem eeprom_cmd;
|
|
struct be_dma_mem eeprom_cmd;
|
|
@@ -875,10 +859,10 @@ be_read_eeprom(struct net_device *netdev, struct ethtool_eeprom *eeprom,
|
|
if (lancer_chip(adapter)) {
|
|
if (lancer_chip(adapter)) {
|
|
if (be_physfn(adapter))
|
|
if (be_physfn(adapter))
|
|
return lancer_cmd_read_file(adapter, LANCER_VPD_PF_FILE,
|
|
return lancer_cmd_read_file(adapter, LANCER_VPD_PF_FILE,
|
|
- eeprom->len, data);
|
|
|
|
|
|
+ eeprom->len, data);
|
|
else
|
|
else
|
|
return lancer_cmd_read_file(adapter, LANCER_VPD_VF_FILE,
|
|
return lancer_cmd_read_file(adapter, LANCER_VPD_VF_FILE,
|
|
- eeprom->len, data);
|
|
|
|
|
|
+ eeprom->len, data);
|
|
}
|
|
}
|
|
|
|
|
|
eeprom->magic = BE_VENDOR_ID | (adapter->pdev->device<<16);
|
|
eeprom->magic = BE_VENDOR_ID | (adapter->pdev->device<<16);
|
|
@@ -962,7 +946,7 @@ static u64 be_get_rss_hash_opts(struct be_adapter *adapter, u64 flow_type)
|
|
}
|
|
}
|
|
|
|
|
|
static int be_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd,
|
|
static int be_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd,
|
|
- u32 *rule_locs)
|
|
|
|
|
|
+ u32 *rule_locs)
|
|
{
|
|
{
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
|
|
|