mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 17:30:02 +00:00
usb: gadget: f_ncm: remove timer_force_tx field
It is simply not needed. This field is equivalent to skb being NULL. Currently with the boolean set to true we call: ncm->netdev->netdev_ops->ndo_start_xmit(NULL, ncm->netdev); which calls u_ether's: eth_start_xmit(NULL, ...) which then calls: skb = dev->wrap(dev->port_usb, NULL); which calls back into f_ncm's: ncm_wrap_ntb(..., NULL) Cc: Brooke Basile <brookebasile@gmail.com> Cc: "Bryan O'Donoghue" <bryan.odonoghue@linaro.org> Cc: Felipe Balbi <balbi@kernel.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Lorenzo Colitti <lorenzo@google.com> Signed-off-by: Maciej Żenczykowski <maze@google.com> Link: https://lore.kernel.org/r/20210701114834.884597-1-zenczykowski@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
091cb2f782
commit
dbaaca9aa5
1 changed files with 5 additions and 7 deletions
|
@ -72,7 +72,6 @@ struct f_ncm {
|
||||||
struct sk_buff *skb_tx_data;
|
struct sk_buff *skb_tx_data;
|
||||||
struct sk_buff *skb_tx_ndp;
|
struct sk_buff *skb_tx_ndp;
|
||||||
u16 ndp_dgram_count;
|
u16 ndp_dgram_count;
|
||||||
bool timer_force_tx;
|
|
||||||
struct hrtimer task_timer;
|
struct hrtimer task_timer;
|
||||||
bool timer_stopping;
|
bool timer_stopping;
|
||||||
};
|
};
|
||||||
|
@ -1126,8 +1125,11 @@ static struct sk_buff *ncm_wrap_ntb(struct gether *port,
|
||||||
dev_consume_skb_any(skb);
|
dev_consume_skb_any(skb);
|
||||||
skb = NULL;
|
skb = NULL;
|
||||||
|
|
||||||
} else if (ncm->skb_tx_data && ncm->timer_force_tx) {
|
} else if (ncm->skb_tx_data) {
|
||||||
/* If the tx was requested because of a timeout then send */
|
/* If we get here ncm_wrap_ntb() was called with NULL skb,
|
||||||
|
* because eth_start_xmit() was called with NULL skb by
|
||||||
|
* ncm_tx_timeout() - hence, this is our signal to flush/send.
|
||||||
|
*/
|
||||||
skb2 = package_for_tx(ncm);
|
skb2 = package_for_tx(ncm);
|
||||||
if (!skb2)
|
if (!skb2)
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -1158,8 +1160,6 @@ static enum hrtimer_restart ncm_tx_timeout(struct hrtimer *data)
|
||||||
|
|
||||||
/* Only send if data is available. */
|
/* Only send if data is available. */
|
||||||
if (!ncm->timer_stopping && ncm->skb_tx_data) {
|
if (!ncm->timer_stopping && ncm->skb_tx_data) {
|
||||||
ncm->timer_force_tx = true;
|
|
||||||
|
|
||||||
/* XXX This allowance of a NULL skb argument to ndo_start_xmit
|
/* XXX This allowance of a NULL skb argument to ndo_start_xmit
|
||||||
* XXX is not sane. The gadget layer should be redesigned so
|
* XXX is not sane. The gadget layer should be redesigned so
|
||||||
* XXX that the dev->wrap() invocations to build SKBs is transparent
|
* XXX that the dev->wrap() invocations to build SKBs is transparent
|
||||||
|
@ -1167,8 +1167,6 @@ static enum hrtimer_restart ncm_tx_timeout(struct hrtimer *data)
|
||||||
* XXX interface.
|
* XXX interface.
|
||||||
*/
|
*/
|
||||||
ncm->netdev->netdev_ops->ndo_start_xmit(NULL, ncm->netdev);
|
ncm->netdev->netdev_ops->ndo_start_xmit(NULL, ncm->netdev);
|
||||||
|
|
||||||
ncm->timer_force_tx = false;
|
|
||||||
}
|
}
|
||||||
return HRTIMER_NORESTART;
|
return HRTIMER_NORESTART;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue