aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/vt6656/rxtx.h (follow)
AgeCommit message (Collapse)AuthorFilesLines
2017-11-28staging: vt6656: Remove redundant license textGreg Kroah-Hartman1-11/+0
Now that the SPDX tag is in all vt6656 files, that identifies the license in a specific and legally-defined manner. So the extra GPL text wording can be removed as it is no longer needed at all. This is done on a quest to remove the 700+ different ways that files in the kernel describe the GPL license text. And there's unneeded stuff like the address (sometimes incorrect) for the FSF which is never needed. No copyright headers or other non-license-description text was removed. Cc: Forest Bond <forest@alittletooquiet.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-11-28staging: vt6656: add SPDX identifiers to all vt6656 driver filesGreg Kroah-Hartman1-0/+1
It's good to have SPDX identifiers in all files to make it easier to audit the kernel tree for correct licenses. Update the vt6656 driver files with the correct SPDX license identifier based on the license text in the file itself. The SPDX identifier is a legally binding shorthand, which can be used instead of the full boiler plate text. This work is based on a script and data from Thomas Gleixner, Philippe Ombredanne, and Kate Stewart. Cc: Forest Bond <forest@alittletooquiet.net> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Kate Stewart <kstewart@linuxfoundation.org> Cc: Philippe Ombredanne <pombredanne@nexb.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-02-05staging: vt6656: Add missing identifier namesSimon Sandström1-4/+4
Fix all "function definition argument '...' should also have an identifier name" warnings in vt6656. Use identifier name from each corresponding C file. Signed-off-by: Simon Sandström <simon@nikanor.nu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-11-19staging: vt6656: remove address from GPL textOthmar Pasteka1-3/+0
Cleanup errors from checkpatch.pl. Signed-off-by: Othmar Pasteka <pasteka@kabsi.at> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-22staging: vt6656: struct vnt_tx_short_buf_head change base type of fifo_ctl to __le16Malcolm Priestley1-1/+1
Base type is always little endian. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-22staging: vt6656: struct vnt_tx_fifo_head fifo_ctl change base type to __le16Malcolm Priestley1-1/+1
Endian is always little add correction in vnt_tx_packet. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-22staging: vt6656: struct vnt_beacon_buffer replace byType with typeMalcolm Priestley1-1/+1
Removing camel case Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-22staging: vt6656: vnt_tx_buffer replace byType with typeMalcolm Priestley1-1/+1
Removing camel case Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-22staging: vt6656: struct vnt_beacon_buffer replace byPKTNO with pkt_noMalcolm Priestley1-1/+1
removing camel case. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-22staging: vt6656: struct vnt_tx_buffer replace byPKTNO with pkt_noMalcolm Priestley1-1/+1
Replacing camel case Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-22staging: vt6656: vnt_tx_fifo_head rename wFIFOCtl to fifo_ctlMalcolm Priestley1-1/+1
Removing prefix and camel case. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-29staging: vt6656: rxtx replace wFragCtl with frag_ctl.Malcolm Priestley1-1/+1
Use base type to __le16 and do endian correction. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-29staging: vt6656: rxtx struct vnt_mic_hdr change tsc_47_16/tsc_15_0Malcolm Priestley1-2/+1
Replace with ccmp_pn with size of IEEE80211_CCMP_PN_LEN(6) memcpy the struct ieee80211_key_seq -> ccmp.pn onto ccmp_pn removing the need for endian conversion. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-26staging: vt6656: rxtx remove dead codeMalcolm Priestley1-5/+0
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-26staging: vt6656: move life time macros to rxtx.hMalcolm Priestley1-0/+3
DEFAULT_MGN_LIFETIME_RES_64us DEFAULT_MSDU_LIFETIME_RES_64us Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-26staging: vt6656: mac80211 conversion: Create tx functionsMalcolm Priestley1-1/+6
Create vnt_fill_txkey as mac80211 replacement for s_vFillTxKey. Create vnt_tx_packet which a merger of s_bPacketToWirelessUsb, nsDMA_tx_packet and csMgmt_xmit using mac80211 signalling. Create vnt_beacon_xmit as mac80211 replacement for csBeacon_xmit. Changing header in vnt_beacon_buffer to struct ieee80211_mgmt deleting some of old code. vnt_beacon_make is needed to make beacon for vnt_beacon_xmit. Create vnt_beacon_enable as mac80211 call to enable beacon. vnt_fill_ieee80211_rts is modified to use struct ieee80211_hdr instead of struct ethhdr and access to tx_context. In s_nsBulkOutIoCompleteWrite modify context handling Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-19staging: vt6656: rxtx replace adwTxKey[4]Malcolm Priestley1-1/+1
Replace with tx_key with size of WLAN_KEY_LEN_CCMP(16) Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-19staging: vt6656: rxtx add mac header to vnt_tx_datahead_* structuresMalcolm Priestley1-0/+4
Add vnt_mac_hdr_pos to set mac header pointer and the calculate header size. Pass ieee80211 hdr pointer and tx_hdr_size in vnt_usb_send_context. Remove old pointer arithmetic and attach pMACHeader to hdr. cbHeaderLength/cbHeaderSize now uses the value of tx_hdr_size. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-05-19staging: vt6656: dead code bRelayPacketSendMalcolm Priestley1-2/+0
After dead code hostapd remove bRelayPacketSend Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-05-15staging: vt6656: rxtx: Remove unused uDMAIdx from driver.Malcolm Priestley1-1/+1
Remove from functions and callers. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-04-18staging: vt6656: rxtx Replace vnt_tx_fifo_head wReservedMalcolm Priestley1-1/+1
At run time wReserved has the value of wCurrentRate. Replace with current_rate with __le16 base type and endian correct wCurrentRate. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-04-18staging : vt6656: rxtx struct vnt_beacon_buffer Replace wTxByteCountMalcolm Priestley1-1/+1
Replace with tx_byte_count with base type __le16 Provide endian correction in csBeacon_xmit of cbReqCount Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-04-18staging: vt6656: rxtx struct vnt_tx_buffer Replace wTxByteCountMalcolm Priestley1-1/+1
Replace with tx_byte_count with base type __le16. In nsDMA_tx_packet and bRelayPacketSend provide endian correction. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-04-18staging: vt6656: rxtx Replace struct vnt_tx_fifo_head wTimeStampMalcolm Priestley1-1/+1
Replace with time_stamp with base type __le16 In s_bPacketToWirelessUsb endian correct DEFAULT_MSDU_LIFETIME_RES_64us Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-19staging: vt6656: struct vnt_tx_short_buf_head correct base typesMalcolm Priestley1-2/+2
Both variables duration and time_stamp_off are __le16 types Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-19staging: vt6656: rxtx Replace wTimeStampOff* variablesMalcolm Priestley1-6/+6
Fix base type to __le16 and remove camel case. Camel case changes wTimeStampOff* -> time_stamp_off* Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-19staging: vt6656: rxtx Replace wCTSTxRrvTime_baMalcolm Priestley1-1/+1
Replace with cts_rrv_time_ba with __le16 base. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-19staging: vt6656: rxtx: Replace wCTSDuration*Malcolm Priestley1-2/+2
Fix base type to __le16 and remove camel case. Camel case changes wCTSDuration* -> cts_duration* Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-19staging: vt6656: rxtx: Replace wTxRrvTime*Malcolm Priestley1-5/+5
Fix base type to __le16 and remove camel case. Camel case changes wTxRrvTime* -> rrv_time* Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-19staging: vt6656: rxtx: Replace wRTSTxRrvTime*Malcolm Priestley1-4/+4
Fix base type to __le16 and remove camel case. Camel case changes wRTSTxRrvTime* -> rts_rrv_time* Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-19staging: vt6656: rxtx: Replace wRTSDuration* variablesMalcolm Priestley1-6/+6
Fix base type to __le16 and remove camel case. Camel case changes wRTSDuration* -> rts_duration* Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-19staging: vt6656: rxtx Replace wDuration* variables.Malcolm Priestley1-20/+20
Fix base type to __le16 and remove camel case. Camel case changes wDuration* -> duration* Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-11-25staging: vt6656: vnt_beacon_buffer attach mac header.Malcolm Priestley1-0/+1
Attach ieee80211_hdr to vnt_beacon_buffer and remove pointer arithmetic. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-11-25staging: vt6656: csBeacon_xmit merge structures.Malcolm Priestley1-2/+9
Merge structures typedef struct tagSTxShortBufHead and the members of struct vnt_tx_datahead_ab to form single structure vnt_tx_short_buf_head. Remove the duplicate members in struct vnt_beacon_buffer already in typedef struct tagSTxShortBufHead. This removes the need for any pointer arithmetic. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-10-03staging: vt6656: rxtx.c add no rts struct vnt_tx_datahead_abMalcolm Priestley1-0/+1
Add no rts/cts vnt_tx_datahead_ab to union vnt_tx_data_head. The need_mic now applies to all modes of packet type PK_TYPE_11B. and return vnt_rxtx_datahead_ab in s_vGenerateTxParameter This removes pvTxDataHd pointer assignment and calls to s_uFillDataHead. Since pvTxDataHd is now null a small vendor hack to vDMA0_tx_80211/csMgmt_xmit to do with Disassociation-packet is also changed correct head position. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-10-03staging: vt6656: rxtx.c parse out vnt_rxtx_datahead_abMalcolm Priestley1-0/+1
Parse struct vnt_tx_datahead_ab from s_uFillDataHead and move to struct vnt_rts_ab structure returning duration down functions. Both are returned in s_uFillDataHead at this stage as pvTxDataHd is only null in s_bPacketToWirelessUsb. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-10-03staging: vt6656: rxtx.c add no rts struct vnt_tx_datahead_a_fbMalcolm Priestley1-0/+2
Add no rts/cts vnt_tx_datahead_a_fb to union vnt_tx_data_head. The need_mic now applies to all modes of packet type PK_TYPE_11A. and return vnt_rxtx_datahead_a_fb in s_vGenerateTxParameter This removes pvTxDataHd pointer assignment. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-10-03staging: vt6656: rxtx.c parse out struct vnt_tx_datahead_a_fbMalcolm Priestley1-0/+1
Parse struct vnt_tx_datahead_a_fb from s_uFillDataHead and move to struct vnt_rts_a_fb structure returning duration down functions. This removes pvTxDataHd pointer assignment. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-10-03staging: vt6656: rxtx.c Parse struct vnt_tx_datahead_g_fbMalcolm Priestley1-0/+2
Parse struct vnt_tx_datahead_g_fb from s_uFillDataHead and move to struct vnt_rts_g_fb/struct vnt_cts_fb structure returning duration down functions. This removes pvTxDataHd pointer assignment. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-10-03staging: vt6656: rxtx.c Parse struct vnt_tx_datahead_gMalcolm Priestley1-0/+2
Parse struct vnt_tx_datahead_g from s_uFillDataHead and move to struct vnt_rts_g/struct vnt_cts structure. This removes pvTxDataHd pointer assignment. The duration_id(uDuration) field is now returned in s_vGenerateTxParameter. The return of s_uFillDataHead temporary or'ed to retain functionality of other functions and is removed at the end of this patch series. Since pvTxDataHd is now null a small vendor hack to vDMA0_tx_80211/csMgmt_xmit to do with Disassociation-packet is also changed correct head position. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-09-26staging: vt6656: rxtx.c create structure to join vnt_tx_data_head with vnt_tx_head.Malcolm Priestley1-3/+22
Create struct vnt_tx_mic_hdr for with union vnt_tx_data_head for mic mode. Create union vnt_tx for mic and non mic mode. Attach vnt_rrv_time_* to relevant tx_head. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-09-26staging: vt6656: rxtx.c Create union of struct vnt_rrv_time* stucturesMalcolm Priestley1-0/+7
Attach union vnt_tx_head to structure vnt_tx_buffer replacing pointer pvRrvTime. In s_vGenerateTxParameter the relevant struct vnt_rrv_time_* structure is attached to the vnt_tx_head. The NULL check is now pFifoHead. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-09-25staging: vt6656: desc.h remove typedef struct tagSTxBufHead to rxtx.hMalcolm Priestley1-4/+8
In code it is referred to as fifo to renamed to typedef struct tagSTxBufHead -> struct vnt_tx_fifo_head This is only needed by rxtc.c so moved to rxtx.h Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-08-26staging: vt6656: rxtx s_vFillRTSHead create union of vnt_rts*/vnt_cts* structures.Malcolm Priestley1-0/+12
Only one of vnt_rts*/vnt_cts* structures are accessed at any one time. Join these structures in to a single union. These will eventually form the tail structure of vnt_tx_buffer and include structures vnt_tx_datahead* Structures in s_vFillCTSHead will join in next patch series. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-08-23staging: vt6656: desc.h Remove typedef struct tagSMICHDRHead to new structure in rxtx.hMalcolm Priestley1-0/+18
To new structure. typedef struct tagSMICHDRHead -> struct vnt_mic_hdr This is only needed by rxtc.c so moved to rxtx.h The new structure is the same size as the old but contains the members as pointer referenced in rxtx.c s_vFillTxKey u8 id *pMICHDR = 0x59; u8 tx_priority; *((u8 *)(pMICHDR+1)) = 0; // TxPriority u8 mic_addr2[6]; memcpy(pMICHDR+2, &(pMACHeader->addr2[0]), 6); __be32 tsc_47_16; pMICHDR+8 = HIBYTE(HIWORD(pTransmitKey->dwTSC47_16)); pMICHDR+9 = LOBYTE(HIWORD(pTransmitKey->dwTSC47_16)); pMICHDR+10 = HIBYTE(LOWORD(pTransmitKey->dwTSC47_16)); pMICHDR+11 = LOBYTE(LOWORD(pTransmitKey->dwTSC47_16)); __be16 tsc_15_0; pMICHDR+12 = HIBYTE(pTransmitKey->wTSC15_0); pMICHDR+13 = LOBYTE(pTransmitKey->wTSC15_0); __be16 payload_len; pMICHDR+14 = HIBYTE(wPayloadLen); pMICHDR+15 = LOBYTE(wPayloadLen); __be16 hlen; pMICHDR+16 = 0; // HLEN[15:8] pMICHDR+17 = 28; // HLEN[7:0] __le16 frame_control; memcpy(pMICHDR+18, (u8 *)&wValue, 2); // MSKFRACTL u8 addr1[6]; memcpy(pMICHDR+20, &(pMACHeader->addr1[0]), 6); u8 addr2[6]; memcpy(pMICHDR+26, &(pMACHeader->addr2[0]), 6); u8 addr3[6]; memcpy(pMICHDR+32, &(pMACHeader->addr3[0]), 6); __le16 seq_ctrl; memcpy(pMICHDR+38, (u8 *)&wValue, 2); // MSKSEQCTL u8 addr4[6]; memcpy(pMICHDR+40, &(pMACHeader->addr4[0]), 6); u16 packing; /* packing to 48 bytes */ Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-08-21staging: vt6656: baseband.c BBvCalculateParameter create structure for pwPhyLen, pbyPhySrv and pbyPhySgnMalcolm Priestley1-42/+15
Create single packed structure vnt_phy_field for rxtx.h structures. In card.c CARDvSetRSPINF a vnt_phy_field replaces abyServ, abySignal, awLen variables. In rxtx.c point BBvCalculateParameter to relevant field. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-08-19staging: vt6656: desc.h remove typedef tagSTxDataHead_a_FB to new structure in rxtx.hMalcolm Priestley1-0/+10
To new structure. typedef struct tagSTxDataHead_a_FB -> struct vnt_tx_datahead_a_fb This is only needed by rxtc.c so moved to rxtx.h visible to vnt_rts* structures which it will eventually form part of their structure. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-08-19staging: vt6656: desc.h remove typedef tagSTxDataHead_ab to new structure in rxtx.hMalcolm Priestley1-0/+8
To new structure. typedef struct tagSTxDataHead_ab -> struct vnt_tx_datahead_ab This is only needed by rxtc.c so moved to rxtx.h visible to vnt_rts* structures which it will eventually form part of their structure. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-08-19staging: vt6656: desc.h remove typedef tagSTxDataHead_g_FB to new structure in rxtx.hMalcolm Priestley1-0/+15
To new structure. typedef struct tagSTxDataHead_g_FB -> struct vnt_tx_datahead_g_fb This is only needed by rxtc.c so moved to rxtx.h visible to vnt_rts*/vnt_cts* structures which it will eventually form part of their structure. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-08-19staging: vt6656: desc.h: remove typedef struct tagSTxDataHead_g to new structure in rxtx.hMalcolm Priestley1-0/+14
To new structure. typedef struct tagSTxDataHead_g -> struct vnt_tx_datahead_g This is only needed by rxtc.c so moved to rxtx.h visible to vnt_rts*/vnt_cts* structures which it will eventually form part of their structure. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>