mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 18:39:59 +00:00
staging: vt6655: implement ieee80211_low_level_stats
Collect low level stats from mib counter for mac80211 call. Replacing the unused function STAvUpdate802_11Counter. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d5be8e1d55
commit
700f6c0258
2 changed files with 23 additions and 3 deletions
|
@ -410,6 +410,8 @@ struct vnt_private {
|
|||
unsigned char abyEEPROM[EEP_MAX_CONTEXT_SIZE]; /* unsigned long alignment */
|
||||
|
||||
unsigned short wBeaconInterval;
|
||||
|
||||
struct ieee80211_low_level_stats low_stats;
|
||||
};
|
||||
|
||||
static inline PDEVICE_RD_INFO alloc_rd_info(void)
|
||||
|
|
|
@ -1056,8 +1056,9 @@ static void vnt_check_bb_vga(struct vnt_private *priv)
|
|||
static irqreturn_t device_intr(int irq, void *dev_instance)
|
||||
{
|
||||
struct vnt_private *pDevice = dev_instance;
|
||||
struct ieee80211_low_level_stats *low_stats = &pDevice->low_stats;
|
||||
int max_count = 0;
|
||||
unsigned long dwMIBCounter = 0;
|
||||
u32 mib_counter;
|
||||
unsigned char byOrgPageSel = 0;
|
||||
int handled = 0;
|
||||
unsigned long flags;
|
||||
|
@ -1084,14 +1085,20 @@ static irqreturn_t device_intr(int irq, void *dev_instance)
|
|||
else
|
||||
byOrgPageSel = 0;
|
||||
|
||||
MACvReadMIBCounter(pDevice->PortOffset, &dwMIBCounter);
|
||||
/* Read low level stats */
|
||||
MACvReadMIBCounter(pDevice->PortOffset, &mib_counter);
|
||||
|
||||
low_stats->dot11RTSSuccessCount += mib_counter & 0xff;
|
||||
low_stats->dot11RTSFailureCount += (mib_counter >> 8) & 0xff;
|
||||
low_stats->dot11ACKFailureCount += (mib_counter >> 16) & 0xff;
|
||||
low_stats->dot11FCSErrorCount += (mib_counter >> 24) & 0xff;
|
||||
|
||||
/*
|
||||
* TBD....
|
||||
* Must do this after doing rx/tx, cause ISR bit is slow
|
||||
* than RD/TD write back
|
||||
* update ISR counter
|
||||
*/
|
||||
STAvUpdate802_11Counter(&pDevice->s802_11Counter, &pDevice->scStatistic, dwMIBCounter);
|
||||
while (pDevice->dwIsr && pDevice->vif) {
|
||||
STAvUpdateIsrStatCounter(&pDevice->scStatistic, pDevice->dwIsr);
|
||||
MACvWriteISR(pDevice->PortOffset, pDevice->dwIsr);
|
||||
|
@ -1604,6 +1611,16 @@ static int vnt_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int vnt_get_stats(struct ieee80211_hw *hw,
|
||||
struct ieee80211_low_level_stats *stats)
|
||||
{
|
||||
struct vnt_private *priv = hw->priv;
|
||||
|
||||
memcpy(stats, &priv->low_stats, sizeof(*stats));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u64 vnt_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
|
||||
{
|
||||
struct vnt_private *priv = hw->priv;
|
||||
|
@ -1641,6 +1658,7 @@ static const struct ieee80211_ops vnt_mac_ops = {
|
|||
.prepare_multicast = vnt_prepare_multicast,
|
||||
.configure_filter = vnt_configure,
|
||||
.set_key = vnt_set_key,
|
||||
.get_stats = vnt_get_stats,
|
||||
.get_tsf = vnt_get_tsf,
|
||||
.set_tsf = vnt_set_tsf,
|
||||
.reset_tsf = vnt_reset_tsf,
|
||||
|
|
Loading…
Reference in a new issue