aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bnx2x/bnx2x_ethtool.c
diff options
context:
space:
mode:
authorDmitry Kravkov <dmitry@broadcom.com>2010-10-05 23:23:26 -0400
committerDavid S. Miller <davem@davemloft.net>2010-10-06 17:10:35 -0400
commit523224a3b3cd407ce4e6731a087194e13a90db18 (patch)
treebb0fda289682e4259c401b8a5763ba4cc4d41659 /drivers/net/bnx2x/bnx2x_ethtool.c
parent0c5b77152e736d23a23eb2546eab323e27a37f52 (diff)
bnx2x, cnic, bnx2i: use new FW/HSI
This is the new FW HSI blob and the relevant definitions without logic changes. It also included code adaptation for new HSI. New features are not enabled. New FW/HSI includes: - Support for 57712 HW - Future support for VF (not used) - Improvements in FW interrupts scheme - FW FCoE hooks (stubs for future usage) Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> Signed-off-by: Michael Chan <mchan@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bnx2x/bnx2x_ethtool.c')
-rw-r--r--drivers/net/bnx2x/bnx2x_ethtool.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/net/bnx2x/bnx2x_ethtool.c b/drivers/net/bnx2x/bnx2x_ethtool.c
index d9748e97fad3..56a0cb579c21 100644
--- a/drivers/net/bnx2x/bnx2x_ethtool.c
+++ b/drivers/net/bnx2x/bnx2x_ethtool.c
@@ -1343,7 +1343,7 @@ static int bnx2x_run_loopback(struct bnx2x *bp, int loopback_mode, u8 link_up)
1343 u16 pkt_prod, bd_prod; 1343 u16 pkt_prod, bd_prod;
1344 struct sw_tx_bd *tx_buf; 1344 struct sw_tx_bd *tx_buf;
1345 struct eth_tx_start_bd *tx_start_bd; 1345 struct eth_tx_start_bd *tx_start_bd;
1346 struct eth_tx_parse_bd *pbd = NULL; 1346 struct eth_tx_parse_bd_e1x *pbd_e1x = NULL;
1347 dma_addr_t mapping; 1347 dma_addr_t mapping;
1348 union eth_rx_cqe *cqe; 1348 union eth_rx_cqe *cqe;
1349 u8 cqe_fp_flags; 1349 u8 cqe_fp_flags;
@@ -1399,16 +1399,20 @@ static int bnx2x_run_loopback(struct bnx2x *bp, int loopback_mode, u8 link_up)
1399 tx_start_bd->addr_lo = cpu_to_le32(U64_LO(mapping)); 1399 tx_start_bd->addr_lo = cpu_to_le32(U64_LO(mapping));
1400 tx_start_bd->nbd = cpu_to_le16(2); /* start + pbd */ 1400 tx_start_bd->nbd = cpu_to_le16(2); /* start + pbd */
1401 tx_start_bd->nbytes = cpu_to_le16(skb_headlen(skb)); 1401 tx_start_bd->nbytes = cpu_to_le16(skb_headlen(skb));
1402 tx_start_bd->vlan = cpu_to_le16(pkt_prod); 1402 tx_start_bd->vlan_or_ethertype = cpu_to_le16(pkt_prod);
1403 tx_start_bd->bd_flags.as_bitfield = ETH_TX_BD_FLAGS_START_BD; 1403 tx_start_bd->bd_flags.as_bitfield = ETH_TX_BD_FLAGS_START_BD;
1404 tx_start_bd->general_data = ((UNICAST_ADDRESS << 1404 SET_FLAG(tx_start_bd->general_data,
1405 ETH_TX_START_BD_ETH_ADDR_TYPE_SHIFT) | 1); 1405 ETH_TX_START_BD_ETH_ADDR_TYPE,
1406 UNICAST_ADDRESS);
1407 SET_FLAG(tx_start_bd->general_data,
1408 ETH_TX_START_BD_HDR_NBDS,
1409 1);
1406 1410
1407 /* turn on parsing and get a BD */ 1411 /* turn on parsing and get a BD */
1408 bd_prod = TX_BD(NEXT_TX_IDX(bd_prod)); 1412 bd_prod = TX_BD(NEXT_TX_IDX(bd_prod));
1409 pbd = &fp_tx->tx_desc_ring[bd_prod].parse_bd; 1413 pbd_e1x = &fp_tx->tx_desc_ring[bd_prod].parse_bd_e1x;
1410 1414
1411 memset(pbd, 0, sizeof(struct eth_tx_parse_bd)); 1415 memset(pbd_e1x, 0, sizeof(struct eth_tx_parse_bd_e1x));
1412 1416
1413 wmb(); 1417 wmb();
1414 1418
@@ -1578,9 +1582,9 @@ static int bnx2x_test_intr(struct bnx2x *bp)
1578 1582
1579 bp->set_mac_pending++; 1583 bp->set_mac_pending++;
1580 smp_wmb(); 1584 smp_wmb();
1581 rc = bnx2x_sp_post(bp, RAMROD_CMD_ID_ETH_SET_MAC, 0, 1585 rc = bnx2x_sp_post(bp, RAMROD_CMD_ID_COMMON_SET_MAC, 0,
1582 U64_HI(bnx2x_sp_mapping(bp, mac_config)), 1586 U64_HI(bnx2x_sp_mapping(bp, mac_config)),
1583 U64_LO(bnx2x_sp_mapping(bp, mac_config)), 0); 1587 U64_LO(bnx2x_sp_mapping(bp, mac_config)), 1);
1584 if (rc == 0) { 1588 if (rc == 0) {
1585 for (i = 0; i < 10; i++) { 1589 for (i = 0; i < 10; i++) {
1586 if (!bp->set_mac_pending) 1590 if (!bp->set_mac_pending)