diff options
author | Dmitry Kravkov <dmitry@broadcom.com> | 2010-10-05 23:23:26 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-10-06 17:10:35 -0400 |
commit | 523224a3b3cd407ce4e6731a087194e13a90db18 (patch) | |
tree | bb0fda289682e4259c401b8a5763ba4cc4d41659 /drivers/net/bnx2x/bnx2x_ethtool.c | |
parent | 0c5b77152e736d23a23eb2546eab323e27a37f52 (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.c | 20 |
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) |