diff --git a/Makefile b/Makefile
index 697fefb..70a33b3 100644
--- a/Makefile
+++ b/Makefile
@@ -124,7 +124,7 @@
 
 ccflags-y += -I$(obj)/nss_hal/include -I$(obj)/nss_data_plane/include -I$(obj)/exports -DNSS_DEBUG_LEVEL=0 -DNSS_PKT_STATS_ENABLED=1
 
-ccflags-y += -DNSS_PM_DEBUG_LEVEL=0 -DNSS_SKB_RECYCLE_SUPPORT=1
+ccflags-y += -DNSS_PM_DEBUG_LEVEL=0 -DNSS_SKB_REUSE_SUPPORT=1
 ccflags-y += -Werror
 
 ifneq ($(findstring 3.4, $(KERNELVERSION)),)
diff --git a/Makefile.fsm b/Makefile.fsm
index 75c73b0..2375ac7 100644
--- a/Makefile.fsm
+++ b/Makefile.fsm
@@ -97,5 +97,5 @@
 ccflags-y += -I$(obj)/exports
 ccflags-y += -I$(obj)/nss_hal/fsm9010 -DNSS_HAL_FSM9010_SUPPORT
 ccflags-y += -DNSS_DEBUG_LEVEL=0 -DNSS_EMPTY_BUFFER_SIZE=1984 -DNSS_PKT_STATS_ENABLED=1
-ccflags-y += -DNSS_DT_SUPPORT=1 -DNSS_PM_SUPPORT=0 -DNSS_FW_DBG_SUPPORT=0 -DNSS_SKB_RECYCLE_SUPPORT=0
+ccflags-y += -DNSS_DT_SUPPORT=1 -DNSS_PM_SUPPORT=0 -DNSS_FW_DBG_SUPPORT=0 -DNSS_SKB_REUSE_SUPPORT=0
 ccflags-y += -DNSS_PPP_SUPPORT=0 -DNSS_FREQ_SCALE_SUPPORT=0 -DNSS_FABRIC_SCALING_SUPPORT=0
diff --git a/nss_core.c b/nss_core.c
index d5ed5c4..f41b618 100644
--- a/nss_core.c
+++ b/nss_core.c
@@ -33,7 +33,7 @@
 
 #define NSS_DEFAULT_QUEUE_LIMIT 256	/* Default NSS packet queue limit. */
 
-#if (NSS_SKB_RECYCLE_SUPPORT == 1)
+#if (NSS_SKB_REUSE_SUPPORT == 1)
 /*
  * We have validated the skb recycling code within the NSS for the
  * following kernel versions. Before enabling the driver in new kernels,
@@ -49,7 +49,7 @@
 (((LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0))))))
 #error "Check skb recycle code in this file to match Linux version"
 #endif
-#endif /* NSS_SKB_RECYCLE_SUPPORT */
+#endif /* NSS_SKB_REUSE_SUPPORT */
 
 static int max_ipv4_conn = NSS_DEFAULT_NUM_CONN;
 module_param(max_ipv4_conn, int, S_IRUGO);
@@ -2221,12 +2221,12 @@
 	return (uint32_t)dma_map_single(dev, skb->head, nss_core_skb_tail_offset(skb), DMA_TO_DEVICE);
 }
 
-#if (NSS_SKB_RECYCLE_SUPPORT == 1)
+#if (NSS_SKB_REUSE_SUPPORT == 1)
 /*
- * nss_skb_can_recycle
- *	check if skb can be recyled
+ * nss_skb_can_reuse
+ *	check if skb can be reuse
  */
-static inline bool nss_skb_can_recycle(struct nss_ctx_instance *nss_ctx,
+static inline bool nss_skb_can_reuse(struct nss_ctx_instance *nss_ctx,
 	uint32_t if_num, struct sk_buff *nbuf, int min_skb_size)
 {
 	/*
@@ -2315,13 +2315,13 @@
 }
 
 /*
- * nss_skb_recycle - clean up an skb for reuse
- *	Recycles the skb to be reused as a receive buffer.
+ * nss_skb_reuse - clean up an skb
+ *	Clears the skb to be reused as a receive buffer.
  *
  * NOTE: This function does any necessary reference count dropping, and
  * cleans up the skbuff as if its allocated fresh.
  */
-void nss_skb_recycle(struct sk_buff *nbuf)
+void nss_skb_reuse(struct sk_buff *nbuf)
 {
 	struct skb_shared_info *shinfo;
 
@@ -2363,7 +2363,7 @@
 	uint16_t mask;
 	uint32_t frag0phyaddr;
 
-#if (NSS_SKB_RECYCLE_SUPPORT == 1)
+#if (NSS_SKB_REUSE_SUPPORT == 1)
 	uint16_t sz;
 #endif
 
@@ -2377,11 +2377,11 @@
 	mask = desc_if->size - 1;
 	desc = &desc_ring[hlos_index];
 
-#if (NSS_SKB_RECYCLE_SUPPORT == 1)
+#if (NSS_SKB_REUSE_SUPPORT == 1)
 	/*
-	 * Check if the skb is recyclable without resetting its fields.
+	 * Check if the skb is reuseable without resetting its fields.
 	 */
-	if (unlikely(!nss_skb_can_recycle(nss_ctx, if_num, nbuf, nss_ctx->max_buf_size))) {
+	if (unlikely(!nss_skb_can_reuse(nss_ctx, if_num, nbuf, nss_ctx->max_buf_size))) {
 		goto no_reuse;
 	}
 
@@ -2406,9 +2406,9 @@
 	NSS_CORE_DMA_CACHE_MAINT((void *)desc, sizeof(*desc), DMA_TO_DEVICE);
 
 	/*
-	 * We are done using the skb fields and can recycle it now
+	 * We are done using the skb fields and can reuse it now
 	 */
-	nss_skb_recycle(nbuf);
+	nss_skb_reuse(nbuf);
 
 	NSS_PKT_STATS_INCREMENT(nss_ctx, &nss_ctx->nss_top->stats_drv[NSS_STATS_DRV_TX_BUFFER_REUSE]);
 	return 1;
