diff options
author | Rasesh Mody <rmody@brocade.com> | 2011-08-08 20:21:35 +0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-08-11 18:30:12 +0400 |
commit | af027a34f34a8c0794a72dae8367e268eae89dbb (patch) | |
tree | 4af30be7fe275e1cb2b360c01e0d04a1ba81ad75 /drivers/net/ethernet/brocade/bna/bfa_ioc.h | |
parent | a6a5580c4d90788d67a77c689d3ab22aa5eecfc3 (diff) | |
download | linux-af027a34f34a8c0794a72dae8367e268eae89dbb.tar.xz |
bna: MSGQ Implementation
Change details:
- Currently modules communicate with the FW using 32 byte command and
response register. This limits the size of the command and response
messages exchanged with the FW to 32 bytes. We need a mechanism to
exchange the comamnds and responses exchange with FW that exceeds 32 bytes.
- MSGQ implementation provides that facility. It removes the assumption that
command/response queue size is precisely calculated to accommodate all
concurrent FW commands/responses. The queue depth is made variable now, defined
by a macro. A waiting command list is implemented to hold all the commands
when there is no place in the command queue. Callback is implemented for
each command entry to invoke the module posting the command, when there is
space in the command queue and the command was finally posted to the queue.
Module/Object information is embedded in the response for tracking purpose.
Signed-off-by: Rasesh Mody <rmody@brocade.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/brocade/bna/bfa_ioc.h')
-rw-r--r-- | drivers/net/ethernet/brocade/bna/bfa_ioc.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/ethernet/brocade/bna/bfa_ioc.h b/drivers/net/ethernet/brocade/bna/bfa_ioc.h index bda866ba6e90..33ba5f40ca37 100644 --- a/drivers/net/ethernet/brocade/bna/bfa_ioc.h +++ b/drivers/net/ethernet/brocade/bna/bfa_ioc.h @@ -253,7 +253,9 @@ struct bfa_ioc_hwif { /** * IOC mailbox interface */ -void bfa_nw_ioc_mbox_queue(struct bfa_ioc *ioc, struct bfa_mbox_cmd *cmd); +bool bfa_nw_ioc_mbox_queue(struct bfa_ioc *ioc, + struct bfa_mbox_cmd *cmd, + bfa_mbox_cmd_cbfn_t cbfn, void *cbarg); void bfa_nw_ioc_mbox_isr(struct bfa_ioc *ioc); void bfa_nw_ioc_mbox_regisr(struct bfa_ioc *ioc, enum bfi_mclass mc, bfa_ioc_mbox_mcfunc_t cbfn, void *cbarg); |