diff options
Diffstat (limited to 'drivers/net/benet/be_cmds.c')
-rw-r--r-- | drivers/net/benet/be_cmds.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/net/benet/be_cmds.c b/drivers/net/benet/be_cmds.c index 1b68bd98dc0c..b748c197408f 100644 --- a/drivers/net/benet/be_cmds.c +++ b/drivers/net/benet/be_cmds.c | |||
@@ -1571,3 +1571,33 @@ err: | |||
1571 | spin_unlock_bh(&adapter->mcc_lock); | 1571 | spin_unlock_bh(&adapter->mcc_lock); |
1572 | return status; | 1572 | return status; |
1573 | } | 1573 | } |
1574 | |||
1575 | extern int be_cmd_get_seeprom_data(struct be_adapter *adapter, | ||
1576 | struct be_dma_mem *nonemb_cmd) | ||
1577 | { | ||
1578 | struct be_mcc_wrb *wrb; | ||
1579 | struct be_cmd_req_seeprom_read *req; | ||
1580 | struct be_sge *sge; | ||
1581 | int status; | ||
1582 | |||
1583 | spin_lock_bh(&adapter->mcc_lock); | ||
1584 | |||
1585 | wrb = wrb_from_mccq(adapter); | ||
1586 | req = nonemb_cmd->va; | ||
1587 | sge = nonembedded_sgl(wrb); | ||
1588 | |||
1589 | be_wrb_hdr_prepare(wrb, sizeof(*req), false, 1, | ||
1590 | OPCODE_COMMON_SEEPROM_READ); | ||
1591 | |||
1592 | be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON, | ||
1593 | OPCODE_COMMON_SEEPROM_READ, sizeof(*req)); | ||
1594 | |||
1595 | sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd->dma)); | ||
1596 | sge->pa_lo = cpu_to_le32(nonemb_cmd->dma & 0xFFFFFFFF); | ||
1597 | sge->len = cpu_to_le32(nonemb_cmd->size); | ||
1598 | |||
1599 | status = be_mcc_notify_wait(adapter); | ||
1600 | |||
1601 | spin_unlock_bh(&adapter->mcc_lock); | ||
1602 | return status; | ||
1603 | } | ||