diff options
Diffstat (limited to 'net/sched/sch_cbs.c')
-rw-r--r-- | net/sched/sch_cbs.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/net/sched/sch_cbs.c b/net/sched/sch_cbs.c index 732e109c3055..810645b5c086 100644 --- a/net/sched/sch_cbs.c +++ b/net/sched/sch_cbs.c | |||
@@ -181,11 +181,6 @@ static struct sk_buff *cbs_dequeue_soft(struct Qdisc *sch) | |||
181 | s64 credits; | 181 | s64 credits; |
182 | int len; | 182 | int len; |
183 | 183 | ||
184 | if (atomic64_read(&q->port_rate) == -1) { | ||
185 | WARN_ONCE(1, "cbs: dequeue() called with unknown port rate."); | ||
186 | return NULL; | ||
187 | } | ||
188 | |||
189 | if (q->credits < 0) { | 184 | if (q->credits < 0) { |
190 | credits = timediff_to_credits(now - q->last, q->idleslope); | 185 | credits = timediff_to_credits(now - q->last, q->idleslope); |
191 | 186 | ||
@@ -303,11 +298,19 @@ static int cbs_enable_offload(struct net_device *dev, struct cbs_sched_data *q, | |||
303 | static void cbs_set_port_rate(struct net_device *dev, struct cbs_sched_data *q) | 298 | static void cbs_set_port_rate(struct net_device *dev, struct cbs_sched_data *q) |
304 | { | 299 | { |
305 | struct ethtool_link_ksettings ecmd; | 300 | struct ethtool_link_ksettings ecmd; |
301 | int speed = SPEED_10; | ||
306 | int port_rate = -1; | 302 | int port_rate = -1; |
303 | int err; | ||
304 | |||
305 | err = __ethtool_get_link_ksettings(dev, &ecmd); | ||
306 | if (err < 0) | ||
307 | goto skip; | ||
308 | |||
309 | if (ecmd.base.speed != SPEED_UNKNOWN) | ||
310 | speed = ecmd.base.speed; | ||
307 | 311 | ||
308 | if (!__ethtool_get_link_ksettings(dev, &ecmd) && | 312 | skip: |
309 | ecmd.base.speed != SPEED_UNKNOWN) | 313 | port_rate = speed * 1000 * BYTES_PER_KBIT; |
310 | port_rate = ecmd.base.speed * 1000 * BYTES_PER_KBIT; | ||
311 | 314 | ||
312 | atomic64_set(&q->port_rate, port_rate); | 315 | atomic64_set(&q->port_rate, port_rate); |
313 | netdev_dbg(dev, "cbs: set %s's port_rate to: %lld, linkspeed: %d\n", | 316 | netdev_dbg(dev, "cbs: set %s's port_rate to: %lld, linkspeed: %d\n", |