Index: 3rdpartyappliance/centos-ice/avx_get_ice_info.patch
===================================================================
--- 3rdpartyappliance/centos-ice/avx_get_ice_info.patch	(revision 0)
+++ 3rdpartyappliance/centos-ice/avx_get_ice_info.patch	(working copy)
@@ -0,0 +1,167 @@
+diff --git a/ice-1.11.17.1/ice.spec b/ice-1.11.17.1_TWSD-1676/ice.spec
+index d9378eb..f612811 100644
+--- a/ice-1.11.17.1/ice.spec
++++ b/ice-1.11.17.1_TWSD-1676/ice.spec
+@@ -1,7 +1,7 @@
+ Name: ice
+ Summary: Intel(R) Ethernet Connection E800 Series Linux Driver
+ Version: 1.11.17.1
+-Release: 1
++Release: 3
+ Source: %{name}-%{version}.tar.gz
+ Vendor: Intel Corporation
+ License: GPLv2 and Redistributable, no modification permitted
+diff --git a/ice-1.11.17.1/src/ice.h b/ice-1.11.17.1_TWSD-1676/src/ice.h
+index 3da2170..201f661 100644
+--- a/ice-1.11.17.1/src/ice.h
++++ b/ice-1.11.17.1_TWSD-1676/src/ice.h
+@@ -362,6 +362,22 @@ struct ice_tc_cfg {
+	struct ice_tc_info tc_info[ICE_MAX_TRAFFIC_CLASS];
+ };
+
++/* For avx info */
++struct avx_info{
++	u64 lost_carrier;
++	u64 wdt_reset;
++	u64 bandwidth_in_bits;
++	u64 bandwidth_in_packets;
++	u64 bandwidth_out_bits;
++	u64 bandwidth_out_packets;
++	/*Last time packets in/out*/
++	u64 packets_in_old;
++	u64 packets_out_old;
++	/*Last time bytes in/out*/
++	u64 bytes_in_old;
++	u64 bytes_out_old;
++};
++
+ struct ice_res_tracker {
+	u16 num_entries;
+	u16 end;
+@@ -962,6 +978,11 @@ struct ice_pf {
+	unsigned long serv_tmr_prev;
+	struct timer_list serv_tmr;
+	struct work_struct serv_task;
++
++	/* for avx_info */
++	struct timer_list avx_timer;
++	struct avx_info info;
++
+	struct mutex avail_q_mutex;	/* protects access to avail_[rx|tx]qs */
+	struct mutex sw_mutex;		/* lock for protecting VSI alloc flow */
+	struct mutex tc_mutex;		/* lock to protect TC changes */
+diff --git a/ice-1.11.17.1/src/ice_main.c b/ice-1.11.17.1_TWSD-1676/src/ice_main.c
+index 43bd7ba..4c057b4 100644
+--- a/ice-1.11.17.1/src/ice_main.c
++++ b/ice-1.11.17.1_TWSD-1676/src/ice_main.c
+@@ -134,6 +134,13 @@ static int ice_rebuild_channels(struct ice_pf *pf);
+ static void ice_remove_q_channels(struct ice_vsi *vsi, bool rem_adv_fltr);
+ #endif /* HAVE_TC_CB_AND_SETUP_QDISC_MQPRIO */
+
++const uint32_t bandwidth_timer= 300;/* bandwidth timer = 300 seconds */
++#ifndef SIOCGHWAVXINFO
++#define SIOCGHWAVXINFO  0x89b2      /* get avx info */
++#endif
++void ice_update_avx_info(unsigned long data);
++int ice_avx_info_ioctl( struct ice_pf *pf, struct ifreq *ifr);
++
+ bool netif_is_ice(struct net_device *dev)
+ {
+	return dev && (dev->netdev_ops == &ice_netdev_ops);
+@@ -1511,6 +1518,7 @@ void ice_print_link_msg(struct ice_vsi *vsi, bool isup)
+	vsi->current_isup = isup;
+
+	if (!isup) {
++		vsi->back->info.lost_carrier++;
+		netdev_info(vsi->netdev, "NIC Link is Down\n");
+		return;
+	}
+@@ -2638,6 +2646,7 @@ static int ice_service_task_stop(struct ice_pf *pf)
+
+	if (pf->serv_tmr.function)
+		del_timer_sync(&pf->serv_tmr);
++		del_timer_sync(&pf->avx_timer);
+	if (pf->serv_task.func)
+		cancel_work_sync(&pf->serv_task);
+
+@@ -5326,6 +5335,9 @@ static int ice_init_pf(struct ice_pf *pf)
+	/* setup service timer and periodic service task */
+	timer_setup(&pf->serv_tmr, ice_service_timer, 0);
+	pf->serv_tmr_period = HZ;
++
++	setup_timer(&pf->avx_timer, ice_update_avx_info, (unsigned long)pf);
++
+	INIT_WORK(&pf->serv_task, ice_service_task);
+	clear_bit(ICE_SERVICE_SCHED, pf->state);
+
+@@ -6417,6 +6429,8 @@ ice_probe(struct pci_dev *pdev, const struct pci_device_id __always_unused *ent)
+	/* since everything is good, start the service timer */
+	mod_timer(&pf->serv_tmr, round_jiffies(jiffies + pf->serv_tmr_period));
+
++	mod_timer(&pf->avx_timer, jiffies + bandwidth_timer * HZ);
++
+	err = ice_init_link_events(pf->hw.port_info);
+	if (err) {
+		ice_dev_err_errno(dev, err, "ice_init_link_events failed");
+@@ -7322,6 +7336,52 @@ static void __exit ice_module_exit(void)
+ }
+ module_exit(ice_module_exit);
+
++
++void ice_update_avx_info(unsigned long data){
++	int i;
++	struct ice_pf *pf = (struct ice_pf *)data;
++	struct ice_vsi *vsi;
++	struct rtnl_link_stats64 *ns;
++
++	u64 packets_in_all = 0;
++	u64 bytes_in_all = 0;
++	u64 packets_out_all = 0;
++	u64 bytes_out_all = 0;
++
++	for (i = 0; i < pf->num_alloc_vsi; i++){
++		if (pf->vsi[i] && pf->vsi[i]->netdev){
++			vsi = pf->vsi[i];
++			ns = &vsi->net_stats;
++			packets_in_all += ns->rx_packets;
++			bytes_in_all += ns->rx_bytes;
++			packets_out_all += ns->tx_packets;
++			bytes_out_all += ns->tx_bytes;
++		}
++	}
++
++	pf->info.bandwidth_in_packets = packets_in_all < pf->info.packets_in_old ? 
++		0 : (packets_in_all - pf->info.packets_in_old)/(bandwidth_timer);
++	pf->info.bandwidth_in_bits = bytes_in_all < pf->info.bytes_in_old ? 
++		0 : ((bytes_in_all - pf->info.bytes_in_old)/(bandwidth_timer))<<3;
++	pf->info.bandwidth_out_packets = packets_out_all < pf->info.packets_out_old ? 
++		0 : (packets_out_all - pf->info.packets_out_old)/(bandwidth_timer);
++	pf->info.bandwidth_out_bits = bytes_out_all < pf->info.bytes_out_old ? 
++		0 : ((bytes_out_all - pf->info.bytes_out_old)/(bandwidth_timer))<<3;
++
++	pf->info.packets_in_old = packets_in_all;
++	pf->info.bytes_in_old= bytes_in_all;
++	pf->info.packets_out_old = packets_out_all;
++	pf->info.bytes_out_old= bytes_out_all;
++	mod_timer(&pf->avx_timer, jiffies + bandwidth_timer * HZ);
++}
++
++int ice_avx_info_ioctl( struct ice_pf *pf, struct ifreq *ifr){
++	struct avx_info *info = &pf->info;
++	return copy_to_user(ifr->ifr_data, info,
++				sizeof(*info)) ? -EFAULT : 0;
++}
++
++
+ /**
+  * ice_set_mac_address - NDO callback to set MAC address
+  * @netdev: network interface device structure
+@@ -9757,6 +9817,8 @@ static int ice_eth_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
+ #endif
+	case SIOCSHWTSTAMP:
+		return ice_ptp_set_ts_config(pf, ifr);
++	case SIOCGHWAVXINFO:
++		return ice_avx_info_ioctl(pf, ifr);
+	default:
+		return -EOPNOTSUPP;
+	}
Index: 3rdpartyappliance/centos-ice/ice-1.11.17.1.tar.gz
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/x-gzip
Index: Makefile
===================================================================
--- Makefile	(revision 9228)
+++ Makefile	(working copy)
@@ -59,6 +59,9 @@
 i40epack: changeserverip
 	./scripts/avxbuildutils.py -o buildpack -p i40e
 
+icepack: changeserverip
+	./scripts/avxbuildutils.py -o buildpack -p ice
+
 dpdkpack: changeserverip
 	./scripts/avxbuildutils.py -o buildpack -p dpdk
 
Index: update/avxsystem.ks
===================================================================
--- update/avxsystem.ks	(revision 9228)
+++ update/avxsystem.ks	(working copy)
@@ -506,8 +506,8 @@
 gamin-0.1.10-16.el7.x86_64
 lighttpd-1.4.54-1.el7.x86_64
 lighttpd-fastcgi.x86_64
-ice-1.11.17.1-2.x86_64
-intel_auxiliary-1.0.1-2.x86_64
+ice-1.11.17.1-3.x86_64
+intel_auxiliary-1.0.1-3.x86_64
 qat-4.15.0-1.x86_64
 bc-1.06.95-13.el7.x86_64
 pam_radius-1.4.0-4.el7.x86_64
