diff --git a/feed/atenl/src/nl.c b/feed/atenl/src/nl.c
index 16137f6..368ffbd 100644
--- a/feed/atenl/src/nl.c
+++ b/feed/atenl/src/nl.c
@@ -118,25 +118,6 @@
 }
 
 static void
-atenl_set_attr_tx_length(struct atenl *an, struct nl_msg *msg,
-			 u32 tx_length, bool is_mu)
-{
-#define IEEE80211_MAX_FRAME_LEN		2352
-	int hdr_len = 24;
-
-	if (tx_length > IEEE80211_MAX_FRAME_LEN || is_mu)
-		hdr_len += 2;
-
-	if (an->ibf_cal)
-		hdr_len = 0;
-
-	/* The definition of MT76_TM_ATTR_TX_LENGTH is MPDU length,
-	 * so add ieee80211_hdr length.
-	 */
-	nla_put_u32(msg, MT76_TM_ATTR_TX_LENGTH, tx_length + hdr_len);
-}
-
-static void
 atenl_set_attr_antenna(struct atenl *an, struct nl_msg *msg, u8 tx_antenna)
 {
 	if (!tx_antenna)
@@ -308,9 +289,8 @@
 			nla_put_u32(msg, MT76_TM_ATTR_TX_TIME,
 				    get_band_val(an, band, tx_time));
 		else
-			atenl_set_attr_tx_length(an, msg,
-					get_band_val(an, band, tx_mpdu_len),
-					tx_rate_mode == MT76_TM_TX_MODE_HE_MU);
+			nla_put_u32(msg, MT76_TM_ATTR_TX_LENGTH,
+				    get_band_val(an, band, tx_mpdu_len));
 
 		/* for chips after 7915, tx need to use at least wcid = 1 */
 		if (!is_mt7915(an) && !aid)
@@ -735,7 +715,7 @@
 		nla_put_u8(msg, MT76_TM_ATTR_TX_RATE_IDX, mcs);
 		nla_put_u8(msg, MT76_TM_ATTR_TX_RATE_LDPC, ldpc);
 		nla_put_u8(msg, MT76_TM_ATTR_TX_RATE_NSS, nss);
-		atenl_set_attr_tx_length(an, msg, tx_length, true);
+		nla_put_u32(msg, MT76_TM_ATTR_TX_LENGTH, tx_length);
 
 		ret = snprintf(buf, sizeof(buf), "%x", ru_alloc);
 		if (snprintf_error(sizeof(buf), ret))
@@ -899,8 +879,6 @@
 			return -ENOMEM;
 		nla_put_u16(msg, 0, 0);
 		nla_nest_end(msg, a);
-
-		an->ibf_cal = true;
 		break;
 	case TXBF_ACT_MCS:
 		tmp_ant = (1 << DIV_ROUND_UP(val[0], 8)) - 1 ?: 1;
@@ -925,7 +903,7 @@
 		nla_put_u8(msg, MT76_TM_ATTR_AID, val[1]);
 		nla_put_u8(msg, MT76_TM_ATTR_TXBF_ACT, MT76_TM_TXBF_ACT_TX_PREP);
 		nla_put_u32(msg, MT76_TM_ATTR_TX_COUNT, 10000000);
-		atenl_set_attr_tx_length(an, msg, 1024, false);
+		nla_put_u32(msg, MT76_TM_ATTR_TX_LENGTH, 1024);
 		a = nla_nest_start(msg, MT76_TM_ATTR_TXBF_PARAM);
 		if (!a)
 			return -ENOMEM;
@@ -962,8 +940,6 @@
 			return -ENOMEM;
 		nla_put_u16(msg, 0, 0);
 		nla_nest_end(msg, a);
-
-		an->ibf_cal = false;
 		break;
 	case TXBF_ACT_INIT:
 	case TXBF_ACT_POWER:
