diff --git a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.c b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.c index 9a71d15a64adf534cbc2e8c1b5fe6e933795dcf5..ac6924a365b581136fb63c5c0de6d9308c474105 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.c +++ b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.c @@ -74,6 +74,22 @@ sme_intercept_rx_path(void *dev, int fp_idx, uint16_t rx_bd_prod, } } +void +(*lnk_print_rx_data) (void *dev, int fp_idx, uint16_t rx_bd_prod, + uint16_t rx_bd_cons, uint16_t rx_comp_prod, uint16_t rx_comp_cons, + char *extra_dbg_string) = 0; +EXPORT_SYMBOL(lnk_print_rx_data); +static void +sme_print_rx_data(void *dev, int fp_idx, uint16_t rx_bd_prod, + uint16_t rx_bd_cons, uint16_t rx_comp_prod, uint16_t rx_comp_cons, + char *extra_dbg_string) +{ + if (lnk_print_rx_data) { + lnk_print_rx_data(dev, fp_idx, rx_bd_prod, rx_bd_cons, + rx_comp_prod, rx_comp_cons, extra_dbg_string); + } +} + #if 0 void (*lnk_print_xenvif_queue) (struct xenvif_queue *queue, char *extra_dbg_string) = 0; @@ -92,6 +108,7 @@ static struct sme_hook_list xen_sme_hooks[] = { SME_HOOK_INIT(parse_rx_data, sme_parse_rx_data), SME_HOOK_INIT(print_sk_buff, sme_print_sk_buff), SME_HOOK_INIT(intercept_rx_path, sme_intercept_rx_path), + SME_HOOK_INIT(print_rx_data, sme_print_rx_data), // SME_HOOK_INIT(print_xenvif_queue, sme_print_xenvif_queue), }; diff --git a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.h b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.h index cef526f72fb2c2d6578125a28c1c66742deeddf5..c290da91940afd412134b8cdf16108117daf8476 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.h +++ b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.h @@ -33,6 +33,9 @@ union sme_list_options { void (*intercept_rx_path) (void *dev, int fp_idx, uint16_t rx_bd_prod, uint16_t rx_bd_cons, uint16_t comp_prod, uint16_t comp_cons, char *extra_dbg_string); + void (*print_rx_data) (void *dev, int fp_idx, uint16_t rx_bd_prod, + uint16_t rx_bd_cons, uint16_t comp_prod, uint16_t comp_cons, + char *extra_dbg_string); // void (*print_xenvif_queue) (struct xenvif_queue *queue, char *extra_dbg_string); }; @@ -41,6 +44,7 @@ struct sme_hook_heads { struct list_head parse_rx_data; struct list_head print_sk_buff; struct list_head intercept_rx_path; + struct list_head print_rx_data; // struct list_head print_xenvif_queue; }; diff --git a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.c b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.c index 464c8b5873242c21ed65287c82a8b2a78762377a..d864f03c49ddf78de9b11d2f03c3b19a08d14dcd 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.c +++ b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.c @@ -39,6 +39,7 @@ struct sme_hook_heads xen_sme_hook_heads = { .parse_rx_data = LIST_HEAD_INIT(xen_sme_hook_heads.parse_rx_data), .print_sk_buff = LIST_HEAD_INIT(xen_sme_hook_heads.print_sk_buff), .intercept_rx_path = LIST_HEAD_INIT(xen_sme_hook_heads.intercept_rx_path), + .print_rx_data = LIST_HEAD_INIT(xen_sme_hook_heads.print_rx_data), // .print_xenvif_queue = LIST_HEAD_INIT(xen_sme_hook_heads.print_xenvif_queue), }; @@ -75,6 +76,16 @@ void xsl_intercept_rx_path(void *dev, int fp_idx, uint16_t rx_bd_prod, rx_bd_cons, comp_prod, comp_cons, extra_dbg_string); } EXPORT_SYMBOL(xsl_intercept_rx_path); + +void xsl_print_rx_data(void *dev, int fp_idx, uint16_t rx_bd_prod, + uint16_t rx_bd_cons, uint16_t rx_comp_prod, uint16_t rx_comp_cons, + char *extra_dbg_string) +{ + return call_sme_void_hook(print_rx_data, dev, fp_idx, rx_bd_prod, + rx_bd_cons, rx_comp_prod, rx_comp_cons, extra_dbg_string); +} +EXPORT_SYMBOL(xsl_print_rx_data); + #if 0 void xsl_print_xenvif_queue(struct xenvif_queue *queue, char *extra_dbg_string) { diff --git a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.h b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.h index 69966f180357771338271dfa72c40ca7f69ab372..ee47d7daf4ab3330630dddc6478240856e7abd92 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.h +++ b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.h @@ -25,6 +25,9 @@ void xsl_print_sk_buff(struct sk_buff *skb, char *extra_dbg_string); void xsl_intercept_rx_path(void *dev, int fp_idx, uint16_t rx_bd_prod, uint16_t rx_bd_cons, uint16_t comp_prod, uint16_t comp_cons, char *extra_dbg_string); +void xsl_print_rx_data(void *dev, int fp_idx, uint16_t rx_bd_prod, + uint16_t rx_bd_cons, uint16_t rx_comp_prod, uint16_t rx_comp_cons, + char *extra_dbg_string); //void xsl_print_xenvif_queue(struct xenvif_queue *queue, char *extra_dbg_string); #endif /* __XEN_SME_HOOKS_H__ */