s2io: remove lro parameter
Subsystems (2)
PATCH 1/2 s2io: remove lro parameter
As suggested by David, this parameter can die, we can use ethtool to turn LRO on/off. Compile tests only.
---
drivers/net/s2io.c +6 -12
@@ -496,8 +496,6 @@ S2IO_PARM_INT(rxsync_frequency, 3);/* Interrupt type. Values can be 0(INTA), 2(MSI_X) */ S2IO_PARM_INT (intr_type,2 );/* Large receive offload feature */ -static unsigned int lro_enable =1 ; -module_param_named (lro, lro_enable, uint,0 );/* Max pkts to be aggregated by LRO at one time. If not specified, * aggregation happens until we hit max IP pkt size(64K)
@@ -6735,13 +6733,10 @@ static int s2io_ethtool_set_flags(struct net_device *dev, u32 data)return -EINVAL ;if (data Ð_FLAG_LRO ) { -if (lro_enable) { -if (!(dev->features &NETIF_F_LRO )) { - dev->features |=NETIF_F_LRO ; - changed =1 ; - } - }else - rc = -EINVAL ; +if (!(dev->features &NETIF_F_LRO )) { + dev->features |=NETIF_F_LRO ; + changed =1 ; + } }else if (dev->features &NETIF_F_LRO ) { dev->features &= ~NETIF_F_LRO ; changed =1 ;
@@ -7911,7 +7906,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)else sp->device_type =XFRAME_I_DEVICE ; - sp->lro = lro_enable; + sp->lro =1 ;/* Initialize some PCI/PCI-X fields of the NIC. */ s2io_init_pci (sp);
@@ -8047,8 +8042,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre) dev->netdev_ops = &s2io_netdev_ops;SET_ETHTOOL_OPS (dev, &netdev_ethtool_ops); dev->features |=NETIF_F_HW_VLAN_TX |NETIF_F_HW_VLAN_RX ; -if (lro_enable) - dev->features |=NETIF_F_LRO ; + dev->features |=NETIF_F_LRO ; dev->features |=NETIF_F_SG |NETIF_F_IP_CSUM ;if (sp->high_dma_flag == true) dev->features |=NETIF_F_HIGHDMA ;
PATCH 2/2 mlx4: remove num_lro parameter
As suggested by David, this parameter can die, we can use ethtool to turn LRO on/off. Compile tests only.
---
drivers/net/mlx4/en_ethtool.c +0 -2
@@ -398,8 +398,6 @@ static int mlx4_ethtool_op_set_flags(struct net_device *dev, u32 data)return -EOPNOTSUPP ;if (data Ð_FLAG_LRO ) { -if (mdev->profile.num_lro ==0 ) -return -EOPNOTSUPP ;if (!(dev->features &NETIF_F_LRO )) changed =1 ; }else if (dev->features &NETIF_F_LRO ) {
drivers/net/mlx4/en_main.c +0 -5
@@ -69,10 +69,6 @@ MLX4_EN_PARM_INT(rss_xor, 0, "Use XOR hash function for RSS");/* RSS hash type mask - default to <saddr, daddr, sport, dport> */ MLX4_EN_PARM_INT (rss_mask,0xf ,"RSS hash type bitmask" ); -/* Number of LRO sessions per Rx ring (rounded up to a power of two) */ -MLX4_EN_PARM_INT (num_lro,MLX4_EN_MAX_LRO_DESCRIPTORS , -"Number of LRO sessions per ring or disabled (0)" ); -/* Priority pausing */ MLX4_EN_PARM_INT (pfctx,0 ,"Priority based Flow Control policy on TX[7:0]." " Per priority bit mask" );
@@ -109,7 +105,6 @@ static int mlx4_en_get_profile(struct mlx4_en_dev *mdev) params->rss_xor = (rss_xor !=0 ); params->rss_mask = rss_mask &0x1f ; - params->num_lro =min_t (int, num_lro ,MLX4_EN_MAX_LRO_DESCRIPTORS );for (i =1 ; i <=MLX4_MAX_PORTS ; i++) { params->prof[i].rx_pause =1 ; params->prof[i].rx_ppp = pfcrx;
drivers/net/mlx4/en_netdev.c +1 -2
@@ -1038,8 +1038,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, dev->features |=NETIF_F_HW_VLAN_TX |NETIF_F_HW_VLAN_RX |NETIF_F_HW_VLAN_FILTER ; -if (mdev->profile.num_lro) - dev->features |=NETIF_F_LRO ; + dev->features |=NETIF_F_LRO ;if (mdev->LSO_support) { dev->features |=NETIF_F_TSO ; dev->features |=NETIF_F_TSO6 ;
drivers/net/mlx4/en_rx.c +2 -2
@@ -320,9 +320,9 @@ int mlx4_en_create_rx_ring(struct mlx4_en_priv *priv, ring->lro.frag_align_pad =NET_IP_ALIGN ; ring->lro.ip_summed =CHECKSUM_UNNECESSARY ; ring->lro.ip_summed_aggr =CHECKSUM_UNNECESSARY ; - ring->lro.max_desc = mdev->profile.num_lro; + ring->lro.max_desc =MLX4_EN_MAX_LRO_DESCRIPTORS ; ring->lro.max_aggr =MAX_SKB_FRAGS ; - ring->lro.lro_arr =kzalloc (mdev->profile.num_lro * + ring->lro.lro_arr =kzalloc (MLX4_EN_MAX_LRO_DESCRIPTORS *sizeof (struct net_lro_desc ),GFP_KERNEL );if (!ring->lro.lro_arr) {
drivers/net/mlx4/mlx4_en.h +0 -1
@@ -313,7 +313,6 @@ struct mlx4_en_port_profile {struct mlx4_en_profile {int rss_xor; -int num_lro;u8 rss_mask;u32 active_ports;u32 small_pkt_int;
Re: [Patch 2/2] mlx4: remove num_lro parameter
From: Amerigo Wang <[email protected]>
Date: Wed, 18 Aug 2010 03:51:18 -0400
Quoted 5 lines
As suggested by David, this parameter can die, we can use ethtool to turn LRO on/off. Compile tests only.
Signed-off-by WANG Cong <[email protected]>
Applied.
Quoted 3 lines · Amerigo Wang
As suggested by David, this parameter can die, we can use ethtool to turn LRO on/off. Compile tests only.
Needs some additional removal
Line 41 and 42 " * lro: Specifies whether to enable Large Receive ..." As you have removed the modparm
Line 8286 "if (sp->lro)"
As it will always be on in this instance
Also, all references to "sp->lro" can be converted to "(dev->features & NETIF_F_LRO)", removing an unnecessary variable.
Thanks,
Jon
Quoted 58 lines
Signed-off-by WANG Cong <[email protected]>---
drivers/net/s2io.c +6
-13@@ -496,8 +496,6 @@ S2IO_PARM_INT(rxsync_frequency, 3);/* Interrupt type. Values can be 0(INTA), 2(MSI_X) */ S2IO_PARM_INT (intr_type,2 );/* Large receive offload feature */ -static unsigned int lro_enable =1 ; -module_param_named (lro, lro_enable, uint,0 );/* Max pkts to be aggregated by LRO at one time. If not specified, * aggregation happens until we hit max IP pkt size(64K) @@ -6735,13 +6733,10 @@ static int s2io_ethtool_set_flags(struct net_device *dev, u32 data)return -EINVAL ;if (data Ð_FLAG_LRO ) { -if (lro_enable) { -if (!(dev->features &NETIF_F_LRO )) { - dev->features |=NETIF_F_LRO ; - changed =1 ; - } - }else - rc = -EINVAL ; +if (!(dev->features &NETIF_F_LRO )) { + dev->features |=NETIF_F_LRO ; + changed =1 ; + } }else if (dev->features &NETIF_F_LRO ) { dev->features &= ~NETIF_F_LRO ; changed =1 ;@@ -7911,7 +7906,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)else sp->device_type =XFRAME_I_DEVICE ; - sp->lro = lro_enable; + sp->lro =1 ;/* Initialize some PCI/PCI-X fields of the NIC. */ s2io_init_pci (sp);@@ -8047,8 +8042,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre) dev->netdev_ops = &s2io_netdev_ops;SET_ETHTOOL_OPS (dev, &netdev_ethtool_ops); dev->features |=NETIF_F_HW_VLAN_TX |NETIF_F_HW_VLAN_RX ; -if (lro_enable) - dev->features |=NETIF_F_LRO ; + dev->features |=NETIF_F_LRO ; dev->features |=NETIF_F_SG |NETIF_F_IP_CSUM ;if (sp->high_dma_flag == true) dev->features |=NETIF_F_HIGHDMA ; --To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 10 lines · Jon Mason
Quoted 3 lines · Amerigo Wang
As suggested by David, this parameter can die, we can use ethtool to turn LRO on/off. Compile tests only.
Needs some additional removal
Line 41 and 42 " * lro: Specifies whether to enable Large Receive ..." As you have removed the modparm
Quoted 7 lines
Line 8286 "if (
sp->lro)"
As it will always be on in this instanceAlso, all references to "
sp->lro" can be converted to "(dev->features&NETIF_F_LRO)", removing an unnecessary variable.
Thanks for pointing these out.
I will fix them later.
Signature · 2 lines
The opposite of love is not hate, it's indifference. - Elie Wiesel
Quoted 15 lines · Cong Wang
Quoted 14 lines · Jon Mason
Quoted 3 lines · Amerigo Wang
As suggested by David, this parameter can die, we can use ethtool to turn LRO on/off. Compile tests only.
Needs some additional removal
Line 41 and 42 " * lro: Specifies whether to enable Large Receive ..." As you have removed the modparm
Line 8286 "if (
sp->lro)"
As it will always be on in this instance
Quoted 7 lines
Quoted 3 lines
Also, all references to "
sp->lro" can be converted to "(dev->features&NETIF_F_LRO)", removing an unnecessary variable.Thanks for pointing these out.
I will fix them later.
Done, please review the patch below.
Thanks!
Signature · 3 lines
Remove "lro" parameter of s2io driver. Signed-off-by: WANG Cong <[email protected]>
drivers/net/s2io.c +9 -20
@@ -38,8 +38,6 @@* Tx descriptors that can be associated with each corresponding FIFO. * intr_type: This defines the type of interrupt. The values can be 0(INTA), * 2(MSI_X). Default value is '2(MSI_X)' -* lro: Specifies whether to enable Large Receive Offload (LRO) or not. -* Possible values '1' for enable '0' for disable. Default is '0' * lro_max_pkts: This parameter defines maximum number of packets can be * aggregated as a single large packet * napi: This parameter used to enable/disable NAPI (polling Rx)
@@ -496,8 +494,6 @@ S2IO_PARM_INT(rxsync_frequency, 3);/* Interrupt type. Values can be 0(INTA), 2(MSI_X) */ S2IO_PARM_INT (intr_type,2 );/* Large receive offload feature */ -static unsigned int lro_enable =1 ; -module_param_named (lro, lro_enable, uint,0 );/* Max pkts to be aggregated by LRO at one time. If not specified, * aggregation happens until we hit max IP pkt size(64K)
@@ -6735,13 +6731,10 @@ static int s2io_ethtool_set_flags(struct net_device *dev, u32 data)return -EINVAL ;if (data Ð_FLAG_LRO ) { -if (lro_enable) { -if (!(dev->features &NETIF_F_LRO )) { - dev->features |=NETIF_F_LRO ; - changed =1 ; - } - }else - rc = -EINVAL ; +if (!(dev->features &NETIF_F_LRO )) { + dev->features |=NETIF_F_LRO ; + changed =1 ; + } }else if (dev->features &NETIF_F_LRO ) { dev->features &= ~NETIF_F_LRO ; changed =1 ;
@@ -6750,7 +6743,6 @@ static int s2io_ethtool_set_flags(struct net_device *dev, u32 data)if (changed &&netif_running (dev)) {s2io_stop_all_tx_queue (sp);s2io_card_down (sp); - sp->lro = !!(dev->features &NETIF_F_LRO ); rc =s2io_card_up (sp);if (rc)s2io_reset (sp);
@@ -7307,7 +7299,7 @@ static int s2io_card_up(struct s2io_nic *sp)struct ring_info *ring = &mac_control->rings[i]; ring->mtu = dev->mtu; - ring->lro = sp->lro; + ring->lro = !!(dev->features &NETIF_F_LRO ); ret =fill_rx_buffers (sp, ring,1 );if (ret) { DBG_PRINT(ERR_DBG, "%s: Out of memory in Open\n",
@@ -7341,7 +7333,7 @@ static int s2io_card_up(struct s2io_nic *sp)/* Setting its receive mode */ s2io_set_multicast (dev); -if (sp->lro) { +if (dev->features &NETIF_F_LRO ) {/* Initialize max aggregatable pkts per session based on MTU */ sp->lro_max_aggr_per_sess = ((1 <<16 ) -1 ) / dev->mtu;/* Check if we can use (if specified) user provided value */
@@ -7911,7 +7903,6 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)else sp->device_type =XFRAME_I_DEVICE ; - sp->lro = lro_enable;/* Initialize some PCI/PCI-X fields of the NIC. */ s2io_init_pci (sp);
@@ -8047,8 +8038,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre) dev->netdev_ops = &s2io_netdev_ops;SET_ETHTOOL_OPS (dev, &netdev_ethtool_ops); dev->features |=NETIF_F_HW_VLAN_TX |NETIF_F_HW_VLAN_RX ; -if (lro_enable) - dev->features |=NETIF_F_LRO ; + dev->features |=NETIF_F_LRO ; dev->features |=NETIF_F_SG |NETIF_F_IP_CSUM ;if (sp->high_dma_flag == true) dev->features |=NETIF_F_HIGHDMA ;
@@ -8283,9 +8273,8 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre) dev->name); } -if (sp->lro) -DBG_PRINT (ERR_DBG ,"%s: Large receive offload enabled\n" , - dev->name); +DBG_PRINT (ERR_DBG ,"%s: Large receive offload enabled\n" , + dev->name);if (ufo) DBG_PRINT(ERR_DBG, "%s: UDP Fragmentation Offload(UFO) enabled\n",
drivers/net/s2io.h +0 -1
@@ -971,7 +971,6 @@ struct s2io_nic {unsigned long clubbed_frms_cnt;unsigned long sending_both; -u8 lro;u16 lro_max_aggr_per_sess;volatile unsigned long state;u64 general_int_mask;
Quoted 20 lines · Cong Wang
Quoted 19 lines · Cong Wang
Quoted 17 lines · Jon Mason
Quoted 3 lines · Amerigo Wang
As suggested by David, this parameter can die, we can use ethtool to turn LRO on/off. Compile tests only.
Needs some additional removal
Line 41 and 42 " * lro: Specifies whether to enable Large Receive ..." As you have removed the modparm
Line 8286 "if (
sp->lro)"
As it will always be on in this instanceAlso, all references to "
sp->lro" can be converted to "(dev->features&NETIF_F_LRO)", removing an unnecessary variable.
Quoted 5 lines
Quoted 3 lines
Thanks for pointing these out.
I will fix them later.Done, please review the patch below.
Looks good to me. Push it formally, and I'll ack it.
Thanks,
Jon
Quoted 117 lines
Thanks!
Signature · 3 lines
Remove "lro" parameter of s2io driver. Signed-off-by: WANG Cong <[email protected]>drivers/net/s2io.c +9
-20@@ -38,8 +38,6 @@* Tx descriptors that can be associated with each corresponding FIFO. * intr_type: This defines the type of interrupt. The values can be 0(INTA), * 2(MSI_X). Default value is '2(MSI_X)' -* lro: Specifies whether to enable Large Receive Offload (LRO) or not. -* Possible values '1' for enable '0' for disable. Default is '0' * lro_max_pkts: This parameter defines maximum number of packets can be * aggregated as a single large packet * napi: This parameter used to enable/disable NAPI (polling Rx) @@ -496,8 +494,6 @@ S2IO_PARM_INT(rxsync_frequency, 3);/* Interrupt type. Values can be 0(INTA), 2(MSI_X) */ S2IO_PARM_INT (intr_type,2 );/* Large receive offload feature */ -static unsigned int lro_enable =1 ; -module_param_named (lro, lro_enable, uint,0 );/* Max pkts to be aggregated by LRO at one time. If not specified, * aggregation happens until we hit max IP pkt size(64K) @@ -6735,13 +6731,10 @@ static int s2io_ethtool_set_flags(struct net_device *dev, u32 data)return -EINVAL ;if (data Ð_FLAG_LRO ) { -if (lro_enable) { -if (!(dev->features &NETIF_F_LRO )) { - dev->features |=NETIF_F_LRO ; - changed =1 ; - } - }else - rc = -EINVAL ; +if (!(dev->features &NETIF_F_LRO )) { + dev->features |=NETIF_F_LRO ; + changed =1 ; + } }else if (dev->features &NETIF_F_LRO ) { dev->features &= ~NETIF_F_LRO ; changed =1 ;@@ -6750,7 +6743,6 @@ static int s2io_ethtool_set_flags(struct net_device *dev, u32 data)if (changed &&netif_running (dev)) {s2io_stop_all_tx_queue (sp);s2io_card_down (sp); - sp->lro = !!(dev->features &NETIF_F_LRO ); rc =s2io_card_up (sp);if (rc)s2io_reset (sp);@@ -7307,7 +7299,7 @@ static int s2io_card_up(struct s2io_nic *sp)struct ring_info *ring = &mac_control->rings[i]; ring->mtu = dev->mtu; - ring->lro = sp->lro; + ring->lro = !!(dev->features &NETIF_F_LRO ); ret =fill_rx_buffers (sp, ring,1 );if (ret) { DBG_PRINT(ERR_DBG, "%s: Out of memory in Open\n",@@ -7341,7 +7333,7 @@ static int s2io_card_up(struct s2io_nic *sp)/* Setting its receive mode */ s2io_set_multicast (dev); -if (sp->lro) { +if (dev->features &NETIF_F_LRO ) {/* Initialize max aggregatable pkts per session based on MTU */ sp->lro_max_aggr_per_sess = ((1 <<16 ) -1 ) / dev->mtu;/* Check if we can use (if specified) user provided value */ @@ -7911,7 +7903,6 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)else sp->device_type =XFRAME_I_DEVICE ; - sp->lro = lro_enable;/* Initialize some PCI/PCI-X fields of the NIC. */ s2io_init_pci (sp);@@ -8047,8 +8038,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre) dev->netdev_ops = &s2io_netdev_ops;SET_ETHTOOL_OPS (dev, &netdev_ethtool_ops); dev->features |=NETIF_F_HW_VLAN_TX |NETIF_F_HW_VLAN_RX ; -if (lro_enable) - dev->features |=NETIF_F_LRO ; + dev->features |=NETIF_F_LRO ; dev->features |=NETIF_F_SG |NETIF_F_IP_CSUM ;if (sp->high_dma_flag == true) dev->features |=NETIF_F_HIGHDMA ;@@ -8283,9 +8273,8 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre) dev->name); } -if (sp->lro) -DBG_PRINT (ERR_DBG ,"%s: Large receive offload enabled\n" , - dev->name); +DBG_PRINT (ERR_DBG ,"%s: Large receive offload enabled\n" , + dev->name);if (ufo) DBG_PRINT(ERR_DBG, "%s: UDP Fragmentation Offload(UFO) enabled\n",drivers/net/s2io.h +0
-1@@ -971,7 +971,6 @@ struct s2io_nic {unsigned long clubbed_frms_cnt;unsigned long sending_both; -u8 lro;u16 lro_max_aggr_per_sess;volatile unsigned long state;u64 general_int_mask;