net: ethernet: mtk_wed: do not assume offload callbacks are always set

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>
This commit is contained in:
Lorenzo Bianconi 2023-09-13 20:42:47 +02:00 committed by David S. Miller
parent c123e0d30b
commit 01b38de18d

View File

@ -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 || !hw->wed_dev) {
ret = -ENODEV;
goto out;
}
if (!hw->wed_dev->wlan.offload_enable)
goto out;
if (hw->num_flows) {
hw->num_flows++;
return 0;
}
mutex_lock(&hw_lock);
if (!hw->wed_dev) {
ret = -ENODEV;
goto out;
}
@ -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 || !hw->wed_dev)
goto out;
if (!hw->wed_dev->wlan.offload_disable)
goto out;
if (--hw->num_flows)
return;
mutex_lock(&hw_lock);
if (!hw->wed_dev)
goto out;
hw->wed_dev->wlan.offload_disable(hw->wed_dev);