Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 79dbe4cb authored by Rajeev's avatar Rajeev Committed by Madan Mohan Koyyalamudi
Browse files

wlan: Host driver changes to support batch scan

Host driver changes to support batch scan feature
CRs-fixed: 543172
parent 414b14c3
Loading
Loading
Loading
Loading
+80 −0
Original line number Diff line number Diff line
@@ -209,6 +209,22 @@
#define HDD_ROAM_SCAN_CHANNEL_SWITCH_TIME 3
typedef v_U8_t tWlanHddMacAddr[HDD_MAC_ADDR_LEN];

#ifdef FEATURE_WLAN_BATCH_SCAN
#define HDD_BATCH_SCAN_VERSION (17)
#define HDD_SET_BATCH_SCAN_DEFAULT_FREQ (30)/*batch scan frequency default 30s*/
#define HDD_SET_BATCH_SCAN_BEST_NETWORK (16)/*best network default value*/
#define HDD_SET_BATCH_SCAN_DEFAULT_BAND (0)/*auto means both 2.4GHz and 5GHz*/
#define HDD_SET_BATCH_SCAN_24GHz_BAND_ONLY (1)/*only 2.4GHz band*/
#define HDD_SET_BATCH_SCAN_5GHz_BAND_ONLY (2)/*only 5GHz band*/
#define HDD_SET_BATCH_SCAN_REQ_TIME_OUT (15000) /*Batch scan req timeout in ms*/
#define HDD_GET_BATCH_SCAN_RSP_TIME_OUT (15000) /*Batch scan req timeout in ms*/
#define HDD_BATCH_SCAN_AP_META_INFO_SIZE (150) /*AP meta info size in string*/

#define MIN(a, b) (a > b ? b : a)

#endif


typedef struct hdd_tx_rx_stats_s
{
   // start_xmit stats
@@ -707,6 +723,38 @@ typedef struct multicast_addr_list
} t_multicast_add_list;
#endif

#ifdef FEATURE_WLAN_BATCH_SCAN

/*Batch scan repsonse AP info*/
typedef struct
{
    /*Batch ID*/
    tANI_U32 batchId;
    /*is it last AP in GET BATCH SCAN RSP*/
    v_BOOL_t isLastAp;
    /*BSSID*/
    tANI_U8  bssid[SIR_MAC_ADDR_LEN];
    /*SSID*/
    tANI_U8  ssid[SIR_MAX_SSID_SIZE];
    /*Channel*/
    tANI_U8  ch;
    /*RSSI or Level*/
    tANI_U8  rssi;
    /*Age*/
    tANI_U32 age;
}tHDDbatchScanRspApInfo;

/*Batch scan response list*/
struct tHDDBatchScanRspList
{
    tHDDbatchScanRspApInfo ApInfo;
    struct tHDDBatchScanRspList *pNext;
};

typedef struct tHDDBatchScanRspList tHddBatchScanRsp;
#endif


#define WLAN_HDD_ADAPTER_MAGIC 0x574c414e //ASCII "WLAN"
struct hdd_adapter_s
{
@@ -843,6 +891,38 @@ struct hdd_adapter_s
   v_U32_t magic;
   v_BOOL_t higherDtimTransition;
   v_BOOL_t survey_idx;

#ifdef FEATURE_WLAN_BATCH_SCAN
   /*Completion variable for set batch scan request*/
   struct completion hdd_set_batch_scan_req_var;
   /*Completion variable for get batch scan request*/
   struct completion hdd_get_batch_scan_req_var;
   /*HDD batch scan lock*/
   struct mutex hdd_batch_scan_lock;
   /*HDD set batch scan request*/
   tSirSetBatchScanReq  hddSetBatchScanReq;
   /*HDD set batch scan response*/
   tSirSetBatchScanRsp  hddSetBatchScanRsp;
   /*HDD stop batch scan indication*/
   tSirStopBatchScanInd hddStopBatchScanInd;
   /*HDD get batch scan request*/
   tSirTriggerBatchScanResultInd  hddTriggerBatchScanResultInd;
   /*Batched scan reponse queue: new batch scan results added at the tail
    and old batch scan results are deleted from head*/
   tHddBatchScanRsp *pBatchScanRsp;
   /*No of scans in batch scan rsp(MSCAN)*/
   v_U32_t numScanList;
   /*isTruncated = 1 batch scan rsp is truncated
     isTruncated = 0 batch scan rsp is complete*/
   v_BOOL_t isTruncated;
   /*Wait for get batch scan response from FW or not*/
   volatile v_BOOL_t hdd_wait_for_get_batch_scan_rsp;
   /*Wait for set batch scan response from FW or not*/
   volatile v_BOOL_t hdd_wait_for_set_batch_scan_rsp;
   /*Previous batch scan ID*/
   v_U32_t prev_batch_id;
#endif

};

#define WLAN_HDD_GET_STATION_CTX_PTR(pAdapter) (&(pAdapter)->sessionCtx.station)
+1156 −0

File changed.

Preview size limit exceeded, changes collapsed.

+4 −0
Original line number Diff line number Diff line
@@ -150,6 +150,10 @@ typedef struct sAniSirGlobal *tpAniSirGlobal;

#define SPACE_ASCII_VALUE  32

#ifdef FEATURE_WLAN_BATCH_SCAN
#define EQUALS_TO_ASCII_VALUE (61)
#endif

// -------------------------------------------------------------------
// Change channel generic scheme
typedef void (*CHANGE_CHANNEL_CALLBACK)(tpAniSirGlobal pMac, eHalStatus status, tANI_U32 *data,
+75 −0
Original line number Diff line number Diff line
@@ -96,6 +96,10 @@
#define SIR_MAX_24G_5G_CHANNEL_RANGE      166


#ifdef FEATURE_WLAN_BATCH_SCAN
#define SIR_MAX_SSID_SIZE (32)
#endif


#define SIR_NUM_11B_RATES 4   //1,2,5.5,11
#define SIR_NUM_11A_RATES 8  //6,9,12,18,24,36,48,54
@@ -4381,4 +4385,75 @@ typedef struct sSirDelPeriodicTxPtrn
    tANI_U32 ucPatternIdBitmap;
} tSirDelPeriodicTxPtrn, *tpSirDelPeriodicTxPtrn;

#ifdef FEATURE_WLAN_BATCH_SCAN
// Set batch scan resposne from FW
typedef struct
{
  /*maximum number of scans which FW can cache*/
  tANI_U32 nScansToBatch;
} tSirSetBatchScanRsp, *tpSirSetBatchScanRsp;

// Set batch scan request to FW
typedef struct
{
    tANI_U32 scanFrequency;        /* how frequent to do scan - default 30Sec*/
    tANI_U32 numberOfScansToBatch; /* number of scans to batch */
    tANI_U32 bestNetwork;          /* best networks in terms of rssi */
    tANI_U8  rfBand;               /* band to scan :
                                      0 ->both Band, 1->2.4Ghz Only
                                      and 2-> 5GHz Only */
    tANI_U32 rtt;                  /* set if required to do RTT it is not
                                      supported in current version */
} tSirSetBatchScanReq, *tpSirSetBatchScanReq;


// Stop batch scan request to FW
typedef struct
{
    tANI_U32 param;
} tSirStopBatchScanInd, *tpSirStopBatchScanInd;

// Trigger batch scan result indication to FW
typedef struct
{
    tANI_U32 param;
} tSirTriggerBatchScanResultInd, *tpSirTriggerBatchScanResultInd;

// Batch scan result indication from FW
typedef PACKED_PRE struct PACKED_POST
{
    tANI_U8   bssid[6];     /* BSSID */
    tANI_U8   ssid[32];     /* SSID */
    tANI_U8   ch;           /* Channel */
    tANI_U8   rssi;         /* RSSI or Level */
    /*Timestamp when Network was found. Used to calculate age based on timestamp
      in GET_RSP msg header */
    tANI_U32  timestamp;
} tSirBatchScanNetworkInfo, *tpSirBatchScanNetworkInfo;

typedef PACKED_PRE struct PACKED_POST
{
    tANI_U32   scanId; /* Scan List ID. */
    /*No of AP in a Scan Result. Should be same as bestNetwork in SET_REQ msg*/
    tANI_U32   numNetworksInScanList;
    /*Variable data ptr: Number of AP in Scan List*/
    /*Following numNetworkInScanList is data of type tSirBatchScanNetworkInfo
     *of sizeof(tSirBatchScanNetworkInfo) * numNetworkInScanList */
    tANI_U8    scanList[1];
} tSirBatchScanList, *tpSirBatchScanList;

typedef PACKED_PRE struct PACKED_POST
{
    tANI_U32      timestamp;
    tANI_U32      numScanLists;
    boolean       isLastResult;
    /* Variable Data ptr: Number of Scan Lists*/
    /* following isLastResult is data of type tSirBatchScanList
     * of sizeof(tSirBatchScanList) * numScanLists*/
    tANI_U8       scanResults[1];
}  tSirBatchScanResultIndParam, *tpSirBatchScanResultIndParam;

#endif // FEATURE_WLAN_BATCH_SCAN


#endif /* __SIR_API_H */
+12 −0
Original line number Diff line number Diff line
@@ -104,6 +104,10 @@ typedef enum {
   ADVANCE_TDLS = 29,
#endif

#ifdef FEATURE_WLAN_BATCH_SCAN
   BATCH_SCAN = 30,
#endif

   //MAX_FEATURE_SUPPORTED = 128
} placeHolderInCapBitmap;

@@ -600,6 +604,14 @@ typedef struct sSirMbMsgP2p
#define SIR_HAL_ADD_PERIODIC_TX_PTRN_IND   (SIR_HAL_ITC_MSG_TYPES_BEGIN + 208)
#define SIR_HAL_DEL_PERIODIC_TX_PTRN_IND   (SIR_HAL_ITC_MSG_TYPES_BEGIN + 209)

#ifdef FEATURE_WLAN_BATCH_SCAN
#define SIR_HAL_SET_BATCH_SCAN_REQ         (SIR_HAL_ITC_MSG_TYPES_BEGIN + 210)
#define SIR_HAL_SET_BATCH_SCAN_RSP         (SIR_HAL_ITC_MSG_TYPES_BEGIN + 211)
#define SIR_HAL_STOP_BATCH_SCAN_IND        (SIR_HAL_ITC_MSG_TYPES_BEGIN + 212)
#define SIR_HAL_TRIGGER_BATCH_SCAN_RESULT_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 213)
#endif


#define SIR_HAL_MSG_TYPES_END              (SIR_HAL_ITC_MSG_TYPES_BEGIN + 0xFF)
// CFG message types
#define SIR_CFG_MSG_TYPES_BEGIN        (SIR_CFG_MODULE_ID << 8)
Loading