提交 97e72829 编写于 作者: D David S. Miller

Merge branch 'be2net-next'

Sathya Perla says:

====================
be2net: patch set

This patch set contains the following modificatons:
* three patches (1/7 to 3/7) that fix indentation style issues
* convert the u8 vlan[] array to a bit-map to reduce memory usage
* use MCCQ instead of MBOX in be_cmd_rss_config() as the MCCQ is already
  created by that time
* include rx-comp-error counter in ethtool stats
* remove the unused promiscuous setting from be_cmd_vlan_config()

Pls apply to net-next tree. Thanks!
====================
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
...@@ -455,7 +455,7 @@ struct be_adapter { ...@@ -455,7 +455,7 @@ struct be_adapter {
struct be_drv_stats drv_stats; struct be_drv_stats drv_stats;
struct be_aic_obj aic_obj[MAX_EVT_QS]; struct be_aic_obj aic_obj[MAX_EVT_QS];
u16 vlans_added; u16 vlans_added;
u8 vlan_tag[VLAN_N_VID]; unsigned long vids[BITS_TO_LONGS(VLAN_N_VID)];
u8 vlan_prio_bmap; /* Available Priority BitMap */ u8 vlan_prio_bmap; /* Available Priority BitMap */
u16 recommended_prio; /* Recommended Priority */ u16 recommended_prio; /* Recommended Priority */
struct be_dma_mem rx_filter; /* Cmd DMA mem for rx-filter */ struct be_dma_mem rx_filter; /* Cmd DMA mem for rx-filter */
......
...@@ -2060,7 +2060,7 @@ int be_cmd_get_fw_ver(struct be_adapter *adapter, char *fw_ver, ...@@ -2060,7 +2060,7 @@ int be_cmd_get_fw_ver(struct be_adapter *adapter, char *fw_ver,
char *fw_on_flash); char *fw_on_flash);
int be_cmd_modify_eqd(struct be_adapter *adapter, struct be_set_eqd *, int num); int be_cmd_modify_eqd(struct be_adapter *adapter, struct be_set_eqd *, int num);
int be_cmd_vlan_config(struct be_adapter *adapter, u32 if_id, u16 *vtag_array, int be_cmd_vlan_config(struct be_adapter *adapter, u32 if_id, u16 *vtag_array,
u32 num, bool promiscuous); u32 num);
int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 status); int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 status);
int be_cmd_set_flow_control(struct be_adapter *adapter, u32 tx_fc, u32 rx_fc); int be_cmd_set_flow_control(struct be_adapter *adapter, u32 tx_fc, u32 rx_fc);
int be_cmd_get_flow_control(struct be_adapter *adapter, u32 *tx_fc, u32 *rx_fc); int be_cmd_get_flow_control(struct be_adapter *adapter, u32 *tx_fc, u32 *rx_fc);
......
...@@ -132,6 +132,7 @@ static const struct be_ethtool_stat et_rx_stats[] = { ...@@ -132,6 +132,7 @@ static const struct be_ethtool_stat et_rx_stats[] = {
{DRVSTAT_RX_INFO(rx_bytes)},/* If moving this member see above note */ {DRVSTAT_RX_INFO(rx_bytes)},/* If moving this member see above note */
{DRVSTAT_RX_INFO(rx_pkts)}, /* If moving this member see above note */ {DRVSTAT_RX_INFO(rx_pkts)}, /* If moving this member see above note */
{DRVSTAT_RX_INFO(rx_compl)}, {DRVSTAT_RX_INFO(rx_compl)},
{DRVSTAT_RX_INFO(rx_compl_err)},
{DRVSTAT_RX_INFO(rx_mcast_pkts)}, {DRVSTAT_RX_INFO(rx_mcast_pkts)},
/* Number of page allocation failures while posting receive buffers /* Number of page allocation failures while posting receive buffers
* to HW. * to HW.
...@@ -181,7 +182,7 @@ static const char et_self_tests[][ETH_GSTRING_LEN] = { ...@@ -181,7 +182,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 +202,7 @@ static void be_get_drvinfo(struct net_device *netdev, ...@@ -201,8 +202,7 @@ static void be_get_drvinfo(struct net_device *netdev,
drvinfo->eedump_len = 0; drvinfo->eedump_len = 0;
} }
static u32 static u32 lancer_cmd_get_file_len(struct be_adapter *adapter, u8 *file_name)
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 +212,14 @@ lancer_cmd_get_file_len(struct be_adapter *adapter, u8 *file_name) ...@@ -212,14 +212,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 static int lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name,
lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name, u32 buf_len, void *buf)
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 +229,11 @@ lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name, ...@@ -229,11 +229,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 +242,8 @@ lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name, ...@@ -242,8 +242,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, total_read_len, file_name,
&eof, &addn_status); &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 +254,12 @@ lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name, ...@@ -254,13 +254,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 static int be_get_reg_len(struct net_device *netdev)
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 +270,7 @@ be_get_reg_len(struct net_device *netdev) ...@@ -271,7 +270,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 +286,7 @@ be_get_regs(struct net_device *netdev, struct ethtool_regs *regs, void *buf) ...@@ -287,7 +286,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 +336,8 @@ static int be_set_coalesce(struct net_device *netdev, ...@@ -337,9 +336,8 @@ static int be_set_coalesce(struct net_device *netdev,
return 0; return 0;
} }
static void static void be_get_ethtool_stats(struct net_device *netdev,
be_get_ethtool_stats(struct net_device *netdev, struct ethtool_stats *stats, uint64_t *data)
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 +388,8 @@ be_get_ethtool_stats(struct net_device *netdev, ...@@ -390,9 +388,8 @@ be_get_ethtool_stats(struct net_device *netdev,
} }
} }
static void static void be_get_stat_strings(struct net_device *netdev, uint32_t stringset,
be_get_stat_strings(struct net_device *netdev, uint32_t stringset, uint8_t *data)
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 +639,15 @@ be_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *ecmd) ...@@ -642,16 +639,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 static int be_set_phys_id(struct net_device *netdev,
be_set_phys_id(struct net_device *netdev, enum ethtool_phys_id_state state)
enum ethtool_phys_id_state state)
{ {
struct be_adapter *adapter = netdev_priv(netdev); struct be_adapter *adapter = netdev_priv(netdev);
...@@ -708,8 +704,7 @@ static int be_set_dump(struct net_device *netdev, struct ethtool_dump *dump) ...@@ -708,8 +704,7 @@ static int be_set_dump(struct net_device *netdev, struct ethtool_dump *dump)
return status; return status;
} }
static void static void be_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
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 +718,7 @@ be_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol) ...@@ -723,8 +718,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 static int be_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
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 +738,7 @@ be_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol) ...@@ -744,8 +738,7 @@ be_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
return 0; return 0;
} }
static int static int be_test_ddr_dma(struct be_adapter *adapter)
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 +754,7 @@ be_test_ddr_dma(struct be_adapter *adapter) ...@@ -761,7 +754,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 +766,17 @@ be_test_ddr_dma(struct be_adapter *adapter) ...@@ -773,20 +766,17 @@ be_test_ddr_dma(struct be_adapter *adapter)
} }
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, be_cmd_set_loopback(adapter, adapter->hba_port_num, loopback_type, 1);
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, loopback_type, 1500, 2, 0xabc);
2, 0xabc); be_cmd_set_loopback(adapter, adapter->hba_port_num, BE_NO_LOOPBACK, 1);
be_cmd_set_loopback(adapter, adapter->hba_port_num,
BE_NO_LOOPBACK, 1);
return *status; return *status;
} }
static void static void be_self_test(struct net_device *netdev, struct ethtool_test *test,
be_self_test(struct net_device *netdev, struct ethtool_test *test, u64 *data) u64 *data)
{ {
struct be_adapter *adapter = netdev_priv(netdev); struct be_adapter *adapter = netdev_priv(netdev);
int status; int status;
...@@ -801,12 +791,10 @@ be_self_test(struct net_device *netdev, struct ethtool_test *test, u64 *data) ...@@ -801,12 +791,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, if (be_loopback_test(adapter, BE_MAC_LOOPBACK, &data[0]) != 0)
&data[0]) != 0)
test->flags |= ETH_TEST_FL_FAILED; test->flags |= ETH_TEST_FL_FAILED;
if (be_loopback_test(adapter, BE_PHY_LOOPBACK, if (be_loopback_test(adapter, BE_PHY_LOOPBACK, &data[1]) != 0)
&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 +820,14 @@ be_self_test(struct net_device *netdev, struct ethtool_test *test, u64 *data) ...@@ -832,16 +820,14 @@ be_self_test(struct net_device *netdev, struct ethtool_test *test, u64 *data)
} }
} }
static int static int be_do_flash(struct net_device *netdev, struct ethtool_flash *efl)
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 static int be_get_eeprom_len(struct net_device *netdev)
be_get_eeprom_len(struct net_device *netdev)
{ {
struct be_adapter *adapter = netdev_priv(netdev); struct be_adapter *adapter = netdev_priv(netdev);
...@@ -851,18 +837,17 @@ be_get_eeprom_len(struct net_device *netdev) ...@@ -851,18 +837,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 static int be_read_eeprom(struct net_device *netdev,
be_read_eeprom(struct net_device *netdev, struct ethtool_eeprom *eeprom, struct ethtool_eeprom *eeprom, uint8_t *data)
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 +860,10 @@ be_read_eeprom(struct net_device *netdev, struct ethtool_eeprom *eeprom, ...@@ -875,10 +860,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 +947,7 @@ static u64 be_get_rss_hash_opts(struct be_adapter *adapter, u64 flow_type) ...@@ -962,7 +947,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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册