lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 08 Jun 2007 14:05:17 -0500 From: Brian King <brking@...ux.vnet.ibm.com> To: santil@...ux.vnet.ibm.com Cc: rcjenn@...ux.vnet.ibm.com, netdev@...r.kernel.org, brking@...ux.vnet.ibm.com Subject: [PATCH 2/2] ibmveth: Automatically enable larger rx buffer pools for larger mtu Currently, ibmveth maintains several rx buffer pools, which can be modified through sysfs. By default, pools are not allocated by default such that jumbo frames cannot be supported without first activating larger rx buffer pools. This results in failures when attempting to change the mtu. This patch makes ibmveth automatically allocate these larger buffer pools when the mtu is changed. Signed-off-by: Brian King <brking@...ux.vnet.ibm.com> --- linux-2.6-bjking1/drivers/net/ibmveth.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff -puN drivers/net/ibmveth.c~ibmveth_large_mtu drivers/net/ibmveth.c --- linux-2.6/drivers/net/ibmveth.c~ibmveth_large_mtu 2007-05-16 10:47:54.000000000 -0500 +++ linux-2.6-bjking1/drivers/net/ibmveth.c 2007-05-16 10:47:54.000000000 -0500 @@ -915,17 +915,36 @@ static int ibmveth_change_mtu(struct net { struct ibmveth_adapter *adapter = dev->priv; int new_mtu_oh = new_mtu + IBMVETH_BUFF_OH; - int i; + int reinit = 0; + int i, rc; if (new_mtu < IBMVETH_MAX_MTU) return -EINVAL; + for (i = 0; i < IbmVethNumBufferPools; i++) + if (new_mtu_oh < adapter->rx_buff_pool[i].buff_size) + break; + + if (i == IbmVethNumBufferPools) + return -EINVAL; + /* Look for an active buffer pool that can hold the new MTU */ for(i = 0; i<IbmVethNumBufferPools; i++) { - if (!adapter->rx_buff_pool[i].active) - continue; + if (!adapter->rx_buff_pool[i].active) { + adapter->rx_buff_pool[i].active = 1; + reinit = 1; + } + if (new_mtu_oh < adapter->rx_buff_pool[i].buff_size) { - dev->mtu = new_mtu; + if (reinit && netif_running(adapter->netdev)) { + adapter->pool_config = 1; + ibmveth_close(adapter->netdev); + adapter->pool_config = 0; + dev->mtu = new_mtu; + if ((rc = ibmveth_open(adapter->netdev))) + return rc; + } else + dev->mtu = new_mtu; return 0; } } _ - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists