Message ID | 1314754068-31978-11-git-send-email-rmody@brocade.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Le mardi 30 août 2011 à 18:27 -0700, Rasesh Mody a écrit : > sk_buff unmap_array grows greater than 65536 (x2) with Tx ring of 65536. > Reducing TXQ depth and safe(max) acking of Tx events to 32768 (same as Rx). > Add defines for TX and RX queue depths. > > Signed-off-by: Gurunatha Karaje <gkaraje@brocade.com> > Signed-off-by: Rasesh Mody <rmody@brocade.com> > --- > drivers/net/ethernet/brocade/bna/bnad.h | 4 ++++ > drivers/net/ethernet/brocade/bna/bnad_ethtool.c | 8 ++++---- > 2 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/ethernet/brocade/bna/bnad.h b/drivers/net/ethernet/brocade/bna/bnad.h > index 0c9d736..6c42c14 100644 > --- a/drivers/net/ethernet/brocade/bna/bnad.h > +++ b/drivers/net/ethernet/brocade/bna/bnad.h > @@ -86,6 +86,10 @@ struct bnad_rx_ctrl { > #define BNAD_MAX_Q_DEPTH 0x10000 > #define BNAD_MIN_Q_DEPTH 0x200 > > +#define BNAD_MAX_RXQ_DEPTH (BNAD_MAX_Q_DEPTH / bnad_rxqs_per_cq) > +/* keeping MAX TX and RX Q depth equal */ > +#define BNAD_MAX_TXQ_DEPTH BNAD_MAX_RXQ_DEPTH > + > #define BNAD_JUMBO_MTU 9000 > > #define BNAD_NETIF_WAKE_THRESHOLD 8 > diff --git a/drivers/net/ethernet/brocade/bna/bnad_ethtool.c b/drivers/net/ethernet/brocade/bna/bnad_ethtool.c > index 96ff700..4842224 100644 > --- a/drivers/net/ethernet/brocade/bna/bnad_ethtool.c > +++ b/drivers/net/ethernet/brocade/bna/bnad_ethtool.c > @@ -418,10 +418,10 @@ bnad_get_ringparam(struct net_device *netdev, > { > struct bnad *bnad = netdev_priv(netdev); > > - ringparam->rx_max_pending = BNAD_MAX_Q_DEPTH / bnad_rxqs_per_cq; > + ringparam->rx_max_pending = BNAD_MAX_RXQ_DEPTH; > ringparam->rx_mini_max_pending = 0; > ringparam->rx_jumbo_max_pending = 0; > - ringparam->tx_max_pending = BNAD_MAX_Q_DEPTH; > + ringparam->tx_max_pending = BNAD_MAX_TXQ_DEPTH; > > ringparam->rx_pending = bnad->rxq_depth; > ringparam->rx_mini_max_pending = 0; > @@ -445,13 +445,13 @@ bnad_set_ringparam(struct net_device *netdev, > } > > if (ringparam->rx_pending < BNAD_MIN_Q_DEPTH || > - ringparam->rx_pending > BNAD_MAX_Q_DEPTH / bnad_rxqs_per_cq || > + ringparam->rx_pending > BNAD_MAX_RXQ_DEPTH || > !BNA_POWER_OF_2(ringparam->rx_pending)) { > mutex_unlock(&bnad->conf_mutex); > return -EINVAL; > } > if (ringparam->tx_pending < BNAD_MIN_Q_DEPTH || > - ringparam->tx_pending > BNAD_MAX_Q_DEPTH || > + ringparam->tx_pending > BNAD_MAX_TXQ_DEPTH || > !BNA_POWER_OF_2(ringparam->tx_pending)) { > mutex_unlock(&bnad->conf_mutex); > return -EINVAL; BNAD_MAX_Q_DEPTH is now defined but not used. BTW, 32768 slots in a RX queue is insane. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Aug 30, 2011 at 9:24 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote: > Le mardi 30 août 2011 à 18:27 -0700, Rasesh Mody a écrit : >> sk_buff unmap_array grows greater than 65536 (x2) with Tx ring of 65536. >> Reducing TXQ depth and safe(max) acking of Tx events to 32768 (same as Rx). >> Add defines for TX and RX queue depths. I was happy at the 'reducing txq depth' portion of the email, then I saw the value it was reduced to. thx for commenting thusly... > BNAD_MAX_Q_DEPTH is now defined but not used. > > BTW, 32768 slots in a RX queue is insane. As that is many lunar distances worth of buffering... Are they expecting transmissions from mars?
Le mardi 30 août 2011 à 21:34 -0700, Dave Taht a écrit : > On Tue, Aug 30, 2011 at 9:24 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote: > > BNAD_MAX_Q_DEPTH is now defined but not used. > > > > BTW, 32768 slots in a RX queue is insane. > > As that is many lunar distances worth of buffering... Are they > expecting transmissions from mars? > At 10GB rate, this can be filled in ~2msec with small frames. Apparently some people business depend on not losing frames. But they should be warned of extra memory needs, and latency increases (because of a larger working set) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/ethernet/brocade/bna/bnad.h b/drivers/net/ethernet/brocade/bna/bnad.h index 0c9d736..6c42c14 100644 --- a/drivers/net/ethernet/brocade/bna/bnad.h +++ b/drivers/net/ethernet/brocade/bna/bnad.h @@ -86,6 +86,10 @@ struct bnad_rx_ctrl { #define BNAD_MAX_Q_DEPTH 0x10000 #define BNAD_MIN_Q_DEPTH 0x200 +#define BNAD_MAX_RXQ_DEPTH (BNAD_MAX_Q_DEPTH / bnad_rxqs_per_cq) +/* keeping MAX TX and RX Q depth equal */ +#define BNAD_MAX_TXQ_DEPTH BNAD_MAX_RXQ_DEPTH + #define BNAD_JUMBO_MTU 9000 #define BNAD_NETIF_WAKE_THRESHOLD 8 diff --git a/drivers/net/ethernet/brocade/bna/bnad_ethtool.c b/drivers/net/ethernet/brocade/bna/bnad_ethtool.c index 96ff700..4842224 100644 --- a/drivers/net/ethernet/brocade/bna/bnad_ethtool.c +++ b/drivers/net/ethernet/brocade/bna/bnad_ethtool.c @@ -418,10 +418,10 @@ bnad_get_ringparam(struct net_device *netdev, { struct bnad *bnad = netdev_priv(netdev); - ringparam->rx_max_pending = BNAD_MAX_Q_DEPTH / bnad_rxqs_per_cq; + ringparam->rx_max_pending = BNAD_MAX_RXQ_DEPTH; ringparam->rx_mini_max_pending = 0; ringparam->rx_jumbo_max_pending = 0; - ringparam->tx_max_pending = BNAD_MAX_Q_DEPTH; + ringparam->tx_max_pending = BNAD_MAX_TXQ_DEPTH; ringparam->rx_pending = bnad->rxq_depth; ringparam->rx_mini_max_pending = 0; @@ -445,13 +445,13 @@ bnad_set_ringparam(struct net_device *netdev, } if (ringparam->rx_pending < BNAD_MIN_Q_DEPTH || - ringparam->rx_pending > BNAD_MAX_Q_DEPTH / bnad_rxqs_per_cq || + ringparam->rx_pending > BNAD_MAX_RXQ_DEPTH || !BNA_POWER_OF_2(ringparam->rx_pending)) { mutex_unlock(&bnad->conf_mutex); return -EINVAL; } if (ringparam->tx_pending < BNAD_MIN_Q_DEPTH || - ringparam->tx_pending > BNAD_MAX_Q_DEPTH || + ringparam->tx_pending > BNAD_MAX_TXQ_DEPTH || !BNA_POWER_OF_2(ringparam->tx_pending)) { mutex_unlock(&bnad->conf_mutex); return -EINVAL;