Skip to content

Commit

Permalink
net: ethernet: mtk_wed: do not assume offload callbacks are always set
Browse files Browse the repository at this point in the history
Check if wlan.offload_enable and wlan.offload_disable callbacks are set
in mtk_wed_flow_add/mtk_wed_flow_remove since mt7996 will not rely
on them.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Lorenzo Bianconi authored and David S. Miller committed Sep 16, 2023
1 parent c123e0d commit 01b38de
Showing 1 changed file with 17 additions and 15 deletions.
32 changes: 17 additions & 15 deletions drivers/net/ethernet/mediatek/mtk_wed.c
Original file line number Diff line number Diff line change
Expand Up @@ -1713,19 +1713,20 @@ mtk_wed_irq_set_mask(struct mtk_wed_device *dev, u32 mask)
int mtk_wed_flow_add(int index)
{
struct mtk_wed_hw *hw = hw_list[index];
int ret;
int ret = 0;

if (!hw || !hw->wed_dev)
return -ENODEV;
mutex_lock(&hw_lock);

if (hw->num_flows) {
hw->num_flows++;
return 0;
if (!hw || !hw->wed_dev) {
ret = -ENODEV;
goto out;
}

mutex_lock(&hw_lock);
if (!hw->wed_dev) {
ret = -ENODEV;
if (!hw->wed_dev->wlan.offload_enable)
goto out;

if (hw->num_flows) {
hw->num_flows++;
goto out;
}

Expand All @@ -1744,14 +1745,15 @@ void mtk_wed_flow_remove(int index)
{
struct mtk_wed_hw *hw = hw_list[index];

if (!hw)
return;
mutex_lock(&hw_lock);

if (--hw->num_flows)
return;
if (!hw || !hw->wed_dev)
goto out;

mutex_lock(&hw_lock);
if (!hw->wed_dev)
if (!hw->wed_dev->wlan.offload_disable)
goto out;

if (--hw->num_flows)
goto out;

hw->wed_dev->wlan.offload_disable(hw->wed_dev);
Expand Down

0 comments on commit 01b38de

Please sign in to comment.