aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorAlexander Duyck <alexander.h.duyck@intel.com>2009-03-02 19:01:53 -0500
committerDavid S. Miller <davem@davemloft.net>2009-03-02 19:01:53 -0500
commit19147bb5f1f7e7ee79f0c92f59f67da8c0031dc0 (patch)
tree9021d5b9779a476edbb9dce5cbdb03ef6ab9029a /drivers/net
parentd3a21be86c178964167aa54c39a01260d33e7509 (diff)
igb: remove skb_orphan calls
Remove skb_orphan call from igb driver as it can cause multiple issues due to the fact that it is calling the desctructor and removing the skb from the socket prior to transmission. The call was added to improve performance but did so by allowing the skb to be removed from the socket which gave the socket more window space to transmit. The performance gain is not worth the extra problems that this kind of workaround can introduce as this could lead to a potential DoS if a UDP stream decided to monopolize the transmit path. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Acked-by: Mitch Williams <mitch.a.williams@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/igb/igb_main.c11
1 files changed, 0 insertions, 11 deletions
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index 6cae258df96d..78558f840fd2 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -3258,14 +3258,6 @@ static int igb_xmit_frame_ring_adv(struct sk_buff *skb,
3258 if (unlikely(shtx->hardware)) { 3258 if (unlikely(shtx->hardware)) {
3259 shtx->in_progress = 1; 3259 shtx->in_progress = 1;
3260 tx_flags |= IGB_TX_FLAGS_TSTAMP; 3260 tx_flags |= IGB_TX_FLAGS_TSTAMP;
3261 } else if (likely(!shtx->software)) {
3262 /*
3263 * TODO: can this be solved in dev.c:dev_hard_start_xmit()?
3264 * There are probably unmodified driver which do something
3265 * like this and thus don't work in combination with
3266 * SOF_TIMESTAMPING_TX_SOFTWARE.
3267 */
3268 skb_orphan(skb);
3269 } 3261 }
3270 3262
3271 if (adapter->vlgrp && vlan_tx_tag_present(skb)) { 3263 if (adapter->vlgrp && vlan_tx_tag_present(skb)) {
@@ -4253,9 +4245,6 @@ static void igb_tx_hwtstamp(struct igb_adapter *adapter, struct sk_buff *skb)
4253 timecompare_transform(&adapter->compare, ns); 4245 timecompare_transform(&adapter->compare, ns);
4254 skb_tstamp_tx(skb, &shhwtstamps); 4246 skb_tstamp_tx(skb, &shhwtstamps);
4255 } 4247 }
4256
4257 /* delayed orphaning: skb_tstamp_tx() needs the socket */
4258 skb_orphan(skb);
4259 } 4248 }
4260} 4249}
4261 4250