Commit 01b38de1 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by David S. Miller
Browse files

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: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c123e0d3
Loading
Loading
Loading
Loading
+17 −15
Original line number Diff line number Diff line
@@ -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;
	}

@@ -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);