From 4629e26c7c56a67722825cceb792508f4c029563 Mon Sep 17 00:00:00 2001 From: Aastha Mehta <aasthakm@mpi-sws.org> Date: Tue, 24 Apr 2018 14:29:56 +0000 Subject: [PATCH] update ACK interception API to pass number of packets ACK'ed by this ACK --- drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.c | 8 +++++--- drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.h | 3 ++- drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.c | 5 +++-- drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.h | 3 ++- net/ipv4/tcp_input.c | 2 +- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.c b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.c index dc36366f8..a58d15ad8 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.c +++ b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.c @@ -19,13 +19,15 @@ void -(*lnk_update_cwnd) (struct sk_buff *skb, struct sock *sk, char *extra_dbg_string) = 0; +(*lnk_update_cwnd) (struct sk_buff *skb, struct sock *sk, uint32_t delivered, + char *extra_dbg_string) = 0; EXPORT_SYMBOL(lnk_update_cwnd); static void -sme_update_cwnd(struct sk_buff *skb, struct sock *sk, char *extra_dbg_string) +sme_update_cwnd(struct sk_buff *skb, struct sock *sk, uint32_t delivered, + char *extra_dbg_string) { if (lnk_update_cwnd) { - lnk_update_cwnd(skb, sk, extra_dbg_string); + lnk_update_cwnd(skb, sk, delivered, extra_dbg_string); } } diff --git a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.h b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.h index 268cfe6f9..c79dd7326 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.h +++ b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme.h @@ -26,7 +26,8 @@ */ union sme_list_options { - void (*update_cwnd) (struct sk_buff *skb, struct sock *sk, char *extra_dbg_string); + void (*update_cwnd) (struct sk_buff *skb, struct sock *sk, uint32_t delivered, + char *extra_dbg_string); int (*intercept_select_queue) (struct net_device *dev, struct sk_buff *skb, char *extra_dbg_string); void (*intercept_tx_sent_queue) (struct netdev_queue *txq, unsigned int bytes); 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 d7f94b3f0..33c5b55ba 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.c +++ b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.c @@ -55,9 +55,10 @@ struct sme_hook_heads xen_sme_hook_heads = { // .print_xenvif_queue = LIST_HEAD_INIT(xen_sme_hook_heads.print_xenvif_queue), }; -void xsl_update_cwnd(struct sk_buff *skb, struct sock *sk, char *extra_dbg_string) +void xsl_update_cwnd(struct sk_buff *skb, struct sock *sk, uint32_t delivered, + char *extra_dbg_string) { - return call_sme_void_hook(update_cwnd, skb, sk, extra_dbg_string); + return call_sme_void_hook(update_cwnd, skb, sk, delivered, extra_dbg_string); } EXPORT_SYMBOL(xsl_update_cwnd); 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 7dc56d4f3..f620c3773 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.h +++ b/drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.h @@ -18,7 +18,8 @@ #include "../bnx2x.h" #include "sme_debug.h" -void xsl_update_cwnd(struct sk_buff *skb, struct sock *sk, char *extra_dbg_string); +void xsl_update_cwnd(struct sk_buff *skb, struct sock *sk, uint32_t delivered, + char *extra_dbg_string); int xsl_intercept_select_queue(struct net_device *dev, struct sk_buff *skb, char *extra_dbg_string); void xsl_intercept_tx_sent_queue(struct netdev_queue *txq, unsigned int len); diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index a256ab4ba..c171934c5 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -3720,7 +3720,7 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag) tcp_xmit_recovery(sk, rexmit); #ifdef CONFIG_XEN_SME - xsl_update_cwnd((struct sk_buff*)skb, (struct sock*)sk, NULL); + xsl_update_cwnd((struct sk_buff*)skb, (struct sock*)sk, delivered, NULL); #endif return 1; -- GitLab