aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/benet/be_cmds.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/benet/be_cmds.c')
-rw-r--r--drivers/net/benet/be_cmds.c30
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
1575extern 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}