USBNET: centralize computing of max rx/tx qlen
This patch centralizes computing of max rx/tx qlen, because: - RX_QLEN()/TX_QLEN() is called in hot path - computing depends on device's usb speed, now we have ls/fs, hs, ss, so more checks need to be involved - in fact, max rx/tx qlen should not only depend on device USB speed, but also depend on ethernet link speed, so we need to consider that in future. - if SG support is done, max tx qlen may need change too Generally, hard_mtu and rx_urb_size are changed in bind(), reset() and link_reset() callback, and change mtu network operation, this patches introduces the API of usbnet_update_max_qlen(), and calls it in above path. Signed-off-by: Ming Lei <ming.lei@canonical.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
6680ec68ef
commit
a88c32ae15
@@ -34,6 +34,7 @@ struct usbnet {
|
||||
struct mutex phy_mutex;
|
||||
unsigned char suspend_count;
|
||||
unsigned char pkt_cnt, pkt_err;
|
||||
unsigned short rx_qlen, tx_qlen;
|
||||
|
||||
/* i/o info: pipes etc */
|
||||
unsigned in, out;
|
||||
@@ -253,4 +254,6 @@ extern void usbnet_link_change(struct usbnet *, bool, bool);
|
||||
extern int usbnet_status_start(struct usbnet *dev, gfp_t mem_flags);
|
||||
extern void usbnet_status_stop(struct usbnet *dev);
|
||||
|
||||
extern void usbnet_update_max_qlen(struct usbnet *dev);
|
||||
|
||||
#endif /* __LINUX_USB_USBNET_H */
|
||||
|
||||
Reference in New Issue
Block a user