diff --git a/library/driver/ethernet/patmos_eth_mac.c b/library/driver/ethernet/patmos_eth_mac.c
index ae1015a1f17adf11caed348cb43db78b0f68eb9f..55c00e5f04a9e1c1e90b7324c76c98123a36007a 100644
--- a/library/driver/ethernet/patmos_eth_mac.c
+++ b/library/driver/ethernet/patmos_eth_mac.c
@@ -356,8 +356,12 @@ network_error_t eth_mac_send_nb(network_frame_t *frame, mmio_ptr_t config_ptr)
     // adapt address and get next frame segment
     address += frame->header_length;
     
-    // write user data into buffer
-    mmio_wr_block(address, frame->user_data, frame->user_data_length);    
+    // user data can be null sometimes with TCP frames
+    if(frame->user_data != NULL)
+    {
+        // write user data into buffer
+        mmio_wr_block(address, frame->user_data, frame->user_data_length);    
+    }
     
     unsigned intr_en = EXC_STATUS & 0x1;
     if(intr_en)
diff --git a/library/driver/ethernet/patmos_tsn_mac.c b/library/driver/ethernet/patmos_tsn_mac.c
index 92f311425e5ed05f14ef501fd2326e79afd48ec2..3f944b9a64ff996e241d75808345b32d3e66808b 100644
--- a/library/driver/ethernet/patmos_tsn_mac.c
+++ b/library/driver/ethernet/patmos_tsn_mac.c
@@ -642,8 +642,12 @@ network_error_t tsn_mac_send_nb(network_frame_t *frame, mmio_ptr_t config_ptr)
     // adapt address and get next frame segment
     address += frame->header_length;
     
-    // write user data into buffer
-    mmio_wr_block(address, frame->user_data, frame->user_data_length);    
+    // user data can be null sometimes with TCP frames
+    if(frame->user_data != NULL)
+    {
+        // write user data into buffer
+        mmio_wr_block(address, frame->user_data, frame->user_data_length);    
+    }
 
     // enques the frame 
     time_stamp_t dummy_ts;