wifi: rtw89: set entry size of address CAM to H2C field by chip
authorPing-Ke Shih <pkshih@realtek.com>
Fri, 27 Oct 2023 01:50:56 +0000 (09:50 +0800)
committerKalle Valo <kvalo@kernel.org>
Mon, 30 Oct 2023 17:25:30 +0000 (19:25 +0200)
The new chips change hardware design to shrink entry size of address
CAM from 0x40 to 0x20, so make this change accordingly.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20231027015059.10032-2-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/cam.c
drivers/net/wireless/realtek/rtw89/mac.h

index f5301c2bbf133df6995fc842b4e4b9f465e96ecc..914c94988b2f4efcc9e45df041479443f4ac30e4 100644 (file)
@@ -488,6 +488,20 @@ static int rtw89_cam_get_avail_addr_cam(struct rtw89_dev *rtwdev,
        return 0;
 }
 
+static u8 rtw89_get_addr_cam_entry_size(struct rtw89_dev *rtwdev)
+{
+       const struct rtw89_chip_info *chip = rtwdev->chip;
+
+       switch (chip->chip_id) {
+       case RTL8852A:
+       case RTL8852B:
+       case RTL8851B:
+               return ADDR_CAM_ENT_SIZE;
+       default:
+               return ADDR_CAM_ENT_SHORT_SIZE;
+       }
+}
+
 int rtw89_cam_init_addr_cam(struct rtw89_dev *rtwdev,
                            struct rtw89_addr_cam_entry *addr_cam,
                            const struct rtw89_bssid_cam_entry *bssid_cam)
@@ -509,7 +523,7 @@ int rtw89_cam_init_addr_cam(struct rtw89_dev *rtwdev,
        }
 
        addr_cam->addr_cam_idx = addr_cam_idx;
-       addr_cam->len = ADDR_CAM_ENT_SIZE;
+       addr_cam->len = rtw89_get_addr_cam_entry_size(rtwdev);
        addr_cam->offset = 0;
        addr_cam->valid = true;
        addr_cam->addr_mask = 0;
index c11c904f87fe2dc63f475a568edb637ffcacfa19..cd2e9b850c7214be98a8f1c42de9e760a983ac48 100644 (file)
@@ -10,6 +10,7 @@
 
 #define MAC_MEM_DUMP_PAGE_SIZE 0x40000
 #define ADDR_CAM_ENT_SIZE  0x40
+#define ADDR_CAM_ENT_SHORT_SIZE 0x20
 #define BSSID_CAM_ENT_SIZE 0x08
 #define HFC_PAGE_UNIT 64
 #define RPWM_TRY_CNT 3