2
0

752-05-v6.7-net-ethernet-mtk_wed-do-not-assume-offload-callbacks.patch 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. From: Lorenzo Bianconi <[email protected]>
  2. Date: Wed, 13 Sep 2023 20:42:47 +0200
  3. Subject: [PATCH] net: ethernet: mtk_wed: do not assume offload callbacks are
  4. always set
  5. Check if wlan.offload_enable and wlan.offload_disable callbacks are set
  6. in mtk_wed_flow_add/mtk_wed_flow_remove since mt7996 will not rely
  7. on them.
  8. Signed-off-by: Lorenzo Bianconi <[email protected]>
  9. Reviewed-by: Simon Horman <[email protected]>
  10. Signed-off-by: David S. Miller <[email protected]>
  11. ---
  12. --- a/drivers/net/ethernet/mediatek/mtk_wed.c
  13. +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
  14. @@ -1713,19 +1713,20 @@ mtk_wed_irq_set_mask(struct mtk_wed_devi
  15. int mtk_wed_flow_add(int index)
  16. {
  17. struct mtk_wed_hw *hw = hw_list[index];
  18. - int ret;
  19. + int ret = 0;
  20. - if (!hw || !hw->wed_dev)
  21. - return -ENODEV;
  22. + mutex_lock(&hw_lock);
  23. - if (hw->num_flows) {
  24. - hw->num_flows++;
  25. - return 0;
  26. + if (!hw || !hw->wed_dev) {
  27. + ret = -ENODEV;
  28. + goto out;
  29. }
  30. - mutex_lock(&hw_lock);
  31. - if (!hw->wed_dev) {
  32. - ret = -ENODEV;
  33. + if (!hw->wed_dev->wlan.offload_enable)
  34. + goto out;
  35. +
  36. + if (hw->num_flows) {
  37. + hw->num_flows++;
  38. goto out;
  39. }
  40. @@ -1744,14 +1745,15 @@ void mtk_wed_flow_remove(int index)
  41. {
  42. struct mtk_wed_hw *hw = hw_list[index];
  43. - if (!hw)
  44. - return;
  45. + mutex_lock(&hw_lock);
  46. - if (--hw->num_flows)
  47. - return;
  48. + if (!hw || !hw->wed_dev)
  49. + goto out;
  50. - mutex_lock(&hw_lock);
  51. - if (!hw->wed_dev)
  52. + if (!hw->wed_dev->wlan.offload_disable)
  53. + goto out;
  54. +
  55. + if (--hw->num_flows)
  56. goto out;
  57. hw->wed_dev->wlan.offload_disable(hw->wed_dev);