qed*: LL2 callback operations
LL2 today is interrupt driven - when tx/rx completion arrives [or any other indication], qed needs to operate on the connection and pass the information to the protocol-driver [or internal qed consumer]. Since we have several flavors of ll2 employeed by the driver, each handler needs to do an if-else to determine the right functionality to use based on the connection type. In order to make things more scalable [given that we're going to add additional types of ll2 flavors] move the infrastrucutre into using a callback-based approach - the callbacks would be provided as part of the connection's initialization parameters. Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com> Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
58de289807
commit
0518c12f1f
@@ -122,6 +122,40 @@ struct qed_ll2_comp_rx_data {
|
||||
} u;
|
||||
};
|
||||
|
||||
typedef
|
||||
void (*qed_ll2_complete_rx_packet_cb)(void *cxt,
|
||||
struct qed_ll2_comp_rx_data *data);
|
||||
|
||||
typedef
|
||||
void (*qed_ll2_release_rx_packet_cb)(void *cxt,
|
||||
u8 connection_handle,
|
||||
void *cookie,
|
||||
dma_addr_t rx_buf_addr,
|
||||
bool b_last_packet);
|
||||
|
||||
typedef
|
||||
void (*qed_ll2_complete_tx_packet_cb)(void *cxt,
|
||||
u8 connection_handle,
|
||||
void *cookie,
|
||||
dma_addr_t first_frag_addr,
|
||||
bool b_last_fragment,
|
||||
bool b_last_packet);
|
||||
|
||||
typedef
|
||||
void (*qed_ll2_release_tx_packet_cb)(void *cxt,
|
||||
u8 connection_handle,
|
||||
void *cookie,
|
||||
dma_addr_t first_frag_addr,
|
||||
bool b_last_fragment, bool b_last_packet);
|
||||
|
||||
struct qed_ll2_cbs {
|
||||
qed_ll2_complete_rx_packet_cb rx_comp_cb;
|
||||
qed_ll2_release_rx_packet_cb rx_release_cb;
|
||||
qed_ll2_complete_tx_packet_cb tx_comp_cb;
|
||||
qed_ll2_release_tx_packet_cb tx_release_cb;
|
||||
void *cookie;
|
||||
};
|
||||
|
||||
struct qed_ll2_acquire_data_inputs {
|
||||
enum qed_ll2_conn_type conn_type;
|
||||
u16 mtu;
|
||||
@@ -140,6 +174,8 @@ struct qed_ll2_acquire_data_inputs {
|
||||
|
||||
struct qed_ll2_acquire_data {
|
||||
struct qed_ll2_acquire_data_inputs input;
|
||||
const struct qed_ll2_cbs *cbs;
|
||||
|
||||
/* Output container for LL2 connection's handle */
|
||||
u8 *p_connection_handle;
|
||||
};
|
||||
|
Reference in New Issue
Block a user