diff --git a/model/leo-oneweb-constants.h b/model/leo-oneweb-constants.h
index 012d29e..cdbccc1 100644
--- a/model/leo-oneweb-constants.h
+++ b/model/leo-oneweb-constants.h
@@ -24,7 +24,7 @@ namespace ns3 {
 #define LEO_ONEWEB_FREQUENCY        28.5            // GHz
 #define LEO_ONEWEB_BANDWIDTH        0.25            // GHz
 #define LEO_ONEWEB_TX_ANTENNA_D     2.4             // m
-#define LEO_ONEWEB_EIRP             63.2            // dBW
+#define LEO_ONEWEB_EIRP             93.2            // dBm
 #define LEO_ONEWEB_MODCOD           "256APSK 32/45" // -
 #define LEO_ONEWEB_ROLL_OFF_FACTOR  0.1             // -
 #define LEO_ONEWEB_SPECTRAL_EFF     5.1             // bps/Hz
diff --git a/model/leo-propagation-loss-model.cc b/model/leo-propagation-loss-model.cc
index 613e2e1..e2106f3 100644
--- a/model/leo-propagation-loss-model.cc
+++ b/model/leo-propagation-loss-model.cc
@@ -26,10 +26,25 @@ LeoPropagationLossModel::GetTypeId (void)
                    DoubleValue (1000000.0),
                    MakeDoubleAccessor (&LeoPropagationLossModel::m_cutoffDistance),
                    MakeDoubleChecker<double> ())
-    .AddAttribute ("MaxAngle",
+    .AddAttribute ("ElevationAngle",
                    "Cut-off angle for signal propagation",
                    DoubleValue (20.0),
-                   MakeDoubleAccessor (&LeoPropagationLossModel::m_cutoffAngle),
+                   MakeDoubleAccessor (&LeoPropagationLossModel::m_elevationAngle),
+                   MakeDoubleChecker<double> ())
+    .AddAttribute ("AtmosphericLoss",
+                   "Atmospheric loss due to attenuation in dB",
+                   DoubleValue (0.0),
+                   MakeDoubleAccessor (&LeoPropagationLossModel::m_atmosphericLoss),
+                   MakeDoubleChecker<double> ())
+    .AddAttribute ("FreeSpacePathLoss",
+                   "Free space path loss in dB",
+                   DoubleValue (0.0),
+                   MakeDoubleAccessor (&LeoPropagationLossModel::m_atmosphericLoss),
+                   MakeDoubleChecker<double> ())
+    .AddAttribute ("LinkMargin",
+                   "Link margin in dB",
+                   DoubleValue (0.0),
+                   MakeDoubleAccessor (&LeoPropagationLossModel::m_linkMargin),
                    MakeDoubleChecker<double> ())
   ;
   return tid;
@@ -61,13 +76,14 @@ LeoPropagationLossModel::DoCalcRxPower (double txPowerDbm,
                                         Ptr<MobilityModel> a,
                                         Ptr<MobilityModel> b) const
 {
-  if (a->GetDistanceFrom (b) > m_cutoffDistance && GetAngle (a, b) > m_cutoffAngle)
+  if (a->GetDistanceFrom (b) > m_cutoffDistance && GetAngle (a, b) > m_elevationAngle / 2.0)
     {
       return 0.0;
     }
 
-  double rxc = 0.0;//-m_variable->GetValue ();
-  //NS_LOG_DEBUG ("attenuation coefficient="<<rxc<<"Db");
+  double rxc = -m_atmosphericLoss - m_freeSpacePathLoss;
+  NS_LOG_DEBUG ("attenuation coefficient= " << rxc << " dB");
+
   return txPowerDbm + rxc;
 }
 
diff --git a/model/leo-propagation-loss-model.h b/model/leo-propagation-loss-model.h
index 84696e4..d1b8176 100644
--- a/model/leo-propagation-loss-model.h
+++ b/model/leo-propagation-loss-model.h
@@ -25,9 +25,24 @@ private:
   double m_cutoffDistance;
 
   /**
-   * Cutoff angle for signal
+   * Maximum elevation angle
    */
-  double m_cutoffAngle;
+  double m_elevationAngle;
+
+  /**
+   * Atmospheric loss
+   */
+  double m_atmosphericLoss;
+
+  /**
+   * Free space path loss (FSPL)
+   */
+  double m_freeSpacePathLoss;
+
+  /**
+   * Link margin
+   */
+  double m_linkMargin;
 
   /**
    * Returns the Rx Power taking into account only the particular
diff --git a/model/leo-starlink-constants.h b/model/leo-starlink-constants.h
index 3c00a8d..f4a7f09 100644
--- a/model/leo-starlink-constants.h
+++ b/model/leo-starlink-constants.h
@@ -24,14 +24,14 @@ namespace ns3 {
 #define LEO_STARLINK_FREQUENCY        28.5           // GHz
 #define LEO_STARLINK_BANDWIDTH        0.5            // GHz
 #define LEO_STARLINK_TX_ANTENNA_D     3.5            // m
-#define LEO_STARLINK_EIRP             68.4           // dBW
+#define LEO_STARLINK_EIRP             98.4           // dBm
 #define LEO_STARLINK_MODCOD           "256APSK 3/4"  // -
 #define LEO_STARLINK_ROLL_OFF_FACTOR  0.1            // -
 #define LEO_STARLINK_SPECTRAL_EFF     5.4            // bps/Hz
 #define LEO_STARLINK_PATH_DISTANCE    1684           // km
 #define LEO_STARLINK_ELEVATION_ANGLE  40             // deg
 #define LEO_STARLINK_FSPL             186.1          // dB
-#define LEO_STARLINK_ATMOSPHERIC_LOSS 2.9            // dB
+#define LEO_STARLINK_ATMOSPHERIC_LOSS 2.9            // dBm
 #define LEO_STARLINK_RX_ANTENNA_GAIN  40.9           // dBi
 #define LEO_STARLINK_SYSTEM_TEMP      535.9          // K
 #define LEO_STARLINK_G_T              13.6           // dB/K
diff --git a/model/leo-telesat-constants.h b/model/leo-telesat-constants.h
index c44f90d..f2f9709 100644
--- a/model/leo-telesat-constants.h
+++ b/model/leo-telesat-constants.h
@@ -24,7 +24,7 @@ namespace ns3 {
 #define LEO_TELESAT_FREQUENCY        28.5         // GHz
 #define LEO_TELESAT_BANDWIDTH        2.1          // GHz
 #define LEO_TELESAT_TX_ANTENNA_D     3.5          // m
-#define LEO_TELESAT_EIRP             75.9         // dBW
+#define LEO_TELESAT_EIRP             105.9        // dBm
 #define LEO_TELESAT_MODCOD           "64APSK 3/4" // -
 #define LEO_TELESAT_ROLL_OFF_FACTOR  0.1          // -
 #define LEO_TELESAT_SPECTRAL_EFF     4.1          // bps/Hz
diff --git a/model/mock-channel.cc b/model/mock-channel.cc
index 4e44332..60ccc8b 100644
--- a/model/mock-channel.cc
+++ b/model/mock-channel.cc
@@ -173,7 +173,8 @@ MockChannel::Deliver (
       Ptr<PropagationLossModel> pLoss = GetPropagationLoss ();
       if (pLoss != 0)
     	{
-      	  if (pLoss->CalcRxPower (1.0, srcMob, dstMob) == 0.0)
+      	  // check if Rx power is below link margin
+      	  if (pLoss->CalcRxPower (src->GetTxPower (), srcMob, dstMob) == 0.0)
     	    {
       	      return false;
     	    }
diff --git a/model/mock-net-device.cc b/model/mock-net-device.cc
index 6abdb77..6327900 100644
--- a/model/mock-net-device.cc
+++ b/model/mock-net-device.cc
@@ -28,6 +28,7 @@
 #include "ns3/net-device-queue-interface.h"
 #include "ns3/ethernet-header.h"
 #include "ns3/ethernet-trailer.h"
+#include "ns3/double.h"
 #include "mock-channel.h"
 #include "mock-net-device.h"
 
@@ -69,6 +70,11 @@ MockNetDevice::GetTypeId (void)
                    TimeValue (Seconds (0.0)),
                    MakeTimeAccessor (&MockNetDevice::m_tInterframeGap),
                    MakeTimeChecker ())
+    .AddAttribute ("TxPower",
+                   "Transmit power in dBm",
+                   DoubleValue (1.0),
+                   MakeDoubleAccessor (&MockNetDevice::m_txPower),
+                   MakeDoubleChecker<double> ())
 
     //
     // Transmit queueing discipline for the device which includes its own set
@@ -765,4 +771,16 @@ MockNetDevice::IsPointToPoint() const
   return false;
 }
 
+double
+MockNetDevice::GetTxPower () const
+{
+  return m_txPower;
+}
+
+void
+MockNetDevice::SetTxPower (double txPower)
+{
+  m_txPower = txPower;
+}
+
 } // namespace ns3
diff --git a/model/mock-net-device.h b/model/mock-net-device.h
index 7cb491d..971bdc7 100644
--- a/model/mock-net-device.h
+++ b/model/mock-net-device.h
@@ -91,6 +91,16 @@ public:
    */
   bool Attach (Ptr<MockChannel> ch);
 
+  /**
+   * Get the transmission power in dbm
+   */
+  double GetTxPower () const;
+
+  /**
+   * Set the transmission power in dbm
+   */
+  void SetTxPower (double txPower);
+
   /**
    * Attach a queue to the MockNetDevice.
    *
@@ -280,6 +290,11 @@ private:
     READY,   /**< The transmitter is ready to begin transmission of a packet */
     BUSY     /**< The transmitter is busy transmitting a packet */
   };
+  /**
+   * Transmission power used for transmissions
+   */
+  double m_txPower;
+
   /**
    * The state of the Net Device transmit state machine.
    */